The addition of non-equilibrium metal species and dust evolution models will require us to make some decisions about how metal-related fields are defined and some other expectations of behavior.
The Current Behavior
The Grackle main branch essentially only models gas-phase chemistry right now. We only allow for a passive dust model where the dust field is not considered to contribute to the total density. Specifically, we have the total gas density, density, defined as:
density = metal_density + $\sum_i$ primordial_density_i,
where primordial_density_i represents the mass densities of HI, HII, HeI, etc.
This affords us the luxury of guaranteeing that density remains constant over the course of a call to solve_chemistry
The Single-Grain Dust Model
With the new single-grain dust model, we will now be tracking a dust_density field that will exchange mass with the metal_density field as dust grains grow or are destroyed. Now we face a cross-roads with two possible paths:
Option 1: density = metal_density + dust_density + $\sum_i$ primordial_density_i
This has the benefit of continuing to guarantee that density remains constant, but has the disadvantage of requiring several minute alterations all over the plus, like changing how we define metallicity and how we define the primordial component of the density field.
Option 2: density = metal_density + $\sum_i$ primordial_density_i
Here, we have the opposite situation. After speaking with @aqua-hl I think this is better option. It also allows us to maintain that the density field is the one used for hydrodynamics.
The Multi-Grain Dust Model
Using the new multi-grain model will require the user to also supply injection metal fields (see #444) to trace the map metals coming from specific creation pathway to yields of gas-phase metals and dust species. This introduces another instance where the path forward is not obvious. The injection pathways give the fraction of metal mass of going into seven elements and up to 13 different dust species (see #465). However, in no configuration do the gas and dust yields fraction for the total metal yield. Below, I show the total gas and dust yields for each injection pathway. Note, if fewer density species are used, the dust-phase and absolute totals are even lower.
local_ISM:
- gas-phase total: 0.33537661799999996
- dust-phase total: 0.5061552
- total: 0.841531818
ccsn13:
- gas-phase total: 0.698820896
- dust-phase total: 0.09255480452
- total: 0.79137570052
ccsn20:
- gas-phase total: 0.8700132180000001
- dust-phase total: 0.055497320659999995
- total: 0.9255105386600001
ccsn25:
- gas-phase total: 0.809653515
- dust-phase total: 0.11757425859999998
- total: 0.9272277736000001
ccsn30:
- gas-phase total: 0.9064142779999999
- dust-phase total: 0.039527683765792514
- total: 0.9459419617657924
fsn13:
- gas-phase total: 0.8244579428270001
- dust-phase total: 0.17554200000000802
- total: 0.9999999428270081
fsn15:
- gas-phase total: 0.8107713175090001
- dust-phase total: 0.1892290000000369
- total: 1.000000317509037
fsn50:
- gas-phase total: 0.9998899782668
- dust-phase total: 0.0001098505113741244
- total: 0.9999998287781742
fsn80:
- gas-phase total: 0.9913192637702
- dust-phase total: 0.00868025000275811
- total: 0.999999513772958
pisn170:
- gas-phase total: 0.92304398
- dust-phase total: 0.013309690847284955
- total: 0.9363536708472849
pisn200:
- gas-phase total: 0.922013672
- dust-phase total: 0.0009824352838940825
- total: 0.922996107283894
y19:
- gas-phase total: 0.25894751
- dust-phase total: 0.5
- total: 0.75894751
How do we track the addition metal mass not being mapped to a specific species? Not fully understanding what is needed by the multi-grain growth functionality, I think we can either put untracked metal mass into the metal_density field or we need an extra metal field. This brings me to the final (and possibly identical) point.
Tracking Gas-Phase Metals
The non-equilibrium metal fields that we will be able to follow will of course be a subset of all possible species. We will likely need to supplement the non-equilibrium metal cooling with metallicity dependent tables. At high temperature, these tables will have to account for the cooing from all metals (including those we are tracking) as we have not specifically implemented high temperature transitions. At low temperature, they will only complement the non-equilibrium cooling. Potentially, the low temperature regime could be done another way, but we'll need to think about it.
Minimally, we need to understand what metal_density will still mean. It should either represent the sum total of all metals (including the ones we track) or it should represent only the metals we are NOT tracking. I am not confident I have completely mapped out the ramifications of either choice yet.
The addition of non-equilibrium metal species and dust evolution models will require us to make some decisions about how metal-related fields are defined and some other expectations of behavior.
The Current Behavior
The Grackle
$\sum_i$
mainbranch essentially only models gas-phase chemistry right now. We only allow for a passive dust model where the dust field is not considered to contribute to the total density. Specifically, we have the total gas density,density, defined as:density=metal_density+primordial_density_i,where
primordial_density_irepresents the mass densities of HI, HII, HeI, etc.This affords us the luxury of guaranteeing that
densityremains constant over the course of a call tosolve_chemistryThe Single-Grain Dust Model
With the new single-grain dust model, we will now be tracking a
dust_densityfield that will exchange mass with themetal_densityfield as dust grains grow or are destroyed. Now we face a cross-roads with two possible paths:Option 1:$\sum_i$
density=metal_density+dust_density+primordial_density_iThis has the benefit of continuing to guarantee that
densityremains constant, but has the disadvantage of requiring several minute alterations all over the plus, like changing how we define metallicity and how we define the primordial component of the density field.Option 2:$\sum_i$
density=metal_density+primordial_density_iHere, we have the opposite situation. After speaking with @aqua-hl I think this is better option. It also allows us to maintain that the
densityfield is the one used for hydrodynamics.The Multi-Grain Dust Model
Using the new multi-grain model will require the user to also supply injection metal fields (see #444) to trace the map metals coming from specific creation pathway to yields of gas-phase metals and dust species. This introduces another instance where the path forward is not obvious. The injection pathways give the fraction of metal mass of going into seven elements and up to 13 different dust species (see #465). However, in no configuration do the gas and dust yields fraction for the total metal yield. Below, I show the total gas and dust yields for each injection pathway. Note, if fewer density species are used, the dust-phase and absolute totals are even lower.
local_ISM:
ccsn13:
ccsn20:
ccsn25:
ccsn30:
fsn13:
fsn15:
fsn50:
fsn80:
pisn170:
pisn200:
y19:
How do we track the addition metal mass not being mapped to a specific species? Not fully understanding what is needed by the multi-grain growth functionality, I think we can either put untracked metal mass into the
metal_densityfield or we need an extra metal field. This brings me to the final (and possibly identical) point.Tracking Gas-Phase Metals
The non-equilibrium metal fields that we will be able to follow will of course be a subset of all possible species. We will likely need to supplement the non-equilibrium metal cooling with metallicity dependent tables. At high temperature, these tables will have to account for the cooing from all metals (including those we are tracking) as we have not specifically implemented high temperature transitions. At low temperature, they will only complement the non-equilibrium cooling. Potentially, the low temperature regime could be done another way, but we'll need to think about it.
Minimally, we need to understand what
metal_densitywill still mean. It should either represent the sum total of all metals (including the ones we track) or it should represent only the metals we are NOT tracking. I am not confident I have completely mapped out the ramifications of either choice yet.