-
-
Notifications
You must be signed in to change notification settings - Fork 660
Description
This ticket implements pseudo-Riemannian manifolds, i.e. real differentiable manifolds equipped with a metric tensor. Important subcases are of course Riemannian manifolds and Lorentzian manifolds. Taking into account that pseudo-Riemannian metric tensors are already implemented in Sage (see here), this ticket introduces
- the parent class
PseudoRiemannianManifold
, as a subclass of the existing classDifferentiableManifold
, with the specific methodsmetric
andvolume_form
- new methods
gradient
,laplacian
anddalembertian
for scalar fields - new methods
divergence
,laplacian
anddalembertian
for tensor fields - new methods
curl
,dot_product
,cross_product
andnorm
for vector fields
For a greater generality, all these methods have an optional argument metric
; if it is omitted, the metric of the underlying pseudo-Riemannian manifold is assumed.
To match with the standard functional notation, functions grad
, div
, curl
, laplacian
and dalembertian
have been implemented in src/sage/manifolds/differentiable/operators.py
. Their role is simply to call the corresponding methods on their arguments. In order not to clutter the global namespace in a standard Sage session, these functions are imported only if some pseudo-Riemannian manifold is constructed, via the call to sage.repl.user_globals.set_global
in PseudoRiemannianManifold.__init__
.
Some vector calculus functionalities introduced by this ticket are
demonstrated in this Jupyter worksheet.
The follow-up ticket #24623 implements Euclidean spaces.
This work is part of the SageManifolds project, see #18528 for an overview.
CC: @tscrim
Component: geometry
Keywords: pseudo-Riemannian, Riemannian, gradient, divergence, Laplacian
Author: Eric Gourgoulhon
Branch/Commit: 185e438
Reviewer: Travis Scrimshaw, John Palmieri
Issue created by migration from https://trac.sagemath.org/ticket/24622