I like Pluto.jl
reactive notebook paradigm and I miss it when I use Python for symbolic work on differential geometry. More precisely, I use the SageManifolds package. I am looking for an alternative workflow on Julia. I work on applied differential geometry (mainly on classical mechanics and thermodynamics). My needs are
- Local differential geometry: working on one chart with local coordinates is enough for me, I do not need multiple coordinate patches. An easy way to compute changes of coordinates would be nice, but it is not a must.
- Ability to define symbolic functions, tensor fields, vector fields and forms on the manifold.
- Cartan calculus for vector fields and differential forms: ability to take Lie derivatives, exterior differentials and contractions.
- Basic ability to simplify expressions and substitute variables.
I have looked to the following packages:
-
Symbolics.jl
: seems to provide enough symbolic capabilities for my needs, but it lacks the geometric definitions I am looking for. I think it might be combined with another package. -
Manifolds.jl
: I find this package a little bit confusing. It seems to be developed with applications on optimization and numerics in mind. Apparently it does not work with the usual geometric definition of manifolds based on atlases, but it works with a more analytic definition of smooth subsets of \mathbb{R}^n (specially matrix manifolds), which makes it hard to use it for my purposes. It also assumes that all manifolds have a metric, which is not true for the applications I have in mind. After a quick look on the documentation I do not find a way to compute Lie derivatives or define tensor fields. - There are many tensor packages, but as far as I see, no one distinguishes covariant (forms) and contravariant (multivector fields) asymmetric tensors.
I would like to know if somebody uses Julia for doing computations on differential geometry, and which packages/workflow he uses. I might have overlooked some functionality on the packages I have mentioned or missed some interesting package.