TransformTetrad - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Physics : Tetrads : TransformTetrad

Physics[Tetrads][TransformTetrad] - transform a tetrad into canonical form, or using one of six standard transformations, or using a given set of transformation equations

Calling Sequence





optional, it can be a matrix representing a tetrad. If not given, the tetrad (vierbein e_) for the current spacetime metric is transformed



optional, can be true (default value) or false, to verify or not whether the given matrix T is or not a tetrad before proceeding



optional, to compute a canonical form for the tetrad (given or e_)



optional, to indicate a rotation that leaves the null vector l_ unchanged



optional, to indicate a rotation that leaves the null vector n_ unchanged



optional, to indicate a rotation of m_ and mb_ on the (m_, mb_)-plane



optional, to indicate a rotation that leaves the directions of l_ and n_ unchanged



optional, to indicate a rotation that leaves the direction of l_ unchanged



optional, to indicate a rotation that leaves the direction of n_ unchanged



optional, to indicate that the transformed tetrad should be set as the current tetrad

output = ...


optional, could be tetrad (default) or nullvectors, to have the output as a matrix that can be used to redefine the tetrad e_, or as a list of the Newman-Penrose null vectors



The TransformTetrad commands applies transformations of coordinates of a specific type to a tetrad. These transformations, related to the optional arguments, are all Lorentz transformations of the tetrad (local) system of references.


The transformed tetrad returned by TransformTetrad is not automatically set as the current tetrad. That allows for experimenting with different transformations. To set the output of TransformTetrad as the current tetrad, either pass to TransformTetrad an additional argument settetrad, or pass its output to Setup as in Setupe_=.. output of TransformTetrad ...


The tetrad being transformed does not need to be indicated, in which case it is, by default, a null tetrad related to the current value of the spacetime metric g_, that is, one that satisfies the tetrad definition 𝔢a,μ𝔢bμ=ηa,b, 𝔢a,μ𝔢νa=gμ,ν. and where the tetrad metric is formed with the null vectors of the Newman-Penrose formalism. To see what tetrad (among the infinitely many possible ones) is actually used as a starting point by default, see Tetrads[e_].


Instead of the default action of transforming e_, you can also indicate any other tetrad to be transformed. For that purpose, indicate the tetrad as first argument T, either as a matrix (whose components are assumed to correspond to the all-covariant tetrad e_[a, mu]), or as an equation where the left-hand side is the tensor e_[a, mu] itself.


When a tetrad is indicated, before proceeding, a test verifying whether it satisfies the tetrad definition equations is performed using the command IsTetrad, and if the tetrad definition is not satisfied an error interruption happens. Sometimes, the indicated T is in fact a tetrad but the computer fails in verifying that, perhaps missing a simplification; in these cases you can indicate to not perform this verification by passing the optional argument verifygiventetrad = false.


When the tetrad indicated to be transformed is an orthonormal tetrad (for the corresponding definitions, see IsTetrad), first a null tetrad is derived from it using the formulas shown in NullTetrad, then transformed.


Two different formats for the output of TransformTetrad are possible: as a matrix that can be set as the value of the tetrad e_ using Setup, or as a list of null vectors (option output = nullvectors).

Rotations of the tetrad system


Covering the effect of the 6-parameter Lorentz transformations on the null vectors of the Newman-Penrose formalism, the predefined transformations implemented are:


I) Rotations of Class I leave the null vector l_ unchanged (option nullrotationwithfixedl_, introduces a global transformation complex parameter E)





II) Rotations of Class II leave the null vector n_ unchanged (option nullrotationwithfixedn_, introduces a global transformation complex parameter B)





III) Rotations of Class III leave the directions of l_ and n_ unchanged and rotate m_ and mb_ on the (m_, mb_)-plane. To these transformations correspond the options boostsn_l_plane, that introduces a global transformation real parameter A,




and also spatialrotationsm_mb_plane, that introduces a global transformation real parameter Omega).



To transform a null tetrad using any of these standard transformations, pass any (one or more) of the corresponding optional arguments, for example as in TransformTetrad(spatialrotationsm_mb_plane). When indicating many transformations by passing many of these optional arguments together, the transformations are performed in the order these optional arguments are passed.


NOTE (I): You can always pass these optional arguments by passing only a few identifying letters of these long concatenations of words, and when there is only one match your input will be interpreted correctly. For example: Both TransformTetrad(spatial) and TransformTetrad(m_mb) are interpreted as TransformTetrad(spatialrotationsm_mb_plane).


NOTE (II): Transformations of Class I and II introduce complex parameters E and B. When these parameters are going to be adjusted to obtain a certain form of the tetrad, or the transformed tetrad is going to be simplified, it is convenient to represent them by their real and imaginary parts, for example using Ex=E and Ey=E and setting assumptions AssumeEx::real and AssumeEy::real using Assume and the same for B and the real parameters A and omega.


Other frequent transformations used that have a keyword associated that you can use to indicate them are those that preserve the l_ direction plane (option preservel_direction, introduces the global transformation parameters A, E, Omega) and those that preserve the n_ direction plane (option preserven_direction, introduces the global transformation parameters A, B, Omega)


Finally, you can also indicate any particular transformation by passing it as a set or list of transformation equations (see TransformCoordinates), in which case the null tetrad is viewed as the corresponding list of four spacetime 4-vectors [l_, n_, m_, mb_] and transformed accordingly using the TransformCoordinates command.

Transforming a Tetrad into Canonical Form


Provided that the spacetime is not conformally flat (for which all the components of the Weyl tensor are equal to zero), TransformTetrad can also transform a tetrad into a canonical form in one go. For that purpose, use the canonicalform optional argument. The resulting tetrad is such that the Weyl scalars associated to it are of one and only one of the following five forms related to the PetrovType of the spacetime (see reference [3] page 388)


The process of rewriting a tetrad into canonical form involves a combination of rotations of Classes I, II and III, automatically deduced and applied by TransformTetrad.


The canonical form in the table above is not the only possible one and, depending on the spacetime, a different canonical form would be more convenient. For example, a preferred form for Petrov type "I" would be to have Ψ1=1,Ψ20,Ψ40 instead of Ψ3=1,Ψ10,Ψ20. You can still use TransformTetrad to produce any desired canonical form different than the default one presented in the table above by taking into account the way the Weyl scalars are changed by these three classes of rotation, that is:


I) Rotations of Class I leave Ψ0 unchanged

Ψ0 '=Ψ0

Ψ1 '=Ψ1+E&conjugate0;Ψ0

Ψ2 '=Ψ2+2E&conjugate0;Ψ1+E&conjugate0;2Ψ0

Ψ3 '=Ψ3+3E&conjugate0;Ψ2+3E&conjugate0;2Ψ1+E&conjugate0;3Ψ0

Ψ4 '=Ψ4+4E&conjugate0;Ψ3+6E&conjugate0;2Ψ2+4E&conjugate0;3Ψ1+E&conjugate0;4Ψ0


I) Rotations of Class II leave Ψ4 unchanged

Ψ0 '=B4Ψ4+4B3Ψ3+6B2Ψ2+4BΨ1+Ψ0

Ψ1 '=B3Ψ4+3B2Ψ3+3BΨ2+Ψ1

Ψ2 '=B2Ψ4+2BΨ3+Ψ2

Ψ3 '=BΨ4+Ψ3

Ψ4 '=Ψ4


I) Rotations of Class III leave Ψ2 unchanged

Ψ0 '=ⅇ2IΩΨ0A2

Ψ1 '=ⅇIΩΨ1A

Ψ2 '=Ψ2

Ψ3 '=Aⅇ−IΩΨ3

Ψ4 '=ⅇ2IΩΨ4A2




Setting lowercaselatin_ah letters to represent tetrad indices

Defined as tetrad tensors see ?Physics,tetrads, 𝔢a,μ , ηa,b , γa,b,c , λa,b,c

Defined as spacetime tensors representing the NP null vectors of the tetrad formalism see ?Physics,tetrads, lμ , nμ , mμ , m&conjugate0;μ







Load the Schwarzschild metric in spherical coordinates; you can input g_[Schwarzschild] or the simpler



Systems of spacetime coordinates are:X=r,θ,φ,t

Default differentiation variables for d_, D_ and dAlembertian are:X=r,θ,φ,t

Setting lowercaselatin_is letters to represent space indices

The Schwarzschild metric in coordinates r,θ,φ,t

Parameters: m

Signature: - - - +




An orthonormal tetrad (this is the one used by default) is




The key observation here is that the orientation of the axis of the local system of references (the tetrad system) is arbitrary and with them the values of the Weyl scalars too. So, you can perform a Lorentz transformation on the tetrad, without changing the spacetime metric g_, while fixing the values of the Weyl scalars in one of the possible forms (classes) shown in the table in the description. Two spacetime metrics with different classification cannot be different coordinate representations of the same metric (if the classification is the same the question is still undecided). This Petrov classification is however not applicable when the spacetime is conformally flat so that all the Weyl scalars are equal to 0. In this case the Segre classification of the Ricci tensor plays a role equivalent to the Petrov classification in the non-conformally flat cases. In this framework the ability to perform transformations of the tetrad (i.e. of the orientation of the axis of the tetrad system) to fix the Weyl or Ricci scalars is key to discuss the equivalence problem between two metrics.

The transformations that you can perform with TransformTetrad are either the standard ones, of classes I, II or III specified in the description, or arbitrary. For example, transform the orthonormal tetrad above using a null rotation with fixed l_, where l_ and the related NULL vectors of the Newman-Penrose formalism (commands of the Tetrads package) satisfy







Note the transformation parameter E introduced by TransformTetrad. You can replace it by a value (see subs and eval) or assign it, or you may want to Assume that this parameter is, for instance, real







Now is this a tetrad? Of what type?


Type of tetrad: null



Although the transformation is always applied on a null tetrad (either a null form of e_ set using Setup, or a null tetrad derived from e_ when it is of orthonormal type), and the transformed tetrad is always a null tetrad, depending on the case it is more convenient to work with an orthonormal tetrad. To transform the returned null tetrad into an orthonormal one, or the other way around, you can use the OrthonormalTetrad and NullTetrad commands.

TransformTetrad applies a transformation on a tetrad but does not set the value of e_ to this result. For that purpose, i.e. to effectively rotate the tetrad system of references to match the orientation/tetrad you want, use Setup




Following this reorientation of the tetrad, all the components of tensors in the local (tetrad) system of references, as for instance gamma_, lambda_ and the tetrad components of spacetime tensors, automatically change. For example, the Ricci rotation coefficients gamma_ follow this change of value of the components of 𝔢__a,μ according to their definition




As mentioned, transforming the tetrad is a relevant step towards resolving the equivalence between two metrics in that it permits fixing the Weyl and Ricci scalars in different ways depending on the classification of the spacetime. The key step in that process is transforming the tetrad into a canonical form as explained in the description. The required transformation is derived and performed automatically by TransformTetrad when you pass the canonicalform optional argument. Consider for instance the metric with number [12, 8, 1] from the database of solutions to Einstein's equations



Systems of spacetime coordinates are:X=x,y,z,t

Default differentiation variables for d_, D_ and dAlembertian are:X=x,y,z,t

The x,y,z,t metric in coordinates %2

Parameters: A,B

Comments: cosmologⅈcal constant = 1/B^2 = 1/A^2, k = 1, kprⅈmⅇ = 1

Domain: 0<x&comma;x<π&comma;0<z&comma;z<π

Assumptions: B=A&comma;0<A&comma;0<B

Resetting the signature of spacetime from - - - + to + + + - in order to match the signature in the database of metrics




For the sake of simplicity let's assume that x and z are such that their sin is in the first quadrant




The PetrovType and SegreType are







Recalling that these two classifications are invariant under Lorentz rotations of the tetrad, the possible equivalence of some other metric to this one with number [12, 8, 1] requires that


a) the other metric has the same classification (the Segre classification is necessary only when the Petrov type is "O")


b) a transformation of the spacetime coordinates (that you can perform with TransformCoordinates) exists and transforms one set of scalars into the other one

When a) is satisfied, the first step in b), the search for an appropriate transformation of the spacetime coordinates, is to look at the Weyl (or Ricci when the Petrov type is "O") scalars in canonical form.

For metrics with Petrov type "D" as in this example, the canonical form of the Weyl scalars only have Ψ20 which still has a residual invariance under transformations of Class III. So check the value of these scalars related to this (default) value of e_




Recalling, these scalars are related to the tetrad in that their definition is in terms of the null vectors of the Newman-Penrose formalism, that in turn are the rows of the null tetrad above



















We see in the result above that these scalars are not in canonical form. To get them in canonical form, compute a canonical form for the tetrad




Set this to be the orientation of the tetrad system of references, i.e. the value of e_




Check now the Weyl scalars




We see now that only Ψ20, so these scalars are now in canonical form. Note that Ψ2 is still invariant under transformations of Class III of the canonical form of the tetrad. To see that:


perform a Class III transformation using TransformTetrad(boostsn_l_plane, spatialrotationsm_mb_plane)


set the resulting tetrad using Setup as done above


recompute  the Weyl scalars: you obtain again scalars with only Ψ20:










An example of Petrov type III. For presentation simplicity, assume that one of the coordinates and the parameter are positive instead of arbitrary complex variables



Systems of spacetime coordinates are:X=x&comma;y&comma;z&comma;u

Default differentiation variables for d_, D_ and dAlembertian are:X=x&comma;y&comma;z&comma;u

The Kaigorodov (1962) metric in coordinates Cahen (1964)

Parameters: Λ

Assumptions: Λ<0

Signature: + + + -







The Petrov type, the default tetrad and the corresponding Weyl scalars:










Compute a canonical form for this tetrad, set it, then recompute the Weyl scalars





We see that these scalars match the requirement for canonical form shown in the table in the Description for spacetimes of Petrov type III. In this example, the canonical form computed for the tetrad,




is not really more complicated than the default tetrad (32) that is not in canonical form, but depending on the example the canonical form can be concretely more complicated.

Examples of transforming the tetrad into canonical form for spacetimes of Petrov types I, II, and N can be seen by performing the same steps above departing from the metrics of the database with numbers g_[[12, 21, 1]], g_[[24, 37, 7]] and g_[[12, 6, 1]].

See Also

Assume, d_, D_, e_, eta_, g_, gamma_, IsTetrad, l_, lambda_, m_, mb_, n_, NullTetrad, OrthonormalTetrad, PetrovType, Physics, Physics conventions, Physics examples, Physics Updates, Tensors - a complete guide, Mini-Course Computer Algebra for Physicists, Ricci, SegreType, Setup, Tetrads, Weyl




[1] Landau, L.D., and Lifshitz, E.M., The Classical Theory of Fields, Course of Theoretical Physics Volume 2, fourth revised English edition. Elsevier, 1975.


[2] Stephani, H., Kramer, D., MacCallum, M., Hoenselaers, C. Herlt, E.,  Exact Solutions of Einstein's Field Equations, Cambridge Monographs on Mathematical Physics, second edition. Cambridge University Press, 2003.


[3] Hawking, S.W., Israel, W., Chandrasekhar, S., General Relativity: an Einstein Centenary Survey, Chapter 7, Cambridge University Press, 2010.