Opened 3 years ago

Last modified 3 years ago

#28716 closed enhancement

Construction of a vector frame from a family of vector fields — at Initial Version

Reported by: egourgoulhon Owned by:
Priority: major Milestone: sage-9.0
Component: geometry Keywords: manifolds, vector_frame
Cc: tscrim Merged in:
Authors: Eric Gourgoulhon Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges


This ticket introduces the keyword argument from_family to DifferentiableManifold.vector_frame() to allow for constructing a vector frame from a spanning family of linearly independent vector fields:

sage: M = Manifold(2, 'M')
sage: X.<x,y> = M.chart()
sage: e0 = M.vector_field(1+x^2, 1+y^2)
sage: e1 = M.vector_field(2, -x*y)
sage: e = M.vector_frame('e', from_family=(e0, e1)); e
Vector frame (M, (e_0,e_1))
sage: e[0].display()
e_0 = (x^2 + 1) d/dx + (y^2 + 1) d/dy
sage: e[1].display()
e_1 = 2 d/dx - x*y d/dy
sage: (e[0], e[1]) == (e0, e1)

Previously, the only way to introduce the vector frame e was to first introduce an automorphism relating the frame (d/dx, d/dy) to (e0, e1) and to pass this automorphism to VectorFrame.new_frame():

sage: aut = M.automorphism_field()
sage: aut[:] = [[e0[0], e1[0]], [e0[1], e1[1]]]
sage: e = X.frame().new_frame(aut, 'e')

The introduction of from_family in vector_frame() simplifies this process.

Implementation details: such functionality already existed for bases of finite rank free modules; the relevant code is extracted from the method FiniteRankFreeModule.basis() and put into the new method FreeModuleBasis._init_from_family(), in order to be used in DifferentiableManifold.vector_frame() as well.

Change History (0)

Note: See TracTickets for help on using tickets.