| 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
is presented as , where 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
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. 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:
| Domain | Manifold or 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 | | Projectors | Calculation of projectors of a mapping | | Invariants | Calculation of invariants of a mapping | | Coframe | Coframe declaration | | Frame | Frame declaration | | Metric | Metric tensor declaration | | Connection | Calculation or declaration of connection 1-forms | | Curvature | Calculation or declaration of curvature 2-forms | | Torsion | Calculation or declaration of torsion 2-forms | | Riemann | Riemann tensor calculation | | Ricci | Ricci tensor calculation | | RicciScalar | Ricci scalar calculation | | ToBasis | "ToBasis" decomposision | | Who | Lists of all declarations made and shows "who is who" | | kind | Kind of a tensor | | &/ | Restriction of a [0,k] tensor field under a mapping | | &D | Differential of a mapping | | d | Exterior differentiation | | L | Lie derivative | | iota | Interior product operator | | &$ | Generalized interior product operator | | &^ | Exterior product operator | | &@ | Natural vector operator | | &. | Tensor product operator | | &** | Hodge operator | | cov | Covariant differentiation | | dual | Dual operator | | grad | Gradient operator | | div | Divergence operator | | delta | Kronecker's delta symbol |
Examples: restart: with(atlas):
Conformally flat metric on sphere : Declare constant : Constants(lambda); 
Declare functions: Functions(f=f(x,y),h=h(f)); 
Declear forms: Forms(e[i]=1,xi=1,theta=p); ![{xi, theta, e[i]}](prod/atlas/help/images/atlasHelp14.gif)
Declare vectors: Vectors(E[j],X,Y,Z); ![{X, Y, Z, E[j]}](prod/atlas/help/images/atlasHelp15.gif)
Declare coframe 1-forms: Coframe(e[1]=d(x),e[2]=d(y)); ![[e[1] = d(x), e[2] = d(y)]](prod/atlas/help/images/atlasHelp16.gif)
Now coframe 1-forms are . Declare frame vectors: Frame(E[j]); ![[E[1] = Diff(``,x), E[2] = Diff(``,y)]](prod/atlas/help/images/atlasHelp18.gif)
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](prod/atlas/help/images/atlasHelp20.gif)
Calculate connection 1-forms: Connection(omega); ![omega[i,j]](prod/atlas/help/images/atlasHelp21.gif)
Calculate curvature 2-forms: Curvature(Omega); ![Omega[i,j]](prod/atlas/help/images/atlasHelp22.gif)
Riemann tensor: Riemann(R); ![R = 16/(1+lambda*x^2+lambda*y^2)^4*lambda*`&.`(`&^`(e[1],e[2]),`&^`(e[1],e[2]))](prod/atlas/help/images/atlasHelp23.gif)
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])](prod/atlas/help/images/atlasHelp24.gif)
Ricci scalar: RicciScalar(s); 
Show 1-form : '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)](prod/atlas/help/images/atlasHelp27.gif)
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])](prod/atlas/help/images/atlasHelp28.gif)
Verify that "rotation" vector field is a Killing one: Z:=x*E[2]-y*E[1]; 'L[Z]'(g)=L[Z](g); ![Z := x*E[2]-y*E[1]](prod/atlas/help/images/atlasHelp30.gif)
 = 0](prod/atlas/help/images/atlasHelp31.gif)
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])](prod/atlas/help/images/atlasHelp32.gif)
Some more calculations: Using interior product operator - : '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])](prod/atlas/help/images/atlasHelp34.gif)
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])](prod/atlas/help/images/atlasHelp35.gif)
Using exterior derivative operator - : 'd(f)'=d(f); ![d(f) = Diff(f,x)*e[1]+Diff(f,y)*e[2]](prod/atlas/help/images/atlasHelp37.gif)
'd(h)'=d(h); ![d(h) = Diff(h,f)*(Diff(f,x)*e[1]+Diff(f,y)*e[2])](prod/atlas/help/images/atlasHelp38.gif)
'd(f*xi)'=d(f*xi); ![d(f*xi) = -Diff(f,x)*`&^`(xi,e[1])-Diff(f,y)*`&^`(xi,e[2])+f*d(xi)](prod/atlas/help/images/atlasHelp39.gif)
'&**(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](prod/atlas/help/images/atlasHelp40.gif)
As are coframe 1-forms and are frame vectors then: 'iota[E[i]](e[k])'=iota[E[i]](e[k]); ![iota[E[i]](e[k]) = delta[i,k]](prod/atlas/help/images/atlasHelp43.gif)
"ToBasis" decomposition: X=ToBasis(X); xi=ToBasis(xi); *E[1]+iota[X](e[2])*E[2]](prod/atlas/help/images/atlasHelp44.gif)
![xi = iota[E[1]](xi)*e[1]+iota[E[2]](xi)*e[2]](prod/atlas/help/images/atlasHelp45.gif)
See Also: atlas[types] , atlas[simp] , atlas[dim] , atlas[examples] , atlas[references] . |