def test_impulse_deltav_general_curved_hernquist(): from galpy.df import impulse_deltav_hernquist_curvedstream, \ impulse_deltav_general_curvedstream from galpy.potential import HernquistPotential GM = 1.5 tol= -10. kick= impulse_deltav_hernquist_curvedstream(\ numpy.array([[3.4,0.,0.]]), numpy.array([[4.,0.,0.]]), 3., numpy.array([0.,numpy.pi/2.,0.]), numpy.array([0.,0.,0.]), numpy.array([3.4,0.,0.]), GM,4.) # Note factor of 2 in definition of GM and amp pp= HernquistPotential(amp=2.*GM,a=4.) general_kick= impulse_deltav_general_curvedstream(\ numpy.array([[3.4,0.,0.]]), numpy.array([[4.,0.,0.]]), 3., numpy.array([0.,numpy.pi/2.,0.]), numpy.array([0.,0.,0.]), numpy.array([3.4,0.,0.]), pp) assert numpy.all(numpy.fabs(kick-general_kick) < 10.**tol), 'general kick calculation does not agree with Hernquist calculation for a Hernquist potential, for curved stream' # Same for a bunch of positions GM = numpy.pi v= numpy.zeros((100,3)) v[:,0]= 3.4 xpos= numpy.random.normal(size=100) xpos= numpy.array([xpos,numpy.zeros(100),numpy.zeros(100)]).T kick= impulse_deltav_hernquist_curvedstream(\ v, xpos, 3., numpy.array([0.,numpy.pi/2.,0.]), numpy.array([0.,0.,0.]), numpy.array([3.4,0.,0.]), GM,numpy.exp(1.)) pp= HernquistPotential(amp=2.*GM,a=numpy.exp(1.)) general_kick=\ impulse_deltav_general_curvedstream(\ v, xpos, 3., numpy.array([0.,numpy.pi/2.,0.]), numpy.array([0.,0.,0.]), numpy.array([3.4,0.,0.]), pp) assert numpy.all(numpy.fabs(kick-general_kick) < 10.**tol), 'general kick calculation does not agree with Hernquist calculation for a Hernquist potential, for curved stream' return None
def test_impulse_deltav_general_curved(): from galpy.df import impulse_deltav_plummer_curvedstream, \ impulse_deltav_general_curvedstream from galpy.potential import PlummerPotential tol= -10. kick= impulse_deltav_plummer_curvedstream(\ numpy.array([[3.4,0.,0.]]), numpy.array([[4.,0.,0.]]), 3., numpy.array([0.,numpy.pi/2.,0.]), numpy.array([0.,0.,0.]), numpy.array([3.4,0.,0.]), 1.5,4.) pp= PlummerPotential(amp=1.5,b=4.) general_kick= impulse_deltav_general_curvedstream(\ numpy.array([[3.4,0.,0.]]), numpy.array([[4.,0.,0.]]), 3., numpy.array([0.,numpy.pi/2.,0.]), numpy.array([0.,0.,0.]), numpy.array([3.4,0.,0.]), pp) assert numpy.all(numpy.fabs(kick-general_kick) < 10.**tol), 'general kick calculation does not agree with Plummer calculation for a Plummer potential, for curved stream' # Same for a bunch of positions v= numpy.zeros((100,3)) v[:,0]= 3.4 xpos= numpy.random.normal(size=100) xpos= numpy.array([xpos,numpy.zeros(100),numpy.zeros(100)]).T kick= impulse_deltav_plummer_curvedstream(\ v, xpos, 3., numpy.array([0.,numpy.pi/2.,0.]), numpy.array([0.,0.,0.]), numpy.array([3.4,0.,0.]), numpy.pi,numpy.exp(1.)) pp= PlummerPotential(amp=numpy.pi,b=numpy.exp(1.)) general_kick=\ impulse_deltav_general_curvedstream(\ v, xpos, 3., numpy.array([0.,numpy.pi/2.,0.]), numpy.array([0.,0.,0.]), numpy.array([3.4,0.,0.]), pp) assert numpy.all(numpy.fabs(kick-general_kick) < 10.**tol), 'general kick calculation does not agree with Plummer calculation for a Plummer potential, for curved stream' return None