.. _physics-intergalacticMediumState: Intergalactic Medium State ========================== Class providing the thermal and ionization state of the :term:`IGM`---the hydrogen and helium neutral, singly-ionized, and doubly-ionized fractions, the electron fraction, the temperature, and the electron-scattering optical depth as functions of cosmic time. These quantities evolve through the epoch of reionization and affect the cooling rates, photo-ionization suppression, and the UV background modelled elsewhere in Galacticus. The instantaneous Jeans mass computed from the IGM temperature governs the filtering mass scale for baryon accretion onto low-mass halos. **Default implementation:** ``intergalacticMediumStateRecFast`` Methods ------- ``electronFraction`` → ``double precision`` Return the electron fraction (relative to hydrogen) in the :term:`IGM` at the given time. * ``double precision, intent(in ) :: time`` ``neutralHydrogenFraction`` → ``double precision`` Return the neutral fraction of hydrogen in the :term:`IGM` at the given time. * ``double precision, intent(in ) :: time`` ``singlyIonizedHydrogenFraction`` → ``double precision`` Return the singly-ionized fraction of hydrogen in the :term:`IGM` at the given time. * ``double precision, intent(in ) :: time`` ``neutralHeliumFraction`` → ``double precision`` Return the neutral fraction of helium in the :term:`IGM` at the given time. * ``double precision, intent(in ) :: time`` ``singlyIonizedHeliumFraction`` → ``double precision`` Return the singly-ionized fraction of helium in the :term:`IGM` at the given time. * ``double precision, intent(in ) :: time`` ``doublyIonizedHeliumFraction`` → ``double precision`` Return the doubly-ionized fraction of helium in the :term:`IGM` at the given time. * ``double precision, intent(in ) :: time`` ``metallicity`` → ``double precision`` Return the metallicity (mass fraction) in the :term:`IGM` at the given time. * ``double precision, intent(in ) :: time`` ``temperature`` → ``double precision`` Return the temperature (in Kelvin) of the :term:`IGM` at the given time. * ``double precision, intent(in ) :: time`` ``massJeans`` → ``double precision`` Return the instantaneous Jeans mass (in :math:`\mathrm{M}_\odot`) at the given time. * ``double precision, intent(in ) :: time`` ``electronScatteringOpticalDepth`` → ``double precision`` Return the electron scattering optical depth from the present day back to the given ``time`` in the :term:`IGM`. * ``double precision, intent(in ) :: time`` * ``logical , intent(in ), optional :: assumeFullyIonized`` ``electronScatteringTime`` → ``double precision`` Return the cosmological time at which the given electron scattering ``opticalDepth`` is reached (integrating from the present day) in the :term:`IGM`. * ``double precision, intent(in ) :: opticalDepth`` * ``logical , intent(in ), optional :: assumeFullyIonized`` .. _physics-intergalacticMediumStateFile: ``intergalacticMediumStateFile`` -------------------------------- An :term:`IGM` state class which reads the state of the intergalactic medium from a file and interpolates in the tabulated results. The HDF5 file containing the table should have the following form: .. code-block:: none HDF5 "igmState.hdf5" { GROUP "/" { ATTRIBUTE "fileFormat" { DATATYPE H5T_IEEE_F64LE DATASPACE SCALAR DATA { (0): 1 } } GROUP "Parameters" { ATTRIBUTE "HubbleConstant" { DATATYPE H5T_IEEE_F64LE DATASPACE SCALAR DATA { (0): 67.8 } } ATTRIBUTE "OmegaBaryon" { DATATYPE H5T_IEEE_F64LE DATASPACE SCALAR DATA { (0): 0.0484 } } ATTRIBUTE "OmegaDarkEnergy" { DATATYPE H5T_IEEE_F64LE DATASPACE SCALAR DATA { (0): 0.692 } } ATTRIBUTE "OmegaMatter" { DATATYPE H5T_IEEE_F64LE DATASPACE SCALAR DATA { (0): 0.308 } } ATTRIBUTE "Y_He" { DATATYPE H5T_IEEE_F64LE DATASPACE SCALAR DATA { (0): 0.22 } } ATTRIBUTE "temperatureCMB" { DATATYPE H5T_IEEE_F64LE DATASPACE SCALAR DATA { (0): 2.725 } } } DATASET "electronFraction" { DATATYPE H5T_IEEE_F64LE DATASPACE SIMPLE { ( 10000 ) / ( 10000 ) } } DATASET "hIonizedFraction" { DATATYPE H5T_IEEE_F64LE DATASPACE SIMPLE { ( 10000 ) / ( 10000 ) } } DATASET "heIonizedFraction" { DATATYPE H5T_IEEE_F64LE DATASPACE SIMPLE { ( 10000 ) / ( 10000 ) } } DATASET "matterTemperature" { DATATYPE H5T_IEEE_F64LE DATASPACE SIMPLE { ( 10000 ) / ( 10000 ) } ATTRIBUTE "units" { DATATYPE H5T_STRING { STRSIZE 6; STRPAD H5T_STR_NULLTERM; CSET H5T_CSET_ASCII; CTYPE H5T_C_S1; } DATASPACE SCALAR DATA { (0): "Kelvin" } } ATTRIBUTE "unitsInSI" { DATATYPE H5T_IEEE_F64LE DATASPACE SCALAR DATA { (0): 1 } } } DATASET "redshift" { DATATYPE H5T_IEEE_F64LE DATASPACE SIMPLE { ( 10000 ) / ( 10000 ) } } } } The ``electronFraction``, ``hIonizedFraction``, ``heIonizedFraction``, and ``matterTemperature`` datasets contain the relevant quantity for each redshift in the ``redshift`` dataset. **Methods** * ``readFile`` — Read the named power spectrum file. **Parameters** * ``[forceZeroMetallicity]`` (default ``.false.``) — Force the use of zero metallicity (or lowest metallicity available) for all stellar populations. * ``[fileName]`` — The path to the HDF5 file containing the tabulated stellar population spectra, with datasets for ages (Gyr), metallicities (log Solar), wavelengths (\AA), and spectra (:math:`L_\odot\,\mathrm{Hz}^{-1}`); see the ``scripts/ssps`` folder for conversion scripts. * ``[fileName]`` — The name of the file which contains fit coefficients for the time per tree fitting function. * ``[fileName]`` (default ``inputPath(pathTypeDataStatic)//'stellarAstrophysics/stellarPropertiesCompilationStandard.xml'``) — The name of the XML file from which to read stellar properties (ejected masses, yields, etc.). * ``[fileName]`` (default ``inputPath(pathTypeDataStatic)//'stellarAstrophysics/Stellar_Tracks_Padova.hdf5'``) — The name of the HDF5 file from which to read stellar tracks. * ``[fileName]`` — The name of the file from which to read intergalactic medium state data. * ``[fileName]`` — The name of the file from which to read intergalactic background light properties. * ``[fileName]`` — The name of a file from which to read tabulated spectra of accretion disks. * ``[fileName]`` — The name of the file from which to read a tabulated transfer function. .. _physics-intergalacticMediumStateInstantReionization: ``intergalacticMediumStateInstantReionization`` ----------------------------------------------- The intergalactic medium is assumed to be instantaneously and fully reionized at a fixed redshift, and heated to a fixed temperature. Prior to that, the reionization state is provided by some other class. **Parameters** * ``[electronScatteringOpticalDepth]`` — The optical depth to reionization in the instantReionization :term:`IGM` state model. * ``[reionizationRedshift]`` (default ``9.97d0``) — The redshift of reionization in the instantReionization :term:`IGM` state model. * ``[reionizationTemperature]`` (default ``1.0d4``) — The post-reionization temperature (in units of Kelvin) in the instantReionization :term:`IGM` state model. * ``[presentDayTemperature]`` (default ``1.0d3``) — The present day temperature (in units of Kelvin) in the instantReionization :term:`IGM` state model. .. _physics-intergalacticMediumStateInternal: ``intergalacticMediumStateInternal`` ------------------------------------ The state of the intergalactic medium is solved for internally. **Parameters** * ``[wavelengthCountPerDecade]`` (default ``10``) — The number of bins per decade of wavelength to use for calculations of the cosmic background radiation. * ``[wavelengthMinimum]`` (default ``100.0d0``) — The minimum wavelength (in units of \AA) to use in calculations of the cosmic background radiation. * ``[wavelengthMaximum]`` (default ``100000.0d0``) — The maximum wavelength (in units of \AA) to use in calculations of the cosmic background radiation. * ``[timeCountPerDecade]`` (default ``10``) — The number of bins per decade of time to use for calculations of the cosmic background radiation. * ``[redshiftMinimum]`` (default ``0.0d0``) — The minimum redshift to use in calculations of the cosmic background radiation. * ``[redshiftMaximum]`` (default ``30.0d0``) — The maximum redshift to use in calculations of the cosmic background radiation. .. _physics-intergalacticMediumStateMetallicityAstraeusV: ``intergalacticMediumStateMetallicityAstraeusV`` ------------------------------------------------ An :term:`IGM` state class which provides a fit to the metallicity evolution of the :term:`IGM` reported by :cite:t:`ucci_astraeus_2023`. .. _physics-intergalacticMediumStateMetallicityFixed: ``intergalacticMediumStateMetallicityFixed`` -------------------------------------------- An intergalactic medium state decorator class that overrides the metallicity of an underlying :term:`IGM` state object with a single constant value given by ``[metallicity]``, while passing all other state properties through unchanged. This enables simple models where the :term:`IGM` metallicity is assumed to be uniform and time-independent. **Parameters** * ``[mass]`` (default ``100.0d0``) — The fixed mass (in :math:`\mathrm{M}_\odot`) assigned to all newly-formed seed black holes in this implementation, representing the initial black hole mass when a halo first forms a central black hole. * ``[spin]`` (default ``0.0d0``) — The dimensionless spin parameter (between :math:`-1` and :math:`+1`) assigned to all newly-formed seed black holes, where :math:`0` corresponds to a non-rotating Schwarzschild black hole and :math:`\pm 1` to a maximally rotating Kerr black hole. * ``[fraction]`` (default ``0.01d0``) — The fixed fraction :math:`f_\mathrm{outflow}` of the stellar energy input rate (normalized to a canonical :math:`1\,\mathrm{M}_\odot` population) that drives gas outflows, setting the mass loading factor for stellar feedback in the galaxy. * ``[escapeFraction]`` (default ``0.006d0``) — Escape fraction of ionizing photons from young HII regions. * ``[ageLimit]`` (default ``0.03d0``) — The age beyond which all ionizing photons are assumed to escape from HII regions. * ``[timescale]`` (default ``1.0d0``) — The timescale for star formation in the fixed timescale model. * ``[rateStarFormation]`` (default ``1.0d9``) — The rate of star formation in units of :math:`\mathrm{M}_\odot \hbox{Gyr}^{-1}`. * ``[proposalSize]`` — The fixed value of the proposal scaling parameter :math:`\gamma` used to scale the vector difference between two randomly selected chain states when forming differential evolution proposals. * ``[exponentValue]`` — The fixed value of the temperature-scaling exponent :math:`\alpha` by which the proposal size :math:`\gamma` is scaled as :math:`\gamma \propto T^{\alpha}` in tempered differential evolution runs. * ``[massResolution]`` (default ``5.0d9``) — The mass resolution to use when building merger trees. * ``[rootVariance]`` — The root variance of the random error distribution. * ``[velocityRadial]`` (default ``-0.90d0``) — The radial velocity (in units of the host virial velocity) to used for the fixed virial orbits distribution. Default value matches approximate peak in the distribution of :cite:t:`benson_orbital_2005`. * ``[velocityTangential]`` (default ``0.75d0``) — The tangential velocity (in units of the host virial velocity) to used for the fixed virial orbits distribution. Default value matches approximate peak in the distribution of :cite:t:`benson_orbital_2005`. * ``[rateCoefficient]`` — The rate coefficient (in units of cm\ :math:`^3` s\ :math:`^{-1}`) for radiative recombination. * ``[gamma]`` (default ``0.67d0``) — The multiplicative factor, :math:`\gamma`, used to compute the cooling coefficient. * ``[fractionLossAngularMomentum]`` (default ``0.3d0``) — Specifies the fraction of angular momentum that is lost from cooling/infalling gas. * ``[concentration]`` — The fixed NFW concentration parameter :math:`c = r_\mathrm{virial}/r_\mathrm{scale}` assigned to all halos regardless of mass or redshift, representing the ratio of the virial radius to the scale radius of the dark matter density profile. * ``[metallicity]`` — The metallicity (relative to Solar) of the :term:`IGM`. * ``[factor]`` (default ``sqrt(0.5d0)``) — The ratio of galaxy radius to :math:`\lambda r_\mathrm{vir}` in the "fixed" galactic structure radius solver algorithm. This will be applied to any component for which no component-specific value is provided. * ``[factorDisk]`` (default ``sqrt(0.5d0)``) — The ratio of galaxy radius to :math:`\lambda r_\mathrm{vir}` in the "fixed" galactic structure radius solver algorithm for disks. This will override the generic value supplied by ``[factor]`` for disks. * ``[factorSpheroid]`` (default ``sqrt(0.5d0)``) — The ratio of galaxy radius to :math:`\lambda r_\mathrm{vir}` in the "fixed" galactic structure radius solver algorithm for spheroids. This will override the generic value supplied by ``[factor]`` for spheroids. * ``[radiusFixed]`` (default ``var_str('virial')``) — The radius to use in the "fixed" galactic structure radius solver algorithm. Allowed options are "virial" and "turnaround". * ``[overdensity]`` — The fixed linear overdensity :math:`\delta` of the large-scale environment assigned uniformly to all halos; a positive value places halos in an overdense region, while negative values simulate voids. * ``[radiusEnvironment]`` (default ``0.0d0``) — The radius of the sphere used to determine the variance in the environmental density. * ``[massEnvironment]`` (default ``1.0d15``) — The mass within the sphere sphere used to determine the variance in the environmental density. * ``[densityContrastValue]`` (default ``200.0d0``) — The virial density contrast to use in the fixed value model. * ``[densityType]`` (default ``var_str('critical')``) — The reference density to use in the fixed value virial density contrast model. Either of ``critical`` and ``mean`` are allowed. * ``[turnAroundOverVirialRadius]`` (default ``2.0d0``) — The ratio of the turnaround to virial radii in the fixed value model. * ``[criticalOverdensity]`` (default ``(3.0d0/20.0d0)*(12.0d0*Pi)**(2.0d0/3.0d0)``) — The value to use for the critical overdensity for collapse of dark matter halos when using a fixed value. .. _physics-intergalacticMediumStateMetallicityPolynomial: ``intergalacticMediumStateMetallicityPolynomial`` ------------------------------------------------- An intergalactic medium state decorator class that overrides the metallicity of an underlying :term:`IGM` state with a redshift-dependent polynomial, :math:`Z(z)/Z_\odot = 10^{\sum_i c_i [\log_{10}(1+z)]^i}`, where the polynomial coefficients :math:`c_i` are provided via ``[coefficients]``. All other state properties are passed through unchanged. **Parameters** * ``[zeroPoint]`` — The zero-point of the property value used in the polynomial systematic offset property operator class. * ``[coefficient]`` — The coefficients in the polynomial systematic offset property operator class. * ``[zeroPoint]`` — The zero-point of the property value used in the polynomial random error distribution class. * ``[coefficient]`` — The coefficients in the polynomial random error distribution class. * ``[errorMinimum]`` — The minimum error in the polynomial random error distribution class. * ``[errorMaximum]`` — The maximum error in the polynomial random error distribution class. * ``[coefficients]`` — The polynomial coefficients, :math:`c_i`, in the function :math:`Z(z)/Z_\odot = 10^{\sum_{i=0}^N c_i [\log_{10}(1+z)]^i}`. .. _physics-intergalacticMediumStateRecFast: ``intergalacticMediumStateRecFast`` ----------------------------------- An :term:`IGM` state class which computes the state of the intergalactic medium using the `RecFast `_ code :cite:t:`seager_how_2000,wong_how_2008`. The RecFast code will be downloaded and run to compute the intergalactic medium state as needed, which will then be stored for future use. **(Default implementation)** .. _physics-intergalacticMediumStateSimple: ``intergalacticMediumStateSimple`` ---------------------------------- An :term:`IGM` state class which implements a simple model of reionization in which the universe is assumed to be fully neutral prior to the redshift given by ``[reionizationRedshift]`` and fully ionized thereafter. The temperature is given by ``[preReionizationTemperature]`` before reionization, and ``[reionizationTemperature]`` thereafter. **Methods** * ``calculationReset`` — Reset memoized calculations. **Parameters** * ``[efficiencyWind]`` (default ``2.2157d-3``) — The coupling efficiency of the black hole accretion-driven wind, defined as the fraction of the accreted rest-mass energy that is deposited as kinetic or thermal energy into the surrounding gas via AGN-driven outflows. * ``[redshiftReionization]`` (default ``9.97d0``) — The redshift of reionization below which baryonic accretion onto halos is suppressed due to the ionizing background heating the intergalactic medium and preventing gas from accreting onto low-mass halos. * ``[opticalDepthReionization]`` — The optical depth to electron scattering below which baryonic accretion is suppressed. * ``[velocitySuppressionReionization]`` (default ``35.0d0``) — The velocity scale below which baryonic accretion is suppressed. * ``[accretionNegativeAllowed]`` (default ``.true.``) — Specifies whether negative accretion (mass loss) is allowed in the simple halo accretion model. * ``[accretionNewGrowthOnly]`` (default ``.false.``) — Specifies whether accretion from the :term:`IGM` is allowed only when a halo is growing past its previous greatest mass. * ``[acceptedStateCount]`` (default ``100``) — The number of states to use in acceptance rate statistics. * ``[timeStepRelative]`` (default ``0.1d0``) — The maximum allowed relative change in time for a single step in the evolution of a node. * ``[timeStepAbsolute]`` (default ``1.0d0``) — The maximum allowed absolute change in time (in Gyr) for a single step in the evolution of a node. * ``[timeStepMinimum]`` (default ``1.0d-6``) — The smallest timestep to use in profiling ODE solver steps. * ``[timeStepMaximum]`` (default ``1.0d+1``) — The largest timestep to use in profiling ODE solver steps. * ``[timeStepPointsPerDecade]`` (default ``3``) — The number of bins per decade of timestep to use when profiling ODE solver steps. * ``[wavelength]`` (default ``1.0d4``) — The wavelength of the photon packet (in \AA). * ``[wavelengthMinimum]`` (default ``0.5d4``) — The minimum wavelength of the photon packet (in \AA). * ``[wavelengthMaximum]`` (default ``2.0d4``) — The maximum wavelength of the photon packet (in \AA). * ``[luminosity]`` (default ``1.0d0``) — The luminosity of the photon packet (in :math:`L_\odot`). * ``[massRatioMajorMerger]`` (default ``0.25d0``) — The mass ratio above which mergers are considered to be "major". * ``[destinationGasMinorMerger]`` (default ``var_str('spheroid')``) — The component to which satellite galaxy gas moves to as a result of a minor merger. * ``[destinationStarsMinorMerger]`` (default ``var_str('spheroid')``) — The component to which satellite galaxy stars move to as a result of a minor merger. * ``[degreesOfFreedom]`` (default ``3.0d0``) — Number of degrees of freedom to assume when computing the energy density of cooling gas in the "simple" cooling time class. * ``[timeScale]`` (default ``1.0d0``) — The timescale (in Gyr) for cooling in the simple cooling rate model. * ``[reionizationRedshift]`` (default ``9.97d0``) — The redshift of reionization in the simple :term:`IGM` state model. * ``[reionizationTemperature]`` (default ``1.0d4``) — The post-reionization temperature (in units of Kelvin) in the simple :term:`IGM` state model. * ``[preReionizationTemperature]`` (default ``10.0d0``) — The pre-reionization temperature (in units of Kelvin) in the simple :term:`IGM` state model. * ``[useFormationHalo]`` (default ``.false.``) — Specifies whether or not the "formation halo" should be used when solving for the radii of galaxies. * ``[solveForInactiveProperties]`` (default ``.true.``) — If true, galactic structure is solved for during evaluation of inactive property integrals. Otherwise, structure is not solved for during this phase---this should only be used if the inactive property integrands *do not* depend on galactic structure. * ``[rateFractionalMaximum]`` (default ``10.0d0``) — The maximum fractional mass loss rate per dynamical time in the simple model of mass loss due to tidal stripping. * ``[beta]`` (default ``1.0d0``) — The scaling factor which multiplies the tidal mass loss rate. * ``[OmegaMatter]`` (default ``0.3153d0``) — The density of matter in the Universe in units of the critical density. * ``[OmegaBaryon]`` (default ``0.04930d0``) — The density of baryons in the Universe in units of the critical density. * ``[OmegaDarkEnergy]`` (default ``0.6847d0``) — The density of dark energy in the Universe in units of the critical density. * ``[temperatureCMB]`` (default ``2.72548d0``) — The present day temperature of the :term:`CMB` in units of Kelvin. * ``[HubbleConstant]`` (default ``67.36d0``) — The present day value of the Hubble parameter in units of km/s/Mpc.