0. xCoba` at a glance

xCoba`  has been built on xTensor`  and shares its approach and priorities. In particular a great deal of effort has been made to allow full compatibility between abstract and component computations. A crucial ingredient has been the formalism of marked indices and particularly the treatment of frame dependent objects. Perhaps the most conspicuous example is the covariant parallel derivative, which follows the concept of ordinary derivative as described on Wald's General Relativity.  This reference has been the main inspiration for much of the notation, and the user is advised to keep it in mind when dealing with some of the non standard ideas employed by this package.

A session with xCoba` begins just like one with xTensor`, defining one or more manifolds and vector bundles and the objects living on them:

Define a 3d manifold M3:

In[10]:=

Define a complex vector bundle

In[11]:=

Define a contravariant vector v and a covariant symmetric tensor T:

In[12]:=

Define a Riemann symmetric tensor and a covariant vector on InnerC

In[14]:=

In[15]:=

Remember that, in xTensor`, we use abstract indices

In[16]:=

Out[16]=

Now xCoba`  lets us define  bases. We have to specify its cnumbers (integers identifying the vectors of the basis) and vector bundle. Several related objects are also defined (parallel derivative and associated tensors).

In[17]:=

Each basis has a colour, used to identify its associated objects in StandardForm

In[18]:=

We can define bases on the complex vector bundle. This generates additional objects for its parallel derivative (FRiemann and AChristoffel)

In[19]:=

As we advanced on the introduction, all the objects that depend on a particular basis are marked with its colour, for example here the parallel derivative of the basis

In[20]:=

Out[20]=

Now we can use basis indices and work with specific components. A contravariant basis index (BIndex) is represented by {a, basis}, where a is a valid abstract index and basis an existing basis. A covariant basis index is represented by {-a, -basis}.   If we give an integer instead of an abstract index we get a component index (CIndex):

In[21]:=

Out[21]=

Covariant component indices are represented by {i, -basis}, not by {-i, -basis}. This is because we consider the bases on the tangent and cotagent bundles to have the same cnumbers (and also allows us to use nonpositive  integers as cnumbers):

In[22]:=

Out[22]=

Basis vectors and transition matrices are represented by the two-index object Basis.

In[23]:=

Out[23]=

In[24]:=

Out[24]=

Bases objects are not automatically contracted with one another:

In[25]:=

Out[25]=

In[26]:=

Out[26]=

We must use the function ContractBasis to force the operation.

In[27]:=

Out[27]=

This function is quite general and allows the user to specify which indices should be acted upon.The default is total contraction:

In[28]:=

Out[28]=

In[29]:=

Out[29]=

In[30]:=

Out[30]=

In[31]:=

Out[31]=

The inverse function is SeparateBasis, also quite general. It can undo the action of ContractBasis and also change the basis of the whole expression

In[32]:=

Out[32]=

In[33]:=

Out[33]=

In[34]:=

Out[34]=

In[35]:=

Out[35]=

One of the most important features of the package is the ability to trace basis contractions,

In[36]:=

Out[36]=

We can produce lists of all the basis vectors,

In[37]:=

Out[37]=

In[38]:=

Out[38]//MatrixForm=

and lists of all the components of a tensor

In[39]:=

Out[39]=

Notice that T is a symmetric tensor, so this can be simplified

In[40]:=

Out[40]//MatrixForm=

We can assign rules to the components of a tensor taking the symmetries into account

In[41]:=

In[42]:=

Out[42]=

In[43]:=

Out[43]=

As we can see, dependent and independent components are stored in separate sublists. We can change basis:

In[44]:=

In[45]:=

Out[45]=

In[46]:=

Out[46]=

Clean up:

In[47]:=

In[48]:=

In[49]:=

xCoba`  introduces new definitions to work with derivatives. Remember that each basis has an associated parallel derivative  (PDbasisname). We can express any derivative of a Basis object in terms of Christoffel tensors relating that derivative to the PD of the basis

In[50]:=

Out[50]=

In[51]:=

Out[51]=

If we have a basis change a new Christoffel tensor is defined, relating the PDs of both bases

In[52]:=

Out[52]=

In[53]:=

Out[53]=

We can define charts.

In[54]:=

Now the torsion tensor vanishes and the Christoffel is symmetric. Functions to restrict a field to a point or express it in terms of functions of the coordinates are currently under development.

In[55]:=

Removing a complex basis also removes its complex conjugate:

In[56]:=

In[57]:=

 Created by Mathematica  (May 16, 2008)