AxisymmetricZhaoModel#

jeanspy.model.AxisymmetricZhaoModel

See methods and properties for individual lookup pages, or the alphabetical API dictionary to search all classes. The full class contract and existing member anchors are retained below.

class jeanspy.model.AxisymmetricZhaoModel(rs_pc, rhos_Msunpc3, Q=1.0, alpha=1.0, beta=3.0, gamma=1.0, r_t_pc=inf)[source]#

Bases: jeanspy.axisymmetric.AxisymmetricDMModel

rho=rhos_Msunpc3 (m/rs_pc)^(-gamma) [1+(m/rs_pc)^alpha]^((gamma-beta)/alpha).

m²=R²+z²/Q². Q may be oblate or prolate. rhos_Msunpc3 is a density scale, not the density at rs_pc. Finite central potential: 0 <= gamma < 2; finite outer potential: beta > 2. Total mass may diverge (e.g. NFW). Hayashi 2015 eq. 4 is alpha=2, beta=3, gamma=-alpha_paper.

Notes

Inputs and units. rhos_Msunpc3 (Msun/pc^3), rs_pc (pc), Q>0, alpha>0, beta>2, 0<=gamma<2; r_t_pc > 0 is an ellipsoidal cutoff and can be infinite for the forward model. Intrinsic R>=0 and signed z, or signed sky x/y, are finite and broadcast to one shape (pc).

Returns and shape. density is Msun/pc^3 and zero outside r_t_pc. potential_gradient returns (dPhi/dR,dPhi/dz) in (km/s)^2/pc, opposite gravitational acceleration. enclosed_mass(m_pc) is Msun inside the ellipsoid R^2 + z^2/Q^2 <= m_pc^2. J/D are scalar factors. Array outputs follow the broadcast shape, including scalar output.

Validity. Force and factor quadrature orders require convergence checks. Annihilation factors additionally require gamma < 1.5 and a finite cutoff. Force evaluation exactly at a cusped origin is unsupported.

Errors. Invalid scales, slopes, coordinates, geometry or quadrature orders raise ValueError. This halo component does not calculate velocity moments or select tracer/anisotropy components.

Backend. NumPy/SciPy CPU, frozen dataclasses.

Differentiation. No physical-parameter automatic differentiation on this API.

Examples. examples/docs_axisymmetric.py

Parameters:
rs_pc: float#
rhos_Msunpc3: float#
Q: float = 1.0#
alpha: float = 1.0#
beta: float = 3.0#
gamma: float = 1.0#
r_t_pc: float = inf#
density(R, z)[source]#

Evaluate halo density in Msun/pc^3 at cylindrical coordinates R,z in pc.

Coordinates broadcast and must be finite/nonempty with R>=0, otherwise ValueError is raised. Density is zero beyond the ellipsoidal cutoff; a positive central cusp diverges at the origin.

enclosed_mass(m_pc, *, n_steps=128)[source]#

Mass inside the spheroid m <= m_pc, truncated at r_t_pc, in Msun.

potential_gradient(R, z, n=96)[source]#

Return (dPhi/dR, dPhi/dz), opposite to gravitational acceleration.

jfactor(dist_pc, roi_deg, *, inclination=1.5707963267948966, **quadrature)[source]#

Finite-cone annihilation factor in GeV^2 cm^-5; finite r_t_pc required.

dfactor(dist_pc, roi_deg, *, inclination=1.5707963267948966, **quadrature)[source]#

Finite-cone decay factor in GeV cm^-2; finite r_t_pc required.

mass_density_3d(R_pc, z_pc)[source]#

Return halo density in Msun/pc^3, zero outside the cutoff.