Defined Types

Abstract Types

The highest level type defined in this package is the abstract type AbstractMassProfile, which all other profiles are subtyped from. Below these are AbstractDensity and AbstractSurfaceDensity; the latter is defined only as a surface density and will have no 3D quantities defined (e.g., ρ), while the former represents 3D density profiles.

GalaxyProfiles.AbstractSurfaceDensityType

Abstract type (<:AbstractMassProfile) for surface density profiles for which 3D quantities are not defined. Radii for instances of AbstractSurfaceDensity are always 2D.

source

Densities

The following concrete types, representing specific density profiles, are currently implemented:

GalaxyProfiles.CoreNFWType
CoreNFW(ρ0::Real, rs::Real, rc::Real, n::Real)

Type implementing the CoreNFW density profile of Read et al. 2016. This is a modified NFW profile with lower central densities calibrated to reproduce the density profiles observed in their simulations. The parameters ρ0 and rs are identical to those for the NFW profile. However, the CoreNFW profile makes the following alteration to the enclosed mass,

\[\begin{aligned} M_\text{c,NFW}(<R) &= M_\text{NFW}(<R) \times f^n \newline f^n &= \left[ \text{tanh} \left( \frac{r}{r_c} \right) \right]^n \end{aligned}\]

where the core radius $r_c$ and $n$, which controls how shallow the core is (no core with n==0 and complete core with n==1), are new free parameters.

See also

source
GalaxyProfiles.GeneralIsothermalType
GeneralIsothermal(ρ0::Real, rs::Real, α::Real)
GeneralIsothermal(ρ0::Unitful.Density, rs::Unitful.Length, α::Real)
GeneralIsothermal(rs::Real, α::Real, M::Real, Rmax::Real)
GeneralIsothermal(rs::Unitful.Length, α::Real, M::Unitful.Mass, Rmax::Unitful.Length)

Type describing general isothermal density profiles with scale radius rs, power-law index α, and density at rs of ρ0. The density profile is

\[\rho(r) = \rho_0 \times \left( \frac{r}{R_s} \right)^{-\alpha}\]

The fields of GeneralIsothermal are ρ0, rs, α. The default units of GeneralIsothermal are [ρ0] = [Msun/kpc^3], [r, rs] = [kpc], [M] = [Msun] when you construct GeneralIsothermal with Reals, like Float64. This is important for quantities like Vcirc, Vesc, Φ, ∇Φ, and ∇∇Φ which involve G; these will give incorrect results if the fields of GeneralIsothermal or the provided r are in different units. If you construct GeneralIsothermal with Unitful quantities, they will be internally converted.

Since the total mass of the GeneralIsothermal profile is undefined when $\alpha \geq 3$, we define the the potential Φ to be 0 at rs for all instances of GeneralIsothermal.

The following methods are specialized on this type:

See also

source
GalaxyProfiles.NFWType
NFW(ρ0::Real, rs::Real)
NFW(ρ0::Unitful.Density, rs::Unitful.Length)

Type describing the Navarro-Frenk-White 1996 (NFW) density profile with scale radius rs and characteristic density ρ0. The density profile is

\[\rho(r) = \frac{\rho_0}{(r/R_s) \, (1+r/R_s)^2}\]

The fields of NFW are ρ0, rs. The default units of NFW are [ρ0] = [Msun/kpc^3], [r, rs] = [kpc], [M] = [Msun]. This is important for quantities like Vcirc, Vesc, Φ, ∇Φ, and ∇∇Φ which involve the gravitational constant G; these will give incorrect results if the fields of NFW or the provided r are in different units.

The following public methods are defined on this type:

source
GalaxyProfiles.PlummerType
Plummer(M::Real, a::Real)
Plummer(M::Unitful.Mass, a::Unitful.Length)

Type implementing the density profile first proposed by Plummer 1911 (see also Dejonghe 1987); this density profile is defined by the potential

\[\Phi(r) = -\frac{G \, M}{\sqrt{ r^2 + a^2 } }\]

which corresponds to a density profile of

\[\rho(r) = \frac{3 \, M}{4 \pi a^3} \, \left( 1 + \frac{r^2}{a^2} \right)^{-5/2}\]

where M is the total mass of the system and a is the characteristic scale radius of the system. Following this, the fields of Plummer are M, a. This scale radius can be converted to the 3D half-light (or half-mass) radius via

\[r_h = \frac{a}{\sqrt{ 0.5^{-2/3} - 1} }\]

the method GalaxyProfiles.plummer_a_to_rh is provided to perform this conversion. In projection (i.e., along a line-of-sight) the half-light radius is equal to the Plummer scale radius a, verifiable by quantile2D(d::Plummer, 0.5) == scale_radius(d).

The default units of Plummer are [M] = [Msun], [a, r] = [kpc]. This is important for quantities like Vcirc, Vesc, Φ, ∇Φ, and ∇∇Φ which involve the gravitational constant G; these will give incorrect results if the fields of Plummer or the provided r are in different units.

The following public methods are defined on this type:

source

Surface Densities

The following concrete types, representing specific surface density profiles, are currently implemented:

GalaxyProfiles.ExponentialDiskType
ExponentialDisk(Σ0::Real,rs::Real)
ExponentialDisk(rs::Real;Σ0=nothing,M=nothing)

Type describing projected isotropic exponential surface density profiles with central surface density Σ0 and scale radius rs. The surface density profile is

\[\Sigma(r) = \rho_0 \times \exp \left( \frac{-r}{R_s} \right)\]

The fields of ExponentialDisk are Σ0, rs. There are no methods defined for ExponentialDisk which use physical constants with units (e.g., G), so as long as ExponentialDisk.rs and the radius r you provide to methods are in the same units, and Σ0 is in units of [M/[r,rs]^2]everything will work out. Generally just want to make sure the length units are uniform.

The following public methods are defined on this type:

See also

source
GalaxyProfiles.SersicType
Sersic(Σ0, r_e, n, q)

Type describing Sersic surface density profile, typically used to model the surface brightness profile of galaxies in images.

Arguments

  • Σ0: surface density at radius r = r_e
  • r_e: Sersic scale radius
  • n: Sersic index controlling how steep/shallow the profile is
  • q: minor-to-major axis ratio

\[\Sigma(r) = \Sigma_0 \times \exp \left( -b_n \left[ \left(\frac{r}{r_e} \right)^{1/n} - 1 \right] \right)\]

where b_n is derived from the Sersic index n (see equations 3, 4 of Graham & Driver 2005).

The fields of Sersic are Σ0, r_e, n, q. There are no methods defined for Sersic which use physical constants with units (e.g., G), so as long as Sersic.r_e and the radius r you provide to methods are in the same units, and Σ0 is in units of [M/[r,r_e]^2]everything will work out. Generally just want to make sure the length units are uniform.

The following public methods are defined on this type:

source

Retrieving Parameters

The parameters that define these types can be retrieved with params and scale_radius

GalaxyProfiles.scale_radiusMethod
scale_radius(d::AbstractMassProfile)
scale_radius(uu::Unitful.LengthUnits, d::AbstractMassProfile)

Returns the characteristic scale radius of the profile; used for some default methods. An example is rs for the ExponentialDisk model.

source

Convenience Constructors

We also provide some convenience constructors for other types such as the singular isothermal sphere, which returns an instance of GeneralIsothermal with α=2.

GalaxyProfiles.CoreNFWGalaxyFunction
CoreNFWGalaxy(ρ0::Real, rs::Real, t_sf::Real, rhalf::Real;
              κ::Real=4//100, η::Real=175//100)

An alternative parameterization for the CoreNFW profile based on galaxy properties.

The standard CoreNFW type uses $n$ and $r_c$ to parameterize the Read et al. 2016 density model, but the authors relate these halo-level parameters to galaxy-level parameters in the following ways. They find $n$ to be related to the total star formation time,

\[\begin{aligned} n &= \text{tanh} \left( q \right) \newline q &= \kappa \, \frac{t_\text{SF}}{t_\text{dyn}} \end{aligned}\]

where $t_\text{dyn}$ is the circular orbit time at the NFW profile scale radius $r_s$. This is the orbital circumference divided by the speed; for profile p, this is 2π * p.rs / GalaxyProfiles.Vcirc(p, p.rs).

They also find the core radius $r_c$ to be related to the projected stellar half-mass radius as

\[r_c = \eta \, R_{h}\]

Thus if the total star formation time and projected stellar half-mass radius are known for a galaxy, one can calculate $n$ and $r_c$ given the alternative parameters $\eta$ and $\kappa$. In their simulations, Read et al. find $\kappa=0.04$ and $\eta=1.75$, so these are the default values for this alternate parameterization.

source
GalaxyProfiles.SISFunction
SIS(ρ0::Real, rs::Real)
SIS(ρ0::Unitful.Density, rs::Unitful.Length)
SIS(rs::Real, M::Real, Rmax::Real)
SIS(rs::Unitful.Length, M::Unitful.Mass, Rmax::Unitful.Length)

Convenience function to construct a singular isothermal sphere; i.e., a GeneralIsothermal with α=2.

source
GalaxyProfiles.ExponentialDiskDHIFunction
ExponentialDiskDHI(DHI::Real, MHI::Real, ΣDHI::Real=10^6)
ExponentialDiskDHI(DHI::Unitful.Length, MHI::Unitful.Mass,
    ΣDHI::GalaxyProfiles.SurfaceDensity=1*UnitfulAstro.Msun/UnitfulAstro.pc^2)

Convenience constructor for the ExponentialDisk surface density profile. This will take a diameter for the disk DHI (e.g., the diameter of a neutral hydrogen disk), its total mass MHI, and ΣDHI, the surface density at DHI, and return an ExponentialDisk object with the correct central density and scale radius.

By default, ΣDHI is 10^6 solar masses per square kiloparsec (equivalent to one solar mass per square parsec), such that you should provide DHI in kpc if you are using Real inputs.

Notes

At high masses (e.g., $10^{10} \ \text{M}_\odot < \text{M}_{\text{HI}}$) the numerical inversion is impossible; in this case, the exponential disk scale radius is set to DHI/4.

source