Hi
Congratulations to the Dedalus team on the release of v3. I am wondering if this code can be used to implement a toroidal-poloidal decomposition in spherical shell coordinates. Saving two scalar fields rather than a vector field would allow for decreased memory requirements. I think there are a couple of things that this would require:
1. Surface Laplacian: A 2D Laplacian acting only in the theta and phi directions. I think this can be written in terms of the full spherical operators, but I am wondering if there is a more direct way to get this operator?
2. Gauge constraint: The toroidal and poloidal components are unique up to adding a function of r. I think this can be fixed by requiring that the average of the fields over each sphere of radius r is zero, for instance by writing "d3.Average(bP, c.S2coordsys) = 0". As when setting the integral of pressure to be zero and adding a constant tau term to the continuity equation, is there a similar way this can be done for the toroidal and poloidal equations, e.g. adding an arbitrary function of r to each equation? I've tried this but get TypeError: unsupported operand type(s) for +: 'SphericalShellBasis' and 'SphericalShellRadialBasis'
Thanks,
Calum