| atlas[Metric] - declaration of a metric tensor Calling Sequence: Metric(Id) Metric(Id=expr) Parameters: Id - variable - metric identifier expr - expression - metric declaration. Description: The Metric procedure declares 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. Example 1 Abstract metric restart: with(atlas): Declare forms: Forms(e[j]=1,xi=1); ![{xi, e[j]}](prod/atlas/help/images/Metric1.gif)
Declare vectors: Vectors(X,Y,Z,E[j]); ![{Y, Z, E[j], X}](prod/atlas/help/images/Metric2.gif)
Declare functions: Functions(f=f(x,y,z)); 
Declare coframe with 1-forms: (see atlas[Coframe] ) Coframe(e[j],j=1..n); ![{e[j]}[j = 1 .. n]](prod/atlas/help/images/Metric5.gif)
Declare frame vectors (see atlas[Frame] ): Frame(E[i]); ![{E[i]}[i = 1 .. n]](prod/atlas/help/images/Metric6.gif)
Declare indefinite metric tensor g: Metric(g); 
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[l[1]],E[j])*e[l[1]],l[1] = 1 .. n)](prod/atlas/help/images/Metric8.gif)
Linear property of metric tensor (see atlas[ToBasis] ): g(X,Y)=g(ToBasis(X),Y); *g(Y,E[l[1]]),l[1] = 1 .. n)](prod/atlas/help/images/Metric9.gif)
Example 2 Conformally flat metric of sphere - restart: with(atlas): Declare forms: Forms(e[j]=1,xi=1); ![{e[j], xi}](prod/atlas/help/images/Metric11.gif)
Declare vectors: Vectors(X,Y,Z,E[j]); ![{E[j], X, Y, Z}](prod/atlas/help/images/Metric12.gif)
Declare functions: Functions(f=f(x,y,z)); 
Declare constant : Constants(lambda); 
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)]](prod/atlas/help/images/Metric16.gif)
Declare frame: Frame(E[i]); ![[E[1] = Diff(``,x), E[2] = Diff(``,y), E[3] = Diff(``,z)]](prod/atlas/help/images/Metric17.gif)
Declare conformally flat metric of : 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](prod/atlas/help/images/Metric19.gif)
Simple calculations: 'iota[E[k]](g)'=iota[E[k]](g); ![iota[E[k]](g) = 4/(1+lambda*x^2+lambda*y^2+lambda*z^2)^2*(delta[1,k]*e[1]+delta[2,k]*e[2]+delta[3,k]*e[3])](prod/atlas/help/images/Metric20.gif)
'g(E[i],E[j])'=g(E[i],E[j]); ![g(E[i],E[j]) = 4/(1+lambda*x^2+lambda*y^2+lambda*z^2)^2*(delta[1,i]*delta[1,j]+delta[2,i]*delta[2,j]+delta[3,i]*delta[3,j])](prod/atlas/help/images/Metric21.gif)
'g(E[j],X)'=g(E[j],ToBasis(X)); ![g(E[j],X) = 4*iota[X](e[1])/(1+lambda*x^2+lambda*y^2+lambda*z^2)^2*delta[1,j]+4*iota[X](e[2])/(1+lambda*x^2+lambda*y^2+lambda*z^2)^2*delta[2,j]+4*iota[X](e[3])/(1+lambda*x^2+lambda*y^2+lambda*z^2)^2*de...](prod/atlas/help/images/Metric22.gif)
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](prod/atlas/help/images/Metric23.gif)
Connection calculation (see atlas[Connection] ): Connection(omega); ![omega[i,j]](prod/atlas/help/images/Metric24.gif)
Now connection 1-forms are calculated: 'omega[3,2]'=omega[3,2]; ![omega[3,2] = 2/(1+lambda*x^2+lambda*y^2+lambda*z^2)*lambda*z*e[2]-2*lambda*y/(1+lambda*x^2+lambda*y^2+lambda*z^2)*e[3]](prod/atlas/help/images/Metric26.gif)
'iota[E[i]](omega[1,2])'=iota[E[i]](omega[1,2]); ![iota[E[i]](omega[1,2]) = -2*lambda*y/(1+lambda*x^2+lambda*y^2+lambda*z^2)*delta[1,i]+2*lambda*x/(1+lambda*x^2+lambda*y^2+lambda*z^2)*delta[2,i]](prod/atlas/help/images/Metric27.gif)
Verify that vector is Killing one (see atlas[L] ): Z:=x*E[2]-y*E[1]; 'L[Z](g)'=L[Z](g); ![Z := x*E[2]-y*E[1]](prod/atlas/help/images/Metric29.gif)
 = 0](prod/atlas/help/images/Metric30.gif)
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/(1+lambda*x^2+lambda*y^2+lambda*z^2)^3*(2*x*delta[1,k]+2*y*delta[2,k]+2*z*delta[3,k])](prod/atlas/help/images/Metric31.gif)
Curvature calculation (see atlas[Curvature] ): Curvature(Omega); ![Omega[i,j]](prod/atlas/help/images/Metric32.gif)
Now curvature 2-forms are calculated: 'Omega[1,3]'=Omega[1,3]; ![Omega[1,3] = 4*lambda/(1+lambda*x^2+lambda*y^2+lambda*z^2)^2*`&^`(e[1],e[3])](prod/atlas/help/images/Metric34.gif)
'iota[E[k]](Omega[2,1])'=iota[E[k]](Omega[2,1]); ![iota[E[k]](Omega[2,1]) = -4*lambda/(1+lambda*x^2+lambda*y^2+lambda*z^2)^2*(delta[1,k]*e[2]-delta[2,k]*e[1])](prod/atlas/help/images/Metric35.gif)
Example 3 Schwarzchild metric restart: with(atlas): Declare vectors: Vectors(X,Y,Z,E[j]); ![{X, Y, Z, E[j]}](prod/atlas/help/images/Metric36.gif)
Declare functions: Functions(f=f(x,y,z)); 
Declare constant Constants(r[g]); ![{Catalan, I, _Z, Pi, r[g], -I}](prod/atlas/help/images/Metric39.gif)
Declare vectors: Vectors(L1,N,M,K); 
Declare forms: Forms(e[j]=1,l=1,n=1,m=1,k=1,x=1,y=1,z=1); ![{l, x, m, y, z, k, n, e[j]}](prod/atlas/help/images/Metric41.gif)
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]);

Now 1-forms are: [seq(e[i],i=1..4)]; ![[l, n, m, k]](prod/atlas/help/images/Metric44.gif)
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)-1/(1-r[g]/r)*d(r), m = 1/2*r*2^(1/2)*(d(theta)-I*sin(theta)*d(phi)), k = 1/2*r*2^(1/2)*(d(theta)+sin(theta)*d(phi)*I)]](prod/atlas/help/images/Metric46.gif)
Declare frame: Frame(E[j]); ![[L1 = r/(r-r[g])*Diff(``,t)+Diff(``,r), N = 1/2*Diff(``,t)+1/2*1/r*(-r+r[g])*Diff(``,r), M = 1/2*2^(1/2)/r*Diff(``,theta)+1/2*I*2^(1/2)/r/sin(theta)*Diff(``,phi), K = 1/2*2^(1/2)/r*Diff(``,theta)-1/2*I...](prod/atlas/help/images/Metric48.gif)
Declare metric: Metric(g=e[1]&.e[2]+e[2]&.e[1]-e[3]&.e[4]-e[4]&.e[3] ); 
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]](prod/atlas/help/images/Metric50.gif)
'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]](prod/atlas/help/images/Metric51.gif)
'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](prod/atlas/help/images/Metric52.gif)
g=ToBasis(g); 
Connection calculation: Connection(Gamma); ![Gamma[i,j]](prod/atlas/help/images/Metric54.gif)
Now connection 1-forms are calculated: 'Gamma[4,2]'=Gamma[4,2]; ![Gamma[4,2] = -1/2*(r-r[g])/r^2*k](prod/atlas/help/images/Metric55.gif)
Simple calculation: 'd(r)'=d(r); ![d(r) = 1/2*(-n*r+n*r[g]+2*l*r)/r](prod/atlas/help/images/Metric56.gif)
'd(m)'=d(m); ![d(m) = -1/2*1/r*2^(1/2)*cos(theta)/sin(theta)*`&^`(m,k)+1/2*(1/4*1/r^2*2^(1/2)*(-r*`&^`(n,k)-r*`&^`(n,m)+r[g]*`&^`(n,k)+r[g]*`&^`(n,m)+2*r*`&^`(l,k)+2*r*`&^`(l,m))+1/4*1/r^2*2^(1/2)*(r*`&^`(n,k)-r*`&^`...](prod/atlas/help/images/Metric60.gif) 'L[M](E[i])'=L[M](E[i]);
 = (iota[M](Gamma[1,i])+1/2*(r-r[g])/r^2*delta[4,i])*L1+(iota[M](Gamma[2,i])-1/r*delta[4,i])*N+(iota[M](Gamma[3,i])+1/2*1/r*2^(1/2)*cos(theta)/sin(theta)*delta[4,i]-1/2*1/r*2^(1/2)*cos(theta)...](prod/atlas/help/images/Metric62.gif)
See Also: atlas , atlas[Frame] , atlas[Coframe] , atlas[Connection] . |