Start a subpackage for coordinate transformations
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 711
- Forks
- 375
- Avg merge
- 3h 2m
- Merged PRs (30d)
- 8
Description
We use a wide variety of coordinate systems in plasma physics. In heliophysics and astrophysics, it's most common to use rectangular, cylindrical, and spherical coordinates. The magnetic fusion community uses not just toroidal coordinates, but a whole bunch of other flux coordinate systems. We would also need to include the stellarator coordinate systems.
A detailed reference is Flux Coordinates and Magnetic Field Structure by D'haeseleer, Hitchon, Callen, & Shohet. Some of the coordinate systems that they talk about include: toroidal flux coordinates, Clebsch coordinates, Boozer's toroidal flux coordinates, Boozer-Grad coordinates, and Hamada Coordinates. This issue really needs flux coordinate system subject matter experts. It would be particularly helpful if people in magnetic fusion energy communities were to comment on which coordinate systems we should prioritize.
We should definitely check how coordinate transformations are handled in Astropy and SunPy. Coordinate transformations are also being worked on in HelioPy (e.g., https://github.com/heliopython/heliopy/issues/294 and https://github.com/heliopython/heliopy/pull/323). I suspect that flux coordinate transformations will be substantially different from what these other packages are doing, so there's a chance we'll need to take a different approach. On the other hand, it would be helpful to have a similar API for coordinate transformations for the other packages so that people will find it easier to switch between the packages. It will also likely be the case that sometimes PlasmaPy users will need to use the coordinate systems that are (or will be) implemented in HelioPy and SunPy, so we should coordinate coordinates with them.
This will probably end up being related to the Plasma class, though probably after we have subclasses for toroidal devices as well as stellarators.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No implementation files or tests are named. Start by reviewing the coordinate APIs in Astropy and SunPy, the cited HelioPy work, and the referenced flux-coordinate text; consult fusion-domain experts to prioritize systems. Done means agreeing on the subpackage scope, prioritized coordinate systems, and an approach that relates appropriately to future Plasma, toroidal-device, and stellarator classes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100