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

Online Help

All Products    Maple    MapleSim


Tensor[PetrovType] - determine the Petrov type of the Weyl tensor

Calling Sequences

     PetrovType(g, pt, options)

     PetrovType(NTetrad, pt, options)

     PetrovType(NPWeyl, pt, options)

     PetrovType(Fr, pt, options)

 

Parameters

   g        - a metric tensor g of Lorentz signature 1,1,1,1 on a four-dimensional manifold M

   Fr       - the name of an initialized anholonomic frame, created from a null tetrad

   NTetrad  - a list of 4 vectors defining a null tetrad

   NPWeyl   - a table, the Newman-Penrose Weyl scalars

   pt       - (optional) a list of equations specifying the coordinates of a point of M

    options  -  the keyword arguments output, parameters, auxiliaryequations

 

Description

Examples

See Also

Description

• 

The Petrov classification of the Weyl tensor of the metric g is an algebraic classification based upon the eigenvalues and eigenvectors for the Weyl tensor, the principal null directions associated to the Weyl tensor, or the factorized form of the Weyl spinor. The Weyl tensor is determined to be one of the following types "O", "N", "D", "I", "II", "III".  See Stephani, Kramer, et al for details.

• 

Because the algorithm is based upon the calculation of the Newman-Penrose Weyl scalars, it is best to use one of the last 3 calling sequences.  The second and fourth calling sequences use a null tetrad L,N,M,M, where L and N are real, M is the complex conjugate of M, and

gL,N=1,   gM,M=1, 

where g is the metric.

• 

Note that the Weyl scalars can often be simplified through the application of an appropriate null tetrad rotation. The first calling sequence PetrovType(g, pt, option) will automatically generate a null tetrad (if possible) but the result may not be optimal for calculating all the invariants needed to determine the Petrov type.

• 

It is possible that the Petrov type can vary from point to point on the manifold M. The command PetrovType  returns, if possible, the Petrov type at a generic point. If the command fails, try to calculate Petrov type at a specific point with the optional argument pt. Constraints on the coordinates values can be imposed with assuming.

• 

The values of the invariants used to test for a given Petrov type will be returned with the keyword argument output = petrovtype, where petrovtype is one of "O", "N" , "D", "I", "II", "III".

• 

If the metric or null tetrad depends upon a number of parameters (either constants or functions), then the keyword argument parameters= ParList,where ParList is the list of parameters, will invoke case-splitting with respect to these parameters. Special values of the parameters, where the Petrov type changes, are calculated. Additional algebraic or differential conditions may be imposed upon the parameters using the keyword argument auxiliaryequations = EqList. The case-splitting algorithm is as follows. First, the Petrov type for generic values of the parameters, independent of the auxiliary equations is determined. Then the algebraic and differential conditions that the parameters must satisfy for non-generic types are computed. These are combined with the auxiliary equations and the combined set of equations are passed to pdsolve. This results in a list of exceptional parameter values for the non-generic cases. The Petrov type of each exceptional set of parameter values is re-computed and the results returned in a table format.

• 

The branching performed by the program PetrovType can be tracked by setting infolevel[PetrovType] = 2.

• 

See Details for PetrovType for a complete description of the algorithm used.

• 

This command is part of the DifferentialGeometry:-Tensor package and can be used in the form PetrovType(...) only after executing the commands with(DifferentialGeometry); with(Tensor); in that order.  It can always be used in the long form DifferentialGeometry:-Tensor:-PetrovType.

Examples

withDifferentialGeometry:withTensor:

 

For Examples 1 -- 4 we use the following metric.

DGsetupt,x,y,z,M

frame name: M

(2.1)
M > 

gevalDG1x2dt&tdtdx&tdxdy&tdydz&tdz

g1x2dtdtdxdxdydydzdz

(2.2)

 

Example 1.

Calculate the Petrov type directly from the metric.

M > 

PetrovTypeg

D

(2.3)

 

Example 2.

Calculate the Petrov type from a null tetrad for the metric g. First use the command DGGramSchmidt to construct an orthonormal tetrad.

M > 

OTetradDGGramSchmidtD_t&comma;D_x&comma;D_y&comma;D_z&comma;g&comma;signature=1&comma;1&comma;1&comma;1assuming0<x

OTetradxD_t&comma;D_x&comma;D_y&comma;D_z

(2.4)
M > 

NTetradNullTetradOTetrad

NTetrad2x2D_t+22D_z&comma;2x2D_t22D_z&comma;22D_x+I22D_y&comma;22D_xI22D_y

(2.5)
M > 

PetrovTypeNTetrad

D

(2.6)

 

Example 3.

If one intends to do a number of computations with the metric g it is usually advantageous to work explicitly with an orthonormal frame or null tetrad frame. See FrameData.

M > 

FDFrameDataNTetrad&comma;NP

FDE1&comma;E3=2E14x2E24x&comma;E1&comma;E4=2E14x2E24x&comma;E2&comma;E3=2E14x2E24x&comma;E2&comma;E4=2E14x2E24x

(2.7)
M > 

DGsetupFD

frame name: NP

(2.8)
NP > 

PetrovTypeNP

D

(2.9)

 

Example 4.

Here we first calculate the Newman-Penrose Weyl scalars (We continue with the null tetrad frame from the previous example). This is always the best way to proceed since one can simplify, if need be, the Weyl scalars, before proceeding to calculate the more complicated invariants needed by the algorithm to determine the Petrov type.

NP > 

WSNPCurvatureScalarsNTetrad&comma;output=WeylScalars

WStablePsi1=0&comma;Psi3=0&comma;Psi0=12x2&comma;Psi4=12x2&comma;Psi2=16x2

(2.10)
M > 

PetrovTypeWS

D

(2.11)

 

Example 5.

In this example we find all functions f(x, v) for which the following orthonormal frame has Petrov type "N". In this situation the PetrovType procedure is terminated once it has calculated the invariants whose vanishing leads to the type "N" classification. (See Step 2 in the description of the algorithm in Details for PetrovType.) First define the coordinates for this example.

M > 

DGsetupx&comma;y&comma;u&comma;v&comma;N

frame name: N

(2.12)

 

Define the metric.

N > 

g5evalDGdx&tdxdy&tdy+2du&sdv+fx&comma;v2du&tdu

g5dxdxdydy+fx&comma;v2dudu+dudv+dvdu

(2.13)

 

Calculate an orthonormal tetrad and then a null tetrad.

N > 

OTetrad5DGGramSchmidtD_u&comma;D_v&comma;D_x&comma;D_y&comma;g5&comma;signature=1&comma;1&comma;1&comma;1assuming0<fx&comma;v

OTetrad51fx&comma;vD_u&comma;1fx&comma;vD_u+fx&comma;vD_v&comma;D_x&comma;D_y

(2.14)
N > 

NTetrad5NullTetradOTetrad5

NTetrad522D_y+22fx&comma;vD_u&comma;22D_y+22fx&comma;vD_u&comma;I22D_x22fx&comma;vD_u+2fx&comma;v2D_v&comma;I22D_x22fx&comma;vD_u+2fx&comma;v2D_v

(2.15)

 

With the optional argument output = "N", the procedure will return the partial differential equations that fx&comma; v must satisfy for the metric to be of type "N". These PDE are too complicated to exhibit in their "raw" form but become quite simple if we use the command rifsimp to simplify.

N > 

PDEPetrovTypeNTetrad5&comma;output=N&colon;

M > 

PDE1DEtoolsrifsimpPDESolved

PDE12vxfx&comma;v=xfx&comma;vvfx&comma;vfx&comma;v&comma;2v2fx&comma;v=vfx&comma;v2fx&comma;v

(2.16)

 

Use pdsolve to find the general solution to PDE1.

M > 

SolnpdsolvePDE1

Solnfx&comma;v=2_C1v+2_F2x

(2.17)

 

Back substitute into the null tetrad NTetrad and check that the resulting null tetrad is of type "N".

M > 

NTetrad5aevalNTetrad5&comma;Soln

NTetrad5a22D_y+222_C1v+2_F2xD_u&comma;22D_y+222_C1v+2_F2xD_u&comma;I22D_x222_C1v+2_F2xD_u+22_C1v+2_F2x2D_v&comma;I22D_x222_C1v+2_F2xD_u+22_C1v+2_F2x2D_v

(2.18)
N > 

PetrovTypeNTetrad5a

N

(2.19)

 

Example 6.

This is the first of three examples which demonstrate the case-splitting functionality of PetrovType. In this example we consider a metric depending upon two constants p and q&period;  

M > 

DGsetupu&comma;v&comma;y&comma;z&comma;M

frame name: M

(2.20)
M > 

g6evalDG1y2dy&tdy2du&sdv+y2pdz&tdz+y2qdv&tdv

g61y2dudv1y2dvdu+y2qdvdv+1y2dydy+y2pdzdz

(2.21)
M > 

OTetrad6DGGramSchmidtD_u&comma;D_v&comma;D_y&comma;D_z&comma;g6&comma;signature=1&comma;1&comma;1&comma;1assuming0<p,0<y

OTetrad62yy2q+2+24D_u+2y2D_v&comma;2yy2q+224D_u2y2D_v&comma;yD_y&comma;ypD_z

(2.22)
M > 

NTetrad6NullTetradOTetrad61&comma;OTetrad63&comma;OTetrad64&comma;OTetrad62

NTetrad6yD_u&comma;y3+2q2D_u+yD_v&comma;2y2D_y+I22ypD_z&comma;2y2D_yI22ypD_z

(2.23)
M > 

NP6NPCurvatureScalarsNTetrad6&comma;output=WeylScalars

NP6tablePsi1=0&comma;Psi3=0&comma;Psi0=0&comma;Psi4=q+1y2q+2p2q2&comma;Psi2=16p2+16p

(2.24)
M > 

PetrovCasesPetrovTypeNP6&comma;auxiliaryequations=&comma;parameters=p&comma;q

PetrovCasestableIII=&comma;N=p=−1&comma;p=0&comma;p=−1&comma;q=q&comma;p=0&comma;q=q&comma;I=&comma;II=generic&comma;D=p=2q&comma;q=q&comma;O=p=−1&comma;q=12&comma;p=0&comma;q=0

(2.25)

 

This shows that for generic values of the parameters, the Petrov type of the metric g6 is II.  We can use this result to identify some simply 1-parameter families of type II metrics within the given 2-parameter family of metrics.

M > 

CaseIIaevalNP6&comma;p=q

CaseIIatablePsi1=0&comma;Psi3=0&comma;Psi0=0&comma;Psi4=y2q+2qq+12&comma;Psi2=16q2+16q

(2.26)
M > 

CaseIIbevalNP6&comma;p=q

CaseIIbtablePsi1=0&comma;Psi3=0&comma;Psi0=0&comma;Psi4=3y2q+2qq+12&comma;Psi2=16q216q

(2.27)
M > 

CaseIIcevalNP6&comma;p=1

CaseIIctablePsi1=0&comma;Psi3=0&comma;Psi0=0&comma;Psi4=q+1y2q+212q2&comma;Psi2=13

(2.28)
M > 

mapPetrovType&comma;CaseIIa&comma;CaseIIb&comma;CaseIIc

II&comma;II&comma;II

(2.29)

 

Example 7.

In this example we calculate the Petrov type of the Kasner metric. See Stephani, Kramer et al. page 197. This metric contains 4-parameters a1&comma; a2&comma; a3&comma; a4 which satisfy

 a1&plus; a2&plus; a3 &plus;a4  &equals; 1  and   a12 &plus; a2 2 &plus; a32  &equals; a4  &plus;12 

M > 

DGsetupt&comma;x&comma;y&comma;z&comma;M&colon;

M > 

g7evalDGt2a1dx&tdx+t2a2dy&tdy+t2a3dz&tdzt2a4dt&tdt

g7t2a4dtdt+t2a1dxdx+t2a2dydy+t2a3dzdz

(2.30)
M > 

OT7DGGramSchmidtD_t&comma;D_x&comma;D_y&comma;D_z&comma;g7&comma;signature=1&comma;1&comma;1&comma;1assuming0<t,a1::real,a2::real,a3::real,a4::real

OT7ta4D_t&comma;ta1D_x&comma;ta2D_y&comma;ta3D_z

(2.31)
M > 

NT7NullTetradOT7&colon;

M > 

NP7NPCurvatureScalarsNT7&comma;output=WeylScalars

NP7tablePsi1=0&comma;Psi3=0&comma;Psi0=t22a4a3a2a3a1a22+a12+a2a1+a4a2a4a14&comma;Psi4=t22a4a3a2a3a1a22+a12+a2a1+a4a2a4a14&comma;Psi2=t22a4a3a2+a3a1+a22+a12a2a1a4a2a4a12a32+2a3+2a3a42a2a112

(2.32)
M > 

sidea1+a2+a3=a4+1&comma;a12+a22+a32=a4+12&comma;a10

sidea1+a2+a3=1+a4&comma;a12+a22+a32=1+a42&comma;a10

(2.33)

 

We use the keyword arguments auxiliaryequations and parameters to case-split on the parameters a1&comma; a2&comma; a3&comma; a4, subject to the given side conditions.

M > 

PetrovCasesPetrovTypeNP7&comma;auxiliaryequations=side&comma;parameters=a1&comma;a2&comma;a3&comma;a4

PetrovCasestableIII=&comma;N=&comma;I=generic&comma;II=&comma;D=a1=13a43&comma;a2=23+2a43&comma;a3=23+2a43&comma;a4=a4&comma;a1=23+2a43&comma;a2=13a43&comma;a3=23+2a43&comma;a4=a4&comma;a1=23+2a43&comma;a2=23+2a43&comma;a3=13a43&comma;a4=a4&comma;O=a1=1+a4&comma;a2=0&comma;a3=0&comma;a4=a4

(2.34)

 

Example 8.

In this example we calculate the Petrov type for a metric which depends upon 3 functions Ax  0&comma; Bx 0&comma; Cx&period; We calculate the generic Petrov type and then we calculate the type D and N metrics which are also solutions to the vacuum Einstein equations.

M > 

DGsetupx&comma;y&comma;u&comma;v&comma;N

frame name: N

(2.35)
N > 

g8evalDGdx&tdxAx2dy&tdy+2Bx2du&sdv+Cx2du&tdu

g8dxdxAx2dydy+Cx2dudu+Bx2dudv+Bx2dvdu

(2.36)

 

Calculate an orthonormal tetrad and then a null tetrad.

N > 

STools:-DGinfoRicciTensorg8&comma;CoefficientSet

SBx2Ax+AxBxBx+BxBxAxAx&comma;2Cx2Bx2Ax+AxCxCxBx22AxCxBxCxBx+AxCx2Bx2+AxCxBx2CxBx2Ax&comma;2BxAx+AxBxBxAx&comma;Ax2BxAx+AxBxBx

(2.37)
N > 

OTetrad8DGGramSchmidtD_u&comma;D_v&comma;D_x&comma;D_y&comma;g8&comma;signature=1&comma;1&comma;1&comma;1assuming0<Ax,0<Bx,0<Cx

OTetrad822BxD_u22Bx2+Cx24Bx3D_v&comma;22BxD_u22Bx2+Cx24Bx3D_v&comma;D_x&comma;1AxD_y

(2.38)
N > 

NTetrad8NullTetradOTetrad8

NTetrad822AxD_y+12BxD_u2Bx2+Cx24Bx3D_v&comma;22AxD_y+12BxD_u2Bx2+Cx24Bx3D_v&comma;I22D_x+12BxD_u2Bx2+Cx24Bx3D_v&comma;I22D_x+12BxD_u2Bx2+Cx24Bx3D_v

(2.39)
N > 

NP8NPCurvatureScalarsNTetrad8&comma;output=WeylScalars&colon;

 

The Petrov type of this metric for generic choices of the functions Ax&comma;  Bx&comma; Cx is II&period;

N > 

PetrovTypeNP8

II

(2.40)

 

Next we find those metrics of form g8 which are Petrov types D and N and which are also solutions of the vacuum Einstein equations. We calculate the coefficients of the Einstein tensor and and pass these to PetrovType as auxiliary equations.

N > 

EinsteinEquationsTools:-DGinfoEinsteinTensorg8&comma;CoefficientSet

EinsteinEquationsCx2Bx2Ax+Cx2Bx2Ax+AxCxCxBx22AxCxBxCxBx+AxCx2Bx2+AxCxBx2CxBx6Ax&comma;2BxBx+Bx2Ax2Bx2&comma;BxBxAx+2AxBxBx2Ax&comma;BxAx+BxAx+AxBxBx3Ax

(2.41)
N > 

PetrovCasesPetrovTypeNP8&comma;parameters=Ax&comma;Bx&comma;Cx&comma;auxiliaryequations=Ax0&comma;Bx0&comma;opEinsteinEquations&colon;

 

Here are the parameter values which give type D solutions to the vacuum Einstein equations.

N > 

PetrovCasesD

Ax=_C3_C1x+_C213&comma;Bx=12_C1x+12_C2134I312_C1x+12_C21342&comma;Cx=0&comma;Ax=_C3_C1x+_C213&comma;Bx=12_C1x+12_C2134I312_C1x+12_C21342&comma;Cx=_C4_C1x+_C223&comma;Ax=_C3_C1x+_C213&comma;Bx=12_C1x+12_C2134+I312_C1x+12_C21342&comma;Cx=0&comma;Ax=_C3_C1x+_C213&comma;Bx=12_C1x+12_C2134+I312_C1x+12_C21342&comma;Cx=_C4_C1x+_C223&comma;Ax=_C3_C1x+_C213&comma;Bx=12_C1x+12_C2234&comma;Cx=0&comma;Ax=_C3_C1x+_C213&comma;Bx=12_C1x+12_C2234&comma;Cx=_C4_C1x+_C223

(2.42)

 

Here are the parameter values which give type N solutions to the vacuum Einstein equations.

N > 

PetrovCasesN

Ax=_C2x+_C3&comma;Bx=_C1&comma;Cx=2_C2ln_C2x+_C3_C4+_C5_C2_C2&comma;Ax=_C2x+_C3&comma;Bx=_C1&comma;Cx=2_C2ln_C2x+_C3_C4+_C5_C2_C2

(2.43)

 

Example 9.

We give a simple example where the Petrov type changes at exceptional coordinate values.

M > 

DGsetupt&comma;x&comma;y&comma;z&comma;M

frame name: M

(2.44)
N > 

g9evalDGdt&tdtdx&tdxdy&tdydz&tdz+2y2dt&sdx

g9dtdt+y2dtdx+y2dxdtdxdxdydydzdz

(2.45)

 

M > 

OTetrad9DGGramSchmidtD_t&comma;D_x&comma;D_y&comma;D_z&comma;g9&comma;signature=1&comma;1&comma;1&comma;1assuming0<y

OTetrad9D_t&comma;y21+y4D_t+11+y4D_x&comma;D_y&comma;D_z

(2.46)
M > 

NTetrad9NullTetradOTetrad9

NTetrad922D_t+22D_z&comma;22D_t22D_z&comma;2y221+y4D_t+221+y4D_x+I22D_y&comma;2y221+y4D_t+221+y4D_xI22D_y

(2.47)
M > 

WS9NPCurvatureScalarsNTetrad9&comma;output=WeylScalars

WS9tablePsi1=1+y441+y432&comma;Psi3=1+y441+y432&comma;Psi0=0&comma;Psi4=0&comma;Psi2=y21+y431+y42

(2.48)

 

At a generic coordinate values the Petrov type is I but is type O at y&equals;1.

 

M > 

PetrovTypeWS9

I

(2.49)
M > 

PetrovTypeWS9&comma;t=t0&comma;x=x0&comma;y=1&comma;z=z0

O

(2.50)

 

Example 10.

The branching that occurs in the algorithm for PetrovType can be followed by setting infolevel[PetrovType] := 2.

M > 

DGsetupt&comma;x&comma;y&comma;z&comma;M

M > 

NTetrad10evalDG12212xD_t+12212D_z&comma;12212xD_t12212D_z&comma;12212tD_x+12I212D_y&comma;12212tD_x12I212D_y

frame name: M

NTetrad102x2D_t+22D_z&comma;2x2D_t22D_z&comma;2t2D_x+I22D_y&comma;2t2D_xI22D_y

(2.51)
M > 

infolevelPetrovType2

infolevelPetrovType2

(2.52)
M > 

PetrovTypeNTetrad10

The NP Weyl scalars invariants are:

   Phi[0]: 1/2*(-x^4+t^4)/t^2/x^2
   Phi[1]: 0
   Phi[2]: -1/6*(-x^4+t^4)/t^2/x^2
   Phi[3]: 0
   Phi[4]: 1/2*(-x^4+t^4)/t^2/x^2
Checking type O (Psi = 0):
   not type O
Test to see if the Weyl scalars are in Penrose-Rindler normalized form

D

(2.53)

 

From the expressions for the invariants we see that the Petrov type will change at points where x = t.

M > 

PetrovTypeNTetrad10&comma;x=a&comma;y=b&comma;z=c&comma;t=a

The NP Weyl scalars invariants are:

   Phi[0]: 0
   Phi[1]: 0
   Phi[2]: 0
   Phi[3]: 0
   Phi[4]: 0
Checking type O (Psi = 0):

O

(2.54)

See Also

DifferentialGeometry, Tensor, FrameData, DGGramSchmidt,  infolevel, NPCurvatureScalars, Physics[Riemann], NullTetrad, pdsolve, rifsimp, SegreType , WeylTensor, Physics[Weyl]