File: itensor6.dem

package info (click to toggle)
maxima 5.47.0-9
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 193,104 kB
  • sloc: lisp: 434,678; fortran: 14,665; tcl: 10,990; sh: 4,577; makefile: 2,763; ansic: 447; java: 328; python: 262; perl: 201; xml: 60; awk: 28; sed: 15; javascript: 2
file content (71 lines) | stat: -rw-r--r-- 2,375 bytes parent folder | download | duplicates (16)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/* 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be
 * useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 * PURPOSE.  See the GNU General Public License for more details.
 *
 * Covariant differentiation, curvature
 */
if get('itensor,'version)=false then load(itensor);

("Covariant differentiation is carried out relative to a metric")$
remcomps(g);
imetric(g);

("We declare the metric's symmetry properties")$
decsym(g,2,0,[sym(all)],[]);
decsym(g,0,2,[],[sym(all)]);

("MAXIMA can express both kinds of Christoffel symbols")$
ishow(ichr1([i,j,k]))$
ishow(ichr2([i,j],[k]))$

("The covariant derivative uses the Christoffel symbols")$
ishow(covdiff(a([j,k],[i]),i))$
exp:ishow(canform(contract(expand(ev(%,ichr2)))))$

("To drop first derivatives of the metric, use igeodesic_coords")$
ishow(igeodesic_coords(exp,g))$

("Covariant derivatives of a vector do not commute")$
covdiff(v([],[i]),k,l)-covdiff(v([],[i]),l,k)$
comm:ishow(factor(canform(%)))$

("The curvature tensor is the same as the commutator")$
curv:ishow(v([],[j])*icurvature([j,k,l],[i]))$
canform(comm-curv);

("The function flush and relatives can drop derivative expressions")$
exp:u([i],[j,r],k,r)+a([i],[j,r,s],k,r,s)+b([i,k],[j,r],r)+u([i,k,r],[j,r])$
ishow(exp)$
ishow(flush(exp,u))$
ishow(flushd(exp,u,b))$
ishow(flushnd(exp,a,1))$

("The function lorentz() can be used to remove divergence free terms")$
defcon(e,e,kdelta)$
defcon(e,p,p)$
defcon(p,e,p)$
decsym(e,0,2,[],[sym(all)]);
declare(e,constant);
(ratfac:false,ratvars(l),ratweight(l,1),ratwtlvl:1);

components(g([i,j],[]),e([i,j],[])+2*l*p([i,j],[]));
components(g([],[i,j]),e([],[i,j])-2*l*p([],[i,j]));

rinv:g([],[r,t])*icurvature([r,s,t],[s])$
ricci:g([],[i,r])*g([],[j,t])*icurvature([r,s,t],[s])$
-(ricci-1/2*rinv*g([],[i,j]))$
ishow(canform(rename(contract(ratexpand(ev(%))))))$
ishow(lorentz_gauge(%,p))$

("The conmetderiv function relates derivatives of the metric tensor")$
ishow(q([],[a,b],c))$
ishow(conmetderiv(%,q))$

/* End of demo -- comment line needed by MAXIMA to resume demo menu */