Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to represent tangent bundle? #5

Open
dlfivefifty opened this issue Jun 3, 2020 · 4 comments
Open

How to represent tangent bundle? #5

dlfivefifty opened this issue Jun 3, 2020 · 4 comments

Comments

@dlfivefifty
Copy link
Member

When we do vector-spherical harmonics we'll want

V = VectorSphericalHarmonics()
eltype(V)

to be a type representing the tangent bundle.

@dlfivefifty
Copy link
Member Author

https://github.com/mateuszbaran/FunManifolds.jl has this implemented, though it looks like it doesn't actually impose that the vector is in the tangent space.

@daanhb have you thought about this at all for DomainSets.jl?

@daanhb
Copy link
Member

daanhb commented Jun 3, 2020

@dlfivefifty not really. There is no notion of a manifold, let alone tangent spaces.

The only thing I did is make sure that mappings are not assumed to map between spaces of the same dimension, to enable working with a lower-dimensional parameter domain. A UnitCircle has a parameterization for example, which goes from 1d to 2d, and it has a left inverse which maps back. I guess that could be done for a sphere, and the jacobian of the map could generically be used to verify whether a vector is in the tangent space. But everything on top of that has yet to be invented.

@dlfivefifty
Copy link
Member Author

OK. I think the right way to think of this is as a generalisation of a dual number, where the value is a SphericalCoordinate <: SVector{3} and the dual part is TangentVector <: SVector{3}.

Probably best to think how a circle in the complex plane would work first. One option would be to treat the tangent vector using lazy arrays, e.g., for something in the tangent space with constant c at the point (1/sqrt(2),1/sqrt(2)) would be represented via:

TangentDual(SVector(1/sqrt(2), 1/sqrt(2)), ApplyVector(*, c, SVector(1/sqrt(2),-1/sqrt(2))))

(Makes me wonder if we can have ApplyArray conform to the static array interface...)

@daanhb
Copy link
Member

daanhb commented Jun 4, 2020

Looks interesting, just let me know if there is anything you feel belongs to DomainSets. I wasn't thinking of differential geometry myself, but I would like to expand on the parameterization of domains (or a suitable interface for it). In fact that was part of the motivation for improving maps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants