Opened 6 years ago
Closed 5 years ago
#19092 closed enhancement (fixed)
Differentiable manifolds: tangent spaces
Reported by:  egourgoulhon  Owned by:  egourgoulhon 

Priority:  major  Milestone:  sage7.5 
Component:  geometry  Keywords:  differentiable manifold, tangent vector, tangent space 
Cc:  mbejger  Merged in:  
Authors:  Eric Gourgoulhon, Michal Bejger, Marco Mancini  Reviewers:  Travis Scrimshaw 
Report Upstream:  N/A  Work issues:  
Branch:  ff6eb09 (Commits, GitHub, GitLab)  Commit:  ff6eb09b4b0bc582e57f6190f022b91ca1af8835 
Dependencies:  #15916, #18843  Stopgaps: 
Description (last modified by )
This ticket implements tangent vectors and tangent spaces on differentiable manifolds. This is a followup of #18843 within the SageManifolds project (see the metaticket #18528 for an overview). As in #18843, the nondiscrete topological field K over which the differentiable manifold is defined is generic, although in most applications, K=R or K=C.
This ticket implements the following Python classes:
 the parent class
TangentSpace
for tangent spaces to a differentiable manifold  the element class
TangentVector
for tangent vectors to a differentiable manifold
It also implements
 the method
at()
in tensor field classes (introduced in #18843) to take the value of a given tensor field (in particular a vector field) at a given point; the methodat()
is implemented for vector frames and coframes as well.  the method
plot()
in classVectorField
, to get some graphical representations of vector fields  the methods
differential()
,differential_functions()
andjacobian_matrix()
to the classDiffMap
introduced in #18783 (differential of a map between differentiable manifolds at a given point).
Documentation:
The reference manual is produced by
sage docbuild reference/manifolds html
It can also be accessed online at http://sagemanifolds.obspm.fr/doc/19092/reference/manifolds/
More documentation (e.g. example worksheets) can be found here.
Change History (41)
comment:1 Changed 6 years ago by
 Type changed from PLEASE CHANGE to enhancement
comment:2 Changed 6 years ago by
 Commit changed from d5562a2bb8393824f5ec72b7e3a9c43990c8dbaf to 6a1fc978e26942ca6508ab74b79a5553f7f6b7e1
comment:3 Changed 6 years ago by
 Commit changed from 6a1fc978e26942ca6508ab74b79a5553f7f6b7e1 to 31d6789687c3970dae930836f0709c44097fe1e5
Branch pushed to git repo; I updated commit sha1. New commits:
31d6789  Add method plot() to class VectorField; full doctest coverage.

comment:4 Changed 6 years ago by
 Dependencies changed from #15916, #18100, #18843 to #15916, #18843
comment:5 Changed 6 years ago by
 Commit changed from 31d6789687c3970dae930836f0709c44097fe1e5 to 04360b0d35b30f1f574c6007c685fead4083871f
Branch pushed to git repo; I updated commit sha1. New commits:
04360b0  Major improvements in the documentation of diff. manifolds (tangent spaces part)

comment:6 Changed 6 years ago by
 Commit changed from 04360b0d35b30f1f574c6007c685fead4083871f to 513f5ba4d111c59f4eec3ff0ca9832b9355a84ca
Branch pushed to git repo; I updated commit sha1. New commits:
513f5ba  Improve TensorField.__eq__ (case with no open cover known)

comment:7 Changed 6 years ago by
 Commit changed from 513f5ba4d111c59f4eec3ff0ca9832b9355a84ca to e43e03bbbf7c0d90e7df0b4dc3b8767b793d6ab1
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
00c327d  Slight reorganization of the reference manual of topological manifolds (morphisms part)

f8d3f27  Merge #18725 into #18640

f2fef7b  Small improvements in the documentation of differentiable manifolds

8ab80d8  Improvement in simplify_sqrt_real(); minor modif. in documentation

2f231b6  Major improvements in the documentation of diff. manifolds (basic part)

f0ca2de  Merge #18783 into #18725

307e655  Major improvements in the documentation of diff. manifolds (tensor field part)

dc7f7a1  Improve TensorField.__eq__ (case with no open cover known)

4d6f21c  Merge #18843 into #18783

e43e03b  Merge #19092 into #18843

comment:8 Changed 6 years ago by
 Description modified (diff)
 Milestone changed from sage6.9 to sage6.10
 Status changed from new to needs_review
comment:9 Changed 6 years ago by
 Commit changed from e43e03bbbf7c0d90e7df0b4dc3b8767b793d6ab1 to 22923ab262da20f80aaf7bbda21a9dffcb7a4016
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
041a5d1  Adding padics to metric spaces and some cleanup.

bfa0cdf  One last doc tweak.

d13c368  Fixing doc of metric spaces.

2605c0b  Merge #18529 (Topological manifolds: basics) into #18175 (Implement categories for topological...)

6dec6d5  Implement topological manifolds (basics, #18529) on the new categories for manifolds (#18175)

3403978  Implement top. manifolds (scalar fields, #18640) on the new manifold categories (#18175)

b0521ef  Implement top. manifolds (morphisms, #18725) on the new manifold categories (#18175)

f643097  Implement diff. manifolds (basics, #18783) on the new manifold categories (#18175)

a527726  Implement diff. manifolds (tensor fields, #18843) on the new manifold categories (#18175)

22923ab  Implement diff. manifolds (tangent spaces, #19092) on the new manifold categories (#18175).

comment:10 Changed 6 years ago by
 Commit changed from 22923ab262da20f80aaf7bbda21a9dffcb7a4016 to 1bf77fddde974ea2faff88b84dad6707b71fcced
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
668bc26  Remove UniqueRepresentation, leaving only WithEqualityById, for topological manifold homsets

6518699  Introduce the attribute _field_type in class TopologicalManifold to check for real and complex manifolds.

22383e6  Check for real/complex manifold performed on base_field_type() instead of RR/CC

66f2c5a  Change function('f', x) to function('f')(x) to accomodate the deprecation warning introduced in #17447

a28ed04  Morphisms of topological manifolds with the use of base_field_type()

f31bed1  Remove UniqueRepresentation from differentiable manifolds

0ee4c41  Tensor fields on differentiable manifolds without unique representation

e8f11ff  Fix pickling test in tensor field modules.

a967787  Suppress direct call to _element_constructor_ in tensor field parent classes

1bf77fd  Tangent spaces on differentiable manifolds without unique representation

comment:11 Changed 6 years ago by
 Commit changed from 1bf77fddde974ea2faff88b84dad6707b71fcced to 98c603652a66489499acbe6734c19a395ec28b33
Branch pushed to git repo; I updated commit sha1. New commits:
d8397c1  Merge branch 'public/manifolds/top_manif_basics' of trac.sagemath.org:sage into public/manifolds/top_manif_basics

0b08b11  Some small tweaks as part of the review.

d3e5d4d  Revert to UniqueRepresentation for topological manifolds

2481359  Revert to UniqueRepresentation for ScalarFieldAlgebra; better ScalarField constructor

0cc06e8  Revert to UniqueRepresentation for topological manifold homsets

322d5bd  Revert to UniqueRepresentation for differentiable manifolds

45beae5  Revert to UniqueRepresentation for differentiable manifolds: tensor fields

98c6036  Revert to UniqueRepresentation for differentiable manifolds: tangent spaces

comment:12 Changed 6 years ago by
 Commit changed from 98c603652a66489499acbe6734c19a395ec28b33 to 347a9cc51c034f406b86af7f2af3ff69cd646de6
Branch pushed to git repo; I updated commit sha1. New commits:
85d03dc  Change the argument type to structure in Manifold

5251ef0  Remove method _test_pickling from class TopologicalManifoldPoint

f69c9ee  Fix doctest error in coord_func_symb.py due to #19312 (update to pynac0.5.2)

7889a5d  Change in simplify_sqrt_real to cope with the change of != operator induced by #19312 (Sage 6.10.beta7)

e8d2ba6  Differentiable manifolds: basics with the change in symbolic expression logic induced by #19312 (Sage 6.10.beta7)

0d68f86  Diff. manifolds: tensor fields, with the change in symbolic expression logic induced by #19312 (Sage 6.10.beta7)

347a9cc  Diff. manifolds: tangent spaces, with the change in symbolic expression logic induced by #19312 (Sage 6.10.beta7)

comment:13 Changed 6 years ago by
 Commit changed from 347a9cc51c034f406b86af7f2af3ff69cd646de6 to db99641f9960018d52749ce88f1b2f4ad406b03f
comment:14 Changed 6 years ago by
 Commit changed from db99641f9960018d52749ce88f1b2f4ad406b03f to b07ffd9ef872b5e8a69b4364b5e0132e0b909fbf
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
ce03503  Scalar fields on topological manifolds: slight improvements in the documentation

9d25aa0  Scalar field algebras with AbstractNamedObject without argument full_name

ed4aa58  ScalarFieldAlgebra does not longer inherit from AbstractNamedObject

bc77059  Morphisms on the refactored topoological manifolds

f6c6a34  Topological manifold morphisms with AbstractNamedObject without full_name

2df7af7  Refactorization of differentiable manifolds, with the mixin class DifferentiableMixin

7204572  Basics of diff. manifolds with AbstractNamedObject without full_name

ecfbf2c  Tensor fields on refactored differentiable manifolds

8b720a5  Tensor fields with AbstractNamedObject without full_name

b07ffd9  Tangent spaces on refactored differentiable manifolds

comment:15 Changed 6 years ago by
 Commit changed from b07ffd9ef872b5e8a69b4364b5e0132e0b909fbf to 9fa77c4a7c8b9b1359e82611bae88f76d1e8d098
Branch pushed to git repo; I updated commit sha1. New commits:
3cd03a4  Add methods lift() and retract() to ManifoldSubset; add method __eq__() in CoordChange

984c3c2  Revert to simple hierarchy for manifold classes

c01048f  Scalar fields with the simplified hierarchy for manifold classes

c866d6c  Morphisms of topological manifolds with the simplified hierarchy for manifold classes

0e04631  Basics of diff. manifolds with the simplified hierarchy for manifold classes

1f226bd  Tensor fields with the simplified hierarchy for manifold classes

9fa77c4  Tangent spaces with the simplified hierarchy for manifold classes

comment:16 Changed 6 years ago by
 Milestone changed from sage6.10 to sage7.0
comment:17 Changed 5 years ago by
 Commit changed from 9fa77c4a7c8b9b1359e82611bae88f76d1e8d098 to b47f55f7217579acf266da0cad2892f06b329b6b
Branch pushed to git repo; I updated commit sha1. New commits:
8e17d54  Merge into the latest version of #18529; improve treatment of composite functions in ExpressionNice

f00be00  Topological manifold morphisms: solved merge conflict with Sage 7.1.beta1

21b3968  Basics of diff. manifolds: solve merge conflict with Sage 7.1.beta1

8ba4b91  Tensor fields: solve merge conflict with Sage 7.1.beta1

2fad9db  Correct doctest in class DiffFormParal

b47f55f  Tangent spaces: solve merge conflict with Sage 7.1.beta1

comment:18 Changed 5 years ago by
comment:19 Changed 5 years ago by
 Commit changed from b47f55f7217579acf266da0cad2892f06b329b6b to 37521ae977dd99057c8a2ab358962c1e70c0dc0c
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
f11df50  Set CoordFunctionSymbRing in the category of commutative algebras over SR; minor documentation changes

f3f5470  Fixing a (essentially trivial) doctest failure.

7b3dab3  Merge branch 'public/manifolds/top_manif_scalar_fields' of git://trac.sagemath.org/sage into Sage 7.2.rc0

9ec7d3e  Python 3 format for print in manifolds

d190b37  Morphisms of topological manifolds with coordinate functions as algebra elements

2577fc5  Fixing a (essentially trivial) doctest failure.

7125e29  Python3 format for print in morphims of topological manifolds

bd2f35a  Diff. manifolds with coordinate functions as algebra elements

73b4a03  Tensor fields with with coordinate functions as algebra elements

37521ae  Tangent spaces with coordinate functions as algebra elements

comment:20 Changed 5 years ago by
 Milestone changed from sage7.0 to sage7.2
comment:21 Changed 5 years ago by
 Commit changed from 37521ae977dd99057c8a2ab358962c1e70c0dc0c to 159afb4152f0af6d3968b50fe497e92841e9c7fc
Branch pushed to git repo; I updated commit sha1. New commits:
4fad094  Merge branch 'public/manifolds/top_manif_morphisms' of trac.sagemath.org:sage into public/manifolds/top_manif_morphisms

cfecb18  Reviewer changes and tweaks for continuous maps ticket.

efcb618  Modify authorship for continuous maps.

84051b0  Merge branch 'public/manifolds/diff_manif_basics' of trac.sagemath.org:sage into public/manifolds/diff_manif_basics

97172dd  Basics of differentiable manifolds with changes in morphisms of topological manifolds

29832ec  Use @cached_method for VectorFieldModule.identity_map() and AutomorphismFieldGroup.one()

159afb4  Tangent spaces upon latest version of tensor fields

comment:22 Changed 5 years ago by
 Commit changed from 159afb4152f0af6d3968b50fe497e92841e9c7fc to 3b1b794176683401df9d98541f2e0b14c339f228
comment:23 Changed 5 years ago by
 Commit changed from 3b1b794176683401df9d98541f2e0b14c339f228 to c70792e68e1adcd7451080a567babb1d7f2438d9
Branch pushed to git repo; I updated commit sha1. New commits:
3ab0af0  Initial reviewer changes.

d7ad8e1  Merge branch 'public/manifolds/diff_manif_tensor_fields' of git://trac.sagemath.org/sage into sage 7.3.beta5

dcb08fc  Decrease doctest times in tensor fields; remove xder from the global namespace

c70792e  Update tangent spaces to the latest version of #18843 (vector fields)

comment:24 Changed 5 years ago by
 Milestone changed from sage7.2 to sage7.4
comment:25 Changed 5 years ago by
 Commit changed from c70792e68e1adcd7451080a567babb1d7f2438d9 to 98efa6658daefb2e9d00c674a4d2315bfac608d7
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
88295c6  Merge branch 'develop' into public/manifolds/diff_manif_tensor_fields

58f7fb9  Merge branch 'develop' into public/manifolds/diff_manif_tensor_fields

3e73095  Merge branch 'develop' into public/manifolds/diff_manif_tensor_fields

4955c3c  Final review of everything.

7cf4ff4  Merge branch 'public/manifolds/diff_manif_tensor_fields' of trac.sagemath.org:sage into public/manifolds/diff_manif_tensor_fields

58ae506  Merge branch 'public/manifolds/diff_manif_tensor_fields' of git://trac.sagemath.org/sage into Sage 7.4.beta6

8219403  Fix documentation error; change in TensorField comparison to zero

a841f79  Python 3 compatible syntax in tensor fields

5a5f400  Slight change in TensorField.__eq__ (comparison to zero)

98efa66  Update tangent spaces to the final version of the dependency ticket #18843

comment:26 Changed 5 years ago by
 Commit changed from 98efa6658daefb2e9d00c674a4d2315bfac608d7 to 8205dcac47cb6b3b9b8e3129503d34cea003292e
comment:27 Changed 5 years ago by
 Commit changed from 8205dcac47cb6b3b9b8e3129503d34cea003292e to 785300bff1bdd0c738a53032c34ad0cc65a8f031
comment:28 Changed 5 years ago by
 Commit changed from 785300bff1bdd0c738a53032c34ad0cc65a8f031 to 567b892cf756d4fafa2a123612f670158c929595
comment:29 followup: ↓ 33 Changed 5 years ago by
 Milestone changed from sage7.4 to sage7.5
 Reviewers set to Travis Scrimshaw
Okay, I've made it through this one. Mostly it is documentation format changes, but the exception:
For plotting, I used the @options
for scale
and max_range
as these seemed like something a user might want to not have to pass every single time (you change change their default with v.plot.options
). From the user perspective, nothing really changes unless you explicitly set said default value.
So if you agree with my changes, then you can set a positive review.
comment:30 Changed 5 years ago by
I'm handling rebasing #19124 as I'm starting my review of that now.
comment:31 Changed 5 years ago by
 Commit changed from 567b892cf756d4fafa2a123612f670158c929595 to 05f8cc7413cad8a9db04b925038f09e27a9e23f8
Branch pushed to git repo; I updated commit sha1. New commits:
05f8cc7  A little bit of extra cleanup.

comment:32 Changed 5 years ago by
 Commit changed from 05f8cc7413cad8a9db04b925038f09e27a9e23f8 to b4a4530d2b5ca8b43053bffe2511ce7f059b7d62
comment:33 in reply to: ↑ 29 ; followup: ↓ 34 Changed 5 years ago by
Thank you so much for the review!
In the first commit above (23eb9d8), I've corrected a doctest error and fixed some documentation issue revealed by the patchbot.
In the second commit (b4a4530), I've added sphinx directives to render the 3D plots in the documentation of VectorField.plot
(as well as in RealChart.plot
), on the same footing as what is now done in the "3D Graphics" section of the reference manual.
Thanks for the addition of @options
to VectorField.plot
; I've added color
to these options, to be consistent with what is done in RealChart.plot
. I've also added some documentation about the use of v.plot.options
.
A question: in the keyword arguments of VectorField.plot
, you have changed nb_values
to number_values
, but it is still nb_values
in RealChart.plot
. For consistency, both plot methods should use the same name. It seems that nb is not a standard English abbreviation for number, is it? (I find number_values
a little bit long, especially that we don't have the TAB completion to type the options).
comment:34 in reply to: ↑ 33 ; followup: ↓ 35 Changed 5 years ago by
Replying to egourgoulhon:
Thank you so much for the review!
Not a problem; sorry it took so long.
A question: in the keyword arguments of
VectorField.plot
, you have changednb_values
tonumber_values
, but it is stillnb_values
inRealChart.plot
. For consistency, both plot methods should use the same name. It seems that nb is not a standard English abbreviation for number, is it? (I findnumber_values
a little bit long, especially that we don't have the TAB completion to type the options).
Not to my knowledge. The standard abbreviation is "no." (with a period) but "num" has become standard (at least in the programming world), but IMO the verbosity is better. However, you can do tab completion for explicit arguments.
comment:35 in reply to: ↑ 34 Changed 5 years ago by
Replying to tscrim:
Not to my knowledge. The standard abbreviation is "no." (with a period) but "num" has become standard (at least in the programming world), but IMO the verbosity is better. However, you can do tab completion for explicit arguments.
OK, so let use number_values
everywhere. I am going to change it in RealChart.plot
.
comment:36 Changed 5 years ago by
Thanks.
comment:37 Changed 5 years ago by
 Commit changed from b4a4530d2b5ca8b43053bffe2511ce7f059b7d62 to ff6eb09b4b0bc582e57f6190f022b91ca1af8835
Branch pushed to git repo; I updated commit sha1. New commits:
ff6eb09  Name of argument 'nb_values' in RealChart.plot changed to 'number_values'.

comment:38 Changed 5 years ago by
Change nb_values
> number_values
done.
comment:39 followup: ↓ 40 Changed 5 years ago by
 Status changed from needs_review to positive_review
I'm sorry I missed that on the previous ticket. LGTM. Thank you.
comment:40 in reply to: ↑ 39 Changed 5 years ago by
Thanks for the review!
comment:41 Changed 5 years ago by
 Branch changed from public/manifolds/diff_manif_tangent_spaces to ff6eb09b4b0bc582e57f6190f022b91ca1af8835
 Resolution set to fixed
 Status changed from positive_review to closed
Branch pushed to git repo; I updated commit sha1. New commits:
Add method differential() to class DiffMap