def __init__(self,amp=1.,pot=None,ro=None,vo=None,_init=None,**kwargs): """ NAME: __init__ PURPOSE: initialize a WrapperPotential, a super-class for wrapper potentials INPUT: amp - amplitude to be applied to the potential (default: 1.) pot - Potential instance or list thereof; the amplitude of this will be grown by this wrapper OUTPUT: (none) HISTORY: 2017-06-26 - Started - Bovy (UofT) """ if not _init: return None # Don't run __init__ at the end of setup Potential.__init__(self,amp=amp,ro=ro,vo=vo) self._pot= pot self.isNonAxi= _isNonAxi(self._pot)
def _evaluateplanarRforces(Pot, R, phi=None, t=0.): """Raw, undecorated function for internal use""" from galpy.potential_src.Potential import _isNonAxi isList = isinstance(Pot, list) nonAxi = _isNonAxi(Pot) if nonAxi and phi is None: raise PotentialError( "The (list of) planarPotential instances is non-axisymmetric, but you did not provide phi" ) if isinstance(Pot,list) \ and nu.all([isinstance(p,planarPotential) for p in Pot]): sum = 0. for pot in Pot: if nonAxi: sum += pot._Rforce_nodecorator(R, phi=phi, t=t) else: sum += pot._Rforce_nodecorator(R, t=t) return sum elif isinstance(Pot, planarPotential): if nonAxi: return Pot._Rforce_nodecorator(R, phi=phi, t=t) else: return Pot._Rforce_nodecorator(R, t=t) else: #pragma: no cover raise PotentialError( "Input to 'evaluatePotentials' is neither a Potential-instance or a list of such instances" )
def _evaluateplanarPotentials(Pot, R, phi=None, t=0., dR=0, dphi=0): from galpy.potential_src.Potential import _isNonAxi isList = isinstance(Pot, list) nonAxi = _isNonAxi(Pot) if nonAxi and phi is None: raise PotentialError( "The (list of) planarPotential instances is non-axisymmetric, but you did not provide phi" ) if isList and nu.all([isinstance(p, planarPotential) for p in Pot]): sum = 0. for pot in Pot: if nonAxi: sum += pot._call_nodecorator(R, phi=phi, t=t, dR=dR, dphi=dphi) else: sum += pot._call_nodecorator(R, t=t, dR=dR, dphi=dphi) return sum elif isinstance(Pot, planarPotential): if nonAxi: return Pot._call_nodecorator(R, phi=phi, t=t, dR=dR, dphi=dphi) else: return Pot._call_nodecorator(R, t=t, dR=dR, dphi=dphi) else: #pragma: no cover raise PotentialError( "Input to 'evaluatePotentials' is neither a Potential-instance or a list of such instances" )
def __init__(self,amp=1.,pot=None,ro=None,vo=None): """ NAME: __init__ PURPOSE: initialize a WrapperPotential, a super-class for wrapper potentials INPUT: amp - amplitude to be applied to the potential (default: 1.) pot - Potential instance or list thereof; the amplitude of this will be grown by this wrapper OUTPUT: (none) HISTORY: 2017-06-26 - Started - Bovy (UofT) """ Potential.__init__(self,amp=amp,ro=ro,vo=vo) self._pot= pot self.isNonAxi= _isNonAxi(self._pot)
def evaluateplanarR2derivs(Pot, R, phi=None, t=0.): """ NAME: evaluateplanarR2derivs PURPOSE: evaluate the second radial derivative of a (list of) planarPotential instance(s) INPUT: Pot - (list of) planarPotential instance(s) R - Cylindrical radius (can be Quantity) phi= azimuth (optional; can be Quantity) t= time (optional; can be Quantity) OUTPUT: F_R(R(,phi,t)) HISTORY: 2010-10-09 - Written - Bovy (IAS) """ from galpy.potential_src.Potential import _isNonAxi isList = isinstance(Pot, list) nonAxi = _isNonAxi(Pot) if nonAxi and phi is None: raise PotentialError( "The (list of) planarPotential instances is non-axisymmetric, but you did not provide phi" ) if isinstance(Pot,list) \ and nu.all([isinstance(p,planarPotential) for p in Pot]): sum = 0. for pot in Pot: if nonAxi: sum += pot.R2deriv(R, phi=phi, t=t, use_physical=False) else: sum += pot.R2deriv(R, t=t, use_physical=False) return sum elif isinstance(Pot, planarPotential): if nonAxi: return Pot.R2deriv(R, phi=phi, t=t, use_physical=False) else: return Pot.R2deriv(R, t=t, use_physical=False) else: #pragma: no cover raise PotentialError( "Input to 'evaluatePotentials' is neither a Potential-instance or a list of such instances" )
def evaluateplanarR2derivs(Pot,R,phi=None,t=0.): """ NAME: evaluateplanarR2derivs PURPOSE: evaluate the second radial derivative of a (list of) planarPotential instance(s) INPUT: Pot - (list of) planarPotential instance(s) R - Cylindrical radius (can be Quantity) phi= azimuth (optional; can be Quantity) t= time (optional; can be Quantity) OUTPUT: F_R(R(,phi,t)) HISTORY: 2010-10-09 - Written - Bovy (IAS) """ from galpy.potential_src.Potential import _isNonAxi isList= isinstance(Pot,list) nonAxi= _isNonAxi(Pot) if nonAxi and phi is None: raise PotentialError("The (list of) planarPotential instances is non-axisymmetric, but you did not provide phi") if isinstance(Pot,list) \ and nu.all([isinstance(p,planarPotential) for p in Pot]): sum= 0. for pot in Pot: if nonAxi: sum+= pot.R2deriv(R,phi=phi,t=t,use_physical=False) else: sum+= pot.R2deriv(R,t=t,use_physical=False) return sum elif isinstance(Pot,planarPotential): if nonAxi: return Pot.R2deriv(R,phi=phi,t=t,use_physical=False) else: return Pot.R2deriv(R,t=t,use_physical=False) else: #pragma: no cover raise PotentialError("Input to 'evaluatePotentials' is neither a Potential-instance or a list of such instances")
def _evaluateplanarPotentials(Pot,R,phi=None,t=0.,dR=0,dphi=0): from galpy.potential_src.Potential import _isNonAxi isList= isinstance(Pot,list) nonAxi= _isNonAxi(Pot) if nonAxi and phi is None: raise PotentialError("The (list of) planarPotential instances is non-axisymmetric, but you did not provide phi") if isList and nu.all([isinstance(p,planarPotential) for p in Pot]): sum= 0. for pot in Pot: if nonAxi: sum+= pot._call_nodecorator(R,phi=phi,t=t,dR=dR,dphi=dphi) else: sum+= pot._call_nodecorator(R,t=t,dR=dR,dphi=dphi) return sum elif isinstance(Pot,planarPotential): if nonAxi: return Pot._call_nodecorator(R,phi=phi,t=t,dR=dR,dphi=dphi) else: return Pot._call_nodecorator(R,t=t,dR=dR,dphi=dphi) else: #pragma: no cover raise PotentialError("Input to 'evaluatePotentials' is neither a Potential-instance or a list of such instances")
def _evaluateplanarRforces(Pot,R,phi=None,t=0.): """Raw, undecorated function for internal use""" from galpy.potential_src.Potential import _isNonAxi isList= isinstance(Pot,list) nonAxi= _isNonAxi(Pot) if nonAxi and phi is None: raise PotentialError("The (list of) planarPotential instances is non-axisymmetric, but you did not provide phi") if isinstance(Pot,list) \ and nu.all([isinstance(p,planarPotential) for p in Pot]): sum= 0. for pot in Pot: if nonAxi: sum+= pot._Rforce_nodecorator(R,phi=phi,t=t) else: sum+= pot._Rforce_nodecorator(R,t=t) return sum elif isinstance(Pot,planarPotential): if nonAxi: return Pot._Rforce_nodecorator(R,phi=phi,t=t) else: return Pot._Rforce_nodecorator(R,t=t) else: #pragma: no cover raise PotentialError("Input to 'evaluatePotentials' is neither a Potential-instance or a list of such instances")