atlas 2 for Maple

Atlas Documentation

Declaration operators

Calculation operators

Standard DG operators

Utility operators

General Tutorials

Atlas Wizard Tutorials

Licenses & Pricing

Introduction to the atlas 2 package  

Description:
 

Modern differential geometry  

Modern differential geometry is the basis for the atlas package.  Such entities as manifolds, mappings, p-forms, tensor fields, bundles, connections are very important in the modern differential geometry. The atlas package allows to work with these entities without extra efforts, just define an entity with corresponding obvious definition and work with it just as you usually do.
The following declarations are trivial and self explanatory:
Domain - manifold and domain declaration, Constants - constants declaration, Functions - functions declaration, Tensors - tensors declaration, Forms - forms declaration, Vectors - vectors declaration, Mapping - declaration of a mapping between manifolds or domains, Coframe - coframe declaration, Frame - frame declaration, Metric - metric tensor declaration.  

 

No programming just differential geometry  

When working on your problem you think in terms of manifolds, mappings, embeddings, submersions, p-forms, tensor fields etc. The atlas package allows you  concentrate on the differential geometry problem not on the programming.  You can use predefined declaration operators to declare various differential geometry objects, which are calculated on the fly: Projectors - automatic calculation of projectors of a mapping, Invariants - automatic calculation of invariants of a mapping, Connection - automatic calculation of connection 1-forms, Curvature - automatic calculation of curvature 2-forms, Torsion - automatic calculation of torsion 2-forms, Riemann  - automatic Riemann tensor calculation, Ricci -  automatic Ricci tensor calculation, RicciScalar - automatic Ricci scalar calculation.  

 

No ugly output just standard notation  

The atlas package uses standard differential geometry notations: d - exterior derivative, Lie derivative - Lie derivative, ι - interior product, Exterior product - exterior product, Tensor product - tensor product, Hodge operator - Hodge star, Covariant derivative - covariant differentiation, δ - Kronecker's delta symbol etc. You always get output as you expected like the following:

atlas package output example with Lie derivative calculation:
 

 

`ℒ`[X](`⊗`(T, Omega)) = `+`(`⊗`(`ℒ`[X](T), Omega), `⊗`(T, `ℒ`[X](Omega)))  


atlas package output example with exterior derivative calculation:
 

`and`(`and`(d(`and`(omega, sigma)) = sigma, `+`(d(omega), `-`(omega))), d(sigma))    


atlas package output example with tensor product calculation:
 

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


atlas package output example with covariant derivative calculation:
 

 

 


atlas package output example with interior product and Kronecker's delta symbol calculation:
 

 

iota[E[n], E[i]](`and`(e[j], e[k])) = `+`(`*`(delta[i, j], `*`(delta[n, k])), `-`(`*`(delta[i, k], `*`(delta[n, j]))))  



atlas package output example with calculation in a manifold with symbolic dimention:
 

d(e[k]) = `+`(`-`(`*`(`+`(`*`(2, `*`(lambda))), `and`(Sum(`*`(x[i], `*`(e[i])), i = 1 .. N), e[k]))))  



Old atlas package notations are still supported for input purposes and for Classic Worksheet Interface of Maple 14.
 

 

Single solving path for almost any problem  

With the atlas package you always have one and the same solving path for almost any of your differential geometry problem. You start with definitions of manifolds, vector and tensor fields, p- forms and mappings between the manifolds. When you get your differential geometry entities defined, you use standard operators to get various quantities of your entities: Projectors - automatic calculation of projectors of a mapping, Invariants - automatic calculation of invariants of a mapping, Connection - automatic calculation of connection 1-forms, Curvature - automatic calculation of curvature 2-forms, Torsion - automatic calculation of torsion 2-forms, Riemann  - automatic Riemann tensor calculation, Ricci -  automatic Ricci tensor calculation, RicciScalar - automatic Ricci scalar calculation.  

This is standard procedure which can be automated completely.  

For instance for 2D and 3D differential geometry problems the atlas package offers atlasWizard - the powerful Maplet tool to formulate and solve typical differential geometry problems for lower dimentions. You can fine atlasWizard in maplets subfolder of your atlas distribution folder:
{atlas-path}/maplets/atlasWizard.maplet , where {atlas-path} is a path to your atlas distribution folder.  

In higher dimentions you can also automate the solving path by using our templates worksheets (look at {atlas-path}/examples ).  

 

All calculations are as coordinate free as possible  

In the atlas package all calculations are performed in terms of tensors, vectors and p-forms (not their components!). 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 the main principle of the package structure and to look through some complete examples see atlas[examples] . To look through references list see atlas[references] .  

 

Some calculations with symbolic dimension are available  

The atlas package allows one to make some useful calculations even if  the working dimension is symbolic. For example, if nis 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 Xand 1-form xi) - is one of the available calculation. Another example is Lie bracket decomposition: `ℒ`[E[i]](E[j]) = Sum(`*`(`+`(iota[E[i]](omega[l[1], j]), `-`(iota[E[j]](omega[l[1], i]))), `*`(E[l[1]])), l[1] = 1 .. n)  

To get more information about this possibility see atlas[dim]  

 

Almost any differential geometry entity can be indexed  

In the atlas package any object (constant, tensor, p-form, manifold etc.) can be indexed. This is very flexible feature. For or more information on atlas indexing facilities, see atlas[indexing] .  

 

Easy customizable simplification of your results  

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 customize the simplification routine `atlas/simp` for a particular problem. For more information, see atlas[simp] .  

 

Intallation instructions  

Copy the files atlas.hdb , atlas.mla from the {atlas-path}/lib folder, and place them inside the lib folder of your Maple installation. To find out what your Maple lib folder is, execute in your Maple session:

[
> libname;
 

You get strings separated by commas. First string is your path to your Maple lib folder.  


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.  

 

Declaration operators  

 

Use these operators to declare various differential geometry entities.  

 

Domain         Manifold and domain declaration
Constants     Constants declaration
Functions     Functions declaration
Tensors         Tensors declaration
Forms           Forms declaration
Vectors        Vectors declaration
Mapping       Declaration of a mapping between manifolds or domains
Coframe      Coframe declaration
Frame          Frame declaration
Metric          Metric tensor declaration  

 

Calculation operators  

 

Use these operators for automatic calculation of various differential geometry objects.  

 

Projectors      Calculation of projectors of a mapping
Invariants       Calculation of invariants of a mapping
Connection     Calculation of connection 1-forms
Curvature       Calculation of curvature 2-forms
Torsion           Calculation of torsion 2-forms
Riemann          Riemann tensor calculation
Ricci                Ricci tensor calculation
RicciScalar      Ricci scalar calculation  

 

Differential geometry operators  

 

Use these operators for standard differential geometry calculations.  

 

d         Exterior derivative operator
Lie derivative        Lie derivative
ι          Interior product operator
Exterior product       Exterior product operator
Tensor product       Tensor product operator
Hodge operator        Hodge operator
Covariant derivative        Covariant differentiation
grad   Gradient operator
div      Divergence operator  

&d      Codifferential operator
&L      Hodge-de Rham Laplacian  

&/      Pullback of a [0,k] tensor field under a mapping
&D      Pushforward (differential of a mapping)  

 

Utility operators  

Use these operators to control and manage your differential geometry entities.  

 

ToBasis      "ToBasis" decomposision
Who           Lists of all declarations made and shows "who is who"
kind           Kind of a tensor
&$             Generalized interior product operator
&@            Natural vector operator
dual           Dual operator
delta         Kronecker's delta symbol  

 

Examples:  

> restart:
with(atlas):
 

Conformally flat metric on sphere `*`(`^`(S, 2)):  

Declare constant lambda:
Constants(lambda);  

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

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

{f, h} (2.2)
 

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

{xi, theta, e[i]} (2.3)
 

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

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

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

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

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)] (2.6)
 

Now frame vectors are .  

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)))) (2.7)
 

Calculate connection 1-forms:
Connection(omega);  

omega[i, j] (2.8)
 

Calculate curvature 2-forms:
Curvature(Omega);  

Omega[i, j] (2.9)
 

Riemann tensor:
Riemann(R);  

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

Ricci tensor:
Ricci(r);  

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

Ricci scalar:
RicciScalar(s);  

s = `+`(`*`(2, `*`(lambda))) (2.12)
 

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)))))))) (2.13)
 

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, `*`(`+`(`*`(2, `*`(x, `*`(delta[1, j]))), `*`(2, `*`(y, `*`(delta[2, j])))))))), `*`(`^`(`+`(1, `*`(lambda, `*`... (2.14)
 

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

 

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

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

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

Some more calculations:  

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

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

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

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

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

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

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

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

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

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

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

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

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] (2.23)
 

"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]))) (2.24)
 

See Also:  

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