Skip to content

Slab with a Hole

Neutral gas around galaxies is patchy, so Lyα escape depends a lot on where the clear channels are. The simplest way to get at that is an anisotropic version of the infinite slab: two thin HI layers with an empty cavity between them, and a clean square hole punched through one of them. With a source in the cavity, does the line leak out through the low-column hole, or does it still have to grind its way through the slab? This is the geometry of Almada Monter & Gronke (2024).

Lyα photon random walks through a slab with a hole. Photons aimed into the hole's solid angle stream straight out (cyan); the rest scatter through the two HI slabs (orange) and diffuse out. The inset builds the emergent line profile as photons escape: a central peak from the hole channel, plus the Neufeld double-peak from the slab.

Emission from the cavity midplane is isotropic, but escape is not: the hole is a fixed patch of open sky while the slab is a frequency-dependent diffusion barrier. The hole repeats with the box periodicity, so it behaves like a regular porous screen rather than a lone pinhole. The slab thickness, hole side, and per-slab column density are all set in the config below; a hole of side \(s\) (in box units) covers a fraction \(\tilde{s} = s^2\) of the slab area.

Full configuration
slab_hole_lya.yaml
dataset_type: 'infiniteslab_hole'
driver_type: 'mcrtsimulation'
device: "cpu"

infiniteslab_hole:
  boxsize: 3.086e21        # cm (1 kpc)
  slab_geometry: double    # two slabs at the z extremes, cavity between
  hole_in_slab: "1"        # hole carved through the lower slab only
  slab_thickness: 0.15     # per-slab fraction of the box
  hole_size: 0.3333        # square hole side (box units); s~ = hole_size^2
  column_density: 5.0e15   # per-slab HI column [cm^-2] -> tau0 at line centre
  temperature: 1.0e4       # K

mcrtsimulation:
  outputpath: output
  overwrite: true
  linename: Lya
  nphotons_max: 2000
  nphotons_step_max: 2000
  nsteps_per_photon_max: 100000000
  xcrit: 0.0
  acc_scheme: none
  interactor: ResonantWithDustInteractor
  max_step: 1000000.0
  # peel toward observers down (+ up) the hole axis -> directional spectrum
  use_peeling: true
  peeling:
    tau_max: 30.0
    lines_of_sight:
      - [0.0, 0.0, -1.0]   # hole-side observer
      - [0.0, 0.0, 1.0]    # far opaque-slab observer
  emissionmodel:
    mode: "planesource"    # isotropic emission across the cavity midplane
    planesource:
      center: [0.5, 0.5, 0.5]
      normal_axis: 2
      size_u: 1.0
      size_v: 1.0
      n_u: 12
      n_v: 12
      lum_total: 1.0e42

Reading the line profile

The two escape routes leave different marks on the spectrum. Photons that find the clear channel leave near line centre after only a few scatters, making a central peak. Photons that diffuse through the slab instead have to random-walk out to the line wings before the gas turns transparent, giving the classic double-peaked profile of Neufeld (1990). The animation's inset builds exactly this, as a THOR peeling (next-event) measurement toward an observer looking up through the hole. See the raytracer reference for how peeling works.