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
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.
with⁡DifferentialGeometry:with⁡Tensor:
For Examples 1 -- 4 we use the following metric.
DGsetup⁡t,x,y,z,M
frame name: M
g≔evalDG⁡1x2⁢dt&tdt−dx&tdx−dy&tdy−dz&tdz
g≔1x2⁢dt⁢dt−dx⁢dx−dy⁢dy−dz⁢dz
Example 1.
Calculate the Petrov type directly from the metric.
PetrovType⁡g
D
Example 2.
Calculate the Petrov type from a null tetrad for the metric g. First use the command DGGramSchmidt to construct an orthonormal tetrad.
OTetrad≔DGGramSchmidt⁡D_t,D_x,D_y,D_z,g,signature=1,−1,−1,−1assuming0<x
OTetrad≔x⁢D_t,D_x,D_y,D_z
NTetrad≔NullTetrad⁡OTetrad
NTetrad≔2⁢x2⁢D_t+22⁢D_z,2⁢x2⁢D_t−22⁢D_z,22⁢D_x+I2⁢2⁢D_y,22⁢D_x−I2⁢2⁢D_y
PetrovType⁡NTetrad
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.
FD≔FrameData⁡NTetrad,NP
FD≔E1,E3=−2⁢E14⁢x−2⁢E24⁢x,E1,E4=−2⁢E14⁢x−2⁢E24⁢x,E2,E3=−2⁢E14⁢x−2⁢E24⁢x,E2,E4=−2⁢E14⁢x−2⁢E24⁢x
DGsetup⁡FD
frame name: NP
PetrovType⁡NP
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.
WS≔NPCurvatureScalars⁡NTetrad,output=WeylScalars
WS≔table⁡Psi1=0,Psi3=0,Psi0=12⁢x2,Psi4=12⁢x2,Psi2=−16⁢x2
PetrovType⁡WS
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.
DGsetup⁡x,y,u,v,N
frame name: N
Define the metric.
g5≔evalDG⁡−dx&tdx−dy&tdy+2⁢du&sdv+f⁡x,v2⁢du&tdu
g5≔−dx⁢dx−dy⁢dy+f⁡x,v2⁢du⁢du+du⁢dv+dv⁢du
Calculate an orthonormal tetrad and then a null tetrad.
OTetrad5≔DGGramSchmidt⁡D_u,D_v,D_x,D_y,g5,signature=1,−1,−1,−1assuming0<f⁡x,v
OTetrad5≔1f⁡x,v⁢D_u,−1f⁡x,v⁢D_u+f⁡x,v⁢D_v,D_x,D_y
NTetrad5≔NullTetrad⁡OTetrad5
NTetrad5≔22⁢D_y+22⁢f⁡x,v⁢D_u,−22⁢D_y+22⁢f⁡x,v⁢D_u,I2⁢2⁢D_x−22⁢f⁡x,v⁢D_u+2⁢f⁡x,v2⁢D_v,−I2⁢2⁢D_x−22⁢f⁡x,v⁢D_u+2⁢f⁡x,v2⁢D_v
With the optional argument output = "N", the procedure will return the partial differential equations that fx, 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.
PDE≔PetrovType⁡NTetrad5,output=N:
PDE1≔DEtoolsrifsimp⁡PDESolved
PDE1≔∂2∂v∂xf⁡x,v=−∂∂xf⁡x,v⁢∂∂vf⁡x,vf⁡x,v,∂2∂v2f⁡x,v=−∂∂vf⁡x,v2f⁡x,v
Use pdsolve to find the general solution to PDE1.
Soln≔pdsolve⁡PDE1
Soln≔f⁡x,v=2⁢_C1⁢v+2⁢_F2⁡x
Back substitute into the null tetrad NTetrad and check that the resulting null tetrad is of type "N".
NTetrad5a≔eval⁡NTetrad5,Soln
NTetrad5a≔22⁢D_y+22⁢2⁢_C1⁢v+2⁢_F2⁡x⁢D_u,−22⁢D_y+22⁢2⁢_C1⁢v+2⁢_F2⁡x⁢D_u,I2⁢2⁢D_x−22⁢2⁢_C1⁢v+2⁢_F2⁡x⁢D_u+2⁢2⁢_C1⁢v+2⁢_F2⁡x2⁢D_v,−I2⁢2⁢D_x−22⁢2⁢_C1⁢v+2⁢_F2⁡x⁢D_u+2⁢2⁢_C1⁢v+2⁢_F2⁡x2⁢D_v
PetrovType⁡NTetrad5a
N
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.
DGsetup⁡u,v,y,z,M
g6≔evalDG⁡1y2⁢dy&tdy−2⁢du&sdv+y2⁢p⁢dz&tdz+y2⁢q⁢dv&tdv
g6≔−1y2⁢du⁢dv−1y2⁢dv⁢du+y2⁢q⁢dv⁢dv+1y2⁢dy⁢dy+y2⁢p⁢dz⁢dz
OTetrad6≔DGGramSchmidt⁡D_u,D_v,D_y,D_z,g6,signature=−1,1,1,1assuming0<p,0<y
OTetrad6≔2⁢y⁢y2⁢q+2+24⁢D_u+2⁢y2⁢D_v,−2⁢y⁢y2⁢q+2−24⁢D_u−2⁢y2⁢D_v,y⁢D_y,y−p⁢D_z
NTetrad6≔NullTetrad⁡OTetrad61,OTetrad63,OTetrad64,OTetrad62
NTetrad6≔y⁢D_u,y3+2⁢q2⁢D_u+y⁢D_v,2⁢y2⁢D_y+I2⁢2⁢y−p⁢D_z,2⁢y2⁢D_y−I2⁢2⁢y−p⁢D_z
NP6≔NPCurvatureScalars⁡NTetrad6,output=WeylScalars
NP6≔table⁡Psi1=0,Psi3=0,Psi0=0,Psi4=q+1⁢y2⁢q+2⁢p−2⁢q2,Psi2=16⁢p2+16⁢p
PetrovCases≔PetrovType⁡NP6,auxiliaryequations=,parameters=p,q
PetrovCases≔table⁡III=,N=p=−1,p=0,p=−1,q=q,p=0,q=q,I=,II=generic,D=p=2⁢q,q=q,O=p=−1,q=−12,p=0,q=0
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.
CaseIIa≔eval⁡NP6,p=q
CaseIIa≔table⁡Psi1=0,Psi3=0,Psi0=0,Psi4=−y2⁢q+2⁢q⁢q+12,Psi2=16⁢q2+16⁢q
CaseIIb≔eval⁡NP6,p=−q
CaseIIb≔table⁡Psi1=0,Psi3=0,Psi0=0,Psi4=−3⁢y2⁢q+2⁢q⁢q+12,Psi2=16⁢q2−16⁢q
CaseIIc≔eval⁡NP6,p=1
CaseIIc≔table⁡Psi1=0,Psi3=0,Psi0=0,Psi4=q+1⁢y2⁢q+2⁢1−2⁢q2,Psi2=13
map⁡PetrovType,CaseIIa,CaseIIb,CaseIIc
II,II,II
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, a2, a3, a4 which satisfy
a1+ a2+ a3 +a4 = 1 and a12 + a2 2 + a32 = a4 +12
DGsetup⁡t,x,y,z,M:
g7≔evalDG⁡t2⁢a1⁢dx&tdx+t2⁢a2⁢dy&tdy+t2⁢a3⁢dz&tdz−t2⁢a4⁢dt&tdt
g7≔−t2⁢a4⁢dt⁢dt+t2⁢a1⁢dx⁢dx+t2⁢a2⁢dy⁢dy+t2⁢a3⁢dz⁢dz
OT7≔DGGramSchmidt⁡D_t,D_x,D_y,D_z,g7,signature=−1,1,1,1assuming0<t,a1::real,a2::real,a3::real,a4::real
OT7≔t−a4⁢D_t,t−a1⁢D_x,t−a2⁢D_y,t−a3⁢D_z
NT7≔NullTetrad⁡OT7:
NP7≔NPCurvatureScalars⁡NT7,output=WeylScalars
NP7≔table⁡Psi1=0,Psi3=0,Psi0=−t−2−2⁢a4⁢a3⁢a2−a3⁢a1−a22+a12+a2−a1+a4⁢a2−a4⁢a14,Psi4=−t−2−2⁢a4⁢a3⁢a2−a3⁢a1−a22+a12+a2−a1+a4⁢a2−a4⁢a14,Psi2=t−2−2⁢a4⁢a3⁢a2+a3⁢a1+a22+a12−a2−a1−a4⁢a2−a4⁢a1−2⁢a32+2⁢a3+2⁢a3⁢a4−2⁢a2⁢a112
side≔a1+a2+a3=a4+1,a12+a22+a32=a4+12,a1≠0
side≔a1+a2+a3=1+a4,a12+a22+a32=1+a42,a1≠0
We use the keyword arguments auxiliaryequations and parameters to case-split on the parameters a1, a2, a3, a4, subject to the given side conditions.
PetrovCases≔PetrovType⁡NP7,auxiliaryequations=side,parameters=a1,a2,a3,a4
PetrovCases≔table⁡III=,N=,I=generic,II=,D=a1=−13−a43,a2=23+2⁢a43,a3=23+2⁢a43,a4=a4,a1=23+2⁢a43,a2=−13−a43,a3=23+2⁢a43,a4=a4,a1=23+2⁢a43,a2=23+2⁢a43,a3=−13−a43,a4=a4,O=a1=1+a4,a2=0,a3=0,a4=a4
Example 8.
In this example we calculate the Petrov type for a metric which depends upon 3 functions Ax ≠ 0, Bx ≠0, Cx. 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.
g8≔evalDG⁡−dx&tdx−A⁡x2⁢dy&tdy+2⁢B⁡x2⁢du&sdv+C⁡x2⁢du&tdu
g8≔−dx⁢dx−A⁡x2⁢dy⁢dy+C⁡x2⁢du⁢du+B⁡x2⁢du⁢dv+B⁡x2⁢dv⁢du
S≔Tools:-DGinfo⁡RicciTensor⁡g8,CoefficientSet
S≔B′⁡x2⁢A⁡x+A′⁡x⁢B⁡x⁢B′⁡x+B⁡x⁢B″⁡x⁢A⁡xA⁡x,2⁢C⁡x2⁢B′⁡x2⁢A⁡x+A′⁡x⁢C⁡x⁢C′⁡x⁢B⁡x2−2⁢A⁡x⁢C′⁡x⁢B⁡x⁢C⁡x⁢B′⁡x+A⁡x⁢C′⁡x2⁢B⁡x2+A⁡x⁢C⁡x⁢B⁡x2⁢C″⁡xB⁡x2⁢A⁡x,−2⁢B″⁡x⁢A⁡x+A″⁡x⁢B⁡xB⁡x⁢A⁡x,−A⁡x⁢2⁢B′⁡x⁢A′⁡x+A″⁡x⁢B⁡xB⁡x
OTetrad8≔DGGramSchmidt⁡D_u,D_v,D_x,D_y,g8,signature=1,−1,−1,−1assuming0<A⁡x,0<B⁡x,0<C⁡x
OTetrad8≔22⁢B⁡x⁢D_u−2⁢−2⁢B⁡x2+C⁡x24⁢B⁡x3⁢D_v,22⁢B⁡x⁢D_u−2⁢2⁢B⁡x2+C⁡x24⁢B⁡x3⁢D_v,D_x,1A⁡x⁢D_y
NTetrad8≔NullTetrad⁡OTetrad8
NTetrad8≔22⁢A⁡x⁢D_y+12⁢B⁡x⁢D_u−−2⁢B⁡x2+C⁡x24⁢B⁡x3⁢D_v,−22⁢A⁡x⁢D_y+12⁢B⁡x⁢D_u−−2⁢B⁡x2+C⁡x24⁢B⁡x3⁢D_v,I2⁢2⁢D_x+12⁢B⁡x⁢D_u−2⁢B⁡x2+C⁡x24⁢B⁡x3⁢D_v,−I2⁢2⁢D_x+12⁢B⁡x⁢D_u−2⁢B⁡x2+C⁡x24⁢B⁡x3⁢D_v
NP8≔NPCurvatureScalars⁡NTetrad8,output=WeylScalars:
The Petrov type of this metric for generic choices of the functions Ax, Bx, Cx is II.
PetrovType⁡NP8
II
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.
EinsteinEquations≔Tools:-DGinfo⁡EinsteinTensor⁡g8,CoefficientSet
EinsteinEquations≔C⁡x2⁢B′⁡x2⁢A⁡x+C⁡x2⁢B⁡x2⁢A″⁡x+A′⁡x⁢C⁡x⁢C′⁡x⁢B⁡x2−2⁢A⁡x⁢C′⁡x⁢B⁡x⁢C⁡x⁢B′⁡x+A⁡x⁢C′⁡x2⁢B⁡x2+A⁡x⁢C⁡x⁢B⁡x2⁢C″⁡xB⁡x6⁢A⁡x,2⁢B⁡x⁢B″⁡x+B′⁡x2A⁡x2⁢B⁡x2,B′⁡x⁢B′⁡x⁢A⁡x+2⁢A′⁡x⁢B⁡xB⁡x2⁢A⁡x,−B″⁡x⁢A⁡x+B′⁡x⁢A′⁡x+A″⁡x⁢B⁡xB⁡x3⁢A⁡x
PetrovCases≔PetrovType⁡NP8,parameters=A⁡x,B⁡x,C⁡x,auxiliaryequations=A⁡x≠0,B⁡x≠0,op⁡EinsteinEquations:
Here are the parameter values which give type D solutions to the vacuum Einstein equations.
PetrovCasesD
A⁡x=_C3_C1⁢x+_C213,B⁡x=−12⁢_C1⁢x+12⁢_C2134−I⁢3⁢12⁢_C1⁢x+12⁢_C21342,C⁡x=0,A⁡x=_C3_C1⁢x+_C213,B⁡x=−12⁢_C1⁢x+12⁢_C2134−I⁢3⁢12⁢_C1⁢x+12⁢_C21342,C⁡x=_C4⁢_C1⁢x+_C223,A⁡x=_C3_C1⁢x+_C213,B⁡x=−12⁢_C1⁢x+12⁢_C2134+I⁢3⁢12⁢_C1⁢x+12⁢_C21342,C⁡x=0,A⁡x=_C3_C1⁢x+_C213,B⁡x=−12⁢_C1⁢x+12⁢_C2134+I⁢3⁢12⁢_C1⁢x+12⁢_C21342,C⁡x=_C4⁢_C1⁢x+_C223,A⁡x=_C3_C1⁢x+_C213,B⁡x=12⁢_C1⁢x+12⁢_C2234,C⁡x=0,A⁡x=_C3_C1⁢x+_C213,B⁡x=12⁢_C1⁢x+12⁢_C2234,C⁡x=_C4⁢_C1⁢x+_C223
Here are the parameter values which give type N solutions to the vacuum Einstein equations.
PetrovCasesN
A⁡x=_C2⁢x+_C3,B⁡x=_C1,C⁡x=2⁢_C2⁢ln⁡_C2⁢x+_C3⁢_C4+_C5⁢_C2_C2,A⁡x=_C2⁢x+_C3,B⁡x=_C1,C⁡x=−2⁢_C2⁢ln⁡_C2⁢x+_C3⁢_C4+_C5⁢_C2_C2
Example 9.
We give a simple example where the Petrov type changes at exceptional coordinate values.
g9≔evalDG⁡dt&tdt−dx&tdx−dy&tdy−dz&tdz+2⁢y2⁢dt&sdx
g9≔dt⁢dt+y2⁢dt⁢dx+y2⁢dx⁢dt−dx⁢dx−dy⁢dy−dz⁢dz
OTetrad9≔DGGramSchmidt⁡D_t,D_x,D_y,D_z,g9,signature=1,−1,−1,−1assuming0<y
OTetrad9≔D_t,−y21+y4⁢D_t+11+y4⁢D_x,D_y,D_z
NTetrad9≔NullTetrad⁡OTetrad9
NTetrad9≔22⁢D_t+22⁢D_z,22⁢D_t−22⁢D_z,−2⁢y22⁢1+y4⁢D_t+22⁢1+y4⁢D_x+I2⁢2⁢D_y,−2⁢y22⁢1+y4⁢D_t+22⁢1+y4⁢D_x−I2⁢2⁢D_y
WS9≔NPCurvatureScalars⁡NTetrad9,output=WeylScalars
WS9≔table⁡Psi1=−1+y44⁢1+y432,Psi3=−1+y44⁢1+y432,Psi0=0,Psi4=0,Psi2=−y2⁢−1+y43⁢1+y42
At a generic coordinate values the Petrov type is I but is type O at y=1.
PetrovType⁡WS9
I
PetrovType⁡WS9,t=t0,x=x0,y=1,z=z0
O
Example 10.
The branching that occurs in the algorithm for PetrovType can be followed by setting infolevel[PetrovType] := 2.
NTetrad10≔evalDG⁡12⁢212⁢x⁢D_t+12⁢212⁢D_z,12⁢212⁢x⁢D_t−12⁢212⁢D_z,12⁢212⁢t⁢D_x+12⁢I⁢212⁢D_y,12⁢212⁢t⁢D_x−12⁢I⁢212⁢D_y
NTetrad10≔2⁢x2⁢D_t+22⁢D_z,2⁢x2⁢D_t−22⁢D_z,2⁢t2⁢D_x+I2⁢2⁢D_y,2⁢t2⁢D_x−I2⁢2⁢D_y
infolevelPetrovType≔2
PetrovType⁡NTetrad10
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
From the expressions for the invariants we see that the Petrov type will change at points where x = t.
PetrovType⁡NTetrad10,x=a,y=b,z=c,t=a
Phi[0]: 0 Phi[1]: 0 Phi[2]: 0 Phi[3]: 0 Phi[4]: 0 Checking type O (Psi = 0):
DifferentialGeometry, Tensor, FrameData, DGGramSchmidt, infolevel, NPCurvatureScalars, Physics[Riemann], NullTetrad, pdsolve, rifsimp, SegreType , WeylTensor, Physics[Weyl]
Download Help Document