Wiki

Clone wiki

supernu / features

CODE FEATURES

The time-dependent equations for photon transport and diffusion are solved with Monte Carlo (MC) by discretizing the radiation energy in the system in the form of MC packets (particles). These particles are transported over the computational domain (spatial grid) where they interact with the gas according to multi-group opacities (groups). Particles that leave the domain are tallied per timestep and flux wavelength bin, and written to disk.

Particles:

  • MC Particles are generated in locations where energy sources are non-zero.
  • The number of particles generated locally is determined by:
    • a power law of the local energy source,
    • the fraction of the local energy source to the total energy source,
    • a minimal number of particles per grid cell with non-zero energy source.
  • Energy sources include:
    • analytic boundary and volume sources,
    • manufactured-solution sources,
    • energy deposition by radioactive decay of supernova explosion products.
  • Particles that get censused at the end of a timestep are stored in the particle array.
    • particle direction is stored in the lab frame,
    • particle energy/wavelength is stored in the comoving frame.

Transport:

  • Particle transport methods are:
    • Implicit Monte Carlo (IMC),
    • Discrete Diffusion Monte Carlo (DDMC).
  • DDMC is used in optically thick regions of a domain.
  • Geometries:
    • 3D spherical,
    • 3D cylindrical,
    • 3D cartesian.
  • Assumptions:
    • local thermodynamic equilibrium (LTE),
    • material either static or in homologous expansion.
  • particle transport is parallelized using a hybrid of MPI and OpenMP

Spatial grid:

  • The grid is the domain over which MC particles are tracked.
  • The grid can either be a spatial or a velocity mesh.
  • If the grid is physically moving:
    • the grid has units of velocity,
    • the velocity grid is not affected by the radiation radiation field,
    • the velocity grid is constant.
  • If the grid is physically static:
    • the grid is in units of length,
    • the domain is static (no velocity field).
  • The grid array is geometry-agnostic
  • The grid array is compressed by not storing regions of zero opacity (zero mass).
  • The grid array only stores quantities that are needed for the transport step

Gas:

  • Gas properties are domain decomposed.
  • Gas properties are updated after transport steps.
  • Gas properties include:
    • chemical composition,
    • density,
    • material temperature,
    • heat capacity,
    • opacity: Thomson scattering, and multi-group absorption.
  • Leakage (DDMC) and Planck opacities are calculated from scattering and absorption opacities.
  • Mutli-group absorption opacity includes bound-bound (bb), bound-free (bf), and free-free (ff) data for Hydrogen to Cobalt:

Groups:

  • Opacity frequency dependence is discretized with multi-group.
  • The frequency-resolved opacities are averaged within each group.
  • The code may use a constant multi-group grid in units of either:
    • wavelength,
    • non-dimensional wavelength (wavelength multiplied by material temperature).

IO:

  • input is divided in two categories:
    • model specific input files are named input.* and (see the Input/ directory):
      • input.par: runtime parameters,
      • input.str: velocity-density-composition structure on the computational domain.
    • model independent data files are named data.* (see the Data/ directory):
      • data.bf_verner: bound-free cross section data (Verner et al. 1996, ApJ 465, 487)
      • data.ff_sutherland: free-free gaunt factor data (Sutherland 1998, MNRAS 300, 321)
      • data.ion: atomic level data (from http://kurucz.harvard.edu/atoms.html)
      • Atoms/data.atom.* bound-bound transition data
  • output files are named output.*
    • stdout is written to output.log unless disabled in by an input parameter.
    • flux variables are saved as output.flx_*
    • grid variables are saved as output.grd_*
    • total (integrated over the domain) energy budget numbers are saved as output.tot_energy

Updated