1.1. Define a manifold and its tangent bundle

The first basic action is defining a differentiable manifold. Just after loading, xTensor` does not have any defined manifold.

DefManifold                Define a manifold or a product of manifolds
UndefManifold            Undefine a manifold
ManifoldQ                Check manifold
$Manifolds                List of defined manifolds
$ProductManifolds        List of defined product manifolds

Definition of a manifold

We define a 3-dimensional manifold M3 with abstract indices {a, b, ..., h} on its tangent vector bundle:

In[56]:=

DefManifold[M3, 3, {a, b, c, d, e, f, g, h}]

** DefManifold: Defining manifold M3.

** DefVBundle: Defining vbundle TangentM3.

We can ask Mathematica about this manifold using the question mark ?. We see that the information is stored in a series of functions using the concept of "upvalue" (this is why we find the  ^= sign below)

In[57]:=

? M3

Global`M3

DimOfManifold[M3]^=3
Info[M3]^={manifold,}
ManifoldQ[M3]^=True
ObjectsOf[M3]^={}
PrintAs[M3]^=M3
ServantsOf[M3]^={TangentM3}
SubmanifoldsOfManifold[M3]^={}
TangentBundleOfManifold[M3]^=TangentM3

Together with the manifold we have also defined its tangent vector bundle, which stores all the information related to indices and indexed objects. By default, the tangent bundle is named by joining the symbol Tangent with the name of the manifold, but that name can be freely choosen. Note that we shall often abbreviate "vector bundle" to "vbundle".

By default, tangent bundles are real and have no metric. The dimension of the tangent bundle is that of the vector space at each point, and coincides with the dimension of the base manifold.

In[58]:=

? TangentM3

Global`TangentM3

BaseOfVBundle[TangentM3]^=M3
Dagger[TangentM3]^=TangentM3
DimOfVBundle[TangentM3]^=3
IndicesOfVBundle[TangentM3]^={{a,b,c,d,e,f,g,h},{}}
Info[TangentM3]^={vbundle,}
MasterOf[TangentM3]^=M3
MetricsOfVBundle[TangentM3]^={}
ObjectsOf[TangentM3]^={}
PrintAs[TangentM3]^=TangentM3
SubvbundlesOfVBundle[TangentM3]^={}
VBundleQ[TangentM3]^=True

We define a second manifold S2. Note that we can use C, D, K, N, O as indices, even though Mathematica has reserved meanings for those symbols. The capitals E and I cannot be used as indices because they are always understood as the base of natural logarithms and the square root of -1, respectively. (Those seven are the only one-letter symbols used by Mathematica.) xTensor` issues warnings to remind you of this point:

In[59]:=

DefManifold[S2, 2, {A, B, C, D, F, G, H}]

** DefManifold: Defining manifold S2.

** DefVBundle: Defining vbundle TangentS2.

ValidateSymbol :: capital : System name C is overloaded as an abstract index.

ValidateSymbol :: capital : System name D is overloaded as an abstract index.

The lists of manifolds and vbundles defined in the current session are given by the global variables $Manifolds and $VBundles, respectively:

In[60]:=

$Manifolds

Out[60]=

{M3, S2}

In[61]:=

$VBundles

Out[61]=

{TangentM3, TangentS2}

A manifold can be undefined (its properties are lost and the symbol is removed). In the process, the associated tangent bundle is also undefined:

In[62]:=

UndefManifold[M3]

** UndefVBundle: Undefined vbundle TangentM3

** UndefManifold: Undefined manifold M3

In[63]:=

? M3

Information :: notfound : Symbol M3 not found. More…

In[64]:=

$Manifolds

Out[64]=

{S2}

And redefined:

In[65]:=

DefManifold[M3, 3, {a, b, c, d, e, f, g, h}]

** DefManifold: Defining manifold M3.

** DefVBundle: Defining vbundle TangentM3.

In[66]:=

$Manifolds

Out[66]=

{S2, M3}


Created by Mathematica  (May 16, 2008) Valid XHTML 1.1!