7.2. Contraction

Metrics are not contracted by default because in general that obscures the manipulation of indices and the canonicalization process becomes slower. However, xTensor` has a number of commands that perform metric contraction. When the expression is a pure tensor contraction is a simple process, but when there are derivatives which are not associated to the (first) metric of the vbundle then problematic situations could develop. There are two situations we need to worry about: one is the process of contraction itself, shown in this subsection; the other is the influence of the metric in the process of canonicalization, studied in the next subsection.

ContractMetric                    Perform metric contractions without differentiating metrics
OverDerivatives                    Option to perform metric contractions with metric differentiation if needed
AllowUpperDerivatives            Option stating if it is possible to contract an inverse metric with a derivative operator

Metric contraction.

Metric factors are automatically contracted with themselve:

In[557]:=

metricg[a, b] metricg[-b, -c]

Out[557]=

δ_ ( c)^a

In[558]:=

metricg[a, -a]

Out[558]=

3

However they are only contracted with other objects if required. This is to have more control on expressions formed by metric factors, and mostly to avoid unexpected index-shiftings.

In[559]:=

metricg[a, b] T[-a, c]

Out[559]=

g_  ^ab T_a ^( c)

In[560]:=

ContractMetric[%, metricg]

Out[560]=

T_  ^bc

Derivatives of a metric are automatically converted so that the indices of the metric are covariant, introducing new dummies. Note that derivatives of mixed-indices metrics are zero. That means that all non-zero derivatives of metrics will have covariant indices:

In[561]:=

PD[-a][metricg[b, c]]

Out[561]=

-g_  ^bd g_  ^ce ∂_a^ g_de^  

In[562]:=

PD[-a][metricg[b, -c]]

Out[562]=

0

Contraction of derivative indices is not allowed by default, but can be forced using the option AllowUpperDerivatives:

In[563]:=

ContractMetric[metricg[a, b] PD[-b][T[c, d]], metricg]

Out[563]=

g_  ^ab ∂_b^ T_  ^cd

In[564]:=

ContractMetric[metricg[a, b] PD[-b][T[c, d]], metricg, AllowUpperDerivatives→True]

Out[564]=

∂ \( \( \) a\) T_  ^cd

With ContractMetric a metric can be contracted through its Levi-Civita derivative, but not through other derivatives:

In[565]:=

ContractMetric[metricg[a, b] CD[-d][T[-a, c]], metricg]

Out[565]=

▽_d^ T_  ^bc

In[566]:=

ContractMetric[metricg[a, b] PD[-d][T[-a, c]], metricg]

Out[566]=

g_  ^ab ∂_d^ T_a ^( c)

In those cases we need to use a different function which forces contraction over derivatives, but at the price of producing new terms with derivatives of the metric:

In[567]:=

ContractMetric[metricg[a, b] PD[-d][T[-a, c]], metricg, OverDerivatives→True]

Out[567]=

g_  ^be T_  ^ac ∂_d^ g_ae^   + ∂_d^ T_  ^bc


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