SageManifolds (following styling of SageMath) is an extension fully integrated into SageMath, to be used as a package for differential geometry and tensor calculus. The official page for the project is sagemanifolds.obspm.fr. It can be used on CoCalc.
SageManifolds deals with differentiable manifolds of arbitrary dimension. The basic objects are tensor fields and not tensor components in a given vector frame or coordinate chart. In other words, various charts and frames can be introduced on the manifold and a given tensor field can have representations in each of them.
An important class of treated manifolds is that of pseudoRiemannian manifolds, among which Riemannian manifolds and Lorentzian manifolds, with applications to General Relativity. In particular, SageManifolds implements the computation of the Riemann curvature tensor and associated objects (Ricci tensor, Weyl tensor). SageManifolds can also deal with generic affine connections, not necessarily LeviCivita ones.
Functionalities
Version 
Date 
Description (From Changelog) 
0.1 
7 July 2013 
First released 
0.2 
12 September 2013 
Defined six classes, and "many doctests changed to comply with Sage 5.11. New methods in each class. 
0.3 
24 November 2013 
Development repository moved from svn to git. New example worksheets. More classes and methods (some inherited from Sage). 
0.4 
10 February 2014 
New classes, members, and methods. 
0.5 
12 July 2014 
This is a major release, involving the introduction of algebraic structures to describe tensor fields, namely modules over the algebra of scalar fields, among which free modules of finite rank. This is achieved via Sage Parent /Element scheme and coercion model. 
0.6 
28 September 2014 
 Graphical output for charts (method
Chart.plot() ) and points (method Point.plot() ); here are some examples.
 Introduction of index notation to denote tensor contractions and tensor symmetrizations (new class
TensorWithIndices ); see these links: 1, 2.
 The argument of methods
symmetrize() and antisymmetrize() in tensor classes is now directly a sequence of index positions (and no longer a single list/tuple encapsulating such a sequence).
 Method
self_contract() of tensor classes renamed trace() .
 The code for tensor contractions has been optimized; moreover multiple tensor contractions are now allowed.
 The documentation (reference manuals 4 and 5) has been improved.

0.7 
12 March 2015 
For the end user, new features are
 the introduction of curves in manifolds (with some plotting capabilities)
 improvements in differential mappings between manifolds, including mapping composition and mapping differential
 the introduction of homomorphisms between free modules

0.8 
16 May 2015 
Changes for the end user:
 Plot of vector fields: new method
VectorField.plot()
 Possibility of parallelizing heavy computations: parallelization is implemented for basic tensor calculus (arithmetics, contractions) and for calculus regarding affine connections (connection coefficients, action on a tensor field, Riemann curvature tensor)
 Nice display of partial derivatives
 Standard math functions exp, cos, sin, etc. on scalar fields
 Display of tensor components as a list, one per line: new methods
TensorField.display_comp() and FreeModuleTensor.display_comp()
 Nice display of connection coefficients: new method
AffConnection.display()
 Nice display of Christoffel symbols: new method
Metric.christoffel_symbols_display()
 Nice display of chart transition maps: new method
CoordChange.display()

0.9 
10 December 2015 
This is a major release, resulting from an important refactoring of the code, in view of a full integration of SageManifolds into SageMath (cf. the metaticket #18528 on the SageMath developer trac). The major changes are
 Topological properties have been separated from differential ones, by implementing topological manifolds (new class
TopologicalManifold ) and making the class for differentiable manifolds (DifferentiableManifold ) inherit from TopologicalManifold .
 The base field over which manifolds are defined is no longer assumed to be the real field: it can be any topological field (nondiscrete to define differentiability for diff. manifolds). This allows to define easily complex manifolds, by setting the field to C.
 The class
ManifoldOpenSubset has been suppressed: open subsets of manifolds are now instances of TopologicalManifold or DifferentiableManifold (since an open subset of a top/diff manifold is a top/diff manifold by itself)
 Functions defined on a coordinate patch are no longer necessarily symbolic functions of the coordinates: they now pertain to the generic class
CoordFunction , symbolic functions being described by a subclass of it (CoordFunctionSymb ). This opens the way for "numerical" manifolds, like spacetimes generated by numerical relativity codes.
 Better parallelization, governed by the new singleton class
Parallelism and the global function use_multiproc .

0.9.1 
19 September 2016 
*The full change is now listed for the Wikipedia (this) page*
This release propagates further code changes related to the integration of SageManifolds into SageMath (cf. the metaticket#18528); it also adds a few new functionalities.
New functionalities:
 Computation of the Schouten tensor, the Cotton conformal tensor and the CottonYork conformal tensor associated to a given pseudoRiemannian metric
 Add structure of Lie algebroid to modules of vector fields (classes
VectorFieldModule and VectorFieldFreeModule ): new method VectorField.bracket
 Parallelization of vector field plots
 Parallelization of arithmetics of fully antisymmetric tensor components
 Improved rendering of variables in partial derivatives, using LaTeX display of symbols (class
ExpressionNice )
 Add comparison operator for transition maps (class
CoordChange )
 Add list functionalities for bases (methods
__len__ and __iter__ in classes FreeModuleBasis and FreeModuleCoBasis )
Syntactic changes:
 Method
CoordChange.set_inverse : replace the keyword check by verbose , the default being now verbose=False
 Introduction of
Manifold.options to control the display of mathematical expressions instead of the global functions nice_derivatives and omit_function_args , which have been suppressed
 Function
set_axes_labels (to set labels on 3D plots) no longer imported at the startup time; if required, one has to type from sage.manifolds.utilities import set_axes_labels
 Function
xder (exterior derivative) no longer imported at the startup time; if required, one has to type from sage.manifolds.utilities import xder
 Class
DiffForm : method exterior_der renamed exterior_derivative
 Classes
DiffScalarField , TensorField and TensorFieldParal : method lie_der renamed lie_derivative , with lie_der kept as an alias of the latter
More internal changes:
 Manifold structure now described via specific singleton classes:
TopologicalStructure , RealTopologicalStructure , DifferentialStructure and RealDifferentialStructure
 Class
TopologicalManifoldSubset renamed ManifoldSubset
 Class
TopologicalManifoldPoint renamed ManifoldPoint
 Manifold subsets are no longer facade parents
 Class
ManifoldSubset : new methods lift and retract
 Introduction of the commutative algebra of all symbolic coordinate functions on a given chart: new class
CoordFunctionSymbRing and class CoordFunction now inheritates from AlgebraElement
 Class
FiniteRankFreeModule : category changed from Modules(ring) to Modules(ring).FiniteDimensional()
 Some changes to prepare the migration to Python 3 (e.g.
print replaced by print() )

1.0 
11 January 2017 
Besides the full integration in SageMath 7.5, there are only minor changes with respect to v0.9.1:
Syntactic changes:
 Method
plot of classes RealChart and VectorField : keyword argument nb_values renamed number_values
 Method
structure_coef of class VectorFrame renamed structure_coeff
 Class
OpenInterval : argument subinterval_of renamed ambient in the constructor
 Class
RealLine : LateX name changed from \RR to \Bold{R}
Internal changes:
 Systematic use of Python3compatible syntax (to prepare the migration of SageMath to Python3); in particular:
 All occurrences of
iteritems() changed to items()
 All occurrences of
itervalues() changed to values()
 Classes
ScalarField and TensorField : method __nonzero__ renamed __bool__
 Class
TensorField : method __div__ renamed __truediv__
 Classes
TensorFieldModule , VectorFieldModule and DiffFormModule : add cached method zero
 Classes
DiffForm and DiffFormParal : method exterior_derivative is cached (via the decorator @cached_method )
 Class
VectorFrame : method structure_coeff is cached (via the decorator @cached_method )
Other changes:
 Improvements in the documentation; in particular 3D graphics have been added to the reference manual for illustrating the use of some
plot methods
 Values set by the user to some keyword arguments of
plot methods become the new default values until further explicit change (this behavior is provided by the decorator @options ):
TangentVector.plot : argument scale
VectorField.plot : arguments max_range , scale and color
DifferentiableCurve.plot : arguments thickness , plot_points , max_range and aspect_ratio

1.0.1 
25 March 2017 

1.0.2 
21 July 2017 

1.1 
7 December 2017 

More documentation is on doc.sagemath.org/html/en/reference/manifolds/.
Free & Open Software
As SageMath is, SageManifolds is a free and open source software based on the Python programming language. It is released under the GNU General Public License. To download and install SageManifolds, see here. It is more specifically GPL v2+ (meaning that a user may elect to use a licence higher than GPL version 2.)
Development
Much of the source is on tickets at trac.sagemath.org.
There are Github repositories at github.com/sagemanifolds/SageManifolds.
Other links are provided at sagemanifolds.obspm.fr/contact.html.
Mathematics Encyclopedia
Hellenica World  Scientific Library
Retrieved from "http://en.wikipedia.org/"
All text is available under the terms of the GNU Free Documentation License