Digi Area Group - Math Tools for Professionals
   Maple and Mathematica packages - math tools for professionals

atlas™ - modern differential geometry for Maple™

> Features List & Examples
> Template Worksheets
> Screenshots
> Documentation & Downloads
> License & Pricing
> Buy Online

 
 
 
 
Google

Features List & Examples  |  Introduction  |  Dimension  |  Indexing  |  Forms  |  Metric  |  atlasWizard - Maplet™

Introduction to the atlas package

Copyright © 2004-2008  DigiArea Group . All rights reserved.

Description:

  • atlas is a Maple™ package for modern differential geometry calculations. It can work with manifolds, mappings, embeddings, submersions, p-forms, tensor fields etc. Thus the user may concentrate on differential geometry problems not on the programming.
  • Standard mathematical notations accepted in modern differential geometry  are used in the package. All calculations are as coordinate free as possible; some calculations with symbolic dimension are available.
  • In the atlas  package all calculations are performed in terms of tensors, vectors and p-forms. For instance, conformally flat metric tensor of sphere S^2  is presented as g = 4*(`&.`(e[1],e[1])+`&.`(e[2],e[2]))/((1+lambda*(x^2+y^2))^2) , where   e[1] = d(x), e[2] = d(y)  are coframe 1-forms and symbol - `&.` is tensor product operator (see examples below). To get more information about differential geometry calculations and to look through some complete examples see atlas[examples] . To look through references list see atlas[references] .
  • The atlas  package can make some useful calculations even if  the working dimension is symbolic. For example, if n  is the dimension, e[k]  are coframe 1-forms and E[j]  are frame vectors then decomposition iota[X](xi) = Sum(iota[E[l[1]]](xi)*iota[X](e[l[1]]),l[1] = 1 .. n)  (of interior product of vector X  and 1-form xi ) - is one of the available calculation. To get more information about this possibility see atlas[dim]
  • The atlas  package uses its own data types, called const, scalar, vect, tensor, form, func, domain, mapping, coframe, frame to represent corresponding objects. These types are implemented as procedures (e.g. `type/form`) with a Boolean return value. It returns a value of "true" if its first argument satisfies the properties of a corresponding object, and "false" otherwise. For more information, see atlas[types] .
  • Because computations with tensors and p-forms usually involve a great number of quantities, it is important to make simplification in each step of the computations. For this reason, the user can customise the simplification routine `atlas/simp` for a particular problem. For more information, see atlas[simp] .
  • In the atlas  package any object (constant, tensor, p-form, manifold etc.) can be indexed. For more information on atlas  indexing facilities, see atlas[indexing] .
  • Before using routines of the atlas  package, you must load the package with one of the commands with(atlas) , with(atlas,[]), with(atlas,<function>)  or atlas[<function>] . See with  for details.
  • The procedures available are:
     
DomainManifold or domain declaration
ConstantsConstants declaration
FunctionsFunctions declaration
TensorsTensors declaration
FormsForms declaration
VectorsVectors declaration
MappingDeclaration of a mapping between manifolds or domains
ProjectorsCalculation of projectors of a mapping
InvariantsCalculation of invariants of a mapping
CoframeCoframe declaration
FrameFrame declaration
MetricMetric tensor declaration
ConnectionCalculation or declaration of connection 1-forms
CurvatureCalculation or declaration of curvature 2-forms
TorsionCalculation or declaration of torsion 2-forms
RiemannRiemann tensor calculation
RicciRicci tensor calculation
RicciScalarRicci scalar calculation
ToBasis"ToBasis" decomposision
WhoLists of all declarations made and shows "who is who"
kindKind of a tensor
&/Restriction of a [0,k] tensor field under a mapping
&DDifferential of a mapping
dExterior differentiation
LLie derivative
iotaInterior product operator
&$Generalized interior product operator
&^Exterior product operator
&@Natural vector operator
&.Tensor product operator
&**Hodge operator
covCovariant differentiation
dualDual operator
gradGradient operator
divDivergence operator
deltaKronecker's delta symbol


Examples:
restart:
with(atlas):

Conformally flat metric on sphereS^2:

Declare constant lambda :
Constants(lambda);

{I, _Z, Pi, -I, lambda, Catalan}

Declare functions:
Functions(f=f(x,y),h=h(f));

{h, f}

Declear forms:
Forms(e[i]=1,xi=1,theta=p);

{xi, theta, e[i]}

Declare vectors:
Vectors(E[j],X,Y,Z);

{X, Y, Z, E[j]}

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

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

Now coframe 1-forms are e[1] = d(x), e[2] = d(y) .

Declare frame vectors:
Frame(E[j]);

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

Now frame vectors are E[1] = Diff(``,x), E[2] = Diff(``,y) .

Metric declaration:
Metric(g=4*(d(x)&.d(x)+d(y)&.d(y))/(1+lambda*(x^2+y^2))^2);

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

Calculate connection 1-forms:
Connection(omega);

omega[i,j]

Calculate curvature 2-forms:
Curvature(Omega);

Omega[i,j]

Riemann tensor:
Riemann(R);

R = 16/(1+lambda*x^2+lambda*y^2)^4*lambda*`&.`(`&^`(e[1],e[2]),`&^`(e[1],e[2]))

Ricci tensor:
Ricci(r);

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

Ricci scalar:
RicciScalar(s);

s = 2*lambda

Show 1-form omega[2,1] :
'omega[2,1]'=factor(omega[2,1]);

omega[2,1] = -2*lambda*(-y*e[1]+x*e[2])/(1+lambda*x^2+lambda*y^2)

Verify that there is no Killing vector field among frame vector fields:
'L[E[j]](g)'=L[E[j]](g);

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

Verify that "rotation" vector field Z := x*Diff(``,y)-y*Diff(``,x)   is a Killing one:
Z:=x*E[2]-y*E[1];
'L[Z]'(g)=L[Z](g);

Z := x*E[2]-y*E[1]

L[Z](g) = 0

Calculation of volume form using Hodge operator &** :
'&**(1)'=radsimp(&**(1));

`&**`(1) = 4/abs(1+lambda*x^2+lambda*y^2)^2*`&^`(e[1],e[2])

Some more calculations:

Using interior product operator - iota :
'iota[E[j]](&**(1))'=iota[E[j]](radsimp(&**(1)));

iota[E[j]](`&**`(1)) = 4/abs(1+lambda*x^2+lambda*y^2)^2*(delta[1,j]*e[2]-delta[2,j]*e[1])

The same with metric tensor g:
'iota[E[k]](g)'=iota[E[k]](g);

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

Using exterior derivative operator - d :
'd(f)'=d(f);

d(f) = Diff(f,x)*e[1]+Diff(f,y)*e[2]

'd(h)'=d(h);

d(h) = Diff(h,f)*(Diff(f,x)*e[1]+Diff(f,y)*e[2])

'd(f*xi)'=d(f*xi);

d(f*xi) = -Diff(f,x)*`&^`(xi,e[1])-Diff(f,y)*`&^`(xi,e[2])+f*d(xi)

'&**(d(f))'=radsimp(&**(d(f)));

`&**`(d(f)) = (Diff(f,x)*e[2]-Diff(f,y)*e[1])*(1+lambda*x^2+lambda*y^2)^2/abs(1+lambda*x^2+lambda*y^2)^2

As e[k]  are coframe 1-forms and E[i]  are frame vectors then:
'iota[E[i]](e[k])'=iota[E[i]](e[k]);

iota[E[i]](e[k]) = delta[i,k]

"ToBasis" decomposition:
X=ToBasis(X);
xi=ToBasis(xi);

X = iota[X](e[1])*E[1]+iota[X](e[2])*E[2]

xi = iota[E[1]](xi)*e[1]+iota[E[2]](xi)*e[2]

See Also:

atlas[types] , atlas[simp] , atlas[dim]  , atlas[examples] , atlas[references] .