Coordinate transforms
Particle positions and vectors defined on the particles can be plotted
in non-cartesian coordinate systems. The coordinate system can be set
via the particle plot (o)ptions, via the change coordinate system
option. The actual coordinate transformations are defined in a
standalone Fortran module called geometry.f90
and the precise
details can be determined by looking in this file. For reference,
however the transformations are given below.
Cylindrical Polar Coordinates
For cylindrical coordinates the transformations are:
\[\begin{split}\begin{array}{lclp{1cm}lcl}
R & = & \sqrt{x^2 + y^2} & & x & = & R\cos\phi \\
\phi & = & \tan^{-1}{(y/x)} &; & y & = & R\sin\phi \\
z & = & z & & z & = & z\\
\end{array}\end{split}\]
where vectors transform according to:
\[\begin{split}\begin{array}{lclp{1cm}lcl}
v_R & = & v_x \frac{x}{R} + v_y \frac{y}{R} & & v_x & = & v_R \cos\phi - v_\phi \sin\phi \\
v_\phi & = & v_x \left(\frac{-y}{R}\right) + v_y \left(\frac{x}{R}\right) &; &v_y & = & v_R \sin\phi + v_\phi \cos\phi \\
v_z & = & v_z & & v_z & = & v_z. \\
\end{array}\end{split}\]
In the case where these vectors are velocities, the \(v_{\phi}\)
component corresponds to \(v_{\phi} = r\dot{\phi}\). At the origin
we assume \(\phi = 0\), implying \(\cos\phi = 1\) and therefore
\(\frac{x}{R} = 1\) and \(\frac{y}{R} = 0\). This ensures the
transformations are reversible everywhere.
Spherical Polar Coordinates
For spherical coordinates the transformations are:
\[\begin{split}\begin{array}{lclp{1cm}lcl}
r & = & \sqrt{x^2 + y^2 + z^{2}} & & x & = & r\cos\phi\sin\theta\\
\phi & = & \tan^{-1}{(y/x)} &; & y & = & r\sin\phi\sin\theta \\
\theta & = & \cos^{-1}(z/r) & & z & = & r\cos\theta \\
\end{array}\end{split}\]
where vectors transform according to:
\[\begin{split}\begin{array}{lclp{1cm}lcl}
v_r & = & v_x \frac{x}{r} + v_y \frac{y}{r} + v_{z}\frac{z}{r} & & v_x & = & v_r \cos\phi\sin\theta- v_\phi \sin\phi + v_\theta \cos\phi\cos\theta \\
v_\phi & = & v_x \left(\frac{-y}{\sqrt{x^2 + y^{2}}}\right) + v_y \left(\frac{x}{\sqrt{x^2 + y^{2}}}\right) &; &v_y & = & v_r \sin\phi\sin\theta + v_\phi \cos\phi + v_{\theta} \sin\phi\cos\theta \\
v_\theta & = & v_{x}\frac{xz}{r \sqrt{x^{2} + y^{2}}} + v_{y}\frac{yz}{r \sqrt{x^{2} + y^{2}}} - v_{z}\frac{(x^{2} + y^{2})}{r\sqrt{x^{2} + y^{2}}} & & v_z & = & v_r \cos\theta - v_\theta \sin\theta. \\
\end{array}\end{split}\]
In the case where these vectors are velocities, the components
\(v_{\phi}\) and \(v_{\theta}\) correspond to
\(v_{\phi} = r\sin{\theta}\dot{\phi}\) and
\(v_{\theta} = r\dot{\theta}\) respectively.
Toroidal Coordinates
Toroidal coordinates represent a local frame of reference inside a
torus. The coordinate transformations are given by
\[\begin{split}\begin{array}{lclp{1cm}lcl}
r & = & \sqrt{[(x^2 + y^2)^{1/2} - R]^{2} + z^{2}} & & x & = & (r\cos\theta + R) \cos\phi \\
\theta & = & \tan^{-1} \left[\frac{z}{(\sqrt{x^{2} + y^{2}} - R)}\right] &; & y & = & (r\cos\theta + R)\sin\phi \\
\phi & = & \tan^{-1}(y/x) & & z & = & r\sin\theta \\
\end{array}\end{split}\]
where \(R\) is the radius of the torus. The use of the inverse
tangent in \(\theta\) instead of \(\theta = \sin^{-1}(z/r)\) is
necessary to get the quadrant correct (via the atan2
function).
Vectors transform according to:
\[\begin{split}\begin{array}{lclp{2cm}lcl}
v_r & = & v_x \frac{x(r_{cyl} - R)}{r r_{cyl}} + v_y \frac{y(r_{cyl} - R)}{r r_{cyl}} + v_{z} \frac{z}{r} & & v_x & = & v_r \cos\theta\cos\phi- v_\theta \sin\theta\cos\phi - v_\phi\sin\phi \\
v_\theta & = & v_x \frac{-zx}{r r_{cyl}} + v_y\frac{-zy}{r r_{cyl}} + v_{z}\frac{(r_{cyl} - R)}{r} &; &v_y & = & v_r \cos\theta\sin\phi - v_\theta \sin\theta\sin\phi + v_\phi\cos\phi \\
v_\phi & = & v_{x} \left(\frac{-y}{r_{cyl}}\right) + v_{y} \left(\frac{x}{r_{cyl}}\right) & & v_z & = & v_{r}\sin\theta + v_{\theta} \cos\theta \\
\end{array}\end{split}\]
where we have defined, for convenience,
\[r_{\rm cyl} = \sqrt{x^{2} + y^{2}} = r\cos\theta + R. \nonumber\]
and the velocities \(v_\theta\) and \(v_\phi\) correspond to
\(r \dot{\theta}\) and \(r_{\rm cyl} \dot{\phi}\), respectively.
The torus radius \(R\) is a parameter in the geometry
module and
is set to \(1\) by default.
Flared Cylindrical Polar Coordinates
For flared cylindrical coordinates the transformations are:
\[\begin{split}\begin{array}{lclp{1cm}lcl}
R & = & \sqrt{x^2 + y^2} & & x & = & R\cos\phi \\
\phi & = & \tan^{-1}{(y/x)} &; & y & = & R\sin\phi \\
z' & = & z \left(R_{\rm ref}/{R}\right)^\beta & & z & = & z' (R/R_{\rm ref})^\beta \\
\end{array}\end{split}\]
where \(R_{\rm ref}\) is the reference radius and \(\beta\) is
the flaring index, both parameters that can be set by the user. Vectors
transform according to:
\[\begin{split}\begin{array}{lclp{1cm}lcl}
v_R & = & v_x \frac{x}{R} + v_y \frac{y}{R} & & v_x & = & v_R \cos\phi - v_\phi \sin\phi \\
v_\phi & = & v_x \left(\frac{-y}{R}\right) + v_y \left(\frac{x}{R}\right) &; &v_y & = & v_R \sin\phi + v_\phi \cos\phi \\
v_{z'} & = & -\beta \frac{xz}{R^2} \left(\frac{R_{\rm ref}}{R}\right)^\beta v_x -\beta \frac{yz}{R^2} \left(\frac{R_{\rm ref}}{R}\right)^\beta v_y + \left(\frac{R_{\rm ref}}{R}\right)^\beta v_z & & v_z & = & \beta \frac{z'}{R} \left(\frac{R}{R_{\rm ref}}\right)^\beta v_R + \left(\frac{R}{R_{\rm ref}}\right)^\beta v_{z'}. \\
\end{array}\end{split}\]
In the case where these vectors are velocities, the \(v_{\phi}\)
component corresponds to \(v_{\phi} = r\dot{\phi}\).
Logarithmic Flared Cylindrical Polar Coordinates
For logarithmic flared cylindrical coordinates the transformations are:
\[\begin{split}\begin{array}{lclp{1cm}lcl}
d & = & \log_{10} ( \sqrt{x^2 + y^2} ) & & x & = & R\cos\phi \\
\phi & = & \tan^{-1}{(y/x)} &; & y & = & R\sin\phi \\
z' & = & z \left(R_{\rm ref}/{R}\right)^\beta & & z & = & z' (R/R_{\rm ref})^\beta \\
\end{array}\end{split}\]
where \(R_{\rm ref}\) is the reference radius and \(\beta\) is
the flaring index, both parameters that can be set by the user. Vectors
transform according to:
\[\begin{split}\begin{array}{lclp{1cm}lcl}
v_d & = & v_x \frac{x}{R}f^{-1} + v_y \frac{y}{R}f^{-1} & & v_x & = & f v_d \cos\phi - v_\phi \sin\phi \\
v_\phi & = & v_x \left(\frac{-y}{R}\right) + v_y \left(\frac{x}{R}\right) &; &v_y & = & f v_d \sin\phi + v_\phi \cos\phi \\
v_{z'} & = & -\beta \frac{xz}{R^2} \left(\frac{R_{\rm ref}}{R}\right)^\beta v_x -\beta \frac{yz}{R^2} \left(\frac{R_{\rm ref}}{R}\right)^\beta v_y + \left(\frac{R_{\rm ref}}{R}\right)^\beta v_z & & v_z & = & \beta \frac{z'}{R} \left(\frac{R}{R_{\rm ref}}\right)^\beta f v_d + \left(\frac{R}{R_{\rm ref}}\right)^\beta v_{z'}. \\
\end{array}\end{split}\]
where \(R \equiv 10^d\) and correspondingly \(d = \log_{10} R\)
and \(f \equiv R \ln (10)\).