DUST_LIVE

Particle-based framework treating dust as live simulation particles. Dust particles represent ensembles of physical grains and are subject to dynamical forces. In principle, dust motion can be decoupled from gas motion. Optionally, DUST_LIVE allows dust particles to represent grains of different sizes using a discretized grain size distribution that can evolve in time. Grain size evolution models dust grain collisions with gas-phase metals and other dust grains and is implemented in a subgrid fashion.

Usage

By default, simulation dust particles move dynamically according to gravity and an aerodynamic drag force. The drag force can be solved with a semi-implicit time integrator, which alleviates the need to resolve the (possibly short) drag stopping time-scale. Instead, it makes use of the analytic behavior of drag over time intervals where the stopping time-scale is roughly constant.

Optionally, dust particles can be assigned grain size distributions that track the number of grains of different sizes. Unlike a stellar IMF, the grain size distribution can vary in time and from dust particle to dust particle. For a dust particle, the grain size distribution in bin \(i\) is parameterized as

\[\frac{\mathrm{d}n(a, t)}{\mathrm{d}a} = \frac{N_i(t)}{a_{i+1}^\mathrm{e} - a_{i}^\mathrm{e}} + s_i(t) \times (a - a_{i}^\mathrm{c})\]

where \(\mathrm{d} n(a, t) / \mathrm{d}a \times \Delta a\) is the number of grains in the size interval \([a, a + \Delta a]\) at time \(t\) on a dust particle, \(N_i(t)\) and \(s_i(t)\) are the number of grains and slope in bin \(i\), \(a_{i}^\mathrm{e}\) and \(a_{i+1}^\mathrm{e}\) are the bin edges, and \(a_{i}^\mathrm{c} = (a_{i}^\mathrm{e} + a_{i+1}^\mathrm{e})/2\) is the bin center.

Star particles stochastically spawn dust particles during ISM enrichment according to tabulated dust yields. This approach creates the correct amount of dust in expectation, and the desired mass of simulation dust particles can be adjusted to balance computational cost and resolution.

Depending on which configuration options are on, various snapshot fields are written. These are summarized below.

HDF5 Dataset

Physical Factor

Units

Description

Coordinates

\(a / h\)

UnitLength

Same as in snapshots.

Velocities

\(\sqrt{a}\)

UnitVelocity

Same as in snapshots.

Masses

\(1 / h\)

UnitMass

Same as in snapshots.

Dust_GasHsml

\(a / h\)

UnitLength

Smoothing length enclosing gas neighbors around a dust particle.

Dust_GasDensity

\(h^2 / a^3\)

UnitMass/UnitLength^3

Local gas density around a dust particle.

Dust_NumGrains

\(1\)

none

Array indicating number of grains in each grain size bin.

Dust_BinSlopes

\(1\)

1/micron^2

Array indicating bin slope in each grain size bin.

Dust_MetalFractions

\(1\)

none

Array indicating which fraction of dust particle mass comes from different chemical elements.

Dust_DustHsml

\(a / h\)

UnitLength

Smoothing length enclosing dust neighbors around a dust particle.

Dust_DustDensity

\(h^2 / a^3\)

UnitMass/UnitLength^3

Local dust density around a dust particle.

Dust_NgbID

none

none

ID of closest dust neighbor that a dust particle could derefine into.

Dust_IsWind

none

none

Flag indicating whether a dust particle is in wind phase (1) or not (0).

Dust_WindTimeLeft

\(1 / h\)

UnitLength/UnitVelocity

Amount of time a dust particle has left in wind phase.

Additional Parameters

The DUST_LIVE module requires several parameters, depending on which configuration options are active.

  • DesNumNgbDust Number of neighbors (gas or dust) around dust particles used in kernel estimates. Default value: 64.

  • MaxNumNgbDeviationDust Tolerance in number of neighbors for searches around dust particles. Default value: varies.

  • MinGrainSize Minimum size for grain size distribution, in microns. Default value: 0.001.

  • MaxGrainSize Maximum size for grain size distribution, in microns. Default value: 1.0.

  • GrainDensity Physical density of a solid dust grain, in g cm^-3. Default value: 2.4.

  • MaxBinFracMassChg Fractional amount by which a grain size distribution bin is allowed to change in mass during a (possibly sub-cycled) time-step. Default value: 0.1.

  • GrainDataPath Path to HDF5 file containing various initialization data (dust nucleosynthetic yields, initial grain size distributions, etc.). Default value: varies.

  • DustTargetFrac Fraction of initial mass of a star particle that converts to a dust particle when stochastic condition is met. Default value: 1.0e-1.

  • DustMaxFrac Fraction of TargetGasMass, indicating the maximum allowable dust mass before refinement occurs. Default value: 1.0.

  • DustMinFrac Fraction of TargetGasMass, indicating the minimum allowable dust mass before derefinement occurs. Default value: 1.0e-2.

  • NumDustPerSpawn Number of dust particles created when a star particle stochastically decides to form dust. If set to one (recommended), a single dust particle contains the full grain size distribution. If set greater than one, multiple dust particles are created with contiguous, equal-mass chunks of the grain size distribution. Default value: 1.

  • DustSubcycleFac Force dust particle time-steps to resolve this factor times the grain size evolution time-step. For example, setting this value to 2.0 allows dust particle time-steps to be twice as large as what grain size evolution time-steps would require. Default value: varies.

Additional Config.sh Options

DUST_LIVE

master switch, set to an integer for the particle type of dust in output

DL_STOPPING_TIME_CORRECTION

calculate drag stopping time-scales using correction for supersonic motion

DL_DRAG_SEMI_IMPLICIT

highly recommended: use second-order semi-implicit drag integrator instead of explicit integrator

DL_GRAIN_BINS=10

set to an integer N and track grain size distribution broken up into N log-spaced size bins

DL_GRAIN_BINS_PIECEWISE_LINEAR

highly recommended: discretize grain size distribution using piecewise linear scheme instead of just piecewise constant scheme

DL_GROWTH

allow dust grains to accrete gas-phase metals

DL_SPUTTERING

allow dust grains to shrink and lose mass through thermal sputtering

DL_SNE_DESTRUCTION

allow dust grains to shrink and lose mass through supernova destruction

DL_SHATTERING

allow dust grains to collide together and shatter to smaller sizes

DL_COAGULATION

allow dust grains to collide together and coagulate to larger sizes

DL_SHATTERING_DETAILED_INTEGRALS

calculate shattering and coagulation rates using full piecewise linear grain size discretization instead of piecewise constant approximation; this option requires more floating point operations

DL_PRODUCTION

stochastically spawn dust particles from star particles based on dust yield calculations; requires GFM (for star particles) and DL_GRAIN_BINS (since dust particles are initialized with grain size information)

DL_REFINEMENT

split dust particles in two whenever masses exceed a threshold value

DL_DEREFINEMENT

merge dust particles into a neighbor whenever masses drop below a threshold value, with option set to an integer (0=merge into closest dust neighbor with mass above derefinement mass limit, 1=merge into closest dust neighbor without regard to neighbor mass)

DL_SUBCYCLE

set to an integer N and perform grain size evolution over N subcycles within particle timesteps

DL_WINDS

give dust particles stochastic kicks to mimic winds; requires GFM_WINDS, which will set the method for calculating wind direction

DL_ONLY_HIGHRES_DUST

in zoom-in runs, only spawn dust particles from high-resolution star particles to avoid the formation of very large dust particles in low-resolution regions; requires DL_REFINEMENT

Authors

Usage Policy and Citation

Users are free to adopt DUST_LIVE in their own work. We ask that any papers based on this work cite

McKinnon R., Vogelsberger M., Torrey P., Marinacci F., Kannan R., 2018, MNRAS