coordinate depending on another manifold

97 views
Skip to first unread message

Bulkilol

unread,
Sep 13, 2021, 1:26:24 AM9/13/21
to xAct Tensor Computer Algebra
Hi,

I have coordinates on a flat manifold (indices m,n), y^m, and a vector f^m. I want y^a to be itself a function of another manifold (call it spacetime) with indices a,b so I can take space-time derivatives of f. I'm interested in getting expressions of the type

\nabla_a f^m = \partial_n f^m \nabla_a y^n

Is there a way to do that with xact?

I tried the following:

DefConstantSymbol[ds]   (*number of spacetime dimensions*)
DefConstantSymbol[d]

DefManifold[Ms, ds,  Flatten[{IndexRange[a, l], {l1, l2, l3}}]] (* spacetime manifold*)
DefManifold[M, d, IndexRange[m, z]]

DefMetric[-1, gs[-a, -b], CDs,  SymbolOfCovD -> {";", "\[EmptyDownTriangle]"}]
DefMetric[-1, g[-m, -n], CD, SymbolOfCovD -> {",", "\[PartialD]"}, FlatMetric -> True]

DefTensor[f[m], {Ms, Mc}]
CDs[-a][f[m]]

Of course it doesn't use the chain rule since I didn't enforce that f is a function of a variable y.

cheers

Jose

unread,
Sep 13, 2021, 2:01:52 PM9/13/21
to xAct Tensor Computer Algebra
Hi,

Your code has various name conflicts: d is both a constant symbol and an index, g is both a metric and an index. In xAct we cannot have the same symbol representing different geometric objects. Also, the DefTensor calls a manifold Mc that was not defined. And you don't need to define the indices l1, l2, l3 because those are automatically defined by xTensor when it runs out of indices.

Are you thinking of having different dimensions d and ds? I mean, do you want to work with a (presumably invertible) coordinate change or is this an embedding or something like that?

There are at least three ways to attack a problem like this:

1) The fully symbolic way. xTensor has a concept of Mapping, which is the formal version of what you want here. See section 7 of xTensorDoc.nb. I must say that this is the last major thing added to xTensor, and has not been tested very much.

2) The fully explicit way. You work respective charts in xCoba and introduce explicit functions describing the mapping.

3) An intermediate case in which you define your own tangent-tensor mappings, and then specify their components.

If you know the formulas for the mapping between the manifolds, then I'd recommend method 2). If not, then probably method 3) is simpler than method 1), particularly if you are not very experienced with xTensor yet.

In the simpler case of 3), namely a (local) diffeomorphism, you can just use one manifold and have two PD derivatives, one associated to each chart. You don't need metrics to change coordinates, nor covariant derivatives. So it would be something like

<< xAct`xTensor`

$PrePrint = ScreenDollarIndices;
DefConstantSymbol[dim]
DefManifold[M, dim, IndexRange[a, z]]

xTensor already has the PD derivative. Now introduce a new one, called pd:

DefCovD[pd[-a], SymbolOfCovD -> {"|", "D"}, Curvature -> False]

This will be the tangent mapping (what you call \partial x^b / \partial y^a

DefTensor[tmap[-a, b], M]

Then you need to define transformation rules between PD and pd derivatives as needed.

Cheers,
Jose.

Bulkilol

unread,
Jul 19, 2023, 1:07:01 PM7/19/23
to xAct Tensor Computer Algebra
Hi,

Sorry to necro, but I had to shelf that project, and just got to some time to work on it again for fun. (I'm happy to make a new thread if it's more conveninent)

To give more information about the above question, the setup is essentially the following. Think of y^m as a scalar field with some flavor index m, which is arbitrary (in particular, uncorrelated with the spacetime dimension). Mathematically, I can think of the scalar fields y^m as the local coordinates of the manifold M discussed above.

Then define a function A^{m1 m2 ...} that a tensor function of these scalar fields, but also a spacetime scalar. So if I derivate it with respect to the spacetime coordinates, I get

\partial_a (A^{m n ...}) = \partial_n A^{n1 n2 ...} \partial_a y^n

This is what I'm trying to implement. My goal is essentially to work with a non-renormalisable Lagrangian that depends both on pure gravity term and functions of the fields. Think for instance of gravity coupled to a scalar with a non-canonically normalised kinetic term and a higher-derivative term:

M_pl R + K_{mn} \partial_a y^m \partial^a y^n + A_{mn} R{ab} \partial_a y^m \partial_b y^n

As a follow-up question, I am also interested in finding transformations of each terms, e.g.

\delta(R) = \Box \alpha(x)
\delta(y^n) = A^n \alpha(x)
etc. Is there a way to define a "differential operator" that acts linearly on the Lagrangian? Something like

Delta[  RicciCDc[] A[-m] y[m] ]
so that is gives
Delta[  RicciCDc[] ] A[-m] y[m] +   RicciCDc[] Delta[ A[-m] ]  y[m] + RicciCDc[] A[-m]  Delta[ y[m] ]

I'm planning to have a list of rules so I can replace each Delta[...] to find some invariant combinations (my operator \delta is more complicated than in the example and acts on certain functions differently, and I'm trying to find combinations that are invariant under the transformation).

Is there a simple(-ish) way to do this efficiently with xAct?

cheers
Reply all
Reply to author
Forward
0 new messages