Chemical State¶
Class providing the chemical state of gas, specifically the free electron number density (in cm\(^{-3}\)) and its logarithmic gradients with respect to temperature and total density, as functions of hydrogen number density, temperature, elemental abundances, and an ambient radiation field. The electron density enters cooling rates, recombination rates, and the Jeans mass, while the logarithmic slopes are needed for implicit solvers and stability analyses. Implementations range from collisional ionization equilibrium (CIE) tables to non-equilibrium photoionization models.
Default implementation: chemicalStateAtomicCIECloudy
Methods¶
electronDensity→double precisionReturn the electron density at the given temperature and hydrogen density for the specified set of abundances and radiation field. Units of the returned electron density are cm\(^-3\).
double precision , intent(in ) :: numberDensityHydrogen, temperaturetype (abundances ), intent(in ) :: gasAbundancesclass (radiationFieldClass), intent(inout) :: radiation
electronDensityTemperatureLogSlope→double precisionReturn the logarithmic gradient of electron density with temperature at the given temperature and hydrogen density for the specified set of abundances and radiation field.
double precision , intent(in ) :: numberDensityHydrogen, temperaturetype (abundances ), intent(in ) :: gasAbundancesclass (radiationFieldClass), intent(inout) :: radiation
electronDensityDensityLogSlope→double precisionReturn the logarithmic gradient of electron density with respect to density at the given temperature and hydrogen density for the specified set of abundances and radiation field.
double precision , intent(in ) :: numberDensityHydrogen, temperaturetype (abundances ), intent(in ) :: gasAbundancesclass (radiationFieldClass), intent(inout) :: radiation
chemicalDensities→voidReturn the densities of chemical species at the given temperature and hydrogen density for the specified set of abundances and radiation field. Units of the returned electron density are cm\(^-3\).
type (chemicalAbundances ), intent(inout) :: chemicalDensitiesdouble precision , intent(in ) :: numberDensityHydrogen, temperaturetype (abundances ), intent(in ) :: gasAbundancesclass (radiationFieldClass), intent(inout) :: radiation
chemicalStateAtomicCIECloudy¶
A chemical state class that computes the chemical state using the Cloudy code and under the assumption of collisional ionization equilibrium with no molecular contribution. Abundances are Solar, except for zero metallicity calculations which use Cloudy’s “primordial” metallicity. The helium abundance for non-zero metallicity is scaled between primordial and Solar values linearly with metallicity. The Cloudy code will be downloaded and run to compute the cooling function as needed, which will then be stored for future use. As this process is slow, a precomputed table is provided with Galacticus. If metallicities outside the range tabulated in this file are required it will be regenerated with an appropriate range.
(Default implementation)
Methods
tabulate— Run Cloudy to tabulate chemical state as necessary.
chemicalStateCIEFile¶
A chemical state class providing chemical state via interpolation of tabulated values read from file. The HDF5 file containing the table should have the following form:
HDF5 "chemicalState.hdf5" {
GROUP "/" {
ATTRIBUTE "fileFormat" {
DATATYPE H5T_STRING {
STRSIZE 1;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "1"
}
}
DATASET "electronDensity" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 7, 8 ) / ( 7, 8 ) }
}
DATASET "hiDensity" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 7, 8 ) / ( 7, 8 ) }
}
DATASET "hiiDensity" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 7, 8 ) / ( 7, 8 ) }
}
DATASET "metallicity" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 8 ) / ( 8 ) }
ATTRIBUTE "extrapolateHigh" {
DATATYPE H5T_STRING {
STRSIZE 3;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "fix"
}
}
ATTRIBUTE "extrapolateLow" {
DATATYPE H5T_STRING {
STRSIZE 3;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "fix"
}
}
}
DATASET "temperature" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( 7 ) / ( 7 ) }
ATTRIBUTE "extrapolateHigh" {
DATATYPE H5T_STRING {
STRSIZE 3;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "fix"
}
}
ATTRIBUTE "extrapolateLow" {
DATATYPE H5T_STRING {
STRSIZE 3;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "fix"
}
}
}
}
}
The temperature dataset should specify temperature (in Kelvin), while the metallicity dataset should give the logarithmic metallicity relative to Solar (a value of -999 or less is taken to imply zero metallicity). The electronDensity dataset should specify the number density of electrons relative to hydrogen at each temperature/metallicity pair. Optionally hiDensity and hiiDensity datasets may be added giving the number densities of H i and H ii relative to hydrogen respectively The extrapolateLow and extrapolateHigh attributes of the temperature and metallicity datasets specify how the cooling rate should be extrapolated in the low and high vale limits. Allowed options for these attributes are:
zeroThe electron density is set to zero beyond the relevant limit.
fixedThe electron density is held fixed at the value at the relevant limit.
power lawThe electron density is extrapolated assuming a power-law dependence beyond the relevant limit. This option is only allowed if the electron density is everywhere positive.
If the electron density is everywhere positive the interpolation will be done in the logarithmic of temperature, metallicityfootnoteThe exception is if the first electron density is tabulated for zero metallicity. In that case, a linear interpolation in metallicity is always used between zero and the first non-zero tabulated metallicity. and electron density. Otherwise, interpolation is linear in these quantities. The electron density is scaled assuming a linear dependence on hydrogen density.
Methods
readFile— Read the named chemical state file.interpolatingFactors— Compute interpolating factors in a CIE chemical state file.interpolate— Interpolate in the given density table.
Parameters
[fileName]— The name of the file containing a tabulation of the collisional ionization equilibrium cooling function.[fileName]— The name of the file containing a tabulation of the collisional ionization equilibrium chemical state.