Opened 5 years ago

Last modified 5 years ago

#24622 closed enhancement

Pseudo-Riemannian manifods — at Version 13

Reported by: Eric Gourgoulhon Owned by:
Priority: major Milestone: sage-8.2
Component: geometry Keywords: pseudo-Riemannian, Riemannian, manifold, gradient, divergence, Laplacian
Cc: Travis Scrimshaw Merged in:
Authors: Eric Gourgoulhon Reviewers:
Report Upstream: N/A Work issues:
Branch: public/manifolds/pseudoRiemannian (Commits, GitHub, GitLab) Commit: 8309fdd68066fd62b180f95be415f02ff2f7895e
Dependencies: Stopgaps:

Status badges

Description (last modified by Eric Gourgoulhon)

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.

Change History (13)

comment:1 Changed 5 years ago by Eric Gourgoulhon

Branch: public/manifolds/pseudoRiemannian
Commit: 06f8fd34981fb8b201134439a55ecf79f962a5c9

This is work in progress...


New commits:

8e1148cFirst version of pseudo-Riemannian manifold class
8e56cf3Pseudo-Riemannian manifolds constructed by the generic function Manifold
ce3a617Divergence of a tensor field + new section on pseudo-Riemannian manifolds in the reference manual
06f8fd3Add doctests for pseudo-Riemannian manifolds

comment:2 Changed 5 years ago by Eric Gourgoulhon

Description: modified (diff)

comment:3 Changed 5 years ago by Eric Gourgoulhon

Description: modified (diff)

comment:4 Changed 5 years ago by git

Commit: 06f8fd34981fb8b201134439a55ecf79f962a5c955f356c2ee79026349a821dccd409d0d5a76718c

Branch pushed to git repo; I updated commit sha1. New commits:

55f356cImprove documentation of pseudo-Riemannian manifolds

comment:5 Changed 5 years ago by git

Commit: 55f356c2ee79026349a821dccd409d0d5a76718c0fc661a5beaf076fdf67e0d4f45b546ed8e23e8e

Branch pushed to git repo; I updated commit sha1. New commits:

0fc661aRemove method set_metric and improve doc of pseudo-Riemannian manifolds

comment:6 Changed 5 years ago by git

Commit: 0fc661a5beaf076fdf67e0d4f45b546ed8e23e8eb4dddf74279a21aa9cc645f959c8cd6b513a8d48

Branch pushed to git repo; I updated commit sha1. New commits:

b4dddf7Add operators Laplacian, d'Alembertian and curl on pseudo-Riemannian manifolds

comment:7 Changed 5 years ago by git

Commit: b4dddf74279a21aa9cc645f959c8cd6b513a8d48040b01c35f3082b4788bdeefea9d28aa1f96d3bc

Branch pushed to git repo; I updated commit sha1. New commits:

040b01cAdd dot product and cross product of vector fields

comment:8 Changed 5 years ago by git

Commit: 040b01c35f3082b4788bdeefea9d28aa1f96d3bc46b8f66385cd1c34e5310d627a0e44983f87cc4a

Branch pushed to git repo; I updated commit sha1. New commits:

46b8f66Add norm of vector fields.

comment:9 Changed 5 years ago by Eric Gourgoulhon

Description: modified (diff)

comment:10 Changed 5 years ago by git

Commit: 46b8f66385cd1c34e5310d627a0e44983f87cc4a135af976131baf0d1551806a7be1be25ef0e06c0

Branch pushed to git repo; I updated commit sha1. New commits:

135af97Add method volume_form() to class PseudoRiemannianManifold

comment:11 Changed 5 years ago by git

Commit: 135af976131baf0d1551806a7be1be25ef0e06c038e8fd3d9ab08783ec58dc973b3fb5575a3b79a2

Branch pushed to git repo; I updated commit sha1. New commits:

38e8fd3Add global functions grad, div, curl, etc. for vector/tensor operators on pseudo-Riemannian manifolds

comment:12 Changed 5 years ago by git

Commit: 38e8fd3d9ab08783ec58dc973b3fb5575a3b79a28309fdd68066fd62b180f95be415f02ff2f7895e

Branch pushed to git repo; I updated commit sha1. New commits:

8309fddImprove documentation for operators on pseudo-Riemannian manifolds

comment:13 Changed 5 years ago by Eric Gourgoulhon

Description: modified (diff)
Note: See TracTickets for help on using tickets.