share/tensor/itensor.lisp: make X and D shared lexical variables for the functions...
[maxima.git] / share / tensor / rainich.dem
blob05bb8b4c6f59fa11fbe07a99d727ce63dccc09e5
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License as
4  * published by the Free Software Foundation; either version 2 of
5  * the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be
8  * useful, but WITHOUT ANY WARRANTY; without even the implied
9  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
10  * PURPOSE.  See the GNU General Public License for more details.
11  *
12  * Proving one of the Rainich conditions
13  */
15 if get('itensor,'version)=false then load(itensor);
16 ("The Rainich-conditions apply to electrovacuum solutions.")$
17 ("The simplest of these states that the trace of the Ricci tensor is zero.")$
18 ("To begin, we set up the metric:")$
19 imetric(g);
20 ("We also specify symmetry properties of the Ricci tensor:")$
21 remcomps(F);
22 remcomps(R);
23 remcomps(T);
24 decsym(R,2,0,[sym(all)],[]);
25 decsym(R,0,2,[],[sym(all)]);
26 ("The Ricci tensor contracts to form the Ricci scalar:")$
27 defcon(R,R,R);
28 ("The electromagnetic field tensor is antisymmetric:")$
29 decsym(F,2,0,[anti(all)],[]);
30 decsym(F,0,2,[],[anti(all)]);
31 ("Now we can write the Einstein equation for the electrovacuum field:")$
32 Ein:R([i,j],[])-R([],[])*g([i,j],[])/2=-8*%pi*(F([i,b],[])*F([j],[b])-F([a,b],[])*F([],[a,b])*g([i,j],[])/4)$
33 ishow(%)$
34 ("For the proof, we first contract it with the metric tensor:")$
35 ishow(Ein*g([-i,-j],[]))$
36 ishow(contract(expand(%)))$
37 ("We now express F using the mixed index form:")$
38 components(F([a,b],[]),g([b,c],[])*F([a],[c]));
39 components(F([],[a,b]),g([],[a,c])*F([c],[b]));
40 ishow(%th(5))$
41 %,F$  
42 ishow(rename(contract(rename(contract(expand(%))))))$
43 ("We remove the definitions for F to avoid further substitutions.")$
44 remcomps(F);
45 ("The remaining algebraic Rainich conditions are much harder to prove.")$
46 ("For reference, the other two conditions are:")$
47 ishow(T([a,c],[])*T([b],[c])=-1/4*(R([d,e],[])*R([],[d,e]))*g([a,b],[]))$
48 ishow(T([a,b],[])*v([],[a])*v([],[b])>=0)$
50 /* End of demo -- comment line needed by MAXIMA to resume demo menu */