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 ..util import conversion
[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)
"""
omega= conversion.parse_frequency(omega,ro=self._ro,vo=self._vo)
pa= conversion.parse_angle(pa)
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)