The theory of natural bundles provides a convienent framework to specify geometric data on manifolds.
A natural bundle is a frame bundle over a manifold M with an action by the diffeomorphism group M.
The frame bundle and bundles associated to the frame bundle are natural.
Thus, on abstract grounds, things like orientation, vector fields, diff forms, metrics, symplectic forms etc are all examples of sections of natural bundles.
In this ticket, we introduce the class NaturalLocalData which represents the data that is needed to encode local sections of natural bundles.
This concept is illustrated and applied to specify orientations of manifolds as assigning +1 or -1 to a vector frame.
The implementation uses the following results about natural bundles:
- Every natural bundle
E is (under sufficiently general assumptions) an associated bundle of a jet-prolongation L^r M of the frame bundle LM. That is, E = L^r M \times_{\rho} V where \rho is an action of the jet-prolongation of GL on the manifold V.
- Every (local) diffeomorhpism of
M lifts to a bundle automorphism by taking its jet.
- A frame is a local trivialization of the frame bundle, and thus yields a natural trivialization of
E.
- In this local trivialization, a section of
E is just a V-valued function.
- Conversely, a collection of local
V-valued functions defines a section of E iff they transform correctly under the action of diffeomorphisms.
In other words, a section of E is specified by assigning to a frame a V-valued function. This is what the class NaturalLocalData is capturing.
The naturality (e.g. the known transformation behavior under diffeos) is used to a) check that a collection of V-valued functions indeed specifies a global section (check_consistency) and b) to calculate the representation in charts other than the ones originally used (still to be implemented).
On some way, one could view this as a refactorization and genearlization of the "restrictions" and "components" functions of tensor fields using the mathematical concept of natural bundles.
The simplest example (and often sufficiently general) is the case of first-order natural bundles, corresponding to r=1 above.
That is, E is just an associated bundle to the frame bundle, using some action of GL(n). For example, the orientation bundle is given by action of GL(n) on Z_2 by multiplication by A.det().sign().
In a follow-up ticket, natural transformations are implemented.
These are diffeo-equivariant maps between natural bundles. Examples are almost all basic constructions, e.g. contractions of tensor fields, curvature maps, assigning volume forms to metrics, exterior differential, etc.
The implementation is still in its early stages, but feedback is very welcome before I continue working on this (in a 'wrong' direction).
For example, one question I had is why tensor fields etc use the concept of restriction, and only in a second step are represented by their components wrt to frame - instead of directly collecting only components wrt to frames.
Also ideas how to best migrate existing code to these natural bundles are appreciated.
Specifying the orientation in this new framework is easy, but the other migrations will be much more involved (and I don't plan to do this as part of this ticket).
CC: @tscrim @nthiery @mjungmath @egourgoulhon
Component: manifolds
Branch/Commit: public/manifolds/natural_data @ 9a6ba21
Issue created by migration from https://trac.sagemath.org/ticket/32974
The theory of natural bundles provides a convienent framework to specify geometric data on manifolds.
A natural bundle is a frame bundle over a manifold
Mwith an action by the diffeomorphism groupM.The frame bundle and bundles associated to the frame bundle are natural.
Thus, on abstract grounds, things like orientation, vector fields, diff forms, metrics, symplectic forms etc are all examples of sections of natural bundles.
In this ticket, we introduce the class
NaturalLocalDatawhich represents the data that is needed to encode local sections of natural bundles.This concept is illustrated and applied to specify orientations of manifolds as assigning +1 or -1 to a vector frame.
The implementation uses the following results about natural bundles:
Eis (under sufficiently general assumptions) an associated bundle of a jet-prolongationL^r Mof the frame bundleLM. That is,E = L^r M \times_{\rho} Vwhere\rhois an action of the jet-prolongation ofGLon the manifoldV.Mlifts to a bundle automorphism by taking its jet.E.Eis just aV-valued function.V-valued functions defines a section ofEiff they transform correctly under the action of diffeomorphisms.In other words, a section of
Eis specified by assigning to a frame aV-valued function. This is what the classNaturalLocalDatais capturing.The naturality (e.g. the known transformation behavior under diffeos) is used to a) check that a collection of
V-valued functions indeed specifies a global section (check_consistency) and b) to calculate the representation in charts other than the ones originally used (still to be implemented).On some way, one could view this as a refactorization and genearlization of the "restrictions" and "components" functions of tensor fields using the mathematical concept of natural bundles.
The simplest example (and often sufficiently general) is the case of first-order natural bundles, corresponding to
r=1above.That is,
Eis just an associated bundle to the frame bundle, using some action ofGL(n). For example, the orientation bundle is given by action ofGL(n)onZ_2by multiplication byA.det().sign().In a follow-up ticket, natural transformations are implemented.
These are diffeo-equivariant maps between natural bundles. Examples are almost all basic constructions, e.g. contractions of tensor fields, curvature maps, assigning volume forms to metrics, exterior differential, etc.
The implementation is still in its early stages, but feedback is very welcome before I continue working on this (in a 'wrong' direction).
For example, one question I had is why tensor fields etc use the concept of
restriction, and only in a second step are represented by their components wrt to frame - instead of directly collecting only components wrt to frames.Also ideas how to best migrate existing code to these natural bundles are appreciated.
Specifying the orientation in this new framework is easy, but the other migrations will be much more involved (and I don't plan to do this as part of this ticket).
CC: @tscrim @nthiery @mjungmath @egourgoulhon
Component: manifolds
Branch/Commit: public/manifolds/natural_data @
9a6ba21Issue created by migration from https://trac.sagemath.org/ticket/32974