Skip to content

Pseudo-Riemannian manifods #24622

@egourgoulhon

Description

@egourgoulhon

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 class DifferentiableManifold, with the specific methods metric and volume_form
  • new methods gradient, laplacian and dalembertian for scalar fields
  • new methods divergence, laplacian and dalembertian for tensor fields
  • new methods curl, dot_product, cross_product and norm 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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions