differential_geometry.symbolic.compute_metric_density#

differential_geometry.symbolic.compute_metric_density(metric: ImmutableDenseMatrix | MutableDenseMatrix | ImmutableDenseNDimArray | MutableDenseNDimArray) Basic[source]#

Compute the metric density function \(\sqrt{\det(g)}\).

This function supports two forms of the metric:

  1. A full (n, n) Sympy Matrix representing a general metric \(g_{\mu\nu}\).

  2. A 1D Sympy Array representing the diagonal entries of an orthogonal metric, i.e. \(g_{\mu\mu}\) with no off-diagonal terms.

Parameters:

metric (MutableDenseMatrix or MutableDenseNDimArray) – The metric to invert. If the metric is provided as a full matrix, it will be returned as a full matrix. If it is provided as a single array (1D), it is assumed to be a diagonal metric and the returned inverse is also diagnonal and returned as an array.

Returns:

The metric density, \(\sqrt{\det(g)}\).

Return type:

Basic

See also

invert_metric

Invert a general or orthogonal metric

compute_Dterm

Compute geometric D-terms

compute_Lterm

Compute geometric L-terms

Examples

Full (n x n) metric for spherical coordinates:

>>> import sympy as sp
>>> from pymetric.differential_geometry.symbolic import compute_metric_density

>>> r = sp.Symbol('r', positive=True)
>>> theta = sp.Symbol('theta', positive=True)
>>> metric_full = sp.Matrix([
...     [1, 0, 0],
...     [0, r**2, 0],
...     [0, 0, (r*sp.sin(theta))**2]
... ])
>>> compute_metric_density(metric_full)
r**2*Abs(sin(theta))

Orthogonal diagonal metric as a 1D array:

>>> import sympy as sp
>>> from pymetric.differential_geometry.symbolic import compute_metric_density

>>> r = sp.Symbol('r', positive=True)
>>> theta = sp.Symbol('theta', positive=True)
>>> # For the same spherical metric, but only diagonal entries:
>>> metric_diag = sp.Array([1, r**2, (r*sp.sin(theta))**2])
>>> compute_metric_density(metric_diag)
r**2*Abs(sin(theta))