Source code for galpy.potential.GaussianAmplitudeWrapperPotential

###############################################################################
#   GaussianAmplitudeWrapperPotential.py: Wrapper to modulate the amplitude
#                                         of a potential with a Gaussian
###############################################################################
import numpy
from .WrapperPotential import parentWrapperPotential
from ..util import conversion
[docs]class GaussianAmplitudeWrapperPotential(parentWrapperPotential): """Potential wrapper class that allows the amplitude of a Potential object to be modulated as a Gaussian. The amplitude A applied to a potential wrapped by an instance of this class is changed as .. math:: A(t) = amp\\,\\exp\\left(-\\frac{[t-t_0]^2}{2\\,\\sigma^2}\\right) """
[docs] def __init__(self,amp=1.,pot=None,to=0.,sigma=1.,ro=None,vo=None): """ NAME: __init__ PURPOSE: initialize a GaussianAmplitudeWrapper 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 to= (0.) time at which the Gaussian peaks sigma= (1.) standard deviation of the Gaussian (can be a Quantity) OUTPUT: (none) HISTORY: 2018-02-21 - Started - Bovy (UofT) """ to= conversion.parse_time(to,ro=self._ro,vo=self._vo) sigma= conversion.parse_time(sigma,ro=self._ro,vo=self._vo) self._to= to self._sigma2= sigma**2. self.hasC= True self.hasC_dxdv= True
def _smooth(self,t): return numpy.exp(-0.5*(t-self._to)**2./self._sigma2) def _wrap(self,attribute,*args,**kwargs): return self._smooth(kwargs.get('t',0.))\ *self._wrap_pot_func(attribute)(self._pot,*args,**kwargs)