Skip to content

Spherical Shell

A spherical shell of gas centered in the unit cube, from inner_radius to outer_radius (fractions of the box size in [0, 0.5]). inner_radius: 0.0 fills the sphere entirely.

Density can be set as a number density (density, cm⁻³) or as an integrated column density (column_density, cm⁻²); the latter is often more convenient for comparison with observations.

max_step is the maximum step size per scattering, in box units; 1.0 (the full box) is fine for static shells. For MCRT options like xcrit and acc_scheme, see the Configuration Reference.

max_step for outflowing shells

When an outflow velocity is set, both shellmodel and powerlaw_shellmodel automatically limit the step size so that the velocity change per step stays below ~1% of the thermal velocity. The auto-computed limit is:

\[ \mathtt{max\_step} \approx 0.01 \times \frac{v_\mathrm{th}}{v_\mathrm{out}} \times \Delta r \]

where \(\Delta r\) = outer_radius \(-\) inner_radius (in box units), \(v_\mathrm{out}\) is the outflow velocity, and the thermal velocity is \(v_\mathrm{th} = \sqrt{2 k_B T / m_\mathrm{H}}\). For Lya (\(m_\mathrm{H}\) = hydrogen mass) at \(T = 10^4\,\mathrm{K}\), \(v_\mathrm{th} \approx 12.85\,\mathrm{km/s}\).

The effective step size is min(max_step, auto_limit), so a smaller value always takes precedence.

Full configuration
shell_lya.yaml
dataset_type: 'shellmodel'
driver_type: 'mcrtsimulation'
device: "cpu"

shellmodel:
  boxsize: 3.086e21       # cm (1 kpc)
  inner_radius: 0.0       # fraction of box size [0, 0.5]
  outer_radius: 0.1       # fraction of box size [0, 0.5]
  temperature: 20000.0    # K
  density: 0.078098       # cm^-3 (tau ~ 1e6)
  outflow_velocity: 0.0   # cm/s (static shell)

mcrtsimulation:
  outputpath: output
  overwrite: true
  linename: Lya
  nphotons_max: 100000
  nphotons_step_max: 100000
  nsteps_per_photon_max: 10000000
  xcrit: 0.0
  acc_scheme: Smith15
  max_step: 1.0
  emissionmodel:
    mode: "singlesource"
    singlesource:
      nphotons: 10000
      lum_total: 1e42
      position: [0.5, 0.5, 0.5]
  outputprocessors:
    - type: "photon"
      active: true

Variants

Outflowing shell, add to shellmodel::

  outflow_velocity: 2e7   # cm/s (200 km/s) at r = outer_radius

Specify column density instead of number density, replace density: with:

  column_density: 2e20    # cm^-2

Dust absorption: not yet supported for shellmodel (see infiniteslab for dust support).