7.4. Several metrics

It is possible to work with several metrics on the same vbundle. Of course, not all of them can raise and lower the indices of other tensors because we would inmediately loose track of the metric that was used to move a given index. The situation in xTensor` is as follows. The list of metrics on a vbundle is stored as an upvalue of the vbundle for the function MetricsOfVBundle. The metrics are placed in that list in order of definition. The first metric is considered special and it is the only one which can move indices. All other metrics (called "frozen" metrics) are simply symmetric two-tensors with a Levi-Civita associated connection and a number of associated tensors. For a frozen metric, many of the expected rules do not work.
It is possible to remove the first metric, suddenly converting the second metric into the first of the list. I cannot think of any situation where that could be valid or just safe.
I have never seriously tested this part of the code. Please use it with maximum care!

Currently there is only one metric on TangentM3:

In[586]:=

MetricsOfVBundle[TangentM3]

Out[586]=

{metricg}

We define a second (frozen) metric:

In[587]:=

DefMetric[1, frozen[-a, -b], CD2, {"|", "D"}, PrintAs→"f"]

DefMetric :: old : There are already metrics  {metricg} in vbundle TangentM3. Defined metric is frozen.

** DefTensor: Defining symmetric metric tensor frozen[-a, -b] .

** DefTensor: Defining inverse metric tensor Invfrozen[a, b] . Metric is frozen!

** DefMetric: Don't know yet how to define epsilon for a frozen metric.

** DefCovD: Defining covariant derivative CD2[-a] .

** DefTensor: Defining vanishing torsion tensor TorsionCD2[a, -b, -c] .

** DefTensor: Defining symmetric Christoffel tensor ChristoffelCD2[a, -b, -c] .

** DefTensor: Defining Riemann tensor RiemannCD2[-a, -b, -c, -d] .

** DefTensor: Defining symmetric Ricci tensor RicciCD2[-a, -b] .

** DefCovD:  Contractions of Riemann automatically replaced by Ricci.

** DefTensor: Defining Ricci scalar RicciScalarCD2[] .

** DefTensor: Defining symmetric Einstein tensor EinsteinCD2[-a, -b] .

** DefTensor: Defining vanishing Weyl tensor WeylCD2[-a, -b, -c, -d] .

** DefTensor: Defining symmetric TFRicci tensor TFRicciCD2[-a, -b] .

** DefCovD:  Computing RicciToEinsteinRules for dim 3

In[588]:=

MetricsOfVBundle[TangentM3]

Out[588]=

{metricg, frozen}

Compare these two results:

In[589]:=

{metricg[a, -b], frozen[a, -b]}

Out[589]=

{δ_ ( b)^a , f_ ( b)^a }

That is because these three expressions behave very differently:

In[590]:=

{frozen[a, c] frozen[-c, -b], metricg[a, c] frozen[-c, -b], metricg[a, c] metricg[-c, -b]}

Out[590]=

{f_  ^ac f_cb^  , f_cb^   g_  ^ac, δ_ ( b)^a }

In[591]:=

ContractMetric[%]

Out[591]=

{f_  ^ac f_cb^  , f_ ( b)^a , δ_ ( b)^a }

In particular the inverse of frozen[-a,-b] is not frozen[a,b], but Invfrozen[a,b]:

In[592]:=

Invfrozen[a, b] frozen[-b, -c]

Out[592]=

δ_c ^( a)

It is problematic to generalize typical expressions. For example this is not zero now:

In[593]:=

CD2[-a][EinsteinCD2[a, b]]

Out[593]=

D_a^ G[D] _  ^ab

but this is zero (though it is not encoded):

In[594]:=

Invfrozen[a, b] CD2[-a][EinsteinCD2[-b, -c]]

Out[594]=

f_  ^ab (D_a^ G[D] _bc^  )

In[595]:=

UndefMetric[frozen]

** UndefTensor: Undefined inverse metric tensor Invfrozen

** UndefTensor: Undefined symmetric Christoffel tensor ChristoffelCD2

** UndefTensor: Undefined symmetric Einstein tensor EinsteinCD2

** UndefTensor: Undefined symmetric Ricci tensor RicciCD2

** UndefTensor: Undefined Ricci scalar RicciScalarCD2

** UndefTensor: Undefined Riemann tensor RiemannCD2

** UndefTensor: Undefined symmetric TFRicci tensor TFRicciCD2

** UndefTensor: Undefined vanishing torsion tensor TorsionCD2

** UndefTensor: Undefined vanishing Weyl tensor WeylCD2

** UndefCovD: Undefined covariant derivative CD2

** UndefTensor: Undefined symmetric metric tensor frozen


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