## 257 Reputation

12 years, 280 days

## MaplePrimes Activity

### These are replies submitted by Torre

I think you will need to be more specific in a couple of ways.

First, how are you constructing the tensor? Are you using a specific package?

Second, what kinds of tensors and what "decompositions" do you have in mind?  Your subject says "factorization", but maybe you mean a decomposition in terms of sums?

A rank-2 tensor can be uniquely decomposed into its symmetric and anti-symmetric parts. But already at rank-3 you have additional elements (with Young tableaux symmetries) which enter into the decomposition into irreducible parts. It gets rather complicated as you go up in rank.  And if you have a metric tensor you can also contemplate decompositions which involve removing traces.

Maybe you could give an example of what you have in mind?

## Ricci Scalar...

Yes, the Ricci scalar, being a scalar, will not depend upon the choice of frame.

## @rashmi  As Edgardo points out, the...

As Edgardo points out, there is a command (starting in Maple 16), DifferentialGeometry:-Tensor:-CongruenceProperties which would probably serve your purpose since it computes the usual geometric objects associated with congruences (acceleration, shear, vorticity, Raychaudhuri equation, etc.).  In M12 you would have to build these things by hand using the existing  commands.  See also the help pages ?DifferentialGeometry and ?DifferentialGeometry, Tensor.  I am afraid I am not sufficiently familiar with GRTensor to help you get that going.

To address your question one will have to know a bit more about what you are after.

The Raychaudhuri equation is a relation between geometric objects defined by a congruence of curves.  Normally it is viewed as a relation between the rate of change of the expansion and shear, vorticity, tidal forces, acceleration, etc.

When you say "solve", what is given and what are you solving for?  For example, are you solving for the expansion given the shear, vorticity, etc.?

## One method...

If I understand you, you are asking to use an orthonormal frame to describe the geometry.  You probably do not want to learn yet another way of doing things, but just for completeness - since it was mentioned early on in this thread - I will point out that you can freely use any kind of anholonomic frame, e.g., an orthonormal frame, with the DifferentialGeometry package.  I attach an example worksheet which calculates things along the lines of the paper you cited.

Anholonomic.mw

## Some more examples...

Ok, here is a worksheet with some more examples.

In particular, it shows how that [1] you asked about is used to specify which index is getting raised or lowered (in this case, the first index).  It shows that one can use the TensorInnerProduct command to get the square of Ricci.  It shows that one can easily read off all components of tensors from their expression in a basis and that one can also get the components by evaluating them on the appropriate basis elements.

BTW, there is also a command, "GetComponents", which you can use.  See its help file for details.

RiemannRicci.mw

## Components and Ricci...

The component of a tensor is the scalar which multiplies the appropriate basis element.  You want R_φθφθ, which is a component of the curvature tensor with all its indices down.  This means lowering one of the indices with the metric. We do this first.  With g and R denoting the metric and curvature tensor as in the worksheet above, you use the command:

R1 := RaiseLowerIndices(g, R, [1])

to get the curvature tensor with all indices down.  In the resulting expression, the coefficient of the basis element dφ dθ dφ dθ, will be the desired component.

You can also get the components in the standard textbook way, by evaluating the tensor R1 on the dual basis elements. The command for getting  R_φθφθ from this fundamental point of view is:

evalDG(R1, [D_phi, D_theta, D_phi, D_theta]);

The Ricci tensor of g is computed by

RicciTensor(g);

Of course, all these commands have associated help files in Maple which you can read for additional details and plenty of examples.

## Try an orthonormal frame...

It appears that the "result from literature" is using the orthonormal basis associated to cylindrical coordinates while your calculation is using the coordinate basis associated to cylindrical coordinates.

To get the desired result using DifferentialGeometry, you need to initialize the orthonormal basis, define the metric and Christoffel symbols relative to that basis, and then take the divergence using CovariantDerivative and contracting indices using the metric.

Does this help?  If you would like, I can try to include some commands, or maybe a worksheet.

If by "convolution" you mean "contraction of indices" you can do this, e.g., in the DifferentialGeometry package with the "ContractIndices" command.  But first you should convert your Christoffel symbol to a tensor using the command "convert" (since contraction of indices of connections is, in general, not a geometric operation and will not be recognized).

Could you give an explicit example of a computation you want to do?

Would you be able to provide a little more information?  For example, how are you constructing the Christoffel symbols? What package(s) are you using, if any?

## Agreed...

Yes, it happens to me as well.  M17 on a Mac.

## How to create quaternions in Differentia...

A simple, quick-start explanation of how to create quaternions (and octonions) using the DifferentialGeometry package can be found here:

How To Create The Quaternion & Octonion Algebras

## How to create quaternions in Differentia...

A simple, quick-start explanation of how to create quaternions (and octonions) using the DifferentialGeometry package can be found here:

How To Create The Quaternion & Octonion Algebras

## One way to implement your computation...

Hello Michael.

Again, I urge you to read the help page for NPSpinCoefficients, particularly the examples, which show precisely how to use the command.  DifferentialGeometry has its own syntax and environment for doing tensor computations, which must be used.

In any case, just based upon what you have written (which is somewhat ambiguous), let me suggest one way to perform the computation.

***************************************************

with(DifferentialGeometry); with(Tensor);

DGsetup([u, r, x, y], MN);

l := D_r;

n := evalDG(u *D_u + U * D_r + x*D_x + y *D_y);

m := evalDG(zeta1*D_u + omega*D_r + zeta3*D_x + zeta4*D_y);

mbar := DGconjugate(m, complexconjugatepairs=[[zeta1, zeta1bar], [omega, omegabar], [zeta3, zeta3bar], [zeta4, zeta4bar]]);

m := evalDG(exp(I*theta)*m);

mbar := evalDG(exp(-I*theta)*mbar);

n := evalDG(A(u, r, x, y) *n);

l = evalDG(1/A(u, r, x, y) * l);

NPSpinCoefficients([l, n, m, mbar]);

*************************************************

Notes:

* I presume you intend to make zeta1, omega etc. just be parameters - not functions?

* I am guessing from your notation that the underlying coordinate chart is (u, r, x, y).

* I have denoted the complex conjugates of your parameters (zeta1, etc) by adjoining "bar" on them.  DifferentialGeometry has its own conjugation command.  See the help page on DGconjugate.

* The transformation of the tetrad (using the parameter theta and the function A) involves a spatial rotation and a boost.  It is easy enough to take care of this as written above.  But note that Lorentz transformations of tetrads can be accomplished using the command NullTetradTransformation.

* If I understand what you are trying to do - which I may not - note that the commands NPCurvatureScalars,  NPRicciIdentities and NPBianchiIdentities will compute the Newman-Penrose curvature quantities and field equations for you.

* On the help page for DifferentialGeometry you will find links to Lessons and Tutorials, which are designed to explain the environment and methods of working in DifferentialGeometry.

## One way to implement your computation...

Hello Michael.

Again, I urge you to read the help page for NPSpinCoefficients, particularly the examples, which show precisely how to use the command.  DifferentialGeometry has its own syntax and environment for doing tensor computations, which must be used.

In any case, just based upon what you have written (which is somewhat ambiguous), let me suggest one way to perform the computation.

***************************************************

with(DifferentialGeometry); with(Tensor);

DGsetup([u, r, x, y], MN);

l := D_r;

n := evalDG(u *D_u + U * D_r + x*D_x + y *D_y);

m := evalDG(zeta1*D_u + omega*D_r + zeta3*D_x + zeta4*D_y);

mbar := DGconjugate(m, complexconjugatepairs=[[zeta1, zeta1bar], [omega, omegabar], [zeta3, zeta3bar], [zeta4, zeta4bar]]);

m := evalDG(exp(I*theta)*m);

mbar := evalDG(exp(-I*theta)*mbar);

n := evalDG(A(u, r, x, y) *n);

l = evalDG(1/A(u, r, x, y) * l);

NPSpinCoefficients([l, n, m, mbar]);

*************************************************

Notes:

* I presume you intend to make zeta1, omega etc. just be parameters - not functions?

* I am guessing from your notation that the underlying coordinate chart is (u, r, x, y).

* I have denoted the complex conjugates of your parameters (zeta1, etc) by adjoining "bar" on them.  DifferentialGeometry has its own conjugation command.  See the help page on DGconjugate.

* The transformation of the tetrad (using the parameter theta and the function A) involves a spatial rotation and a boost.  It is easy enough to take care of this as written above.  But note that Lorentz transformations of tetrads can be accomplished using the command NullTetradTransformation.

* If I understand what you are trying to do - which I may not - note that the commands NPCurvatureScalars,  NPRicciIdentities and NPBianchiIdentities will compute the Newman-Penrose curvature quantities and field equations for you.

* On the help page for DifferentialGeometry you will find links to Lessons and Tutorials, which are designed to explain the environment and methods of working in DifferentialGeometry.

 1 2 3 Page 2 of 3
﻿