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

Reference Frames #112

Open
nstarman opened this issue Feb 26, 2024 · 0 comments
Open

Reference Frames #112

nstarman opened this issue Feb 26, 2024 · 0 comments

Comments

@nstarman
Copy link
Contributor

  1. Operators for frame transformations: e.g. translations, rotations, boosts.

    • These have both active vs passive / apply vs unapply modes.
    • A set of operations can be piped together into a Sequence
    • An astropy reference frame transformation is an operator sequence with particular values! I'm not sure if it will make it into this PR, but we will have an import/export option from/to Astropy CoordinateFrame objects.
  2. PotentialFrame class that allows a a potential to be expressed in a frame relative to the simulation frame, e.g. translated to have a potential not centered at the origin. The PotentialFrame class knows how to "boost" coordinates into the correct frame, then evaluate the potential in that frame.

  3. PSP can hold an operator sequence, which is the reference frame w.r.t. the simulation frame. Two PSPs in different frames can be added, by boosting them to the same frame. When evaluating a potential the PSP is boosted into the frame of the potential.

  4. SimulationFrame can itself be non-stationary, e.g. rotating.

Ramblings on figuring out how to deal with Astropy coordinate frames. Currently everything is implicitly specified w.r.t. a simulation frame (which we could express as a SimulationFrame object that is disjoint in the frame transformation graph). The new Operator framework makes it easy and explicit to build similar frame transformation sequences as are embedded in Astropy's transformation graph. The questions then are: if we wanted to build potentials in an "observable" system, then how is the SimulationFrame connected to the other coordinates? What types of transformations are the registered ones in Astropy's coordinate transform graph?
My thought on Q1 is: we should be able to specify what Astropy frame is the SimulationFrame, e.g. setting SimulationFrame = galactocentric(...). Now an ICRS coordinate can be translated into the simulation frame.
My thought for Q2 is: we consider the Astropy transforms to be Galilean and have a mechanism to convert an Astropy ReferenceFrame into an OperatorSequence. This shows the conceptual difference between the galax and Astropy model, where in Astropy many reference frames can exist in the vacuum and may or may not be connected, but in galax only the SimulationFrame exists without reference to other frames, which are defined by how they are a sequence of frame transformation operations from the SimulationFrame.

@nstarman nstarman transferred this issue from GalacticDynamics/galax May 30, 2024
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

1 participant