id summary reporter owner description type status priority milestone component resolution keywords cc merged author reviewer upstream work_issues branch commit dependencies stopgaps
24792 More functionalities for bases of free modules and vector frames egourgoulhon "This ticket provides more flexibility in the choice of symbols and indices for [http://doc.sagemath.org/html/en/reference/tensor_free_modules/sage/tensor/modules/free_module_basis.html bases of free modules of finite rank] and, consequently, for [http://doc.sagemath.org/html/en/reference/manifolds/sage/manifolds/differentiable/vectorframe.html vector frames on manifolds].
In particular, the labels of the basis elements are no longer necessarily integers and can be customized, for instance:
{{{
sage: M = Manifold(3, 'M')
sage: e = M.vector_frame('e', indices=('x', 'y', 'z')); e
Vector frame (M, (e_x,e_y,e_z))
}}}
The symbol of each element of the basis can also be freely chosen, by providing a tuple of symbols instead of a single string; it is then mandatory to specify as well some symbols for the dual coframe:
{{{
sage: e = M.vector_frame(('a', 'b', 'c'), symbol_dual=('A', 'B', 'C')); e
Vector frame (M, (a,b,c))
sage: e[0]
Vector field a on the 3-dimensional differentiable manifold M
sage: e.coframe()
Coframe (M, (A,B,C))
sage: e.coframe()[0]
1-form A on the 3-dimensional differentiable manifold M
}}}
Besides, the slice operator is introduced for bases; it is now possible to write
{{{
sage: e[:]
(Vector field a on the 3-dimensional differentiable manifold M,
Vector field b on the 3-dimensional differentiable manifold M,
Vector field c on the 3-dimensional differentiable manifold M)
}}}
Internally, some refactoring of code has been performed. In particular, by renaming the `FreeModuleCoBasis`'s attribute `_form` (the tuple containing the cobasis elements) to `_vec`, so that it matches the name of the `FreeModuleBasis`'s attribute storing the basis elements, it has been possible to factor the method ` __getitem__` to the ABC `Basis_abstract`. Another improvement is getting rid of all methods `_init_dual_basis` in classes `FreeModuleBasis`, `VectorFrame` and `CoordFrame` thanks to the introduction of the class attribute `_cobasis_class`.
The functionalities introduced here provide a better user interface for #24623.
This work is part of the [http://sagemanifolds.obspm.fr/ SageManifolds project], see #18528 for an overview." enhancement closed major sage-8.2 geometry fixed basis, vector frame, manifold, free moduie tscrim Eric Gourgoulhon Travis Scrimshaw N/A da06d12a8e041c9ee6c5f4c12a906d22bcdb02c7 da06d12a8e041c9ee6c5f4c12a906d22bcdb02c7