TT decomposition

198 views
Skip to first unread message

Pietro Dona

unread,
Mar 4, 2014, 11:48:51 AM3/4/14
to xa...@googlegroups.com
Dear All,

I'm currently dealing with a transverse traceless decomposition. What I'm doing is the following: a) I take some action with some metric g b) I use xpert to compute the terms I need with the desired power of the metric fluctuation h c) I need to substitute h with a particular decomposition.

but let's start with a simpler case, I would like to subtitute to h with htt a transverse (CD[-a]@htt[a,b]=0) traceless (htt[a,-a]=0) tensor. It's easy to implement the taceless condition:

DefTensor[htt[a,b],M,Symmetric[{1,2}]];
htt/:htt[a_,-a_]:=0;

But I have no clue to how implement the first property correctly. I tried with

htt/:CD[-a_]@htt[a_,__]:=0;

But I want to force

htt[d,a]CD[-a]@CD[-b]@htt[-d,b]

to vanish! It just does not!

Thank you very much.
Pietro


miliosan

unread,
Mar 4, 2014, 12:01:46 PM3/4/14
to xa...@googlegroups.com
Dear Pietro,
in order to force the transverse rule I use a command like this

FirstDummies[tens_][bigexpr_] := bigexpr //.
       PD[i_]@PD[j_][expr_] /; (! FreeQ[expr, tens[___, ChangeIndex[i], ___]] && FreeQ[expr, tens[___, ChangeIndex[j], ___]]) :> PD[j]@PD[i][expr];

Basically it change the order of the derivatives (I use PD for my problems) if the external index is contracted with some index of tens.
At the end you have just to defiune one rule


htt/:CD[-a_]@htt[a_,__]:=0;

and then apply the command (it doesn't matter how many derivatives you have).

The only problem is that you have to call it for every transverse tensor you have. For me it would be great to have something that acts on every object defined.. (if you find a way to improve this, please tell me.. :))

Best,
Emilio

Thomas Bäckdahl

unread,
Mar 4, 2014, 12:11:53 PM3/4/14
to xa...@googlegroups.com
Hi!

I think the following should work

SetOptions[ContractMetric, AllowUpperDerivatives -> True]

AutomaticRules[htt, MakeRule[{CD[a]@htt[-a, -b], 0}, MetricOn -> All]]

Regards
Thomas
> --
> You received this message because you are subscribed to the Google
> Groups "xAct Tensor Computer Algebra" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to xact+uns...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

Teake Nutma

unread,
Mar 4, 2014, 12:15:27 PM3/4/14
to xa...@googlegroups.com
Hi Pietro,

Your transverse rule doesn’t work on the example you gave because the contracted index is in the last position instead of the first. 
So instead of the rule

htt/:CD[-a_]@htt[a_,__]:=0;

you can use the rule

htt/:CD[a_]@htt[___,b_,___]/;PairQ[a,b]:=0;

which will also work for the other up/down combination. Or you can use Thomas’ way to create a ‘proper xTensor’ rule with MakeRule, which of course works perfectly fine as well.
Coincidentally, the rule Emilio suggested for commuting the derivatives is implemented in the xTras function SortCovDsToDiv, whose documentation you can find here:


Best,


Teake

Pietro Dona

unread,
Mar 4, 2014, 12:53:05 PM3/4/14
to xa...@googlegroups.com
Thank you to you all. I solved using all of your suggestion all together!

P


Il giorno martedì 4 marzo 2014 17:48:51 UTC+1, Pietro Dona ha scritto:
Reply all
Reply to author
Forward
0 new messages