hyperion.densities.UlrichEnvelope

class hyperion.densities.UlrichEnvelope(mdot=None, rho_0=None, rmin=None, rmax=None, rc=None, ambient_density=0.0, star=None)

This class implements the density structure for a rotationally flattened and infalling envelope, with a density given by:

\rho(r,\theta) = \frac{\dot{M}_{\rm env}}{4\pi\left(G M_{\star} R_{\rm c}^3\right)^{1/2}}\left(\frac{r}{ R_{\rm c}}\right)^{-3/2}\left(1 + \frac{\mu}{\mu_0}\right)^{-1/2}\left(\frac{\mu}{\mu_0} + \frac{2\mu_0^2 R_{\rm c}}{r}\right)^{-1} = \rho_0^{\rm env}\left(\frac{r}{ R_{\rm c}}\right)^{-3/2}\left(1 + \frac{\mu}{\mu_0}\right)^{-1/2}\left(\frac{\mu}{\mu_0} + \frac{2\mu_0^2 R_{\rm c}}{r}\right)^{-1}

where $mu_0$ is given by the equation for the streamline:

\mu_0^3 + \mu_0\left(\frac{r}{ R_{\rm c}} - 1\right) - \mu\left(\frac{r}{ R_{\rm c}}\right) = 0

Once the UlrichEnvelope class has been instantiated, the parameters for the density structure can be set via attributes:

>>> from hyperion.util.constants import msun, au, pc
>>> from hyperion.densities.ulrich_envelope import UlrichEnvelope
>>> envelope = UlrichEnvelope()
>>> envelope.rho_0 = 1.e-19
>>> envelope.rmin = 0.1 * au
>>> envelope.rmax = pc

UlrichEnvelope instances can only be used with spherical polar grids at this time.

Attributes

mdot

infall rate (g/s)

rho_0

density factor (g/cm^3)

rmin

inner radius (cm)

rc

inner radius (cm)

rmax

outer radius (cm)

cavity

BipolarCavity instance

star

central star instance (needs a mass attribute)

dust

dust properties (filename or dust object)

Methods

density(self, grid[, ignore_cavity])

Return the density grid

outermost_radius(self, rho)

Find the outermost radius at which the density of the envelope has fallen to rho (in the midplane).

midplane_cumulative_density(self, r)

Find the cumulative column density as a function of radius.

add_bipolar_cavity(self)

Add a bipolar cavity to the envelope.

Methods (detail)

density(self, grid, ignore_cavity=False)

Return the density grid

Parameters
gridSphericalPolarGrid or CylindricalPolarGrid instance.

The spherical polar grid object containing information about the position of the grid cells.

Returns
rhonp.ndarray

A 3-dimensional array containing the density of the envelope inside each cell. The shape of this array is the same as grid.shape.

outermost_radius(self, rho)

Find the outermost radius at which the density of the envelope has fallen to rho (in the midplane).

Parameters
rhofloat

The density for which to determine the radius

Returns
rfloat

The radius at which the density has fallen to rho

midplane_cumulative_density(self, r)

Find the cumulative column density as a function of radius.

The cumulative density is measured outwards from the origin, and in the midplane.

Parameters
rnp.ndarray

Array of values of the radius up to which to tabulate the cumulative density.

Returns
rhonp.ndarray

Array of values of the cumulative density.

add_bipolar_cavity(self)

Add a bipolar cavity to the envelope.

Returns
cavityBipolarCavity instance

The bipolar cavity instance, which can then be used to set the parameters of the cavity.