Opened 20 months ago

Closed 5 months ago

#19092 closed enhancement (fixed)

Differentiable manifolds: tangent spaces

Reported by: egourgoulhon Owned by: egourgoulhon
Priority: major Milestone: sage-7.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) Commit: ff6eb09b4b0bc582e57f6190f022b91ca1af8835
Dependencies: #15916, #18843 Stopgaps:

Description (last modified by egourgoulhon)

This ticket implements tangent vectors and tangent spaces on differentiable manifolds. This is a follow-up of #18843 within the SageManifolds project (see the metaticket #18528 for an overview). As in #18843, the non-discrete 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 method at() is implemented for vector frames and coframes as well.
  • the method plot() in class VectorField, to get some graphical representations of vector fields
  • the methods differential(), differential_functions() and jacobian_matrix() to the class DiffMap 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 20 months ago by egourgoulhon

  • Type changed from PLEASE CHANGE to enhancement

comment:2 Changed 20 months ago by git

  • Commit changed from d5562a2bb8393824f5ec72b7e3a9c43990c8dbaf to 6a1fc978e26942ca6508ab74b79a5553f7f6b7e1

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

6a1fc97Add method differential() to class DiffMap

comment:3 Changed 20 months ago by git

  • Commit changed from 6a1fc978e26942ca6508ab74b79a5553f7f6b7e1 to 31d6789687c3970dae930836f0709c44097fe1e5

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

31d6789Add method plot() to class VectorField; full doctest coverage.

comment:4 Changed 20 months ago by egourgoulhon

  • Dependencies changed from #15916, #18100, #18843 to #15916, #18843

comment:5 Changed 19 months ago by git

  • Commit changed from 31d6789687c3970dae930836f0709c44097fe1e5 to 04360b0d35b30f1f574c6007c685fead4083871f

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

04360b0Major improvements in the documentation of diff. manifolds (tangent spaces part)

comment:6 Changed 19 months ago by git

  • Commit changed from 04360b0d35b30f1f574c6007c685fead4083871f to 513f5ba4d111c59f4eec3ff0ca9832b9355a84ca

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

513f5baImprove TensorField.__eq__ (case with no open cover known)

comment:7 Changed 19 months ago by git

  • Commit changed from 513f5ba4d111c59f4eec3ff0ca9832b9355a84ca to e43e03bbbf7c0d90e7df0b4dc3b8767b793d6ab1

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

00c327dSlight reorganization of the reference manual of topological manifolds (morphisms part)
f8d3f27Merge #18725 into #18640
f2fef7bSmall improvements in the documentation of differentiable manifolds
8ab80d8Improvement in simplify_sqrt_real(); minor modif. in documentation
2f231b6Major improvements in the documentation of diff. manifolds (basic part)
f0ca2deMerge #18783 into #18725
307e655Major improvements in the documentation of diff. manifolds (tensor field part)
dc7f7a1Improve TensorField.__eq__ (case with no open cover known)
4d6f21cMerge #18843 into #18783
e43e03bMerge #19092 into #18843

comment:8 Changed 19 months ago by egourgoulhon

  • Description modified (diff)
  • Milestone changed from sage-6.9 to sage-6.10
  • Status changed from new to needs_review

comment:9 Changed 18 months ago by git

  • Commit changed from e43e03bbbf7c0d90e7df0b4dc3b8767b793d6ab1 to 22923ab262da20f80aaf7bbda21a9dffcb7a4016

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

041a5d1Adding p-adics to metric spaces and some cleanup.
bfa0cdfOne last doc tweak.
d13c368Fixing doc of metric spaces.
2605c0bMerge #18529 (Topological manifolds: basics) into #18175 (Implement categories for topological...)
6dec6d5Implement topological manifolds (basics, #18529) on the new categories for manifolds (#18175)
3403978Implement top. manifolds (scalar fields, #18640) on the new manifold categories (#18175)
b0521efImplement top. manifolds (morphisms, #18725) on the new manifold categories (#18175)
f643097Implement diff. manifolds (basics, #18783) on the new manifold categories (#18175)
a527726Implement diff. manifolds (tensor fields, #18843) on the new manifold categories (#18175)
22923abImplement diff. manifolds (tangent spaces, #19092) on the new manifold categories (#18175).

comment:10 Changed 17 months ago by git

  • Commit changed from 22923ab262da20f80aaf7bbda21a9dffcb7a4016 to 1bf77fddde974ea2faff88b84dad6707b71fcced

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

668bc26Remove UniqueRepresentation, leaving only WithEqualityById, for topological manifold homsets
6518699Introduce the attribute _field_type in class TopologicalManifold to check for real and complex manifolds.
22383e6Check for real/complex manifold performed on base_field_type() instead of RR/CC
66f2c5aChange function('f', x) to function('f')(x) to accomodate the deprecation warning introduced in #17447
a28ed04Morphisms of topological manifolds with the use of base_field_type()
f31bed1Remove UniqueRepresentation from differentiable manifolds
0ee4c41Tensor fields on differentiable manifolds without unique representation
e8f11ffFix pickling test in tensor field modules.
a967787Suppress direct call to _element_constructor_ in tensor field parent classes
1bf77fdTangent spaces on differentiable manifolds without unique representation

comment:11 Changed 17 months ago by git

  • Commit changed from 1bf77fddde974ea2faff88b84dad6707b71fcced to 98c603652a66489499acbe6734c19a395ec28b33

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

d8397c1Merge branch 'public/manifolds/top_manif_basics' of trac.sagemath.org:sage into public/manifolds/top_manif_basics
0b08b11Some small tweaks as part of the review.
d3e5d4dRevert to UniqueRepresentation for topological manifolds
2481359Revert to UniqueRepresentation for ScalarFieldAlgebra; better ScalarField constructor
0cc06e8Revert to UniqueRepresentation for topological manifold homsets
322d5bdRevert to UniqueRepresentation for differentiable manifolds
45beae5Revert to UniqueRepresentation for differentiable manifolds: tensor fields
98c6036Revert to UniqueRepresentation for differentiable manifolds: tangent spaces

comment:12 Changed 17 months ago by git

  • Commit changed from 98c603652a66489499acbe6734c19a395ec28b33 to 347a9cc51c034f406b86af7f2af3ff69cd646de6

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

85d03dcChange the argument type to structure in Manifold
5251ef0Remove method _test_pickling from class TopologicalManifoldPoint
f69c9eeFix doctest error in coord_func_symb.py due to #19312 (update to pynac-0.5.2)
7889a5dChange in simplify_sqrt_real to cope with the change of != operator induced by #19312 (Sage 6.10.beta7)
e8d2ba6Differentiable manifolds: basics with the change in symbolic expression logic induced by #19312 (Sage 6.10.beta7)
0d68f86Diff. manifolds: tensor fields, with the change in symbolic expression logic induced by #19312 (Sage 6.10.beta7)
347a9ccDiff. manifolds: tangent spaces, with the change in symbolic expression logic induced by #19312 (Sage 6.10.beta7)

comment:13 Changed 16 months ago by git

  • Commit changed from 347a9cc51c034f406b86af7f2af3ff69cd646de6 to db99641f9960018d52749ce88f1b2f4ad406b03f

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

1c1fcccParallel plot for Manifold: only 2D. Flat parallelization.
9b87ff1Vectorfields : plot parallelization improvement and bug corrction.
db99641Parallel plotting vectorfield: added example

comment:14 Changed 16 months ago by git

  • Commit changed from db99641f9960018d52749ce88f1b2f4ad406b03f to b07ffd9ef872b5e8a69b4364b5e0132e0b909fbf

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

ce03503Scalar fields on topological manifolds: slight improvements in the documentation
9d25aa0Scalar field algebras with AbstractNamedObject without argument full_name
ed4aa58ScalarFieldAlgebra does not longer inherit from AbstractNamedObject
bc77059Morphisms on the refactored topoological manifolds
f6c6a34Topological manifold morphisms with AbstractNamedObject without full_name
2df7af7Refactorization of differentiable manifolds, with the mixin class DifferentiableMixin
7204572Basics of diff. manifolds with AbstractNamedObject without full_name
ecfbf2cTensor fields on refactored differentiable manifolds
8b720a5Tensor fields with AbstractNamedObject without full_name
b07ffd9Tangent spaces on refactored differentiable manifolds

comment:15 Changed 16 months ago by git

  • Commit changed from b07ffd9ef872b5e8a69b4364b5e0132e0b909fbf to 9fa77c4a7c8b9b1359e82611bae88f76d1e8d098

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

3cd03a4Add methods lift() and retract() to ManifoldSubset; add method __eq__() in CoordChange
984c3c2Revert to simple hierarchy for manifold classes
c01048fScalar fields with the simplified hierarchy for manifold classes
c866d6cMorphisms of topological manifolds with the simplified hierarchy for manifold classes
0e04631Basics of diff. manifolds with the simplified hierarchy for manifold classes
1f226bdTensor fields with the simplified hierarchy for manifold classes
9fa77c4Tangent spaces with the simplified hierarchy for manifold classes

comment:16 Changed 16 months ago by egourgoulhon

  • Milestone changed from sage-6.10 to sage-7.0

comment:17 Changed 15 months ago by git

  • Commit changed from 9fa77c4a7c8b9b1359e82611bae88f76d1e8d098 to b47f55f7217579acf266da0cad2892f06b329b6b

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

8e17d54Merge into the latest version of #18529; improve treatment of composite functions in ExpressionNice
f00be00Topological manifold morphisms: solved merge conflict with Sage 7.1.beta1
21b3968Basics of diff. manifolds: solve merge conflict with Sage 7.1.beta1
8ba4b91Tensor fields: solve merge conflict with Sage 7.1.beta1
2fad9dbCorrect doctest in class DiffFormParal
b47f55fTangent spaces: solve merge conflict with Sage 7.1.beta1

comment:18 Changed 15 months ago by egourgoulhon

  • Authors changed from Eric Gourgoulhon, Michal Bejger to Eric Gourgoulhon, Michal Bejger, Marco Mancini

comment:19 Changed 12 months ago by git

  • Commit changed from b47f55f7217579acf266da0cad2892f06b329b6b to 37521ae977dd99057c8a2ab358962c1e70c0dc0c

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

f11df50Set CoordFunctionSymbRing in the category of commutative algebras over SR; minor documentation changes
f3f5470Fixing a (essentially trivial) doctest failure.
7b3dab3Merge branch 'public/manifolds/top_manif_scalar_fields' of git://trac.sagemath.org/sage into Sage 7.2.rc0
9ec7d3ePython 3 format for print in manifolds
d190b37Morphisms of topological manifolds with coordinate functions as algebra elements
2577fc5Fixing a (essentially trivial) doctest failure.
7125e29Python3 format for print in morphims of topological manifolds
bd2f35aDiff. manifolds with coordinate functions as algebra elements
73b4a03Tensor fields with with coordinate functions as algebra elements
37521aeTangent spaces with coordinate functions as algebra elements

comment:20 Changed 12 months ago by egourgoulhon

  • Milestone changed from sage-7.0 to sage-7.2

comment:21 Changed 12 months ago by git

  • Commit changed from 37521ae977dd99057c8a2ab358962c1e70c0dc0c to 159afb4152f0af6d3968b50fe497e92841e9c7fc

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

4fad094Merge branch 'public/manifolds/top_manif_morphisms' of trac.sagemath.org:sage into public/manifolds/top_manif_morphisms
cfecb18Reviewer changes and tweaks for continuous maps ticket.
efcb618Modify authorship for continuous maps.
84051b0Merge branch 'public/manifolds/diff_manif_basics' of trac.sagemath.org:sage into public/manifolds/diff_manif_basics
97172ddBasics of differentiable manifolds with changes in morphisms of topological manifolds
29832ecUse @cached_method for VectorFieldModule.identity_map() and AutomorphismFieldGroup.one()
159afb4Tangent spaces upon latest version of tensor fields

comment:22 Changed 10 months ago by git

  • Commit changed from 159afb4152f0af6d3968b50fe497e92841e9c7fc to 3b1b794176683401df9d98541f2e0b14c339f228

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

2150a43Correct doctests in vector fields after the merge of #20770 in sage 7.3.beta3
3b1b794Fix doctests in tangent spaces after the merge of #20770 in sage 7.3.beta3

comment:23 Changed 8 months ago by git

  • Commit changed from 3b1b794176683401df9d98541f2e0b14c339f228 to c70792e68e1adcd7451080a567babb1d7f2438d9

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

3ab0af0Initial reviewer changes.
d7ad8e1Merge branch 'public/manifolds/diff_manif_tensor_fields' of git://trac.sagemath.org/sage into sage 7.3.beta5
dcb08fcDecrease doctest times in tensor fields; remove xder from the global namespace
c70792eUpdate tangent spaces to the latest version of #18843 (vector fields)

comment:24 Changed 8 months ago by egourgoulhon

  • Milestone changed from sage-7.2 to sage-7.4

comment:25 Changed 7 months ago by git

  • Commit changed from c70792e68e1adcd7451080a567babb1d7f2438d9 to 98efa6658daefb2e9d00c674a4d2315bfac608d7

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

88295c6Merge branch 'develop' into public/manifolds/diff_manif_tensor_fields
58f7fb9Merge branch 'develop' into public/manifolds/diff_manif_tensor_fields
3e73095Merge branch 'develop' into public/manifolds/diff_manif_tensor_fields
4955c3cFinal review of everything.
7cf4ff4Merge branch 'public/manifolds/diff_manif_tensor_fields' of trac.sagemath.org:sage into public/manifolds/diff_manif_tensor_fields
58ae506Merge branch 'public/manifolds/diff_manif_tensor_fields' of git://trac.sagemath.org/sage into Sage 7.4.beta6
8219403Fix documentation error; change in TensorField comparison to zero
a841f79Python 3 compatible syntax in tensor fields
5a5f400Slight change in TensorField.__eq__ (comparison to zero)
98efa66Update tangent spaces to the final version of the dependency ticket #18843

comment:26 Changed 7 months ago by git

  • Commit changed from 98efa6658daefb2e9d00c674a4d2315bfac608d7 to 8205dcac47cb6b3b9b8e3129503d34cea003292e

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

8860387Add missing reference Lee13
8205dcaUpdate tangent spaces to the last change (adding a missing reference) in the dependency ticket #18843

comment:27 Changed 6 months ago by git

  • Commit changed from 8205dcac47cb6b3b9b8e3129503d34cea003292e to 785300bff1bdd0c738a53032c34ad0cc65a8f031

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

fb7f4ddBibliographic references for tensor fields moved to the master file
785300bBibliographic references for tangent spaces moved to the master file created by #21454

comment:28 Changed 5 months ago by git

  • Commit changed from 785300bff1bdd0c738a53032c34ad0cc65a8f031 to 567b892cf756d4fafa2a123612f670158c929595

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

4ce1118Merge branch 'public/manifolds/diff_manif_tangent_spaces' of git://trac.sagemath.org/sage into public/manifolds/diff_manif_tangent_spaces
567b892Doing some reviewer changes for #19092.

comment:29 follow-up: Changed 5 months ago by tscrim

  • Milestone changed from sage-7.4 to sage-7.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 months ago by tscrim

I'm handling rebasing #19124 as I'm starting my review of that now.

comment:31 Changed 5 months ago by git

  • Commit changed from 567b892cf756d4fafa2a123612f670158c929595 to 05f8cc7413cad8a9db04b925038f09e27a9e23f8

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

05f8cc7A little bit of extra cleanup.

comment:32 Changed 5 months ago by git

  • Commit changed from 05f8cc7413cad8a9db04b925038f09e27a9e23f8 to b4a4530d2b5ca8b43053bffe2511ce7f059b7d62

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

23eb9d8Correct doctest and documentation in tangent spaces
b4a4530Use sphinx_plot for 3D plots in the documentation of charts and vector fields

comment:33 in reply to: ↑ 29 ; follow-up: Changed 5 months ago by egourgoulhon

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 ; follow-up: Changed 5 months ago by tscrim

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 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).

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 months ago by egourgoulhon

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 months ago by tscrim

Thanks.

comment:37 Changed 5 months ago by git

  • Commit changed from b4a4530d2b5ca8b43053bffe2511ce7f059b7d62 to ff6eb09b4b0bc582e57f6190f022b91ca1af8835

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

ff6eb09Name of argument 'nb_values' in RealChart.plot changed to 'number_values'.

comment:38 Changed 5 months ago by egourgoulhon

Change nb_values --> number_values done.

comment:39 follow-up: Changed 5 months ago by tscrim

  • 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 months ago by egourgoulhon

Thanks for the review!

comment:41 Changed 5 months ago by vbraun

  • Branch changed from public/manifolds/diff_manif_tangent_spaces to ff6eb09b4b0bc582e57f6190f022b91ca1af8835
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.