Physics[g_] - The g_ tensor
the indices, as names representing integer numbers between 0 and the spacetime dimension, they can also be the numbers themselves
optional, returns the matrix form for the given (covariant or contravariant) indices; if passed without indices it returns the covariant metric
optional, it can be definition, determinant, line_element, matrix, nonzero, trace or any portion of a known metric name to launch a search in the metric's database
an algebraic expression involving tensors (e.g. Christoffel) to be rewritten in terms of the metric g_ and its derivatives
The g_[mu, nu], displayed as gμ,ν (without _ in between g and its indices), is a computational representation for the spacetime metric tensor. When Physics is loaded, the dimension of spacetime is set to 4 and the metric is automatically set to be galilean, representing a Minkowski spacetime with signature (-, -, -, +), so time in the fourth place.
When working in curvilinear coordinates so that the components of the Christoffel symbols are not zero it is sometimes convenient to rewrite tensorial expressions in terms of the metric g_ and its derivatives. For example, this is the case of the Christoffel symbols and any of the general relativity tensors that are defined in terms of them. For this purpose you can use convert(expression, g_) - see the Examples section.
When the indices of g_ assume integer values, it is expected they are between 0 and the spacetime dimension and the corresponding value of g_ is returned. The values 0 and 4, or for the case any dimension set for the spacetime, represent the same object. When the indices have symbolic values, say as in μ,ν, if μ=ν g_ returns the dimension of spacetime when μ is a spacetime index, or the dimension of space when μ is a space index. If the system can prove that μ≠ν (e.g. via assumptions), g_ returns zero whenever the metric is diagonal. Otherwise g_ returns unevaluated, after normalizing its indices taking into account that the spacetime metric is symmetric.
You can change the value of the metric g_ in different ways, using Setup or, when choosing a predefined set of values, you can also change the metric using g_ itself, indexing it with the related metric name; for example as in g_[Minkowski]. The predefined sets are: arbitrary, Euclidean, Minkowski, Schwarzschild, Tolman or related to any of the metrics of the book "Exact Solutions of Einstein's Field Equations" - see references at the end. Note that you can pass the keyword incomplete or misspelled, in which case a searchtext is performed among the keywords understood by g_ and if a match is found the metric is set accordingly, or if many matches are found then corresponding information is displayed on the screen. See the Examples section. Using predefined sets, either through Setup or g_, automatically sets the necessary systems of coordinates and differentiation variables for the spacetime differentiation operator d_ accordingly.
Any of the 991 metrics of the book "Exact Solutions of Einstein's Field Equations" can also be load by indexing g_ with a list of three numbers, for example as in g_[[12, 16, 1]], respectively representing the book's chapter where the metric is found, the equation number and the case.
Computations performed with the Physics package commands take into account Einstein's sum rule for repeated indices - see `.` and Simplify. The distinction between covariant and contravariant indices in the input of tensors is done by prefixing contravariant ones with ~, say as in ~mu; in the output, contravariant indices are displayed as superscripts. For contracted indices, you can enter them one covariant and one contravariant. Note however that - provided that the spacetime metric is galilean (Euclidean or Minkowski), or the object is a tensor also in curvilinear coordinates - this distinction in the input is not relevant, and so contracted indices can be entered as both covariant or both contravariant, in which case they will be automatically rewritten as one covariant and one contravariant. Tensors can have spacetime and space indices at the same time. To change the type of letter used to represent spacetime or space indices see Setup.
Note: since Maple 2019, g_[mu, ~nu], where one of its indices is contravariant as in ~nu while the other remains covariant, is displayed using the δ greek letter, as δμ⁢⁢ν, as is standard in physics textbooks. Also, KroneckerDelta[mu, nu] is not considered a tensor (of type Physics:-Library:-PhysicsType:-Tensor), even if μ and ν are letters representing tensor indices, unless one of such indices is contravariant as in ~nu, while the other remains covariant, in which case KroneckerDelta[mu, ~nu] is automatically transformed into the spacetime metric g_[mu, nu], which is a tensor.
During a Maple session, the value of any component of the general relativity tensors of Physics, that is: Christoffel, the covariant derivative D_, Einstein, Ricci, Riemann and Weyl, automatically follow the value or any changes introduced in the components of g_, the spacetime metric, provided these changes are made using Setup or g_ itself.
Besides being indexed with two indices, g_ accepts the following keywords as an index:
definition: when passed alone, g_ returns its definition, that is an equation with the metric on the left-hand side and the matrix form of the metric on the right-hand side, the same as when you enter the metric without indices (g_).
determinant: when passed alone, g_ returns the determinant of the all-covariant metric g[mu, nu] . If this keyword is passed together with indices, that can be covariant or contravariant, the resulting determinant takes into account the character of the indices.
line_element: (synonym: lineelement) when passed alone, g_ returns the line element for the current metric expressing the differentials of the coordinates using d_.
matrix: (synonym: Matrix, array, Array, or no indices whatsoever, as in g_) returns a Matrix that when indexed with numerical values from 1 to the dimension of spacetime it returns the value of each of the components of g_. If this keyword is passed together with indices, that can be covariant or contravariant, the resulting Matrix takes into account the character of the indices.
nonzero: returns a set of equations, with the left-hand side as a sequence of two positive numbers identifying the element of g__μ,ν and the corresponding value on the right-hand side. Note that this set is actually the output of the ArrayElems command when passing to it the Matrix obtained with the keyword matrix.
<metric name>: some predefined sets of values for the spacetime metric can be used by giving the metric name or a portion of it; currently these are Euclidean, Minkowski, Tolman, Schwarzschild and the metrics of Chapter 12 of "Exact Solutions of Einstein's Field Equations" (second edition).
Some automatic checking and normalization are carried out each time you enter g_[...]. The checking is concerned with possible unexpected values of the indices. The automatic normalization takes into account the symmetry of g_[mu,nu] with respect to interchanging the positions of the indices mu and nu.
The %g_ command is the inert form of g_, so it represents the same tensor but entering it does not result in performing any computation. To perform the related computations as if %g_ were g_, use value.
When Physics is initialized, the default spacetime metric is of Minkowski type. You can see the metric querying Setup, as in Setup(metric), or directly entering the metric as g_, with no indices
The corresponding line element
⁢Systems of spacetime coordinates are:⁢X=x1,x2,x3,x4
The default spacetime of the Physics package is a Minkowski spacetime with dimension 4, so the values 0 and 4 represent the same object
The symmetry property of g_ is automatically taken into account when the indices have symbolic values
By default, spacetime indices are represented by greek letters and the dimension of spacetime is 4 - you can query about that via
Set the space indices (not the spacetime indices) to be represented by lowercaselatin letters till h
The trace of g_ is equal to the dimension; note the use of the sum rule for repeated indices, both for spacetime and space only indices
Check now the nonzero components of Christoffel, used to construct the g_ tensor entering the definition of g_: because the default spacetime is of Minkowski type, there are none
and the same is valid for all the general relativity tensors defined in terms of Christoffel and derivatives of the metric g_.
To set the scenario as a curved spacetime set the metric using Setup, for instance indicating the square of the spacetime interval. This can be done directly from g_, choose for example the keyword Tolman; it automatically implies on setting spherical coordinates as the differentiation variables for d_
⁢Systems of spacetime coordinates are:⁢X=r,θ,φ,t
⁢Default differentiation variables for d_, D_ and dAlembertian are:⁢X=r,θ,φ,t
⁢The Tolman metric in coordinates ⁢r,θ,φ,t
Signature: - - - +
Or for the contravariant components (note you indicate the contravariant character of index prefixing with ~)
The matrix form: all of g_, g_[matrix] and g_[mu, nu, matrix] return the all-covariant matrix
Or, for the matrix components of the all contravariant gμ,ν, which as a matrix is equal to the inverse of the all-covariant gμ,ν,
The metric can also be set using Setup in different ways. Here we enter it by passing the square of the spacetime interval, also called the line element. Because the spacetime coordinates were automatically set to spherical when entering g_[Tolman] you do not need to set the coordinates again. To query about the coordinates use Setup or Coordinates:
* Partial match of 'differentiation' against keyword 'differentiationvariables'
Set now the metric to be
ds2 ≔ r2⁢dtheta2+r2⁢sin⁡θ2⁢dphi2−2⁢dt⁢dr−2⁢k⁡r,t2⁢dt2
Coordinates: r,θ,φ,t. Signature: - - - +
(Note that this equation in the output by Setup can be directly used as input for Setup; this is useful to perform minor changes to the metric when desired.)
The determinant of the all-covariant metric
The nonzero components
The nonzero components of the inverse of the metric, that is, the all-contravariant gμ,ν
The general relativity tensors, or expressions involving them, can be expressed in terms of the metric g_ and its derivatives. For that purpose use convert(... g_) as in
Define a tensor A for illustration purposes
Defined objects with tensor properties
The covariant derivative of the contravariant vector Aν⁡X and its expansion, or rewriting in terms of d_,g_ or Christoffel symbols
Alternatively, spacetime derivatives of the metric can be expressed in terms of Christoffel symbols
In the same line, all of Einstein, Ricci, Riemann and Weyl tensors can be expressed in terms of Christoffel symbols, and so in terms of the metric g_ and its derivatives, for instance,
To compute with a representation for g_ without actually performing the operation, use the inert form %g_. To afterwards perform the operation use value
It is possible to set the metric searching the database of DifferentialGeometry directly from g_. For example
[12, 34, 1] = [Authors = [Kaigorodov (1962), Cahen (1964), Siklos (1981), Ozsvath (1987)], PrimaryDescription = Einstein, SecondaryDescription = [Homogeneous], Comments = [All metrics with _epsilon <> 0 are equivalent to the cases _epsilon = +1, -1, _epsilon = 0 is anti-deSitter space]]
[12, 35, 1] = [Authors = [Kaigorodov (1962), Cahen (1964), Siklos (1981), Ozsvath (1987)], PrimaryDescription = Einstein, SecondaryDescription = [Homogeneous, SimpleTransitive]]
[12, 38, 1] = [Authors = [Siklos (1985)], PrimaryDescription = PureRadiation, SecondaryDescription = [Homogeneous, PureRadiation], Comments = [Generic k value, k <> -1 (see [12, 6, 1]), 1/2 (see [12,38,2]), 3/2 (see [12,38, 5]), 2 (see [12,38, 3] and [12, 38, 4]). Note the k = 1/2 is Petrov type "O" .]]
[12, 38, 2] = [Authors = [Siklos (1985)], PrimaryDescription = PureRadiation, SecondaryDescription = [PureRadiation, Homogeneous], Comments = [This is k = 1/2 in [12, 38, 1]. This is of Petrov type "O"]]
[12, 38, 3] = [Authors = [Siklos (1985)], PrimaryDescription = EinsteinMaxwell, SecondaryDescription = [PureRadiation, Homogeneous], Comments = [This is _k = 2 and _epsilon = 1 in [12, 38, 1]. Only _epsilon = 1 gives a Maxwell field]]
[12, 38, 4] = [Authors = [Siklos (1985)], PrimaryDescription = PureRadiation, SecondaryDescription = [PureRadiation, Homogeneous], Comments = [This is _k = 2 and _epsilon = -1 in [12, 38, 1]. Only _epsilon = 1 gives a Maxwell field]]
[12, 38, 5] = [Authors = [Siklos (1985), Nariai(1950)], PrimaryDescription = Einstein, SecondaryDescription = [Homogeneous], Comments = [This is k = 3/2 in [12, 38, 1]. It is equivalent to [12, 34, 1]]]
[13, 64, 1] = [Authors = [Siklos (1981)], PrimaryDescription = Einstein, SecondaryDescription = ]
[13, 64, 3] = [Authors = [Siklos (1981)], PrimaryDescription = Einstein, SecondaryDescription = , Comments = [See also (13, 64, 4) for Riemannian orbits]]
[13, 64, 4] = [Authors = [Siklos (1981)], PrimaryDescription = Einstein, SecondaryDescription = , Comments = [See also (13, 64, 3) for PseudoRiemannian orbits]]
[13, 65, 1] = [Authors = [Siklos (1981)], PrimaryDescription = Einstein, SecondaryDescription = , Comments = [We can use the transformation x -> - x to assume the parameter _b > 0, A boost and a spatial rotation are required to take the null tetrad to an adapted null tetrad]]
[13, 67, 1] = [Authors = [Siklos (1981)], PrimaryDescription = Einstein, SecondaryDescription = [TwistingSolution]]
[13, 67, 2] = [Authors = [Siklos (1981)], PrimaryDescription = Einstein, SecondaryDescription = [TwistingSolution]]
[38, 1, 1] = [Authors = [Siklos (1981)], PrimaryDescription = Hypersurface-Homogeneous, SecondaryDescription = [AlgebraicallySpecial]]
Found more than one match for the keyword 'sik', as seen above. Please refine your 'keyword' or re-enter the metric g_... with the list of three numbers identifying the metric, for example as in g_12,34,1 or Setup⁡metric=12,34,1
You can now refine the search accordingly, for example choose and automatically set the metric [12, 38, 1] including the corresponding coordinates
⁢Systems of spacetime coordinates are:⁢X=v,y,z,u
⁢Default differentiation variables for d_, D_ and dAlembertian are:⁢X=v,y,z,u
The Siklos (1985) metric in coordinates v,y,z,u
Comments: Gⅇnⅇrⅈc k valuⅇ, k <> -1 (sⅇⅇ [12, 6, 1]), 1/2 (sⅇⅇ [12,38,2]), 3/2 (sⅇⅇ [12,38, 5]), 2 (sⅇⅇ [12,38, 3] anⅆ [12, 38, 4]). Notⅇ thⅇ k = 1/2 ⅈs Pⅇtrov typⅇ "O" .
Resetting the signature of spacetime from - - - + to + + + - in order to match the signature in the database of metrics
Note the redefinition of the signature: basically all metrics in the database follow the conventions found in the book Exact Solutions of Einstein's Field Equations (reference at the end), where the signature is (+ + + -).
The simplification of contracted indices is normally performed using Simplify but you can also perform it using the `.` operator. Define first some spacetime tensors.
Compare the difference between `*` and `.`
So g_[alpha, mu] . A[mu] equivalent to Simplify(g_[alpha, mu] * A[mu], indices). This functionality is particularly useful when handling larger expressions where you want contraction to be simplified only in some places. Consider the following product
You can always Simplify the whole product, as in
Using Physics[`.`], however, you can achieve either the same, or any more selective simplification. Replacing the first `*` by `.`,
Likely (note the parenthesis to indicate the desired order of precedence between `.` and `*`)
and replacing `*` and `.` in the middle of the expression,
When one of the sides of `.` is a nested expression, the simplification of contracted indices is performed recursively, compare for instance
Set the spacetime metric to be the Schwarzschild metric and consider the contraction of all the indices of the Riemann tensor
⁢The Schwarzschild metric in coordinates ⁢r,θ,φ,t
Signature: + + + -
Note: since Maple 2019, KroneckerDelta[mu, nu] is not considered a tensor (of type Physics:-Library:-PhysicsType:-Tensor), even if μ and ν are letters representing tensor indices. Consequently, in all cases, the following does not return the trace, but the number 1
Care should be taken, however, if you happen to index KroneckerDelta with one index covariant and the other contravariant (preceded by ~), in which case KroneckerDelta[mu, ~nu] is automatically transformed into the spacetime metric g_[mu, ~nu] (both displayed with the δ greek letter as is standard in physics textbooks), for which g[mu, ~mu], with the index repeated, represents its trace, equal to the spacetime dimension
Physics:-g_[mu,~nu] = Physics:-g_[mu,~nu]
`.`, ArrayElems, Christoffel, convert, Coordinates, D_, d_, DifferentialGeometry[Tensor][g_], Einstein, Matrix, Physics, Physics conventions, Physics examples, Physics Updates, Tensors - a complete guide, Mini-Course Computer Algebra for Physicists, Ricci, Riemann, Setup, Typesetting, value, Weyl
Landau, L.D., and Lifshitz, E.M. The Classical Theory of Fields, Course of Theoretical Physics Volume 2, fourth revised English edition. Elsevier, 1975.
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.
The Physics[g_] command was updated in Maple 2019.
Download Help Document