Additional coordinates

When analysing a galaxy it is often convenient to work in spherical or cylindrical coordinates. A SWIFTGalaxy will compute these (and the velocities) on the fly if requested. The poles of the spherical/cylindrical coordinate frame are assumed to lie along the cartesian \(z\) axis of the current coordinate frame, the reference azimuth (\(\phi=0\)) lies along the \(x\) axis, and the coordinate system is assumed to be right-handed.

Any computed coordinates (or velocities) are cached to speed up subsequent requests, but note that coordinate transformations in general would require a conversion back to cartesian coordinates, application of the transformation, and then re-calculation of the spherical/cylindrical coordinates. Therefore, in the interest of efficiency, if a coordinate transformation occurs the spherical/cylindrical coordinates are simply discarded, and re-computed if they are subsequently requested.

Spherical coordinates

Note

A “physics” notation convention is assumed, with coordinate components named \((r, \theta, \phi)\), where \(-\frac{\pi}{2} \leq \theta \leq \frac{\pi}{2}\) is the polar angle and \(0 < \phi \leq 2\pi\) is the azimuthal angle. The convention that if \(r=0\), then \(\theta=0\) and \(\phi=0\) is also adopted.

The spherical coordinates can be accessed through the spherical_coordinates property of a particle dataset. Supposing that we are interested in the gas particles:

sg = SWIFTGalaxy(...)
sg.gas.spherical_coordinates.r
sg.gas.spherical_coordinates.theta
sg.gas.spherical_coordinates.phi

For convenience and/or readability, some common (?) aliases to the coordinates are also supported.

Aliases

Aliases for spherical coordinates are as follows:

  • spherical_coordinates.r:
    • spherical_coordinates.radius

  • spherical_coordinates.theta:
    • spherical_coordinates.lat

    • spherical_coordinates.latitude

    • spherical_coordinates.pol

    • spherical_coordinates.polar

  • spherical_coordinates.phi:
    • spherical_coordinates.lon

    • spherical_coordinates.longitude

    • spherical_coordinates.az

    • spherical_coordinates.azimuth

Spherical velocities

The velocity components in the directions of the spherical unit vectors – \((v_r, v_\theta, v_\phi)\) – can be accessed with the following syntax:

sg.gas.spherical_velocities.r
sg.gas.spherical_velocities.theta
sg.gas.spherical_velocities.phi

Note that if \(r=0\), then \(\theta=0\) and \(\phi=0\) are assumed to define the directions of the unit vectors.

Aliases

Again, some aliases are provided:

  • spherical_velocities.r:
    • spherical_velocities.radius

  • spherical_velocities.theta:
    • spherical_velocities.lat

    • spherical_velocities.latitude

    • spherical_velocities.pol

    • spherical_velocities.polar

  • spherical_velocities.phi:
    • spherical_velocities.lon

    • spherical_velocities.longitude

    • spherical_velocities.az

    • spherical_velocities.azimuth

Cylindrical coordinates

Note

The coordinate components are named \((\rho, \phi, z)\) by default, and assume a convention where \(0 < \phi \leq 2\pi\). The convention that if \(\rho=0\), then \(\phi=0\) is also adopted.

Similarly to the spherical coordinates, the cylindrical coordinates can be accessed through the cylindrical_coordinates property of a particle dataset. Supposing again that we are interested in the gas particles:

sg.gas.cylindrical_coordinates.rho
sg.gas.cylindrical_coordinates.phi
sg.gas.cylindrical_coordinates.z

Aliases

Aliases for cylindrical coordinates are as follows:

  • cylindrical_coordinates.rho:
    • cylindrical_coordinates.R

    • cylindrical_coordinates.radius

  • cylindrical_coordinates.phi:
    • cylindrical_coordinates.lon

    • cylindrical_coordinates.longitude

    • cylindrical_coordinates.az

    • cylindrical_coordinates.azimuth

  • cylindrical_coordinates.z
    • cylindrical_coordinates.height

Cylindrical velocities

The velocity components in the directions of the cylindrical unit vectors – \((v_\rho, v_\phi, v_z)\) – can be accessed with the following syntax:

sg.gas.cylindrical_velocities.rho
sg.gas.cylindrical_velocities.phi
sg.gas.cylindrical_velocities.z

Note that if \(\rho=0\), then \(\phi=0\) is assumed to define the directions of the unit vectors.

Aliases

Again, some aliases are provided:

  • cylindrical_velocities.rho:
    • cylindrical_velocities.R

    • cylindrical_velocities.radius

  • cylindrical_coordinates.phi:
    • cylindrical_velocities.lon

    • cylindrical_velocities.longitude

    • cylindrical_velocities.az

    • cylindrical_velocities.azimuth

  • cylindrical_velocities.z
    • cylindrical_coordinates.height

Cartesian coordinates

For completeness, the cartesian coordinates \((x, y, z)\) are made available with a similar syntax:

sg.gas.cartesian_coordinates.x
sg.gas.cartesian_coordinates.y
sg.gas.cartesian_coordinates.z

These are implemented such that a reference to the coordinates array is used and therefore occupy no additional memory. In addition to the individual coordinate components, for cartesian coordinates the \((N, 3)\) coordinate array is available as:

sg.gas.cartesian_coordinates.xyz

Cartesian velocities

Similarly, the cartesian velocity components \((v_x, v_y, v_z)\) are made available:

sg.gas.cartesian_velocities.x
sg.gas.cartesian_velocities.y
sg.gas.cartesian_velocities.z
sg.gas.cartesian_velocities.xyz