def test_impulse_deltav_general(): from galpy.df import impulse_deltav_plummer, impulse_deltav_general from galpy.potential import PlummerPotential tol= -10. kick= impulse_deltav_plummer(numpy.array([[3.4,0.,0.]]), numpy.array([4.]), 3., numpy.array([0.,numpy.pi/2.,0.]), 1.5,4.) pp= PlummerPotential(amp=1.5,b=4.) general_kick=\ impulse_deltav_general(numpy.array([[3.4,0.,0.]]), numpy.array([4.]), 3., numpy.array([0.,numpy.pi/2.,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' # Same for a bunch of positions v= numpy.zeros((100,3)) v[:,0]= 3.4 xpos= numpy.random.normal(size=100) kick= impulse_deltav_plummer(v, xpos, 3., numpy.array([0.,numpy.pi/2.,0.]), numpy.pi,numpy.exp(1.)) pp= PlummerPotential(amp=numpy.pi,b=numpy.exp(1.)) general_kick=\ impulse_deltav_general(v, xpos, 3., numpy.array([0.,numpy.pi/2.,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' return None
def test_impulse_deltav_general_hernquist(): from galpy.df import impulse_deltav_hernquist, impulse_deltav_general from galpy.potential import HernquistPotential GM = 1.5 tol= -10. kick= impulse_deltav_hernquist(numpy.array([[3.4,0.,0.]]), numpy.array([4.]), 3., numpy.array([0.,numpy.pi/2.,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(numpy.array([[3.4,0.,0.]]), numpy.array([4.]), 3., numpy.array([0.,numpy.pi/2.,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' # Same for a bunch of positions GM = numpy.pi v= numpy.zeros((100,3)) v[:,0]= 3.4 xpos= numpy.random.normal(size=100) kick= impulse_deltav_hernquist(v, xpos, 3., numpy.array([0.,numpy.pi/2.,0.]), GM,numpy.exp(1.)) pp= HernquistPotential(amp=2.*GM,a=numpy.exp(1.)) general_kick=\ impulse_deltav_general(v, xpos, 3., numpy.array([0.,numpy.pi/2.,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' return None