atlas 2 for Maple

Atlas Documentation

Declaration operators

Calculation operators

Standard DG operators

Utility operators

General Tutorials

Atlas Wizard Tutorials

Licenses & Pricing

atlas[Metric] - declaration of a metric tensor 

Calling Sequence: 

    Metric(Id)
    Metric(Id=expr)
    Metric(expr)
 

Parameters: 

    Id - variable - metric identifier
    expr - expression - metric declaration.  

Description: 

The Metric procedure allows one to declare a metric tensor. The Metric procedure can be used in two ways: 

  • Metric(Id) - sets Id as a metric tensor identifier (the metric tensor components is indefinite).
 

  • Metric(Id=expr) - sets Id as a metric tensor identifier and expr as a metric tensor.
 

In the atlas package the metric declared is a procedure. Use atlas[ToBasis] procedure to see metric as a tensor. 

Examples: 

Example 1 

Abstract metric 

> restart:
with(atlas):
 

Declare forms: 

> Forms(e[j]=1,xi=1);
 

{xi, e[j]}(2.1.1)
 

Declare vectors: 

> Vectors(X,Y,Z,E[j]);
 

{X, Y, Z, E[j]}(2.1.2)
 

Declare functions: 

> Functions(f=f(x,y,z));
 

{f}(2.1.3)
 

Declare coframe with 1-forms: e[1], e[2], () .. e[n] (see atlas[Coframe]) 

> Coframe(e[j],j=1..n);
 

{e[j]}[j = 1 .. n](2.1.4)
 

Declare frame vectors (see atlas[Frame]): 

> Frame(E[i]);
 

{E[i]}[i = 1 .. n](2.1.5)
 

Declare indefinite metric tensor g: 

> Metric(g);
 

g(2.1.6)
 

Interior product of E[j] and g (see atlas[iota]): 

> 'iota[E[j]](g)'=iota[E[j]](g);
 

iota[E[j]](g) = Sum(`*`(g(E[j], E[l[1]]), `*`(e[l[1]])), l[1] = 1 .. n)(2.1.7)
 

Linear property of metric tensor (see atlas[ToBasis]): 

> g(X,Y)=g(ToBasis(X),Y);
 

g(X, Y) = Sum(`*`(iota[X](e[l[1]]), `*`(g(Y, E[l[1]]))), l[1] = 1 .. n)(2.1.8)
 

Example 2 

Conformally flat metric of sphere - `*`(`^`(S, 3)) 

> restart:
with(atlas):
 

Declare forms: 

> Forms(e[j]=1,xi=1);
 

{xi, e[j]}(2.2.1)
 

Declare vectors: 

> Vectors(X,Y,Z,E[j]);
 

{X, Y, Z, E[j]}(2.2.2)
 

Declare functions: 

> Functions(f=f(x,y,z));
 

{f}(2.2.3)
 

Declare constant lambda:
Constants(lambda); 

{`+`(`-`(I)), I, Pi, _Z, Catalan, lambda}(2.2.4)
 

Declare coframe:
Coframe(e[1]=d(x),e[2]=d(y),e[3]=d(z)); 

[e[1] = d(x), e[2] = d(y), e[3] = d(z)](2.2.5)
 

Declare frame:
Frame(E[i]); 

[E[1] = Diff(``, x), E[2] = Diff(``, y), E[3] = Diff(``, z)](2.2.6)
 

Declare conformally flat metric of  `*`(`^`(S, 3)):
Metric(g=4*(d(x)&.d(x)+d(y)&.d(y)+d(z)&.d(z))/(1+lambda*(x^2+y^2+z^2))^2);
 

g = `+`(`/`(`*`(4, `*`(`+`(`&.`(e[1], e[1]), `&.`(e[2], e[2]), `&.`(e[3], e[3])))), `*`(`^`(`+`(1, `*`(lambda, `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2)))))), 2))))(2.2.7)
 

Simple calculations:
'iota[E[k]](g)'=iota[E[k]](g); 

iota[E[k]](g) = `+`(`/`(`*`(4, `*`(`+`(`*`(delta[1, k], `*`(e[1])), `*`(delta[2, k], `*`(e[2])), `*`(delta[3, k], `*`(e[3]))))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2)))...(2.2.8)
 

> 'g(E[i],E[j])'=g(E[i],E[j]);
 

g(E[i], E[j]) = `+`(`/`(`*`(4, `*`(`+`(`*`(delta[1, i], `*`(delta[1, j])), `*`(delta[2, i], `*`(delta[2, j])), `*`(delta[3, i], `*`(delta[3, j]))))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(la...(2.2.9)
 

> 'g(E[j],X)'=g(E[j],ToBasis(X));
 

g(E[j], X) = `+`(`/`(`*`(4, `*`(iota[X](e[1]), `*`(delta[1, j]))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))), `*`(lambda, `*`(`^`(z, 2)))), 2))), `/`(`*`(4, `*`(iota[X](e...
g(E[j], X) = `+`(`/`(`*`(4, `*`(iota[X](e[1]), `*`(delta[1, j]))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))), `*`(lambda, `*`(`^`(z, 2)))), 2))), `/`(`*`(4, `*`(iota[X](e...
(2.2.10)
 

> g=ToBasis(g);
 

g = `+`(`/`(`*`(4, `*`(`+`(`&.`(e[1], e[1]), `&.`(e[2], e[2]), `&.`(e[3], e[3])))), `*`(`^`(`+`(1, `*`(lambda, `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2)))))), 2))))(2.2.11)
 

Connection calculation (see atlas[Connection]): 

> Connection(omega);
 

omega[i, j](2.2.12)
 

Now connection 1-forms omega[i, j] are calculated: 

> 'omega[3,2]'=omega[3,2];
 

omega[3, 2] = `+`(`/`(`*`(2, `*`(lambda, `*`(z, `*`(e[2])))), `*`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))), `*`(lambda, `*`(`^`(z, 2)))))), `-`(`/`(`*`(2, `*`(lambda, `*`(y, `*`...(2.2.13)
 

> 'iota[E[i]](omega[1,2])'=iota[E[i]](omega[1,2]);
 

iota[E[i]](omega[1, 2]) = `+`(`-`(`/`(`*`(2, `*`(lambda, `*`(y, `*`(delta[1, i])))), `*`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))), `*`(lambda, `*`(`^`(z, 2))))))), `/`(`*`(2, `*...(2.2.14)
 

Verify that vector Z = `+`(`*`(x, `*`(E[2])), `-`(`*`(y, `*`(E[1])))) is Killing one (see atlas[L]):  

> Z:=x*E[2]-y*E[1];
'L[Z](g)'=L[Z](g);
 

 

`+`(`*`(x, `*`(E[2])), `-`(`*`(y, `*`(E[1]))))
L[Z](g) = 0(2.2.15)
 

Verify that there are no Killing vectors among frame ones: 

> 'L[E[k]](g)'=L[E[k]](g);
 

L[E[k]](g) = `+`(`-`(`/`(`*`(8, `*`(`+`(`&.`(e[1], e[1]), `&.`(e[2], e[2]), `&.`(e[3], e[3])), `*`(lambda, `*`(`+`(`*`(2, `*`(x, `*`(delta[1, k]))), `*`(2, `*`(y, `*`(delta[2, k]))), `*`(2, `*`(z, `*`...
L[E[k]](g) = `+`(`-`(`/`(`*`(8, `*`(`+`(`&.`(e[1], e[1]), `&.`(e[2], e[2]), `&.`(e[3], e[3])), `*`(lambda, `*`(`+`(`*`(2, `*`(x, `*`(delta[1, k]))), `*`(2, `*`(y, `*`(delta[2, k]))), `*`(2, `*`(z, `*`...
(2.2.16)
 

Curvature calculation (see atlas[Curvature]): 

> Curvature(Omega);
 

Omega[i, j](2.2.17)
 

Now curvature 2-forms Omega[i, j] are calculated: 

> 'Omega[1,3]'=Omega[1,3];
 

Omega[1, 3] = `+`(`/`(`*`(4, `*`(lambda, `*`(`&^`(e[1], e[3])))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))), `*`(lambda, `*`(`^`(z, 2)))), 2))))(2.2.18)
 

> 'iota[E[k]](Omega[2,1])'=iota[E[k]](Omega[2,1]);
 

iota[E[k]](Omega[2, 1]) = `+`(`-`(`/`(`*`(4, `*`(lambda, `*`(`+`(`*`(delta[1, k], `*`(e[2])), `-`(`*`(delta[2, k], `*`(e[1]))))))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2...(2.2.19)
 

Example 3 

Schwarzchild metric 

> restart:
with(atlas):
 

Declare vectors: 

> Vectors(X,Y,Z,E[j]);
 

{X, Y, Z, E[j]}(2.3.1)
 

Declare functions: 

> Functions(f=f(x,y,z));
 

{f}(2.3.2)
 

Declare constant r[g] 

> Constants(r[g]);
 

{`+`(`-`(I)), I, Pi, _Z, Catalan, r[g]}(2.3.3)
 

Declare vectors:
Vectors(L1,N,M,K); 

{K, L1, M, N}(2.3.4)
 

Declare forms:
Forms(e[j]=1,l=1,n=1,m=1,k=1,x=1,y=1,z=1); 

{k, l, m, n, x, y, z, e[j]}(2.3.5)
 


Using alias for vectors and forms:
alias(L1=E[1],N=E[2],M=E[3],K=E[4],l=e[1],n=e[2],m=e[3],k=e[4]); 

L1, N, M, K, l, n, m, k(2.3.6)
 

Now 1-forms e[1], e[2], e[3], e[4] are: 

> [seq(e[i],i=1..4)];
 

[l, n, m, k](2.3.7)
 

Declare coframe:
Coframe(l=1/2*((1-r[g]/r)*d(t)+d(r)),
       n=d(t)-1/(1-r[g]/r)*d(r),
       m=r/sqrt(2)*(d(theta)-I*sin(theta)*d(phi)),
       k=r/sqrt(2)*(d(theta)+I*sin(theta)*d(phi)));
 

[l = `+`(`*`(`/`(1, 2), `*`(`+`(1, `-`(`/`(`*`(r[g]), `*`(r)))), `*`(d(t)))), `*`(`/`(1, 2), `*`(d(r)))), n = `+`(d(t), `-`(`/`(`*`(d(r)), `*`(`+`(1, `-`(`/`(`*`(r[g]), `*`(r)))))))), m = `+`(`*`(`/`(...
[l = `+`(`*`(`/`(1, 2), `*`(`+`(1, `-`(`/`(`*`(r[g]), `*`(r)))), `*`(d(t)))), `*`(`/`(1, 2), `*`(d(r)))), n = `+`(d(t), `-`(`/`(`*`(d(r)), `*`(`+`(1, `-`(`/`(`*`(r[g]), `*`(r)))))))), m = `+`(`*`(`/`(...
[l = `+`(`*`(`/`(1, 2), `*`(`+`(1, `-`(`/`(`*`(r[g]), `*`(r)))), `*`(d(t)))), `*`(`/`(1, 2), `*`(d(r)))), n = `+`(d(t), `-`(`/`(`*`(d(r)), `*`(`+`(1, `-`(`/`(`*`(r[g]), `*`(r)))))))), m = `+`(`*`(`/`(...
(2.3.8)
 

Declare frame:
Frame(E[j]); 

[L1 = `+`(Diff(``, r), `/`(`*`(r, `*`(Diff(``, t))), `*`(`+`(r, `-`(r[g]))))), N = `+`(`/`(`*`(`/`(1, 2), `*`(`+`(`-`(r), r[g]), `*`(Diff(``, r)))), `*`(r)), `*`(`/`(1, 2), `*`(Diff(``, t)))), M = `+`...
[L1 = `+`(Diff(``, r), `/`(`*`(r, `*`(Diff(``, t))), `*`(`+`(r, `-`(r[g]))))), N = `+`(`/`(`*`(`/`(1, 2), `*`(`+`(`-`(r), r[g]), `*`(Diff(``, r)))), `*`(r)), `*`(`/`(1, 2), `*`(Diff(``, t)))), M = `+`...
[L1 = `+`(Diff(``, r), `/`(`*`(r, `*`(Diff(``, t))), `*`(`+`(r, `-`(r[g]))))), N = `+`(`/`(`*`(`/`(1, 2), `*`(`+`(`-`(r), r[g]), `*`(Diff(``, r)))), `*`(r)), `*`(`/`(1, 2), `*`(Diff(``, t)))), M = `+`...
(2.3.9)
 

Declare metric:
Metric(g=e[1]&.e[2]+e[2]&.e[1]-e[3]&.e[4]-e[4]&.e[3] ); 

g = `+`(`&.`(l, n), `&.`(n, l), `-`(`&.`(m, k)), `-`(`&.`(k, m)))(2.3.10)
 

Simple calculations: 

> 'g(E[i],E[j])'=g(E[i],E[j]);
 

g(E[i], E[j]) = `+`(`*`(delta[1, i], `*`(delta[2, j])), `*`(delta[2, i], `*`(delta[1, j])), `-`(`*`(delta[3, i], `*`(delta[4, j]))), `-`(`*`(delta[4, i], `*`(delta[3, j]))))(2.3.11)
 

> 'g(E[j],X)'=g(E[j],ToBasis(X));
 

g(E[j], X) = `+`(`*`(iota[X](l), `*`(delta[2, j])), `*`(iota[X](n), `*`(delta[1, j])), `-`(`*`(iota[X](m), `*`(delta[4, j]))), `-`(`*`(iota[X](k), `*`(delta[3, j]))))(2.3.12)
 

> 'iota[E[k]](g)'=iota[E[k]](g);
 

iota[E[k]](g) = `+`(`*`(delta[1, k], `*`(n)), `*`(delta[2, k], `*`(l)), `-`(`*`(delta[3, k], `*`(k))), `-`(`*`(delta[4, k], `*`(m))))(2.3.13)
 

> g=ToBasis(g);
 

g = `+`(`&.`(l, n), `&.`(n, l), `-`(`&.`(m, k)), `-`(`&.`(k, m)))(2.3.14)
 

Connection calculation: 

> Connection(Gamma);
 

Gamma[i, j](2.3.15)
 

Now connection 1-forms are calculated: 

> 'Gamma[4,2]'=Gamma[4,2];
 

Gamma[4, 2] = `+`(`-`(`/`(`*`(`/`(1, 2), `*`(`+`(r, `-`(r[g])), `*`(k))), `*`(`^`(r, 2)))))(2.3.16)
 

Simple calculation: 

> 'd(r)'=d(r);
 

d(r) = `+`(`/`(`*`(`/`(1, 2), `*`(`+`(`-`(`*`(n, `*`(r))), `*`(n, `*`(r[g])), `*`(2, `*`(l, `*`(r)))))), `*`(r)))(2.3.17)
 

> 'd(m)'=d(m);
 

d(m) = `+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(2, `/`(1, 2)), `*`(`+`(`*`(2, `*`(cos(theta), `*`(`&^`(m, k), `*`(r)))), `*`(`^`(2, `/`(1, 2)), `*`(sin(theta), `*`(r, `*`(`&^`(n, m))))), `-`(`*`(`^`(2, `/`(...
d(m) = `+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(2, `/`(1, 2)), `*`(`+`(`*`(2, `*`(cos(theta), `*`(`&^`(m, k), `*`(r)))), `*`(`^`(2, `/`(1, 2)), `*`(sin(theta), `*`(r, `*`(`&^`(n, m))))), `-`(`*`(`^`(2, `/`(...
(2.3.18)
 

> 'L[M](E[i])'=L[M](E[i]);
 

L[M](E[i]) = `+`(`*`(`+`(iota[M](Gamma[1, i]), `/`(`*`(`/`(1, 2), `*`(`+`(r, `-`(r[g])), `*`(delta[4, i]))), `*`(`^`(r, 2)))), `*`(L1)), `*`(`+`(iota[M](Gamma[2, i]), `-`(`/`(`*`(delta[4, i]), `*`(r))...
L[M](E[i]) = `+`(`*`(`+`(iota[M](Gamma[1, i]), `/`(`*`(`/`(1, 2), `*`(`+`(r, `-`(r[g])), `*`(delta[4, i]))), `*`(`^`(r, 2)))), `*`(L1)), `*`(`+`(iota[M](Gamma[2, i]), `-`(`/`(`*`(delta[4, i]), `*`(r))...
L[M](E[i]) = `+`(`*`(`+`(iota[M](Gamma[1, i]), `/`(`*`(`/`(1, 2), `*`(`+`(r, `-`(r[g])), `*`(delta[4, i]))), `*`(`^`(r, 2)))), `*`(L1)), `*`(`+`(iota[M](Gamma[2, i]), `-`(`/`(`*`(delta[4, i]), `*`(r))...
(2.3.19)
 

>
 

See Also:  

atlas, atlas[Frame], atlas[Coframe], atlas[Connection].