Source code for galpy.actionAngle.actionAngleHarmonicInverse
###############################################################################
# actionAngle: a Python module to calculate actions, angles, and frequencies
#
# class: actionAngleHarmonicInverse
#
# Calculate (x,v) coordinates for the harmonic oscillator from
# given actions-angle coordinates
#
###############################################################################
import numpy
from .actionAngleInverse import actionAngleInverse
from ..util import conversion
[docs]class actionAngleHarmonicInverse(actionAngleInverse):
"""Inverse action-angle formalism for the one-dimensional harmonic oscillator"""
[docs] def __init__(self,*args,**kwargs):
"""
NAME:
__init__
PURPOSE:
initialize an actionAngleHarmonicInverse object
INPUT:
omega= frequency (can be Quantity)
ro= distance from vantage point to GC (kpc; can be Quantity)
vo= circular velocity at ro (km/s; can be Quantity)
OUTPUT:
instance
HISTORY:
2018-04-08 - Started - Bovy (UofT)
"""
actionAngleInverse.__init__(self,*args,**kwargs)
if not 'omega' in kwargs: #pragma: no cover
raise IOError("Must specify omega= for actionAngleHarmonic")
omega= conversion.parse_frequency(kwargs.get('omega'),
ro=self._ro,vo=self._vo)
self._omega= omega
return None
def _evaluate(self,j,angle,**kwargs):
"""
NAME:
__call__
PURPOSE:
evaluate the phase-space coordinates (x,v) for a number of angles on a single torus
INPUT:
j - action (scalar)
angle - angle (array [N])
OUTPUT:
[x,vx]
HISTORY:
2018-04-08 - Written - Bovy (UofT)
"""
return self._xvFreqs(j,angle,**kwargs)[:2]
def _xvFreqs(self,j,angle,**kwargs):
"""
NAME:
xvFreqs
PURPOSE:
evaluate the phase-space coordinates (x,v) for a number of angles on a single torus as well as the frequency
INPUT:
j - action (scalar)
angle - angle (array [N])
OUTPUT:
([x,vx],Omega)
HISTORY:
2018-04-08 - Written - Bovy (UofT)
"""
amp= numpy.sqrt(2.*j/self._omega)
x= amp*numpy.sin(angle)
vx= amp*self._omega*numpy.cos(angle)
return (x,vx,self._omega)
def _Freqs(self,j,**kwargs):
"""
NAME:
Freqs
PURPOSE:
return the frequency corresponding to a torus
INPUT:
j - action (scalar)
OUTPUT:
(Omega)
HISTORY:
2018-04-08 - Written - Bovy (UofT)
"""
return self._omega