Introduction to the atlas 2 package
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, ι - interior product,
- exterior product,
- tensor product,
- Hodge star,
- 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:
atlas package output example with exterior derivative calculation:
atlas package output example with tensor product calculation:
atlas package output example with covariant derivative calculation:
atlas package output example with interior product and Kronecker's delta symbol calculation:
atlas package output example with calculation in a manifold with symbolic dimention:
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
is presented as
, where
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
is the dimension,
are coframe 1-forms and
are frame vectors then decomposition
(of interior product of vector
and 1-form
) - is one of the available calculation. Another example is Lie bracket decomposition:
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 flexable 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 customise 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
ι Interior product operator
Exterior product operator
Tensor product operator
Hodge operator
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
| > | restart: with(atlas): |
Conformally flat metric on sphere
:
Declare constant
:
Constants(lambda);
| (2.1) |
Declare functions:
Functions(f=f(x,y),h=h(f));
| (2.2) |
Declear forms:
Forms(e[i]=1,xi=1,theta=p);
| (2.3) |
Declare vectors:
Vectors(E[j],X,Y,Z);
| (2.4) |
Declare coframe 1-forms:
Coframe(e[1]=d(x),e[2]=d(y));
| (2.5) |
Now coframe 1-forms are
.
Declare frame vectors:
Frame(E[j]);
| (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);
![]() | (2.7) |
Calculate connection 1-forms:
Connection(omega);
| (2.8) |
Calculate curvature 2-forms:
Curvature(Omega);
| (2.9) |
Riemann tensor:
Riemann(R);
![]() | (2.10) |
Ricci tensor:
Ricci(r);
![]() | (2.11) |
Ricci scalar:
RicciScalar(s);
| (2.12) |
Show 1-form
:
'omega[2,1]'=factor(omega[2,1]);
![]() | (2.13) |
Verify that there is no Killing vector field among frame vector fields:
'L[E[j]](g)'=L[E[j]](g);
![]() | (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));
| (2.15) |
Calculation of volume form using Hodge operator &** :
'&**(1)'=radsimp(&**(1));
![]() | (2.16) |
Some more calculations:
Using interior product operator -
:
'iota[E[j]](&**(1))'=iota[E[j]](radsimp(&**(1)));
![]() | (2.17) |
The same with metric tensor g:
'iota[E[k]](g)'=iota[E[k]](g);
![]() | (2.18) |
Using exterior derivative operator -
:
'd(f)'=d(f);
| (2.19) |
| > | 'd(h)'=d(h); |
| (2.20) |
| > | 'd(f*xi)'=d(f*xi); |
| (2.21) |
| > | '&**(d(f))'=radsimp(&**(d(f))); |
![]() | (2.22) |
As
are coframe 1-forms and
are frame vectors then:
'iota[E[i]](e[k])'=iota[E[i]](e[k]);
| (2.23) |
"ToBasis" decomposition:
X=ToBasis(X);
xi=ToBasis(xi);
| (2.24) |

![g = `+`(`/`(`*`(4, `*`(`+`(`&.`(e[1], e[1]), `&.`(e[2], e[2])))), `*`(`^`(`+`(1, `*`(lambda, `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)))))), 2))))](Maple/atlas/help/images/atlasHelp_27.gif)
![R = `+`(`/`(`*`(16, `*`(lambda, `*`(`&.`(`&^`(e[1], e[2]), `&^`(e[1], e[2]))))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2)))), 4))))](Maple/atlas/help/images/atlasHelp_30.gif)
![r = `+`(`/`(`*`(4, `*`(lambda, `*`(`&.`(e[1], e[1])))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2)))), 2))), `/`(`*`(4, `*`(lambda, `*`(`&.`(e[2], e[2])))), `*`(`^`(`+`(1, `...](Maple/atlas/help/images/atlasHelp_31.gif)
![omega[2, 1] = `+`(`-`(`/`(`*`(2, `*`(lambda, `*`(`+`(`-`(`*`(y, `*`(e[1]))), `*`(x, `*`(e[2])))))), `*`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))))))))](Maple/atlas/help/images/atlasHelp_34.gif)
![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, `*`...](Maple/atlas/help/images/atlasHelp_35.gif)
![`&**`(1) = `+`(`/`(`*`(4, `*`(`&^`(e[1], e[2]))), `*`(`^`(abs(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))))), 2))))](Maple/atlas/help/images/atlasHelp_39.gif)
![iota[E[j]](`&**`(1)) = `+`(`/`(`*`(4, `*`(`+`(`*`(delta[1, j], `*`(e[2])), `-`(`*`(delta[2, j], `*`(e[1])))))), `*`(`^`(abs(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))))), 2))))](Maple/atlas/help/images/atlasHelp_41.gif)
![iota[E[k]](g) = `+`(`/`(`*`(4, `*`(`+`(`*`(delta[1, k], `*`(e[1])), `*`(delta[2, k], `*`(e[2]))))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2)))), 2))))](Maple/atlas/help/images/atlasHelp_42.gif)
![`&**`(d(f)) = `/`(`*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2)))), 2), `*`(`+`(`*`(Diff(f, x), `*`(e[2])), `-`(`*`(Diff(f, y), `*`(e[1])))))), `*`(`^`(abs(`+`(1, `*`(lambda, `...](Maple/atlas/help/images/atlasHelp_47.gif)