PlasmaPy / PlasmaPy/PlasmaPy

Start a subpackage for coordinate transformations

Open
#476 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

effort: very high feature request needs subject matter expert plasmapy.plasma priority: high
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.