Setting specific terms to 0 in perturbation expressions

345 views
Skip to first unread message

Ashim

unread,
Jul 27, 2023, 10:36:08 AM7/27/23
to xAct Tensor Computer Algebra
Hi all,

I am new to Mathematica and xAct, and I've been trying to do what I hope is a simple exercise. I have a subclass of Horndeski theories of interest and I am looking at what the perturbation theory for this subclass looks like.

After having made a choice of spacetime foliation, I would like to apply the quasi-static approximation to my perturbation expression, along with also neglecting some other perturbative terms. I define a rule, "QSAPlus" in the attached notebook that does this.

The problem I am finding is that in setting \CurlyPhi[ LI[1], LI[0] ] -> 0, i.e. setting the first-order Horndeski scalar perturbation to 0, I am finding that this results in spatial derivatives of this perturbation are also set to 0, which I do not want (see lines after the definition of QSAPlus).


I attempted a fix by transforming the spatial derivatives of the perturbations to a new variable so that the QSAPlus would not be triggered on the spatial derivative terms (see definition of ChangePartialPhi rule). However, in this case I find that the specific index I choose in the definition matters. Using c to define D_c phi -> Spat_c (where Spat is a vector on manifold M defined through DefTensor) means that the rule does not get applied to D_a phi to give Spat_a.

Questions:
  • Is there a way to prevent my QSAPlus rule from setting spatial derivatives to 0 when I don't want them to? This is the original problem.
  • If my idea to change the spatial derivatives into a new vector is the right idea, then is there a way to make it so that the index used in the rule is arbitrary, and will correctly apply regardless of what the index label actually happens to be in a given term?

Many Thanks,
Ashim
Scalar-Tensor_Perturb.nb

Jose

unread,
Aug 2, 2023, 8:35:01 PM8/2/23
to xAct Tensor Computer Algebra
Hi,

Indeed, the notation cd[-a][v[b]] is inconvenient when one wants to eliminate undifferentiated fields. The simplest thing to do in these cases is to change temporarily to one of two alternative notations for derivatives in xTensor:

   - The TensorDerivative notation: For an expression expr, use ToTensorDerivative[expr] and something like cd[-a][v[b]] will be converted into TensorDerivative[v, cd][b, -a]. Effectively TensorDerivative[v, cd] is a new tensor, now with two indices. First the index b of the differentiated vector field v[b] and then the differentiation index -a of the derivative cd[-a]. (This follows WL's D, adding differentiation levels at the bottom of an array.) Once in this form, you can safely use rules with something like v[_] -> 0, say, to eliminate undifferentiated fields.

   - The "imploded" notation. This is an older form of the same idea, using cdv instead of TensorDerivative[v, cd]. The tensor cdv is created automatically for you. Use Implode[expr] to convert to this intermediate notation, then apply your rules as above, and finally go back to the standard notation for derivatives with Explode.

The TensorDerivative is probably better, but try both to see which one you prefer.

Cheers,
Jose.

Ashim

unread,
Aug 11, 2023, 1:17:57 PM8/11/23
to xAct Tensor Computer Algebra
Hi Jose,

Thanks a lot for your reply. Embarrassingly, I don't appear to understand how to use either of these methods. I must be misunderstanding the syntax for ToTensorDerivative, and Implode and Explode. I have attached an extension of the notebook in my first message with my attempts to utilise these methods at the bottom (after where I define the ChangePartialDerivative rule). 
I was hoping that by applying the ToTDer rule on cd[-a]@\[CurlyPhi] that I could then apply the ChangePartialDerivative rule and it would give Spat[-a] as a result (note that I used "c" as the index in ChangePartialDerivative). Unfortunately, that does not happen. I then tried a few other combinations of ToTensorDerivative, and also an attempt with Implode.

Could you please tell me how I am meant to use these methods? Or perhaps point to me to a tutorial where these methods are used, if that is more convenient?

Just as a recap: the idea is that I will either create a rule that only sets bare perturbations and their temporal derivatives to 0, while leaving spatial derivatives of these perturations alone.
OR
Create a rule that changes spatial derivative terms, i.e. cd[-a]@\[CurlyPhi] type terms, to some vector Spat[-a]. After which I can then utilise my QSAPlus rule to set perturbations and their temporal derivatives to 0, and reintroduce the spatial derivatives using Spat[-a] -> cd[-a]@\[CurlyPhi]. The catch being that I would like these rules to recognise the arbitrary nature of the index "a", so that it also works when encountering cd[-b]@\[CurlyPhi] or Spat[-b], etc.

I hope you don't mind these novice questions!
Thanks,
Ashim
Scalar-Tensor_Perturb_v2.nb
Reply all
Reply to author
Forward
0 new messages