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:
A full
(n, n)
Sympy Matrix representing a general metric \(g_{\mu\nu}\).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
orMutableDenseNDimArray
) – 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:
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))