{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Finding Numerical Fluxes for DG\n", "\n", "Copyright (C) 2020 Andreas Kloeckner\n", "\n", "
\n", "MIT License\n", "Permission is hereby granted, free of charge, to any person obtaining a copy\n", "of this software and associated documentation files (the \"Software\"), to deal\n", "in the Software without restriction, including without limitation the rights\n", "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n", "copies of the Software, and to permit persons to whom the Software is\n", "furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in\n", "all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n", "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n", "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n", "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n", "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n", "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n", "THE SOFTWARE.\n", "
\n", "\n", "----\n", "NB: This note book uses the [Maxima-Jupyter kernel](https://github.com/robert-dodier/maxima-jupyter) to interface with [Maxima](http://maxima.sourceforge.net/), an open-source computer algebra system. I have found that the [Docker image](https://hub.docker.com/r/calyau/maxima-jupyter) is a fairly convenient way of using this kernel.\n", "\n", "Some Maxima version info for reproducibility:" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{53}$}{\\it build\\_info}\\left(\\mbox{ 5.43.0 } , \\mbox{ 2019-06-09 14:40:12 } , \\mbox{ x86\\_64-unknown-linux-gnu } , \\mbox{ SBCL } , \\mbox{ 1.5.3 } , \\mbox{ /home/oubiwann/.maxima } , \\mbox{ /tmp } , \\mbox{ /home/oubiwann/.maxima/binary/5\\_43\\_0/sbcl/1\\_5\\_3 } , \\mathbf{false} , \\mathbf{false}\\right)\\]" ], "text/plain": [ "(%o53) \n", "Maxima version: \"5.43.0\"\n", "Maxima build date: \"2019-06-09 14:40:12\"\n", "Host type: \"x86_64-unknown-linux-gnu\"\n", "Lisp implementation type: \"SBCL\"\n", "Lisp implementation version: \"1.5.3\"\n", "User dir: \"/home/oubiwann/.maxima\"\n", "Temp dir: \"/tmp\"\n", "Object dir: \"/home/oubiwann/.maxima/binary/5_43_0/sbcl/1_5_3\"\n", "Frontend: false" ], "text/x-maxima": [ "%build_info(\"5.43.0\",\"2019-06-09 14:40:12\",\"x86_64-unknown-linux-gnu\",\"SBCL\",\n", " \"1.5.3\",\"/home/oubiwann/.maxima\",\"/tmp\",\n", " \"/home/oubiwann/.maxima/binary/5_43_0/sbcl/1_5_3\",false,false)" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "build_info();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Load some packages:" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "REDEFINITION-WITH-DEFMACRO: \n", " redefining MAXIMA::IFNOT in DEFMACRO\n", "\n", "REDEFINITION-WITH-DEFMACRO: \n", " redefining MAXIMA::M+OR*OR^P in DEFMACRO\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$IDUMMY-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$IDUMMY in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::ISPROD in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::DERAT in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::PLUSI in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::MINUSI in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::COVI in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONTI in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::DERI in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::NAME in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$COVI-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$COVI in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$CONTI-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$CONTI in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$DERI-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$DERI in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$NAME-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$NAME in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$DEFCON in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::GETCON in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::RPOBJ in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$IMETRIC-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$IMETRIC in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::MYSUBST0 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::COV in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONTR in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::DIFFCOV in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$ICHR1 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$ICHR2 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$ICURVATURE-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$ICURVATURE in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::COVSUBST in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONSUBST in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::DERSUBST in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::DIFFOP in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$COVDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::COVDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::COVDIFFTIMES in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::VECDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::LIEDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$LIEDIFF-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$LIEDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$REDIFF-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$REDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$EVUNDIFF-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$EVUNDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$UNDIFF-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$UNDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::PUTINONES in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$LORENTZ_GAUGE in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::LORENTZ in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::LESS in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$CONTRACT-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$CONTRACT in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONTRACT4A in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONTRACT5 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::HEAD in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::FIRSTINTERSECT in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONTRACT2 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::SETDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONTRACT3 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONTRACT4 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$RENORM-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$RENORM in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::NEGLIST in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::ABNORM in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::SUBSTLIST in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::REMOVENOTIN in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::REMOVENOTINM in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONTRACTINSIDE in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONTRACT1 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$KDELTA-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$KDELS-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$KDELS in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::DELTA in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$ISHOW-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$ISHOW in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::ISHOW in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::SPLICE in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::SPLICE1 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::SPLICE2 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::DERIV in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CHAINRULE1 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::DIFFEXPT1 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::SDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFFMAP in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFFTIMES in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFFEXPT1 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFFEXPT in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFFINT in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFFINT1 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFF%DERIV in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDERIV in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFFNCEXPT in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFFSUMPROD in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFFGRAD in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$IDIFF-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$IDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::IDIFF in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::DIFFRPOBJ in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$LC0-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$LC0 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$LEVI_CIVITA-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$LC_L in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$LC_U in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::NONUMBER in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::REMOVEINDEX in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::INDICES in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$INDICES-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$INDICES in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::SAMELISTS in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$FLUSH in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$FLUSHD in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::FLUSH in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$FLUSHND-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$FLUSHND in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$RENAME in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::RENAME in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::REORDER in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::ITENSOR-CLEANUP in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CLEANUP1 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::ITENSOR-SORT in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$REMCOMPS-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$REMCOMPS in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$INDEXED_TENSOR-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$INDEXED_TENSOR in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::ALLFIXED in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::TENSOREVAL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$COMPONENTS-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$COMPONENTS in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::SELECT in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$ENTERTENSOR in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CHECKINDEX in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::MEMBERL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CONSMLIST in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$INDICES2-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$INDICES2 in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$CHANGENAME-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$CHANGENAME in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::CHANGENAME in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$COORD in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$REMCOORD-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$REMCOORD in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$LISTOFTENS-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$LISTOFTENS in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::LISTOFTENS in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::NUMLIST in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$SHOWCOMPS-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$SHOWCOMPS in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$HODGE-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$HODGE in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::REMSYM in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$IDIM-IMPL in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::$IDIM in DEFUN\n", "\n", "REDEFINITION-WITH-DEFUN: \n", " redefining MAXIMA::I-$DEPENDENCIES in DEFUN\n" ] }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{0}$}\\mathbf{done}\\]" ], "text/plain": [ "(%o0) done" ], "text/x-maxima": [ "done" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{1}$}\\mbox{ /usr/share/maxima/5.43.0/share/tensor/itensor.lisp }\\]" ], "text/plain": [ "(%o1) /usr/share/maxima/5.43.0/share/tensor/itensor.lisp" ], "text/x-maxima": [ "\"/usr/share/maxima/5.43.0/share/tensor/itensor.lisp\"" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{3}$}{\\it norm\\_2\\_squared}\\left(v\\right):=v\\cdot v\\]" ], "text/plain": [ "(%o3) norm_2_squared(v) := v . v" ], "text/x-maxima": [ "norm_2_squared(v):=v . v" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{5}$}{\\it crossprod}\\left(a , b\\right):={\\it crossfunc}\\left(\\lambda\\left(\\left[ j , k \\right] , a_{j}\\,b_{k}\\right)\\right)\\]" ], "text/plain": [ "(%o5) crossprod(a, b) := crossfunc(lambda([j, k], a b ))\n", " j k" ], "text/x-maxima": [ "crossprod(a,b):=crossfunc(lambda([j,k],a[j]*b[k]))" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kill(all);\n", "load(\"itensor\");\n", "\n", "assert(condition):=if not condition then error(\"Assertion violated\") else true$\n", "\n", "norm_2_squared(v):=v.v;\n", "\n", "crossfunc(f):=makelist(\n", " sum(sum(\n", " levi_civita([i,j,k])*f(j,k),\n", " j,1,3),k,1,3),i,1,3)$\n", "\n", "crossprod(a,b):=crossfunc(lambda([j,k], a[j]*b[k]));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simplification Utilities\n", "\n", "These function simplify expressions coming from the (symbolic) simultaneous diagonalization, by letting Maxima realize that $n \\cdot n =1$." ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [], "source": [ "/* ------------------------------------------------------------------------- */\n", "/* Simplification for expressions stemming from hyperbolic systems */\n", "/* ------------------------------------------------------------------------- */\n", "\n", "hypsimp(x):=ratsimp(ratsubst(1,n.n,x))$\n", "\n", "fullhypsimp(x):=hypsimp(\n", " ratsubst(\n", " last(n)^2,\n", " 1-sum(n[i]^2,i,1,length(n)-1),\n", " x)\n", " )$\n", " \n", "/* ------------------------------------------------------------------------- */\n", "/* diagonalize a given hyperbolic operator A */\n", "/* ------------------------------------------------------------------------- */\n", "\n", "hypdiagonalize(A):=block([evA, V, invV,D],\n", " evA:hypsimp(apply(append, eigenvectors(A)[2])),\n", " V:transpose(apply(matrix, evA)),\n", " invV:hypsimp(invert(V)),\n", " assert(hypsimp(V.invV)=ident(length(A))),\n", " D:hypsimp(invV.A.V),\n", " [V, D, invV])$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Wave Equation" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{9}$}\\left[ {\\it nx} , {\\it ny} \\right] \\]" ], "text/plain": [ "(%o9) [nx, ny]" ], "text/x-maxima": [ "[nx,ny]" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "/* redefine this to change dimensionality: */\n", "n:[nx,ny]; " ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{10}$}2\\]" ], "text/plain": [ "(%o10) 2" ], "text/x-maxima": [ "2" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{11}$}\\left[ c>0 \\right] \\]" ], "text/plain": [ "(%o11) [c > 0]" ], "text/x-maxima": [ "[c > 0]" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{12}$}\\mathbf{false}\\]" ], "text/plain": [ "(%o12) false" ], "text/x-maxima": [ "false" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dims:length(n);\n", "\n", "assume(c>0);\n", "\n", "if dims = 1 then n:[1];\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define the flux jacobian for the first-order form of the wave-equation:\n", "\n", "$$\n", "\\begin{align*}\n", "\\partial_t u &= \\nabla \\cdot \\boldsymbol v\\\\\n", "\\partial_t \\boldsymbol v &= \\nabla u\n", "\\end{align*}\n", "$$\n", "projected onto a line with normal `n`:" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{13}$}{\\it esymmatrix}\\left(n , v , i , j\\right):={\\it ematrix}\\left(n , n , v , i , j\\right)+{\\it ematrix}\\left(n , n , v , j , i\\right)\\]" ], "text/plain": [ "(%o13) esymmatrix(n, v, i, j) := ematrix(n, n, v, i, j)\n", " + ematrix(n, n, v, j, i)" ], "text/x-maxima": [ "esymmatrix(n,v,i,j):=ematrix(n,n,v,i,j)+ematrix(n,n,v,j,i)" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{14}$}\\begin{pmatrix}0 & -c\\,{\\it nx} & -c\\,{\\it ny} \\\\ -c\\,{\\it nx} & 0 & 0 \\\\ -c\\,{\\it ny} & 0 & 0 \\\\ \\end{pmatrix}\\]" ], "text/plain": [ " [ 0 - c nx - c ny ]\n", " [ ]\n", "(%o14) [ - c nx 0 0 ]\n", " [ ]\n", " [ - c ny 0 0 ]" ], "text/x-maxima": [ "matrix([0,-c*nx,-c*ny],[-c*nx,0,0],[-c*ny,0,0])" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "esymmatrix(n, v, i,j):=ematrix(n,n,v,i,j)+ematrix(n,n,v,j,i);\n", "wave_A:sum(n[i]*esymmatrix(dims+1, -c, 1+i,1),i,1,dims);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Find the eigenvalues of the flux Jacobian:" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{15}$}\\left[ \\begin{pmatrix}1 & 1 & 0 \\\\ {\\it nx} & -{\\it nx} & 1 \\\\ {\\it ny} & -{\\it ny} & -\\frac{{\\it nx}}{{\\it ny}} \\\\ \\end{pmatrix} , \\begin{pmatrix}-c & 0 & 0 \\\\ 0 & c & 0 \\\\ 0 & 0 & 0 \\\\ \\end{pmatrix} , \\begin{pmatrix}\\frac{1}{2} & \\frac{{\\it nx}}{2} & \\frac{{\\it ny}}{2} \\\\ \\frac{1}{2} & -\\frac{{\\it nx}}{2} & -\\frac{{\\it ny}}{2} \\\\ 0 & 1-{\\it nx}^2 & -{\\it nx}\\,{\\it ny} \\\\ \\end{pmatrix} \\right] \\]" ], "text/plain": [ " [ 1 nx ny ]\n", " [ 1 1 0 ] [ - -- -- ]\n", " [ ] [ - c 0 0 ] [ 2 2 2 ]\n", " [ nx - nx 1 ] [ ] [ ]\n", "(%o15) [[ ], [ 0 c 0 ], [ 1 nx ny ]]\n", " [ nx ] [ ] [ - - -- - -- ]\n", " [ ny - ny - -- ] [ 0 0 0 ] [ 2 2 2 ]\n", " [ ny ] [ ]\n", " [ 2 ]\n", " [ 0 1 - nx - nx ny ]" ], "text/x-maxima": [ "[matrix([1,1,0],[nx,-nx,1],[ny,-ny,-nx/ny]),matrix([-c,0,0],[0,c,0],[0,0,0]),\n", " matrix([1/2,nx/2,ny/2],[1/2,-nx/2,-ny/2],[0,1-nx^2,-nx*ny])]" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[wave_V, wave_D, wave_invV]:hypdiagonalize(wave_A);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Finding the Numerical Flux\n", "\n", "This function sets up a system of Rankine-Hugoniot conditions across the flux fan and solves for the stagnation state:" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "/* ------------------------------------------------------------------------- */\n", "/* compute upwind flux for a given operator with eigenvalues evs, sorted\n", " * in ascending order.\n", " * Sign assumptions for all variables occuring in evs must be in place.\n", " */\n", "/* ------------------------------------------------------------------------- */\n", "hyp_upwind_flux(evs, D):=block([evvars, Dp, Dm, n, midstates, states, unknowns],\n", " evvars:listofvars(evs),\n", "\n", " add_evvars_suffix(suffix, x):=subst(makelist(v=concat(''v, suffix), v, evvars), x),\n", "\n", " evsm:add_evvars_suffix(m, evs),\n", " evsp:add_evvars_suffix(p, evs),\n", "\n", " Dm:add_evvars_suffix(m, D),\n", " Dp:add_evvars_suffix(p, D),\n", "\n", " midstates:makelist(makelist(concat(s,state,i), i, 1, length(D)),\n", " state, 1, length(evs)-1),\n", "\n", " states:append(\n", " [makelist(concat(sm, i), i, 1, length(D))],\n", " midstates,\n", " [makelist(concat(sp,i), i, 1, length(D))]),\n", "\n", " unknowns:apply(append, midstates),\n", "\n", " result:if member(0, evs) then\n", " block([biasedD, veceqns, eqns, soln],\n", " biasedD:makelist(\n", " if evs[i] = 0 then [Dp,Dm]\n", " else if evs[i] > 0 then [Dp,Dp]\n", " else [Dm,Dm],\n", " i, 1, length(evs)),\n", "\n", " veceqns:apply(append, makelist(\n", " -(if evs[i] > 0 then evsp[i] else evsm[i]) *(states[i+1]-states[i])\n", " +(biasedD[i][1].states[i+1]-biasedD[i][2].states[i]),\n", " i,1,length(evs))),\n", "\n", " eqns:makelist(veceqns[i,1], i, 1, length(veceqns)),\n", "\n", " soln:solve(eqns, unknowns),\n", " assert(length(soln)=1),\n", "\n", " for i: 1 thru length(evs) do\n", " if evs[i] = 0 then return(Dp.subst(soln[1], midstates[i]))\n", " )\n", " else\n", " block([straddle_idx, Dstates, veceqns, eqns, soln],\n", " straddle_idx:for i: 1 thru length(evs)-1 do\n", " if (evs[i] < 0) and (evs[i+1] > 0) then return(i),\n", "\n", " flux:makelist(concat(flux,i),i,1,length(D)),\n", "\n", " unknowns:append(unknowns, flux),\n", "\n", " Dstates:append(\n", " [Dm.first(states)],\n", " makelist(\n", " if i = straddle_idx then flux\n", " else if evs[i] > 0 then Dp.midstates[i]\n", " else Dm.midstates[i],\n", " i, 1, length(midstates)),\n", " [Dp.last(states)]),\n", "\n", " veceqns:apply(append, makelist(\n", " -(if evs[i] > 0 then evsp[i] else evsm[i]) *(states[i+1]-states[i])\n", " +(Dstates[i+1]-Dstates[i]),\n", " i,1,length(evs))),\n", "\n", " eqns:makelist(veceqns[i,1], i, 1, length(veceqns)),\n", "\n", " print(covect(eqns)),\n", " soln:solve(eqns, unknowns),\n", " assert(length(soln)=1),\n", "\n", " subst(soln[1], flux)\n", " ),\n", " subst(\n", " append(\n", " makelist(concat(sm, i)=sm[i,1], i, 1, length(D)),\n", " makelist(concat(sp, i)=sp[i,1], i, 1, length(D))\n", " ),\n", " result)\n", " )$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Find an expression for the flux in characteristic variables.\n", "\n", "Note the `p` and `m` suffixes for the $+$ and $-$ sides of the interface." ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "solve: dependent equations eliminated: (1 6 8)\n" ] }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{17}$}\\left[ -c , c , 0 \\right] \\]" ], "text/plain": [ "(%o17) [- c, c, 0]" ], "text/x-maxima": [ "[-c,c,0]" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{18}$}\\begin{pmatrix}-{\\it sp}_{1,1}\\,{\\it cp} \\\\ {\\it sm}_{2,1}\\,{\\it cm} \\\\ 0 \\\\ \\end{pmatrix}\\]" ], "text/plain": [ " [ - sp cp ]\n", " [ 1, 1 ]\n", " [ ]\n", "(%o18) [ sm cm ]\n", " [ 2, 1 ]\n", " [ ]\n", " [ 0 ]" ], "text/x-maxima": [ "matrix([-sp[1,1]*cp],[sm[2,1]*cm],[0])" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wave_eigenvalues:makelist(wave_D[i,i], i, 1, length(wave_D));\n", "\n", "if member(0, wave_eigenvalues) then\n", " wave_sflux:hyp_upwind_flux([-c,0,c], wave_D)\n", "else\n", " wave_sflux:hyp_upwind_flux([-c,c], wave_D);\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Convert back to conserved variables:" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{19}$}\\begin{pmatrix}{\\it wave\\_sminw}_{2,1}\\,{\\it cm}-{\\it wave\\_spinw}_{1,1}\\,{\\it cp} \\\\ \\left(-{\\it wave\\_spinw}_{1,1}\\,{\\it cp}-{\\it wave\\_sminw}_{2,1}\\,{\\it cm}\\right)\\,{\\it nx} \\\\ \\left(-{\\it wave\\_spinw}_{1,1}\\,{\\it cp}-{\\it wave\\_sminw}_{2,1}\\,{\\it cm}\\right)\\,{\\it ny} \\\\ \\end{pmatrix}\\]" ], "text/plain": [ " [ wave_sminw cm - wave_spinw cp ]\n", " [ 2, 1 1, 1 ]\n", " [ ]\n", "(%o19) [ ((- wave_spinw cp) - wave_sminw cm) nx ]\n", " [ 1, 1 2, 1 ]\n", " [ ]\n", " [ ((- wave_spinw cp) - wave_sminw cm) ny ]\n", " [ 1, 1 2, 1 ]" ], "text/x-maxima": [ "matrix([wave_sminw[2,1]*cm-wave_spinw[1,1]*cp],\n", " [((-wave_spinw[1,1]*cp)-wave_sminw[2,1]*cm)*nx],\n", " [((-wave_spinw[1,1]*cp)-wave_sminw[2,1]*cm)*ny])" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wave_wflux:ratsimp(wave_V.ev(wave_sflux, [sm=wave_sminw,sp=wave_spinw]));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Maxwell's Equations\n", "\n", "First, set up some parameter assumptions:" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{20}$}\\left[ {\\it redundant} \\right] \\]" ], "text/plain": [ "(%o20) [redundant]" ], "text/x-maxima": [ "[redundant]" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{21}$}\\left[ \\mu>0 \\right] \\]" ], "text/plain": [ "(%o21) [mu > 0]" ], "text/x-maxima": [ "[mu > 0]" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{22}$}\\left[ \\varepsilon>0 \\right] \\]" ], "text/plain": [ "(%o22) [epsilon > 0]" ], "text/x-maxima": [ "[epsilon > 0]" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{23}$}\\left[ {\\it epsinv}>0 \\right] \\]" ], "text/plain": [ "(%o23) [epsinv > 0]" ], "text/x-maxima": [ "[epsinv > 0]" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{24}$}\\left[ {\\it muinv}>0 \\right] \\]" ], "text/plain": [ "(%o24) [muinv > 0]" ], "text/x-maxima": [ "[muinv > 0]" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "assume(c>0);\n", "assume(mu>0);\n", "assume(epsilon>0);\n", "assume(epsinv>0);\n", "assume(muinv>0);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some helper functions for matrix creation:" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [], "source": [ "/* A hyperbolic system matrix resulting from a curl */\n", "curlmat(coord):=genmatrix(\n", " lambda ([i,j], levi_civita([coord,j,i])),\n", " 3,3)$\n", "\n", "vstack:append$\n", "\n", "hstack(a,b):=transpose(append(transpose(a),transpose(b)))$\n", "\n", "blockmat(a11,a12,a21,a22):=vstack(hstack(a11,a12),hstack(a21,a22))$" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{29}$}\\left[ {\\it nx} , {\\it ny} , {\\it nz} \\right] \\]" ], "text/plain": [ "(%o29) [nx, ny, nz]" ], "text/x-maxima": [ "[nx,ny,nz]" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n:[nx,ny,nz];" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, write down the flux Jacobian on a line with normal `n`:" ] }, { "cell_type": "code", "execution_count": 100, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{31}$}\\begin{pmatrix}0 & 0 & 0 & 0 & {\\it epsinv}\\,{\\it nz} & -{\\it epsinv}\\,{\\it ny} \\\\ 0 & 0 & 0 & -{\\it epsinv}\\,{\\it nz} & 0 & {\\it epsinv}\\,{\\it nx} \\\\ 0 & 0 & 0 & {\\it epsinv}\\,{\\it ny} & -{\\it epsinv}\\,{\\it nx} & 0 \\\\ 0 & -{\\it muinv}\\,{\\it nz} & {\\it muinv}\\,{\\it ny} & 0 & 0 & 0 \\\\ {\\it muinv}\\,{\\it nz} & 0 & -{\\it muinv}\\,{\\it nx} & 0 & 0 & 0 \\\\ -{\\it muinv}\\,{\\it ny} & {\\it muinv}\\,{\\it nx} & 0 & 0 & 0 & 0 \\\\ \\end{pmatrix}\\]" ], "text/plain": [ "(%o31) \n", " [ 0 0 0 0 epsinv nz - epsinv ny ]\n", " [ ]\n", " [ 0 0 0 - epsinv nz 0 epsinv nx ]\n", " [ ]\n", " [ 0 0 0 epsinv ny - epsinv nx 0 ]\n", " [ ]\n", " [ 0 - muinv nz muinv ny 0 0 0 ]\n", " [ ]\n", " [ muinv nz 0 - muinv nx 0 0 0 ]\n", " [ ]\n", " [ - muinv ny muinv nx 0 0 0 0 ]" ], "text/x-maxima": [ "matrix([0,0,0,0,epsinv*nz,-epsinv*ny],[0,0,0,-epsinv*nz,0,epsinv*nx],\n", " [0,0,0,epsinv*ny,-epsinv*nx,0],[0,-muinv*nz,muinv*ny,0,0,0],\n", " [muinv*nz,0,-muinv*nx,0,0,0],[-muinv*ny,muinv*nx,0,0,0,0])" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{32}$}\\begin{pmatrix}0 & 0 & 0 & 0 & \\frac{{\\it nz}}{\\varepsilon} & -\\frac{{\\it ny}}{\\varepsilon} \\\\ 0 & 0 & 0 & -\\frac{{\\it nz}}{\\varepsilon} & 0 & \\frac{{\\it nx}}{\\varepsilon} \\\\ 0 & 0 & 0 & \\frac{{\\it ny}}{\\varepsilon} & -\\frac{{\\it nx}}{\\varepsilon} & 0 \\\\ 0 & -\\frac{{\\it nz}}{\\mu} & \\frac{{\\it ny}}{\\mu} & 0 & 0 & 0 \\\\ \\frac{{\\it nz}}{\\mu} & 0 & -\\frac{{\\it nx}}{\\mu} & 0 & 0 & 0 \\\\ -\\frac{{\\it ny}}{\\mu} & \\frac{{\\it nx}}{\\mu} & 0 & 0 & 0 & 0 \\\\ \\end{pmatrix}\\]" ], "text/plain": [ " [ nz ny ]\n", " [ 0 0 0 0 ------- - ------- ]\n", " [ epsilon epsilon ]\n", " [ ]\n", " [ nz nx ]\n", " [ 0 0 0 - ------- 0 ------- ]\n", " [ epsilon epsilon ]\n", " [ ]\n", " [ ny nx ]\n", " [ 0 0 0 ------- - ------- 0 ]\n", " [ epsilon epsilon ]\n", "(%o32) [ ]\n", " [ nz ny ]\n", " [ 0 - -- -- 0 0 0 ]\n", " [ mu mu ]\n", " [ ]\n", " [ nz nx ]\n", " [ -- 0 - -- 0 0 0 ]\n", " [ mu mu ]\n", " [ ]\n", " [ ny nx ]\n", " [ - -- -- 0 0 0 0 ]\n", " [ mu mu ]" ], "text/x-maxima": [ "matrix([0,0,0,0,nz/epsilon,-ny/epsilon],[0,0,0,-nz/epsilon,0,nx/epsilon],\n", " [0,0,0,ny/epsilon,-nx/epsilon,0],[0,-nz/mu,ny/mu,0,0,0],\n", " [nz/mu,0,-nx/mu,0,0,0],[-ny/mu,nx/mu,0,0,0,0])" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max_submat(i):=blockmat(\n", " zeromatrix(3,3),\n", " -epsinv*curlmat(i), /* epsinv = 1/epsilon */\n", " muinv*curlmat(i), /* muinv = 1/mu */\n", " zeromatrix(3,3)\n", " )$\n", "\n", "max_Asimp:sum(n[i]*max_submat(i),i,1,3);\n", "max_A:subst([epsinv=1/epsilon,muinv=1/mu], max_Asimp);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, diagonalize to obtain the transformation to/from characteristic variables:" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{34}$}\\left[ \\begin{pmatrix}1 & 0 & 1 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 1 & \\frac{{\\it ny}}{{\\it nx}} & 0 \\\\ -\\frac{{\\it nx}}{{\\it nz}} & -\\frac{{\\it ny}}{{\\it nz}} & -\\frac{{\\it nx}}{{\\it nz}} & -\\frac{{\\it ny}}{{\\it nz}} & \\frac{{\\it nz}}{{\\it nx}} & 0 \\\\ \\frac{\\sqrt{\\varepsilon}\\,{\\it nx}\\,{\\it ny}}{\\sqrt{\\mu}\\,{\\it nz}} & -\\frac{\\sqrt{\\varepsilon}\\,\\left({\\it nx}^2-1\\right)}{\\sqrt{\\mu}\\,{\\it nz}} & -\\frac{\\sqrt{\\varepsilon}\\,{\\it nx}\\,{\\it ny}}{\\sqrt{\\mu}\\,{\\it nz}} & \\frac{\\sqrt{\\varepsilon}\\,\\left({\\it nx}^2-1\\right)}{\\sqrt{\\mu}\\,{\\it nz}} & 0 & 1 \\\\ \\frac{\\sqrt{\\varepsilon}\\,\\left({\\it ny}^2-1\\right)}{\\sqrt{\\mu}\\,{\\it nz}} & -\\frac{\\sqrt{\\varepsilon}\\,{\\it nx}\\,{\\it ny}}{\\sqrt{\\mu}\\,{\\it nz}} & -\\frac{\\sqrt{\\varepsilon}\\,\\left({\\it ny}^2-1\\right)}{\\sqrt{\\mu}\\,{\\it nz}} & \\frac{\\sqrt{\\varepsilon}\\,{\\it nx}\\,{\\it ny}}{\\sqrt{\\mu}\\,{\\it nz}} & 0 & \\frac{{\\it ny}}{{\\it nx}} \\\\ \\frac{\\sqrt{\\varepsilon}\\,{\\it ny}}{\\sqrt{\\mu}} & -\\frac{\\sqrt{\\varepsilon}\\,{\\it nx}}{\\sqrt{\\mu}} & -\\frac{\\sqrt{\\varepsilon}\\,{\\it ny}}{\\sqrt{\\mu}} & \\frac{\\sqrt{\\varepsilon}\\,{\\it nx}}{\\sqrt{\\mu}} & 0 & \\frac{{\\it nz}}{{\\it nx}} \\\\ \\end{pmatrix} , \\begin{pmatrix}-\\frac{1}{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}} & 0 & 0 & 0 & 0 & 0 \\\\ 0 & -\\frac{1}{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}} & 0 & 0 & 0 & 0 \\\\ 0 & 0 & \\frac{1}{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}} & 0 & 0 & 0 \\\\ 0 & 0 & 0 & \\frac{1}{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}} & 0 & 0 \\\\ 0 & 0 & 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 & 0 & 0 \\\\ \\end{pmatrix} , \\begin{pmatrix}-\\frac{{\\it nx}^2-1}{2} & -\\frac{{\\it nx}\\,{\\it ny}}{2} & -\\frac{{\\it nx}\\,{\\it nz}}{2} & 0 & -\\frac{\\sqrt{\\mu}\\,{\\it nz}}{2\\,\\sqrt{\\varepsilon}} & \\frac{\\sqrt{\\mu}\\,{\\it ny}}{2\\,\\sqrt{\\varepsilon}} \\\\ -\\frac{{\\it nx}\\,{\\it ny}}{2} & -\\frac{{\\it ny}^2-1}{2} & -\\frac{{\\it ny}\\,{\\it nz}}{2} & \\frac{\\sqrt{\\mu}\\,{\\it nz}}{2\\,\\sqrt{\\varepsilon}} & 0 & -\\frac{\\sqrt{\\mu}\\,{\\it nx}}{2\\,\\sqrt{\\varepsilon}} \\\\ -\\frac{{\\it nx}^2-1}{2} & -\\frac{{\\it nx}\\,{\\it ny}}{2} & -\\frac{{\\it nx}\\,{\\it nz}}{2} & 0 & \\frac{\\sqrt{\\mu}\\,{\\it nz}}{2\\,\\sqrt{\\varepsilon}} & -\\frac{\\sqrt{\\mu}\\,{\\it ny}}{2\\,\\sqrt{\\varepsilon}} \\\\ -\\frac{{\\it nx}\\,{\\it ny}}{2} & -\\frac{{\\it ny}^2-1}{2} & -\\frac{{\\it ny}\\,{\\it nz}}{2} & -\\frac{\\sqrt{\\mu}\\,{\\it nz}}{2\\,\\sqrt{\\varepsilon}} & 0 & \\frac{\\sqrt{\\mu}\\,{\\it nx}}{2\\,\\sqrt{\\varepsilon}} \\\\ {\\it nx}^2 & {\\it nx}\\,{\\it ny} & {\\it nx}\\,{\\it nz} & 0 & 0 & 0 \\\\ 0 & 0 & 0 & {\\it nx}^2 & {\\it nx}\\,{\\it ny} & -\\frac{{\\it nx}\\,{\\it ny}^2+{\\it nx}^3-{\\it nx}}{{\\it nz}} \\\\ \\end{pmatrix} \\right] \\]" ], "text/plain": [ " ny\n", "(%o34) [matrix([1, 0, 1, 0, 1, 0], [0, 1, 0, 1, --, 0], \n", " nx\n", " nx ny nx ny nz sqrt(epsilon) nx ny\n", "[- --, - --, - --, - --, --, 0], [-------------------, \n", " nz nz nz nz nx sqrt(mu) nz\n", " 2 2\n", " sqrt(epsilon) (nx - 1) sqrt(epsilon) nx ny sqrt(epsilon) (nx - 1)\n", "- -----------------------, - -------------------, -----------------------, 0, \n", " sqrt(mu) nz sqrt(mu) nz sqrt(mu) nz\n", " 2\n", " sqrt(epsilon) (ny - 1) sqrt(epsilon) nx ny\n", "1], [-----------------------, - -------------------, \n", " sqrt(mu) nz sqrt(mu) nz\n", " 2\n", " sqrt(epsilon) (ny - 1) sqrt(epsilon) nx ny ny\n", "- -----------------------, -------------------, 0, --], \n", " sqrt(mu) nz sqrt(mu) nz nx\n", " sqrt(epsilon) ny sqrt(epsilon) nx sqrt(epsilon) ny sqrt(epsilon) nx\n", "[----------------, - ----------------, - ----------------, ----------------, \n", " sqrt(mu) sqrt(mu) sqrt(mu) sqrt(mu)\n", " nz 1\n", "0, --]), matrix([- ----------------------, 0, 0, 0, 0, 0], \n", " nx sqrt(epsilon) sqrt(mu)\n", " 1\n", "[0, - ----------------------, 0, 0, 0, 0], \n", " sqrt(epsilon) sqrt(mu)\n", " 1\n", "[0, 0, ----------------------, 0, 0, 0], \n", " sqrt(epsilon) sqrt(mu)\n", " 1\n", "[0, 0, 0, ----------------------, 0, 0], [0, 0, 0, 0, 0, 0], \n", " sqrt(epsilon) sqrt(mu)\n", " 2\n", " nx - 1 nx ny nx nz\n", "[0, 0, 0, 0, 0, 0]), matrix([- -------, - -----, - -----, 0, \n", " 2 2 2\n", " 2\n", " sqrt(mu) nz sqrt(mu) ny nx ny ny - 1 ny nz\n", "- ---------------, ---------------], [- -----, - -------, - -----, \n", " 2 sqrt(epsilon) 2 sqrt(epsilon) 2 2 2\n", " sqrt(mu) nz sqrt(mu) nx\n", "---------------, 0, - ---------------], \n", "2 sqrt(epsilon) 2 sqrt(epsilon)\n", " 2\n", " nx - 1 nx ny nx nz sqrt(mu) nz sqrt(mu) ny\n", "[- -------, - -----, - -----, 0, ---------------, - ---------------], \n", " 2 2 2 2 sqrt(epsilon) 2 sqrt(epsilon)\n", " 2\n", " nx ny ny - 1 ny nz sqrt(mu) nz sqrt(mu) nx\n", "[- -----, - -------, - -----, - ---------------, 0, ---------------], \n", " 2 2 2 2 sqrt(epsilon) 2 sqrt(epsilon)\n", " 2 3\n", " 2 2 nx ny + nx - nx\n", "[nx , nx ny, nx nz, 0, 0, 0], [0, 0, 0, nx , nx ny, - -----------------])]\n", " nz" ], "text/x-maxima": [ "[matrix([1,0,1,0,1,0],[0,1,0,1,ny/nx,0],[-nx/nz,-ny/nz,-nx/nz,-ny/nz,nz/nx,0],\n", " [(sqrt(epsilon)*nx*ny)/(sqrt(mu)*nz),\n", " -(sqrt(epsilon)*(nx^2-1))/(sqrt(mu)*nz),\n", " -(sqrt(epsilon)*nx*ny)/(sqrt(mu)*nz),\n", " (sqrt(epsilon)*(nx^2-1))/(sqrt(mu)*nz),0,1],\n", " [(sqrt(epsilon)*(ny^2-1))/(sqrt(mu)*nz),\n", " -(sqrt(epsilon)*nx*ny)/(sqrt(mu)*nz),\n", " -(sqrt(epsilon)*(ny^2-1))/(sqrt(mu)*nz),\n", " (sqrt(epsilon)*nx*ny)/(sqrt(mu)*nz),0,ny/nx],\n", " [(sqrt(epsilon)*ny)/sqrt(mu),-(sqrt(epsilon)*nx)/sqrt(mu),\n", " -(sqrt(epsilon)*ny)/sqrt(mu),(sqrt(epsilon)*nx)/sqrt(mu),0,nz/nx]),\n", " matrix([-1/(sqrt(epsilon)*sqrt(mu)),0,0,0,0,0],\n", " [0,-1/(sqrt(epsilon)*sqrt(mu)),0,0,0,0],\n", " [0,0,1/(sqrt(epsilon)*sqrt(mu)),0,0,0],\n", " [0,0,0,1/(sqrt(epsilon)*sqrt(mu)),0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]),\n", " matrix([-(nx^2-1)/2,-(nx*ny)/2,-(nx*nz)/2,0,-(sqrt(mu)*nz)/(2*sqrt(epsilon)),\n", " (sqrt(mu)*ny)/(2*sqrt(epsilon))],\n", " [-(nx*ny)/2,-(ny^2-1)/2,-(ny*nz)/2,(sqrt(mu)*nz)/(2*sqrt(epsilon)),0,\n", " -(sqrt(mu)*nx)/(2*sqrt(epsilon))],\n", " [-(nx^2-1)/2,-(nx*ny)/2,-(nx*nz)/2,0,(sqrt(mu)*nz)/(2*sqrt(epsilon)),\n", " -(sqrt(mu)*ny)/(2*sqrt(epsilon))],\n", " [-(nx*ny)/2,-(ny^2-1)/2,-(ny*nz)/2,-(sqrt(mu)*nz)/(2*sqrt(epsilon)),0,\n", " (sqrt(mu)*nx)/(2*sqrt(epsilon))],[nx^2,nx*ny,nx*nz,0,0,0],\n", " [0,0,0,nx^2,nx*ny,-(nx*ny^2+nx^3-nx)/nz])]" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max_invsubst(x):=subst([epsinv=1/epsilon, muinv=1/mu], x)$\n", "\n", "[max_V, max_D, max_invV]:max_invsubst(hypdiagonalize(max_Asimp));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now find the flux in characteristic variables:" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "solve: dependent equations eliminated: (1 2 11 16 15 12)\n" ] }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{35}$}\\begin{pmatrix}-c & 0 & 0 & 0 & 0 & 0 \\\\ 0 & -c & 0 & 0 & 0 & 0 \\\\ 0 & 0 & c & 0 & 0 & 0 \\\\ 0 & 0 & 0 & c & 0 & 0 \\\\ 0 & 0 & 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 & 0 & 0 \\\\ \\end{pmatrix}\\]" ], "text/plain": [ " [ - c 0 0 0 0 0 ]\n", " [ ]\n", " [ 0 - c 0 0 0 0 ]\n", " [ ]\n", " [ 0 0 c 0 0 0 ]\n", "(%o35) [ ]\n", " [ 0 0 0 c 0 0 ]\n", " [ ]\n", " [ 0 0 0 0 0 0 ]\n", " [ ]\n", " [ 0 0 0 0 0 0 ]" ], "text/x-maxima": [ "matrix([-c,0,0,0,0,0],[0,-c,0,0,0,0],[0,0,c,0,0,0],[0,0,0,c,0,0],\n", " [0,0,0,0,0,0],[0,0,0,0,0,0])" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{36}$}\\begin{pmatrix}-{\\it sp}_{1,1}\\,{\\it cp} \\\\ -{\\it sp}_{2,1}\\,{\\it cp} \\\\ {\\it sm}_{3,1}\\,{\\it cm} \\\\ {\\it sm}_{4,1}\\,{\\it cm} \\\\ 0 \\\\ 0 \\\\ \\end{pmatrix}\\]" ], "text/plain": [ " [ - sp cp ]\n", " [ 1, 1 ]\n", " [ ]\n", " [ - sp cp ]\n", " [ 2, 1 ]\n", " [ ]\n", " [ sm cm ]\n", "(%o36) [ 3, 1 ]\n", " [ ]\n", " [ sm cm ]\n", " [ 4, 1 ]\n", " [ ]\n", " [ 0 ]\n", " [ ]\n", " [ 0 ]" ], "text/x-maxima": [ "matrix([-sp[1,1]*cp],[-sp[2,1]*cp],[sm[3,1]*cm],[sm[4,1]*cm],[0],[0])" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{37}$}\\begin{pmatrix}-\\frac{{\\it sp}_{1,1}}{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}} \\\\ -\\frac{{\\it sp}_{2,1}}{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}} \\\\ \\frac{{\\it sm}_{3,1}}{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}} \\\\ \\frac{{\\it sm}_{4,1}}{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}} \\\\ 0 \\\\ 0 \\\\ \\end{pmatrix}\\]" ], "text/plain": [ " [ sp ]\n", " [ 1, 1 ]\n", " [ - ---------------------- ]\n", " [ sqrt(epsilon) sqrt(mu) ]\n", " [ ]\n", " [ sp ]\n", " [ 2, 1 ]\n", " [ - ---------------------- ]\n", " [ sqrt(epsilon) sqrt(mu) ]\n", " [ ]\n", " [ sm ]\n", "(%o37) [ 3, 1 ]\n", " [ ---------------------- ]\n", " [ sqrt(epsilon) sqrt(mu) ]\n", " [ ]\n", " [ sm ]\n", " [ 4, 1 ]\n", " [ ---------------------- ]\n", " [ sqrt(epsilon) sqrt(mu) ]\n", " [ ]\n", " [ 0 ]\n", " [ ]\n", " [ 0 ]" ], "text/x-maxima": [ "matrix([-sp[1,1]/(sqrt(epsilon)*sqrt(mu))],\n", " [-sp[2,1]/(sqrt(epsilon)*sqrt(mu))],[sm[3,1]/(sqrt(epsilon)*sqrt(mu))],\n", " [sm[4,1]/(sqrt(epsilon)*sqrt(mu))],[0],[0])" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max_Dinc:subst([1/(sqrt(epsilon)*sqrt(mu))=c], max_D);\n", "max_sflux:hyp_upwind_flux([-c,0,c], max_Dinc);\n", "\n", "/* FIXME: max_V should not depend on epsilon and mu, but it does \n", " For now, make cp and cm equal. */\n", "\n", "max_sflux:subst(\n", " [cp=1/(sqrt(epsilon)*sqrt(mu)), cm=1/(sqrt(epsilon)*sqrt(mu))], \n", " max_sflux);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And in conserved variables:" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{46}$}\\begin{pmatrix}\\frac{\\sqrt{\\varepsilon}\\,\\left(\\left({\\it Ep}_{3}-{\\it Em}_{3}\\right)\\,{\\it nx}\\,{\\it nz}+\\left({\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,{\\it nx}\\,{\\it ny}+\\left({\\it Ep}_{1}-{\\it Em}_{1}\\right)\\,{\\it nx}^2-{\\it Ep}_{1}+{\\it Em}_{1}\\right)+\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{2}+{\\it Hm}_{2}\\right)\\,{\\it nz}+\\left(-{\\it Hp}_{3}-{\\it Hm}_{3}\\right)\\,{\\it ny}\\right)}{2\\,\\varepsilon\\,\\sqrt{\\mu}} \\\\ -\\frac{\\sqrt{\\varepsilon}\\,\\left(\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,{\\it ny}\\,{\\it nz}+\\left({\\it Em}_{2}-{\\it Ep}_{2}\\right)\\,{\\it ny}^2+\\left({\\it Em}_{1}-{\\it Ep}_{1}\\right)\\,{\\it nx}\\,{\\it ny}+{\\it Ep}_{2}-{\\it Em}_{2}\\right)+\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{1}+{\\it Hm}_{1}\\right)\\,{\\it nz}+\\left(-{\\it Hp}_{3}-{\\it Hm}_{3}\\right)\\,{\\it nx}\\right)}{2\\,\\varepsilon\\,\\sqrt{\\mu}} \\\\ \\frac{\\sqrt{\\varepsilon}\\,\\left(\\left(\\left({\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,{\\it ny}+\\left({\\it Ep}_{1}-{\\it Em}_{1}\\right)\\,{\\it nx}\\right)\\,{\\it nz}+\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,{\\it ny}^2+\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,{\\it nx}^2\\right)+\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{1}+{\\it Hm}_{1}\\right)\\,{\\it ny}+\\left(-{\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it nx}\\right)}{2\\,\\varepsilon\\,\\sqrt{\\mu}} \\\\ \\frac{\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{3}-{\\it Hm}_{3}\\right)\\,{\\it nx}\\,{\\it nz}+\\left({\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it nx}\\,{\\it ny}+\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,{\\it nx}^2-{\\it Hp}_{1}+{\\it Hm}_{1}\\right)+\\sqrt{\\varepsilon}\\,\\left(\\left(-{\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,{\\it nz}+\\left({\\it Ep}_{3}+{\\it Em}_{3}\\right)\\,{\\it ny}\\right)}{2\\,\\sqrt{\\varepsilon}\\,\\mu} \\\\ \\frac{\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{3}-{\\it Hm}_{3}\\right)\\,{\\it ny}\\,{\\it nz}+\\left({\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it ny}^2+\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,{\\it nx}\\,{\\it ny}-{\\it Hp}_{2}+{\\it Hm}_{2}\\right)+\\sqrt{\\varepsilon}\\,\\left(\\left({\\it Ep}_{1}+{\\it Em}_{1}\\right)\\,{\\it nz}+\\left(-{\\it Ep}_{3}-{\\it Em}_{3}\\right)\\,{\\it nx}\\right)}{2\\,\\sqrt{\\varepsilon}\\,\\mu} \\\\ \\frac{\\sqrt{\\mu}\\,\\left(\\left(\\left({\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it ny}+\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,{\\it nx}\\right)\\,{\\it nz}+\\left({\\it Hm}_{3}-{\\it Hp}_{3}\\right)\\,{\\it ny}^2+\\left({\\it Hm}_{3}-{\\it Hp}_{3}\\right)\\,{\\it nx}^2\\right)+\\sqrt{\\varepsilon}\\,\\left(\\left(-{\\it Ep}_{1}-{\\it Em}_{1}\\right)\\,{\\it ny}+\\left({\\it Ep}_{2}+{\\it Em}_{2}\\right)\\,{\\it nx}\\right)}{2\\,\\sqrt{\\varepsilon}\\,\\mu} \\\\ \\end{pmatrix}\\]" ], "text/plain": [ "(%o46) matrix([(sqrt(epsilon) ((Ep - Em ) nx nz + (Ep - Em ) nx ny\n", " 3 3 2 2\n", " 2\n", " + (Ep - Em ) nx - Ep + Em ) + sqrt(mu)\n", " 1 1 1 1\n", " ((Hp + Hm ) nz + ((- Hp ) - Hm ) ny))/(2 epsilon sqrt(mu))], \n", " 2 2 3 3\n", " 2\n", "[- (sqrt(epsilon) ((Em - Ep ) ny nz + (Em - Ep ) ny + (Em - Ep ) nx ny\n", " 3 3 2 2 1 1\n", " + Ep - Em ) + sqrt(mu) ((Hp + Hm ) nz + ((- Hp ) - Hm ) nx))\n", " 2 2 1 1 3 3\n", "/(2 epsilon sqrt(mu))], [(sqrt(epsilon)\n", " 2 2\n", " (((Ep - Em ) ny + (Ep - Em ) nx) nz + (Em - Ep ) ny + (Em - Ep ) nx )\n", " 2 2 1 1 3 3 3 3\n", " + sqrt(mu) ((Hp + Hm ) ny + ((- Hp ) - Hm ) nx))/(2 epsilon sqrt(mu))], \n", " 1 1 2 2\n", " 2\n", "[(sqrt(mu) ((Hp - Hm ) nx nz + (Hp - Hm ) nx ny + (Hp - Hm ) nx - Hp\n", " 3 3 2 2 1 1 1\n", " + Hm ) + sqrt(epsilon) (((- Ep ) - Em ) nz + (Ep + Em ) ny))\n", " 1 2 2 3 3\n", " 2\n", "/(2 sqrt(epsilon) mu)], [(sqrt(mu) ((Hp - Hm ) ny nz + (Hp - Hm ) ny\n", " 3 3 2 2\n", " + (Hp - Hm ) nx ny - Hp + Hm ) + sqrt(epsilon)\n", " 1 1 2 2\n", " ((Ep + Em ) nz + ((- Ep ) - Em ) nx))/(2 sqrt(epsilon) mu)], \n", " 1 1 3 3\n", " 2\n", "[(sqrt(mu) (((Hp - Hm ) ny + (Hp - Hm ) nx) nz + (Hm - Hp ) ny\n", " 2 2 1 1 3 3\n", " 2\n", " + (Hm - Hp ) nx ) + sqrt(epsilon) (((- Ep ) - Em ) ny + (Ep + Em ) nx))\n", " 3 3 1 1 2 2\n", "/(2 sqrt(epsilon) mu)])" ], "text/x-maxima": [ "matrix([(sqrt(epsilon)*((Ep[3]-Em[3])*nx*nz+(Ep[2]-Em[2])*nx*ny\n", " +(Ep[1]-Em[1])*nx^2-Ep[1]+Em[1])\n", " +sqrt(mu)*((Hp[2]+Hm[2])*nz+((-Hp[3])-Hm[3])*ny))\n", " /(2*epsilon*sqrt(mu))],\n", " [-(sqrt(epsilon)*((Em[3]-Ep[3])*ny*nz+(Em[2]-Ep[2])*ny^2\n", " +(Em[1]-Ep[1])*nx*ny+Ep[2]-Em[2])\n", " +sqrt(mu)*((Hp[1]+Hm[1])*nz+((-Hp[3])-Hm[3])*nx))\n", " /(2*epsilon*sqrt(mu))],\n", " [(sqrt(epsilon)*(((Ep[2]-Em[2])*ny+(Ep[1]-Em[1])*nx)*nz\n", " +(Em[3]-Ep[3])*ny^2+(Em[3]-Ep[3])*nx^2)\n", " +sqrt(mu)*((Hp[1]+Hm[1])*ny+((-Hp[2])-Hm[2])*nx))\n", " /(2*epsilon*sqrt(mu))],\n", " [(sqrt(mu)*((Hp[3]-Hm[3])*nx*nz+(Hp[2]-Hm[2])*nx*ny+(Hp[1]-Hm[1])*nx^2\n", " -Hp[1]+Hm[1])\n", " +sqrt(epsilon)*(((-Ep[2])-Em[2])*nz+(Ep[3]+Em[3])*ny))\n", " /(2*sqrt(epsilon)*mu)],\n", " [(sqrt(mu)*((Hp[3]-Hm[3])*ny*nz+(Hp[2]-Hm[2])*ny^2+(Hp[1]-Hm[1])*nx*ny\n", " -Hp[2]+Hm[2])\n", " +sqrt(epsilon)*((Ep[1]+Em[1])*nz+((-Ep[3])-Em[3])*nx))\n", " /(2*sqrt(epsilon)*mu)],\n", " [(sqrt(mu)*(((Hp[2]-Hm[2])*ny+(Hp[1]-Hm[1])*nx)*nz\n", " +(Hm[3]-Hp[3])*ny^2+(Hm[3]-Hp[3])*nx^2)\n", " +sqrt(epsilon)*(((-Ep[1])-Em[1])*ny+(Ep[2]+Em[2])*nx))\n", " /(2*sqrt(epsilon)*mu)])" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max_Em:makelist(Em[i],i,1,3)$\n", "max_Ep:makelist(Ep[i],i,1,3)$\n", "max_Hm:makelist(Hm[i],i,1,3)$\n", "max_Hp:makelist(Hp[i],i,1,3)$\n", "max_wm:vstack(max_Em,max_Hm)$\n", "max_wp:vstack(max_Ep,max_Hp)$\n", "\n", "max_sminw:hypsimp(max_invV.max_wm)$\n", "max_spinw:hypsimp(max_invV.max_wp)$\n", "\n", "max_wflux:fullhypsimp(max_V.ev(max_sflux, [sm=max_sminw,sp=max_spinw]));" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{47}$}\\begin{pmatrix}\\frac{{\\it Hm}_{2}\\,{\\it nz}}{\\varepsilon}-\\frac{{\\it Hm}_{3}\\,{\\it ny}}{\\varepsilon} \\\\ \\frac{{\\it Hm}_{3}\\,{\\it nx}}{\\varepsilon}-\\frac{{\\it Hm}_{1}\\,{\\it nz}}{\\varepsilon} \\\\ \\frac{{\\it Hm}_{1}\\,{\\it ny}}{\\varepsilon}-\\frac{{\\it Hm}_{2}\\,{\\it nx}}{\\varepsilon} \\\\ \\frac{{\\it Em}_{3}\\,{\\it ny}}{\\mu}-\\frac{{\\it Em}_{2}\\,{\\it nz}}{\\mu} \\\\ \\frac{{\\it Em}_{1}\\,{\\it nz}}{\\mu}-\\frac{{\\it Em}_{3}\\,{\\it nx}}{\\mu} \\\\ \\frac{{\\it Em}_{2}\\,{\\it nx}}{\\mu}-\\frac{{\\it Em}_{1}\\,{\\it ny}}{\\mu} \\\\ \\end{pmatrix}\\]" ], "text/plain": [ " [ Hm nz Hm ny ]\n", " [ 2 3 ]\n", " [ ------- - ------- ]\n", " [ epsilon epsilon ]\n", " [ ]\n", " [ Hm nx Hm nz ]\n", " [ 3 1 ]\n", " [ ------- - ------- ]\n", " [ epsilon epsilon ]\n", " [ ]\n", " [ Hm ny Hm nx ]\n", " [ 1 2 ]\n", " [ ------- - ------- ]\n", " [ epsilon epsilon ]\n", "(%o47) [ ]\n", " [ Em ny Em nz ]\n", " [ 3 2 ]\n", " [ ------ - ------ ]\n", " [ mu mu ]\n", " [ ]\n", " [ Em nz Em nx ]\n", " [ 1 3 ]\n", " [ ------ - ------ ]\n", " [ mu mu ]\n", " [ ]\n", " [ Em nx Em ny ]\n", " [ 2 1 ]\n", " [ ------ - ------ ]\n", " [ mu mu ]" ], "text/x-maxima": [ "matrix([(Hm[2]*nz)/epsilon-(Hm[3]*ny)/epsilon],\n", " [(Hm[3]*nx)/epsilon-(Hm[1]*nz)/epsilon],\n", " [(Hm[1]*ny)/epsilon-(Hm[2]*nx)/epsilon],[(Em[3]*ny)/mu-(Em[2]*nz)/mu],\n", " [(Em[1]*nz)/mu-(Em[3]*nx)/mu],[(Em[2]*nx)/mu-(Em[1]*ny)/mu])" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{48}$}\\begin{pmatrix}-\\frac{\\sqrt{\\varepsilon}\\,\\left(\\left({\\it Ep}_{3}-{\\it Em}_{3}\\right)\\,{\\it nx}\\,{\\it nz}+\\left({\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,{\\it nx}\\,{\\it ny}+\\left({\\it Ep}_{1}-{\\it Em}_{1}\\right)\\,{\\it nx}^2-{\\it Ep}_{1}+{\\it Em}_{1}\\right)+\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{2}+{\\it Hm}_{2}\\right)\\,{\\it nz}+\\left(-{\\it Hp}_{3}-{\\it Hm}_{3}\\right)\\,{\\it ny}\\right)}{2\\,\\varepsilon\\,\\sqrt{\\mu}}+\\frac{{\\it Hm}_{2}\\,{\\it nz}}{\\varepsilon}-\\frac{{\\it Hm}_{3}\\,{\\it ny}}{\\varepsilon} \\\\ \\frac{\\sqrt{\\varepsilon}\\,\\left(\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,{\\it ny}\\,{\\it nz}+\\left({\\it Em}_{2}-{\\it Ep}_{2}\\right)\\,{\\it ny}^2+\\left({\\it Em}_{1}-{\\it Ep}_{1}\\right)\\,{\\it nx}\\,{\\it ny}+{\\it Ep}_{2}-{\\it Em}_{2}\\right)+\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{1}+{\\it Hm}_{1}\\right)\\,{\\it nz}+\\left(-{\\it Hp}_{3}-{\\it Hm}_{3}\\right)\\,{\\it nx}\\right)}{2\\,\\varepsilon\\,\\sqrt{\\mu}}-\\frac{{\\it Hm}_{1}\\,{\\it nz}}{\\varepsilon}+\\frac{{\\it Hm}_{3}\\,{\\it nx}}{\\varepsilon} \\\\ -\\frac{\\sqrt{\\varepsilon}\\,\\left(\\left(\\left({\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,{\\it ny}+\\left({\\it Ep}_{1}-{\\it Em}_{1}\\right)\\,{\\it nx}\\right)\\,{\\it nz}+\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,{\\it ny}^2+\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,{\\it nx}^2\\right)+\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{1}+{\\it Hm}_{1}\\right)\\,{\\it ny}+\\left(-{\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it nx}\\right)}{2\\,\\varepsilon\\,\\sqrt{\\mu}}+\\frac{{\\it Hm}_{1}\\,{\\it ny}}{\\varepsilon}-\\frac{{\\it Hm}_{2}\\,{\\it nx}}{\\varepsilon} \\\\ -\\frac{\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{3}-{\\it Hm}_{3}\\right)\\,{\\it nx}\\,{\\it nz}+\\left({\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it nx}\\,{\\it ny}+\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,{\\it nx}^2-{\\it Hp}_{1}+{\\it Hm}_{1}\\right)+\\sqrt{\\varepsilon}\\,\\left(\\left(-{\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,{\\it nz}+\\left({\\it Ep}_{3}+{\\it Em}_{3}\\right)\\,{\\it ny}\\right)}{2\\,\\sqrt{\\varepsilon}\\,\\mu}-\\frac{{\\it Em}_{2}\\,{\\it nz}}{\\mu}+\\frac{{\\it Em}_{3}\\,{\\it ny}}{\\mu} \\\\ -\\frac{\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{3}-{\\it Hm}_{3}\\right)\\,{\\it ny}\\,{\\it nz}+\\left({\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it ny}^2+\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,{\\it nx}\\,{\\it ny}-{\\it Hp}_{2}+{\\it Hm}_{2}\\right)+\\sqrt{\\varepsilon}\\,\\left(\\left({\\it Ep}_{1}+{\\it Em}_{1}\\right)\\,{\\it nz}+\\left(-{\\it Ep}_{3}-{\\it Em}_{3}\\right)\\,{\\it nx}\\right)}{2\\,\\sqrt{\\varepsilon}\\,\\mu}+\\frac{{\\it Em}_{1}\\,{\\it nz}}{\\mu}-\\frac{{\\it Em}_{3}\\,{\\it nx}}{\\mu} \\\\ -\\frac{\\sqrt{\\mu}\\,\\left(\\left(\\left({\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it ny}+\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,{\\it nx}\\right)\\,{\\it nz}+\\left({\\it Hm}_{3}-{\\it Hp}_{3}\\right)\\,{\\it ny}^2+\\left({\\it Hm}_{3}-{\\it Hp}_{3}\\right)\\,{\\it nx}^2\\right)+\\sqrt{\\varepsilon}\\,\\left(\\left(-{\\it Ep}_{1}-{\\it Em}_{1}\\right)\\,{\\it ny}+\\left({\\it Ep}_{2}+{\\it Em}_{2}\\right)\\,{\\it nx}\\right)}{2\\,\\sqrt{\\varepsilon}\\,\\mu}-\\frac{{\\it Em}_{1}\\,{\\it ny}}{\\mu}+\\frac{{\\it Em}_{2}\\,{\\it nx}}{\\mu} \\\\ \\end{pmatrix}\\]" ], "text/plain": [ "(%o48) matrix([(- (sqrt(epsilon) ((Ep - Em ) nx nz + (Ep - Em ) nx ny\n", " 3 3 2 2\n", " 2\n", " + (Ep - Em ) nx - Ep + Em ) + sqrt(mu)\n", " 1 1 1 1\n", " Hm nz\n", " 2\n", " ((Hp + Hm ) nz + ((- Hp ) - Hm ) ny))/(2 epsilon sqrt(mu))) + -------\n", " 2 2 3 3 epsilon\n", " Hm ny\n", " 3 2\n", " - -------], [(sqrt(epsilon) ((Em - Ep ) ny nz + (Em - Ep ) ny\n", " epsilon 3 3 2 2\n", " + (Em - Ep ) nx ny + Ep - Em ) + sqrt(mu)\n", " 1 1 2 2\n", " Hm nz\n", " 1\n", " ((Hp + Hm ) nz + ((- Hp ) - Hm ) nx))/(2 epsilon sqrt(mu)) - -------\n", " 1 1 3 3 epsilon\n", " Hm nx\n", " 3\n", " + -------], [(- (sqrt(epsilon) (((Ep - Em ) ny + (Ep - Em ) nx) nz\n", " epsilon 2 2 1 1\n", " 2 2\n", " + (Em - Ep ) ny + (Em - Ep ) nx ) + sqrt(mu)\n", " 3 3 3 3\n", " Hm ny\n", " 1\n", " ((Hp + Hm ) ny + ((- Hp ) - Hm ) nx))/(2 epsilon sqrt(mu))) + -------\n", " 1 1 2 2 epsilon\n", " Hm nx\n", " 2\n", " - -------], [(- (sqrt(mu) ((Hp - Hm ) nx nz + (Hp - Hm ) nx ny\n", " epsilon 3 3 2 2\n", " 2\n", " + (Hp - Hm ) nx - Hp + Hm ) + sqrt(epsilon)\n", " 1 1 1 1\n", " Em nz\n", " 2\n", " (((- Ep ) - Em ) nz + (Ep + Em ) ny))/(2 sqrt(epsilon) mu)) - ------\n", " 2 2 3 3 mu\n", " Em ny\n", " 3 2\n", " + ------], [(- (sqrt(mu) ((Hp - Hm ) ny nz + (Hp - Hm ) ny\n", " mu 3 3 2 2\n", " + (Hp - Hm ) nx ny - Hp + Hm ) + sqrt(epsilon)\n", " 1 1 2 2\n", " Em nz\n", " 1\n", " ((Ep + Em ) nz + ((- Ep ) - Em ) nx))/(2 sqrt(epsilon) mu)) + ------\n", " 1 1 3 3 mu\n", " Em nx\n", " 3\n", " - ------], [(- (sqrt(mu) (((Hp - Hm ) ny + (Hp - Hm ) nx) nz\n", " mu 2 2 1 1\n", " 2 2\n", " + (Hm - Hp ) ny + (Hm - Hp ) nx ) + sqrt(epsilon)\n", " 3 3 3 3\n", " Em ny\n", " 1\n", " (((- Ep ) - Em ) ny + (Ep + Em ) nx))/(2 sqrt(epsilon) mu)) - ------\n", " 1 1 2 2 mu\n", " Em nx\n", " 2\n", " + ------])\n", " mu" ], "text/x-maxima": [ "matrix([(-(sqrt(epsilon)*((Ep[3]-Em[3])*nx*nz+(Ep[2]-Em[2])*nx*ny\n", " +(Ep[1]-Em[1])*nx^2-Ep[1]+Em[1])\n", " +sqrt(mu)*((Hp[2]+Hm[2])*nz+((-Hp[3])-Hm[3])*ny))\n", " /(2*epsilon*sqrt(mu)))\n", " +(Hm[2]*nz)/epsilon-(Hm[3]*ny)/epsilon],\n", " [(sqrt(epsilon)*((Em[3]-Ep[3])*ny*nz+(Em[2]-Ep[2])*ny^2\n", " +(Em[1]-Ep[1])*nx*ny+Ep[2]-Em[2])\n", " +sqrt(mu)*((Hp[1]+Hm[1])*nz+((-Hp[3])-Hm[3])*nx))\n", " /(2*epsilon*sqrt(mu))\n", " -(Hm[1]*nz)/epsilon+(Hm[3]*nx)/epsilon],\n", " [(-(sqrt(epsilon)*(((Ep[2]-Em[2])*ny+(Ep[1]-Em[1])*nx)*nz\n", " +(Em[3]-Ep[3])*ny^2+(Em[3]-Ep[3])*nx^2)\n", " +sqrt(mu)*((Hp[1]+Hm[1])*ny+((-Hp[2])-Hm[2])*nx))\n", " /(2*epsilon*sqrt(mu)))\n", " +(Hm[1]*ny)/epsilon-(Hm[2]*nx)/epsilon],\n", " [(-(sqrt(mu)*((Hp[3]-Hm[3])*nx*nz+(Hp[2]-Hm[2])*nx*ny\n", " +(Hp[1]-Hm[1])*nx^2-Hp[1]+Hm[1])\n", " +sqrt(epsilon)*(((-Ep[2])-Em[2])*nz+(Ep[3]+Em[3])*ny))\n", " /(2*sqrt(epsilon)*mu))\n", " -(Em[2]*nz)/mu+(Em[3]*ny)/mu],\n", " [(-(sqrt(mu)*((Hp[3]-Hm[3])*ny*nz+(Hp[2]-Hm[2])*ny^2\n", " +(Hp[1]-Hm[1])*nx*ny-Hp[2]+Hm[2])\n", " +sqrt(epsilon)*((Ep[1]+Em[1])*nz+((-Ep[3])-Em[3])*nx))\n", " /(2*sqrt(epsilon)*mu))\n", " +(Em[1]*nz)/mu-(Em[3]*nx)/mu],\n", " [(-(sqrt(mu)*(((Hp[2]-Hm[2])*ny+(Hp[1]-Hm[1])*nx)*nz\n", " +(Hm[3]-Hp[3])*ny^2+(Hm[3]-Hp[3])*nx^2)\n", " +sqrt(epsilon)*(((-Ep[1])-Em[1])*ny+(Ep[2]+Em[2])*nx))\n", " /(2*sqrt(epsilon)*mu))\n", " -(Em[1]*ny)/mu+(Em[2]*nx)/mu])" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max_stronglocalpart:max_A.max_wm;\n", "\n", "max_strongwflux:max_stronglocalpart-max_wflux;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check against value from [the literature](https://doi.org/10.1016/0010-4655(91)90199-U):" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{51}$}\\left[ \\frac{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}\\,\\left(\\left({\\it Ep}_{1}-{\\it Em}_{1}\\right)\\,{\\it nz}^2+\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,{\\it nx}\\,{\\it nz}+\\left({\\it Ep}_{1}-{\\it Em}_{1}\\right)\\,{\\it ny}^2+\\left({\\it Em}_{2}-{\\it Ep}_{2}\\right)\\,{\\it nx}\\,{\\it ny}\\right)+\\left({\\it Hm}_{2}-{\\it Hp}_{2}\\right)\\,\\mu\\,{\\it nz}+\\left({\\it Hp}_{3}-{\\it Hm}_{3}\\right)\\,\\mu\\,{\\it ny}}{2\\,\\varepsilon\\,\\mu} , \\frac{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}\\,\\left(\\left({\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,{\\it nz}^2+\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,{\\it ny}\\,{\\it nz}+\\left({\\it Em}_{1}-{\\it Ep}_{1}\\right)\\,{\\it nx}\\,{\\it ny}+\\left({\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,{\\it nx}^2\\right)+\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,\\mu\\,{\\it nz}+\\left({\\it Hm}_{3}-{\\it Hp}_{3}\\right)\\,\\mu\\,{\\it nx}}{2\\,\\varepsilon\\,\\mu} , -\\frac{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}\\,\\left(\\left(\\left({\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,{\\it ny}+\\left({\\it Ep}_{1}-{\\it Em}_{1}\\right)\\,{\\it nx}\\right)\\,{\\it nz}+\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,{\\it ny}^2+\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,{\\it nx}^2\\right)+\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,\\mu\\,{\\it ny}+\\left({\\it Hm}_{2}-{\\it Hp}_{2}\\right)\\,\\mu\\,{\\it nx}}{2\\,\\varepsilon\\,\\mu} , \\frac{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,{\\it nz}^2+\\left({\\it Hm}_{3}-{\\it Hp}_{3}\\right)\\,{\\it nx}\\,{\\it nz}+\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,{\\it ny}^2+\\left({\\it Hm}_{2}-{\\it Hp}_{2}\\right)\\,{\\it nx}\\,{\\it ny}\\right)+\\left({\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,\\varepsilon\\,{\\it nz}+\\left({\\it Em}_{3}-{\\it Ep}_{3}\\right)\\,\\varepsilon\\,{\\it ny}}{2\\,\\varepsilon\\,\\mu} , \\frac{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}\\,\\left(\\left({\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it nz}^2+\\left({\\it Hm}_{3}-{\\it Hp}_{3}\\right)\\,{\\it ny}\\,{\\it nz}+\\left({\\it Hm}_{1}-{\\it Hp}_{1}\\right)\\,{\\it nx}\\,{\\it ny}+\\left({\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it nx}^2\\right)+\\left({\\it Em}_{1}-{\\it Ep}_{1}\\right)\\,\\varepsilon\\,{\\it nz}+\\left({\\it Ep}_{3}-{\\it Em}_{3}\\right)\\,\\varepsilon\\,{\\it nx}}{2\\,\\varepsilon\\,\\mu} , -\\frac{\\sqrt{\\varepsilon}\\,\\sqrt{\\mu}\\,\\left(\\left(\\left({\\it Hp}_{2}-{\\it Hm}_{2}\\right)\\,{\\it ny}+\\left({\\it Hp}_{1}-{\\it Hm}_{1}\\right)\\,{\\it nx}\\right)\\,{\\it nz}+\\left({\\it Hm}_{3}-{\\it Hp}_{3}\\right)\\,{\\it ny}^2+\\left({\\it Hm}_{3}-{\\it Hp}_{3}\\right)\\,{\\it nx}^2\\right)+\\left({\\it Em}_{1}-{\\it Ep}_{1}\\right)\\,\\varepsilon\\,{\\it ny}+\\left({\\it Ep}_{2}-{\\it Em}_{2}\\right)\\,\\varepsilon\\,{\\it nx}}{2\\,\\varepsilon\\,\\mu} \\right] \\]" ], "text/plain": [ " 2\n", "(%o51) [(sqrt(epsilon) sqrt(mu) ((Ep - Em ) nz + (Em - Ep ) nx nz\n", " 1 1 3 3\n", " 2\n", " + (Ep - Em ) ny + (Em - Ep ) nx ny) + (Hm - Hp ) mu nz\n", " 1 1 2 2 2 2\n", " + (Hp - Hm ) mu ny)/(2 epsilon mu), (sqrt(epsilon) sqrt(mu)\n", " 3 3\n", " 2 2\n", " ((Ep - Em ) nz + (Em - Ep ) ny nz + (Em - Ep ) nx ny + (Ep - Em ) nx )\n", " 2 2 3 3 1 1 2 2\n", " + (Hp - Hm ) mu nz + (Hm - Hp ) mu nx)/(2 epsilon mu), \n", " 1 1 3 3\n", "- (sqrt(epsilon) sqrt(mu) (((Ep - Em ) ny + (Ep - Em ) nx) nz\n", " 2 2 1 1\n", " 2 2\n", " + (Em - Ep ) ny + (Em - Ep ) nx ) + (Hp - Hm ) mu ny + (Hm - Hp ) mu nx)\n", " 3 3 3 3 1 1 2 2\n", "/(2 epsilon mu), (sqrt(epsilon) sqrt(mu)\n", " 2 2\n", " ((Hp - Hm ) nz + (Hm - Hp ) nx nz + (Hp - Hm ) ny + (Hm - Hp ) nx ny)\n", " 1 1 3 3 1 1 2 2\n", " + (Ep - Em ) epsilon nz + (Em - Ep ) epsilon ny)/(2 epsilon mu), \n", " 2 2 3 3\n", " 2\n", "(sqrt(epsilon) sqrt(mu) ((Hp - Hm ) nz + (Hm - Hp ) ny nz\n", " 2 2 3 3\n", " 2\n", " + (Hm - Hp ) nx ny + (Hp - Hm ) nx ) + (Em - Ep ) epsilon nz\n", " 1 1 2 2 1 1\n", " + (Ep - Em ) epsilon nx)/(2 epsilon mu), \n", " 3 3\n", "- (sqrt(epsilon) sqrt(mu) (((Hp - Hm ) ny + (Hp - Hm ) nx) nz\n", " 2 2 1 1\n", " 2 2\n", " + (Hm - Hp ) ny + (Hm - Hp ) nx ) + (Em - Ep ) epsilon ny\n", " 3 3 3 3 1 1\n", " + (Ep - Em ) epsilon nx)/(2 epsilon mu)]\n", " 2 2" ], "text/x-maxima": [ "[(sqrt(epsilon)*sqrt(mu)\n", " *((Ep[1]-Em[1])*nz^2+(Em[3]-Ep[3])*nx*nz+(Ep[1]-Em[1])*ny^2\n", " +(Em[2]-Ep[2])*nx*ny)\n", " +(Hm[2]-Hp[2])*mu*nz+(Hp[3]-Hm[3])*mu*ny)\n", " /(2*epsilon*mu),\n", " (sqrt(epsilon)*sqrt(mu)\n", " *((Ep[2]-Em[2])*nz^2+(Em[3]-Ep[3])*ny*nz+(Em[1]-Ep[1])*nx*ny\n", " +(Ep[2]-Em[2])*nx^2)\n", " +(Hp[1]-Hm[1])*mu*nz+(Hm[3]-Hp[3])*mu*nx)\n", " /(2*epsilon*mu),\n", " -(sqrt(epsilon)*sqrt(mu)\n", " *(((Ep[2]-Em[2])*ny+(Ep[1]-Em[1])*nx)*nz\n", " +(Em[3]-Ep[3])*ny^2+(Em[3]-Ep[3])*nx^2)\n", " +(Hp[1]-Hm[1])*mu*ny+(Hm[2]-Hp[2])*mu*nx)\n", " /(2*epsilon*mu),\n", " (sqrt(epsilon)*sqrt(mu)\n", " *((Hp[1]-Hm[1])*nz^2+(Hm[3]-Hp[3])*nx*nz+(Hp[1]-Hm[1])*ny^2\n", " +(Hm[2]-Hp[2])*nx*ny)\n", " +(Ep[2]-Em[2])*epsilon*nz+(Em[3]-Ep[3])*epsilon*ny)\n", " /(2*epsilon*mu),\n", " (sqrt(epsilon)*sqrt(mu)\n", " *((Hp[2]-Hm[2])*nz^2+(Hm[3]-Hp[3])*ny*nz+(Hm[1]-Hp[1])*nx*ny\n", " +(Hp[2]-Hm[2])*nx^2)\n", " +(Em[1]-Ep[1])*epsilon*nz+(Ep[3]-Em[3])*epsilon*nx)\n", " /(2*epsilon*mu),\n", " -(sqrt(epsilon)*sqrt(mu)\n", " *(((Hp[2]-Hm[2])*ny+(Hp[1]-Hm[1])*nx)*nz\n", " +(Hm[3]-Hp[3])*ny^2+(Hm[3]-Hp[3])*nx^2)\n", " +(Em[1]-Ep[1])*epsilon*ny+(Ep[2]-Em[2])*epsilon*nx)\n", " /(2*epsilon*mu)]" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{52}$}\\mathbf{true}\\]" ], "text/plain": [ "(%o52) true" ], "text/x-maxima": [ "true" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max_Z:sqrt(mu/epsilon)$\n", "max_Y:sqrt(epsilon/mu)$\n", "\n", "max_knownstrongwflux:ratsimp(vstack(\n", " -1/(2*epsilon)\n", " *(crossprod(n,(max_Hm-max_Hp)-1/max_Z*crossprod(n,max_Em-max_Ep))),\n", " 1/(2*mu)\n", " *(crossprod(n,(max_Em-max_Ep)+1/max_Y*crossprod(n,max_Hm-max_Hp)))\n", " ));\n", "\n", "assert(norm_2_squared(hypsimp(\n", " (max_strongwflux)\n", " -max_knownstrongwflux))=0);" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Maxima", "language": "maxima", "name": "maxima" }, "language_info": { "codemirror_mode": "maxima", "file_extension": ".mac", "mimetype": "text/x-maxima", "name": "maxima", "pygments_lexer": "maxima", "version": "branch_5_43_base_483_gaee1ba385" } }, "nbformat": 4, "nbformat_minor": 4 }