Source code for galpy.potential.SolidBodyRotationWrapperPotential
###############################################################################
# SolidBodyRotationWrapperPotential.py: Wrapper to make a potential rotate
# with a fixed pattern speed, around
# the z axis
###############################################################################
from .WrapperPotential import parentWrapperPotential
from .Potential import _APY_LOADED
from ..util import bovy_conversion
if _APY_LOADED:
from astropy import units
[docs]class SolidBodyRotationWrapperPotential(parentWrapperPotential):
"""Potential wrapper class that implements solid-body rotation around the z-axis. Can be used to make a bar or other perturbation rotate. The potential is rotated by replacing
.. math::
\\phi \\rightarrow \\phi + \\Omega \\times t + \\mathrm{pa}
with :math:`\\Omega` the fixed pattern speed and :math:`\\mathrm{pa}` the position angle at :math:`t=0`.
"""
[docs] def __init__(self,amp=1.,pot=None,omega=1.,pa=0.,ro=None,vo=None):
"""
NAME:
__init__
PURPOSE:
initialize a SolidBodyRotationWrapper Potential
INPUT:
amp - amplitude to be applied to the potential (default: 1.)
pot - Potential instance or list thereof; this potential is made to rotate around the z axis by the wrapper
omega= (1.) the pattern speed (can be a Quantity)
pa= (0.) the position angle (can be a Quantity)
OUTPUT:
(none)
HISTORY:
2017-08-22 - Started - Bovy (UofT)
"""
if _APY_LOADED and isinstance(omega,units.Quantity):
omega= omega.to(units.km/units.s/units.kpc).value\
/bovy_conversion.freq_in_kmskpc(self._vo,self._ro)
if _APY_LOADED and isinstance(pa,units.Quantity):
pa= pa.to(units.rad).value
self._omega= omega
self._pa= pa
self.hasC= True
self.hasC_dxdv= True
def OmegaP(self):
"""
NAME:
OmegaP
PURPOSE:
return the pattern speed
INPUT:
(none)
OUTPUT:
pattern speed
HISTORY:
2016-11-02 - Written - Bovy (UofT)
"""
return self._omega
def _wrap(self,attribute,*args,**kwargs):
kwargs['phi']= \
kwargs.get('phi',0.)-self._omega*kwargs.get('t',0.)-self._pa
return self._wrap_pot_func(attribute)(self._pot,*args,**kwargs)