def test_nfw_sphericalOrder(): Acos, Asin = potential.scf_compute_coeffs_spherical(rho_NFW, 10) Acos2, Asin2 = potential.scf_compute_coeffs_spherical(rho_NFW, 10, radial_order=50) assert numpy.all(numpy.fabs(Acos - Acos2) < EPS), \ "Increasing the radial order fails for scf_compute_coeffs_spherical"
def compare_dens_nbody_spherical(): N = int(1e6) Mh = 11. ah = 50. / 8. m = Mh / N factor = 1. nsamp = 10 Norder = 10 hern = potential.HernquistPotential(amp=2 * Mh, a=ah) hern.turn_physical_off() hdf = df.isotropicHernquistdf(hern) samples = [hdf.sample(n=N) for i in range(nsamp)] positions = numpy.array( [[samples[i].x(), samples[i].y(), samples[i].z() * factor] for i in range(nsamp)]) c = numpy.zeros((nsamp, Norder, 1, 1)) s = numpy.zeros((nsamp, Norder, 1, 1)) for i in range(nsamp): c[i], s[i] = potential.scf_compute_coeffs_spherical_nbody( m=m * numpy.ones(N), pos=positions[i], N=Norder, a=ah) cc, ss = potential.scf_compute_coeffs_spherical(N=Norder, a=ah, dens=hern.dens) # Check that the difference between the coefficients is within the standard deviation assert (cc - numpy.mean(c, axis=0) < numpy.std(c, axis=0)).all()
def test_potentialMatches_hernquist(): h = potential.HernquistPotential() Acos, Asin = potential.scf_compute_coeffs_spherical( sphericalHernquistDensity, 10) scf = SCFPotential() assertmsg = "Comparing the potential of Hernquist Potential with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(h, scf, assertmsg)
def test_phiforceMatches_hernquist(): h = potential.HernquistPotential() Acos, Asin = potential.scf_compute_coeffs_spherical( sphericalHernquistDensity, 1) scf = SCFPotential(amp=1, Acos=Acos, Asin=Asin) assertmsg = "Comparing the azimuth force of Hernquist Potential with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(h.phiforce, scf.phiforce, assertmsg)
def test_scf_ZeeuwCoeffs_ReducesToSpherical(): Aspherical = potential.scf_compute_coeffs_spherical(rho_Zeeuw, 5) Aaxi = potential.scf_compute_coeffs(rho_Zeeuw, 5, 5, radial_order=20, costheta_order=20) reducesto_spherical(Aspherical, Aaxi, "Zeeuw Potential")
def test_scf_compute_spherical_hernquist(): Acos, Asin = potential.scf_compute_coeffs_spherical( sphericalHernquistDensity, 10) spherical_coeffsTest(Acos, Asin) assert numpy.fabs( Acos[0, 0, 0] - 1. ) < EPS, "Acos(n=0,l=0,m=0) = 1 fails. Found to be Acos(n=0,l=0,m=0) = {0}".format( Acos[0, 0, 0]) assert numpy.all( numpy.fabs(Acos[1:, 0, 0]) < EPS), "Acos(n>0,l=0,m=0) = 0 fails."
def test_scf_compute_spherical_zeeuw(): Acos, Asin = potential.scf_compute_coeffs_spherical(rho_Zeeuw, 10) spherical_coeffsTest(Acos, Asin) assert numpy.fabs( Acos[0, 0, 0] - 2 * 3. / 4 ) < EPS, "Acos(n=0,l=0,m=0) = 3/2 fails. Found to be Acos(n=0,l=0,m=0) = {0}".format( Acos[0, 0, 0]) assert numpy.fabs( Acos[1, 0, 0] - 2 * 1. / 12 ) < EPS, "Acos(n=1,l=0,m=0) = 1/6 fails. Found to be Acos(n=0,l=0,m=0) = {0}".format( Acos[0, 0, 0]) assert numpy.all( numpy.fabs(Acos[2:, 0, 0]) < EPS), "Acos(n>1,l=0,m=0) = 0 fails."
def test_scf_axiZeeuwCoeffs_ReducesToSpherical(): Aspherical = potential.scf_compute_coeffs_spherical(rho_Zeeuw, 10) Aaxi = potential.scf_compute_coeffs_axi(rho_Zeeuw, 10, 10) axi_reducesto_spherical(Aspherical, Aaxi, "Zeeuw Potential")
def test_scf_axiHernquistCoeffs_ReducesToSpherical(): Aspherical = potential.scf_compute_coeffs_spherical( sphericalHernquistDensity, 10) Aaxi = potential.scf_compute_coeffs_axi(sphericalHernquistDensity, 10, 10) axi_reducesto_spherical(Aspherical, Aaxi, "Hernquist Potential")
def test_scf_axiHernquistCoeffs_ReducesToSpherical(): Aspherical = potential.scf_compute_coeffs_spherical(sphericalHernquistDensity, 10) Aaxi = potential.scf_compute_coeffs_axi(sphericalHernquistDensity, 10,10) axi_reducesto_spherical(Aspherical,Aaxi, "Hernquist Potential")
def test_scf_compute_nfw(): Acos, Asin = potential.scf_compute_coeffs_spherical(rho_NFW, 10) spherical_coeffsTest(Acos, Asin)
def test_scf_ZeeuwCoeffs_ReducesToSpherical(): Aspherical = potential.scf_compute_coeffs_spherical(rho_Zeeuw, 5) Aaxi = potential.scf_compute_coeffs(rho_Zeeuw, 5,5,radial_order=20, costheta_order=20) reducesto_spherical(Aspherical,Aaxi, "Zeeuw Potential")
def test_potentialMatches_nfw(): nfw = potential.NFWPotential() Acos, Asin = potential.scf_compute_coeffs_spherical(rho_NFW, 50, a=50) scf = SCFPotential(amp=1, Acos=Acos, Asin=Asin, a=50) assertmsg = "Comparing nfw with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(nfw, scf, assertmsg, eps=1e-4)
def test_densMatches_zeeuw(): Acos, Asin = potential.scf_compute_coeffs_spherical(rho_Zeeuw, 10) scf = SCFPotential(amp=1, Acos=Acos, Asin=Asin) assertmsg = "Comparing the density of Zeeuw's perfect ellipsoid with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(rho_Zeeuw, scf.dens, assertmsg)
def test_zforceMatches_nfw(): nfw = potential.NFWPotential() Acos, Asin = potential.scf_compute_coeffs_spherical(rho_NFW, 50, a=50) scf = SCFPotential(amp=1, Acos=Acos, Asin=Asin, a=50) assertmsg = "Comparing the vertical force of NFW Potential with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(nfw.zforce, scf.zforce, assertmsg, eps=1e-3)
def test_zforceMatches_nfw(): nfw = potential.NFWPotential() Acos, Asin = potential.scf_compute_coeffs_spherical(rho_NFW,50, a=50) scf = SCFPotential(amp=1, Acos=Acos, Asin=Asin, a=50) assertmsg = "Comparing the vertical force of NFW Potential with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(nfw.zforce,scf.zforce, assertmsg, eps=1e-3)
def test_phiforceMatches_hernquist(): h = potential.HernquistPotential() Acos, Asin = potential.scf_compute_coeffs_spherical(sphericalHernquistDensity,1) scf = SCFPotential(amp=1, Acos=Acos, Asin=Asin) assertmsg = "Comparing the azimuth force of Hernquist Potential with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(h.phiforce,scf.phiforce, assertmsg)
def test_potentialMatches_nfw(): nfw = potential.NFWPotential() Acos, Asin = potential.scf_compute_coeffs_spherical(rho_NFW,50, a=50) scf = SCFPotential(amp=1, Acos=Acos, Asin=Asin, a=50) assertmsg = "Comparing nfw with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(nfw,scf, assertmsg, eps=1e-4)
def test_potentialMatches_hernquist(): h = potential.HernquistPotential() Acos, Asin = potential.scf_compute_coeffs_spherical(sphericalHernquistDensity,10) scf = SCFPotential() assertmsg = "Comparing the potential of Hernquist Potential with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(h,scf, assertmsg)
def test_densMatches_zeeuw(): Acos, Asin = potential.scf_compute_coeffs_spherical(rho_Zeeuw,10) scf = SCFPotential(amp=1, Acos=Acos, Asin=Asin) assertmsg = "Comparing the density of Zeeuw's perfect ellipsoid with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(rho_Zeeuw,scf.dens, assertmsg)
def test_scf_HernquistCoeffs_ReducesToSpherical(): Aspherical = potential.scf_compute_coeffs_spherical( sphericalHernquistDensity, 5) Aaxi = potential.scf_compute_coeffs(sphericalHernquistDensity, 5, 5) reducesto_spherical(Aspherical, Aaxi, "Hernquist Potential")
def test_scf_compute_spherical_zeeuw(): Acos, Asin = potential.scf_compute_coeffs_spherical(rho_Zeeuw, 10) spherical_coeffsTest(Acos, Asin) assert numpy.fabs(Acos[0,0,0] - 2*3./4) < EPS, "Acos(n=0,l=0,m=0) = 3/2 fails. Found to be Acos(n=0,l=0,m=0) = {0}".format(Acos[0,0,0]) assert numpy.fabs(Acos[1,0,0] - 2*1./12) < EPS, "Acos(n=1,l=0,m=0) = 1/6 fails. Found to be Acos(n=0,l=0,m=0) = {0}".format(Acos[0,0,0]) assert numpy.all(numpy.fabs(Acos[2:,0,0]) < EPS), "Acos(n>1,l=0,m=0) = 0 fails."
def test_scf_axiZeeuwCoeffs_ReducesToSpherical(): Aspherical = potential.scf_compute_coeffs_spherical(rho_Zeeuw, 10) Aaxi = potential.scf_compute_coeffs_axi(rho_Zeeuw, 10,10) axi_reducesto_spherical(Aspherical,Aaxi, "Zeeuw Potential")
def test_phiforceMatches_nfw(): nfw = potential.NFWPotential() Acos, Asin = potential.scf_compute_coeffs_spherical(rho_NFW,10) scf = SCFPotential(amp=1, Acos=Acos, Asin=Asin) assertmsg = "Comparing the azimuth force of NFW Potential with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(nfw.phiforce,scf.phiforce, assertmsg)
def test_scf_HernquistCoeffs_ReducesToSpherical(): Aspherical = potential.scf_compute_coeffs_spherical(sphericalHernquistDensity, 5) Aaxi = potential.scf_compute_coeffs(sphericalHernquistDensity, 5,5) reducesto_spherical(Aspherical,Aaxi, "Hernquist Potential")
def test_phiforceMatches_nfw(): nfw = potential.NFWPotential() Acos, Asin = potential.scf_compute_coeffs_spherical(rho_NFW, 10) scf = SCFPotential(amp=1, Acos=Acos, Asin=Asin) assertmsg = "Comparing the azimuth force of NFW Potential with SCF fails at R={0}, Z={1}, phi={2}" compareFunctions(nfw.phiforce, scf.phiforce, assertmsg)
def test_scf_compute_spherical_hernquist(): Acos, Asin = potential.scf_compute_coeffs_spherical(sphericalHernquistDensity, 10) spherical_coeffsTest(Acos, Asin) assert numpy.fabs(Acos[0,0,0] - 1.) < EPS, "Acos(n=0,l=0,m=0) = 1 fails. Found to be Acos(n=0,l=0,m=0) = {0}".format(Acos[0,0,0]) assert numpy.all(numpy.fabs(Acos[1:,0,0]) < EPS), "Acos(n>0,l=0,m=0) = 0 fails."