Subsections


17.4 Multitemperature extension for Eos

Extended functionality is required of the Eos in order to work a multitemperature simulation. Such simulations need to use one of the implementations under the multiTemp directory. When the Hydro multiTemp code is used, as described in Sec:3THydro, one of the implementations under physics/Eos/EosMain/multiTemp must be used. Additional functionality includes


Table 17.1: 1T and multitemperature Eos modes. The symbols are defined in constants.h. The column “1-T” indicates whether invoking Eos with this mode implies and/or ensures that the three components are in temperature equilibrium; a “yes” here implies that all temperatures provided as outputs are equal, and equal to $ T$ if $ T$ is listed as an input. For modes where component temperatures are allowed to stay different, the combined $ T$ has no physical meaning but indicates an “average” temperature to which the components would equilibrate if cells were held fixed without exchange of heat with neighboring cells. The columns RS indicates modes where, in the current multitemperature Eos implementations, a Newton-Raphson root search may be performed internally in order to compute some combined fluid quantities, in particular $ T$. In this columnt “(y)” means the search is only necessary to get $ T$ and can otherwise be omitted. Subscripts i, e, and r stand for ions, electrons, and radiation, respectively, $ \epsilon $ for specific internal energy, $ s$ for specific entropy. Note that combined density $ \rho $ is always assumed an input and omitted from the table. Material composition and ionization levels are currently also just inputs.
symbol inputs   outputs 1-T RS
MODE_DENS_TEMP $ T$ $ \epsilon $, $ P$   yes no
MODE_DENS_TEMP_EQUI $ T$ $ \epsilon $, $ P$, $ T_{\mathrm i}\mathord{\scriptsize =}T_{\mathrm e}\mathord{\scriptsize =}T_{\mathrm r}$, $ \epsilon _{\mathrm i},\epsilon _{\mathrm e},\epsilon _{\mathrm r},s_{\mathrm e}$, $ P_{\mathrm i},P_{\mathrm e},P_{\mathrm r},$ ... yes no
MODE_DENS_TEMP_GATHER $ T_{\mathrm i},T_{\mathrm e},T_{\mathrm r}$ $ T, \epsilon ,P$, $ \epsilon _{\mathrm i},\epsilon _{\mathrm e},\epsilon _{\mathrm r},s_{\mathrm e}$, $ P_{\mathrm i},P_{\mathrm e},P_{\mathrm r},$ ... no (y)
MODE_DENS_EI $ \epsilon $ $ T$, $ P$   yes yes
MODE_DENS_EI_SCATTER $ \epsilon $ $ T$, $ P$, $ T_{\mathrm i}\mathord{\scriptsize =}T_{\mathrm e}\mathord{\scriptsize =}T_{\mathrm r}$, $ \epsilon _{\mathrm i},\epsilon _{\mathrm e},\epsilon _{\mathrm r},s_{\mathrm e}$, $ P_{\mathrm i},P_{\mathrm e},P_{\mathrm r},$ ... yes yes
MODE_DENS_EI_GATHER $ \epsilon _{\mathrm i},\epsilon _{\mathrm e},\epsilon _{\mathrm r}$ $ T, \epsilon ,P$, $ T_{\mathrm i},T_{\mathrm e},T_{\mathrm r}, s_{\mathrm e}$, $ P_{\mathrm i},P_{\mathrm e},P_{\mathrm r},$ ... no (y)
MODE_DENS_EI_SELE_GATHER $ \epsilon ,s_{\mathrm e},\epsilon _{\mathrm r}$ $ T$, $ P$, $ T_{\mathrm i},T_{\mathrm e},T_{\mathrm r}, \epsilon _{\mathrm i}, \epsilon _{\mathrm e}$, $ P_{\mathrm i},P_{\mathrm e},P_{\mathrm r},$ ... no (y)
MODE_DENS_PRES $ P$ $ T$, $ \epsilon $   yes yes


17.4.1 Gamma

The multitemperature   Gamma EOS implementation models the ion as well as the electron components as ideal gases, and the radiation component as black body thermal radiation (like the Helmholtz 1T implementation, see Sec:Eos Helmholtz). It is a limitation of this implementation that the ionization state of ions is assumed to be fixed.

This Eos implementation has several runtime parameters, in part inherited from the 1T implementation, that can technically be changed but for which different values can lead to a nonsensical or inconsistent model. In particular, the values of gamma, gammaIon, gammaEle, and gammaRad should not be changed from their default values ($ 5./3.$ for the first four and $ 4./3.$ for the latter). Other values have not been tested.

This EOS can include contributions from radiation, partially or completely ionized nuclei, and electrons. The desired (constant) ionization level $ {\bar Z}$ of the nuclei should be specified with the eos_singleSpeciesZ runtime parameter. The eos_singleSpeciesA runtime parameter specifies the average atomic mass $ {\bar A}$ and should be set to the mass of one atom of the material in atomic mass units. For example, for a plasma of fully ionized Carbon-12, one would set $ {\tt eos\_singleSpeciesA} = 12.0$ and $ {\tt eos\_singleSpeciesA} = 6.0$.

The combined pressure and internal energy are calculated as the sum over the components

$\displaystyle P_{\rm tot} = P_{\rm ion} + P_{\rm ele} + P_{\rm rad}$ (17.19)

$\displaystyle \epsilon_{\rm tot} = \epsilon_{\rm ion} + \epsilon_{\rm ele} + \epsilon_{\rm rad} \; .$ (17.20)

Here the subscripts “ion,” “ele,” and “rad” represent the contributions from nuclei, electrons, and radiation, respectively. The radiation portion assumes a black body in local thermodynamic equilibrium, the ion portion (nuclei) is treated as an ideal gas with $ \gamma   =   5/3$, and the electrons are treated as a classical ideal gas as well.

As for the 1T Helmholtz implementation, the black body pressure and energy relate to the radiation “temperature” by

$\displaystyle P_{\rm rad} = {a T_{\rm rad}^4 \over 3}$ (17.21)

$\displaystyle \epsilon_{\rm rad} = { 3 P_{\rm rad} \over \rho}  $ (17.22)

where $ a$ is related to the Stephan-Boltzmann constant $ \sigma_B   =  
a c/4$, and $ c$ is the speed of light.

Like 1T implementations, all multitemperature implementations of Eos must return $ \gamma = \gamma_1 = \frac{\rho}{P}\frac{\partial P}{\partial \rho}$, and $ \gamma_4$ is calculated from (17.2). These two generalizations of adiabatic indices are usually stored as the mesh-based variables GAMC_VAR and GAME_VAR as a result of calling Eos_wrapped.

17.4.1.1 Gamma/Ye

The Ye variant of Gamma implementation is like the Gamma implementation, except that $ {\bar A}$ and $ {\bar Z}$ need not be constant throughout the domain but can vary in different parts of the fluid.

Typically, a simulation would implement a Simulation_initBlock that initializes mass scalar variables sumy and ye as desired. The initial values then get advected with the motion of the fluid. Eos interprets them as

$\displaystyle {\tt sumy} = \sum Y_i$ (17.23)

and

$\displaystyle {\tt ye} = Y_e$ (17.24)

and computes

$\displaystyle {\tt abar} = {\bar A}= \frac{1}{\sum Y_i}$ (17.25)

and

$\displaystyle {\tt zbar} = {\bar Z}= {Y_e}{{\bar A}}$ (17.26)

from them.

17.4.2 Multigamma

First a clarification, to avoid confusion: We will call ions, electrons, and radiation the three components of the fluid; and we designate different kinds of materials as different species. A fluid with several materials contributes its ions to the common ion component and its electrons to the common electron component. Currently, all adiabatic coefficients $ \gamma_i$ describing the electrons and the various kinds of ions should be $ 5/3$ as for a monatomic ideal gas (despite the implementation's name!). Mixing of species in a cell results in a fluid whose matter components are described by average values $ {\bar A}$ and $ {\bar Z}$, which depends on the local composition as well as on the $ A_i$ and $ Z_i$ values of the various species.

In our multitemperature approximation, the three components may have different temperatures, but there is no notion of a per-species temperature.

The multitemperature Multigamma implementation is another variation on the multitemperature Gamma theme. Except for the different way of gettting $ {\bar A}$ and $ {\bar Z}$, all else goes as described for Gamma, above.


17.4.3 Tabulated

The Tabulated Eos implementation is currently only available for simulations configured in 3T mode. The currently supported table formats are IONMIX1, IONMIX4, and SESAME. See the Opacity section Sec:OpacityIonmix for a description of the IONMIX1 and IONMIX4 table file format. SESAME's file format will be described here. At the moment, the SESAME tables read in the code are the 303 and 304 tables for the ion and electron EOS respectively. Opacities (if required) for simulations with SESAME need to be provided by some other source.

Tables are read into memory at initialization. For both IONMIX4 and SESAME, tables for $ \bar z(T,Nion)$, $ E_i(T,Nion)$, $ E_e(T,Nion)$, $ P_i(T,Nion)$, and $ P_e(T,Nion)$ are used.

Eos modes like MODE_DENS_TEMP, MODE_DENS_TEMP_component, MODE_DENS_TEMP_EQUI compute Nion from dens and directly look up the output quantities in the appropriate tables. For other modes, root searches would be required.

However, the Tabulated Eos implementation is currently not being used on its own but only in connection with the Multitype implementation.


17.4.3.1 SESAME TEOS

The SESAME database is a TEOS although rather than solely relying on theoretical models, it is physically motivated; see LA-UR-92-407, and Crockett (1999). Experimental data check in different regions the consistency of the thermodynamic interpolations.

SESAME involves tabulated equilibrium data Pimentel & Sheppard (2018) in logically-Cartesian tables (see LA-UR-21-23834), using two state functions (e.g., temperature and density) to populate the phase-space with other macroscopic properties like pressure, internal energy, for 150+ materials.

Therefore SESAME, being publicly available, contains the necessary physics for simulating astrophysical and HEDP systems using FLASH4. Nevertheless, the database is not fully compatible with the code outright. Data entries may fall into solid-state regimes which have negative pressures and/or energies, for which the current FLASH4 will predict non-physical wave speeds.

For this reason, FLASH4 typically initializes a given material at a higher temperature to avoid pathologies (see Figure 17.2).

Figure: Schematic showing the temperature initialization in eos_tabReadSesameTables.F90 for the $p_{\rm {ion}}$ from table 303 for 3719 (Aluminum). Solid-state values $(P<0)$ on the left, are excluded using a $ T$-point above the “solid” region (right).
\includegraphics[width=\linewidth]{temperature_cut}


17.4.3.2 Interpolation strategy for SESAME

The SESAME tables of interest are selected by reading through the material property file to isolate the data associated with specific EOS headers. SESAME provides several TEOS options. The framework of the current FLASH4 code requires tables 303 and 304, the ion and electron TEOS entries, respectively.

The reader, found in eos_tabReadSesameTables.F90 truncates the range in the $(\rho,T)$ space, eliminating data of problematic regions, i.e., negative entries.

With the working range defined, FLASH4 passed the data to eos_tabEditSesameTables.F90, which scans the ranges of the two truncated 303 and 304 matrices to determine their relative orientation, as shown in Figure 17.3.

Figure: Schematic showing the overlap of the interpolated grids $\mathcal {A},$ and $\mathcal {B},$ and the common interpolation grid $\mathcal {C}$ inside eos_tabEditSesameTables.F90.
\includegraphics[width=0.85\linewidth]{interpolating_grids.eps}

Once FLASH4 determines their relative orientation, it can pinpoint the overlapping region in the $(\rho,T)$ space of the concatenated 303 and 304 tables; there are represented by $\mathcal{A}$, and $\mathcal {B},$ in Figure 17.3.

Figure 17.4: Schematic showing the utility of a highly-resolved $\mathcal {C}$ to capture the slopes in SESAME.
\includegraphics[width=0.95\linewidth]{interpolation_both.eps}

By implication, this allows the code to establish a common temperature and density envelope for the simulation. The new bounds direct the creation of a new, very fine grid (matrix $\mathcal{C},$ see Figure 17.3), upon which the physical values of the 303 and 304 EOS tables are interpolated; its high resolution, $100\times100$ points across $(\rho,T),$ ensures that the derived table accurately captures the slopes of constitutive quantities (see Figure 17.4).

Bilinear interpolation is used to populate matrix $\mathcal{C}.$ The user is advised not to initialize the temperature and/or density far outside the upper and lower bounds set by the $\mathcal {C}$ grid. The slopes will be artificially fixed, and there can be no guarantee on the physicality of the extrapolated state.


17.4.3.3 Use of the SESAME database

The FLASH4 code requires ionization information on top of the thermodynamic quantities provided by SESAME. Thus, interpolating the 303 and 304 matrices using the uniform grid, shown in the previous figures as table $\mathcal{C},$ allows the generation of an additional table mapping the ionization of the material across the interpolated $(\rho,T)$ range.

Calculation of the average ionization of the material follows the formulary description found in Atzeni & Meyer-ter-Vehn (2004).


17.4.3.4 Types and structures thereof of SESAME data records

Below, the SESAME format is defined. Certain information is ignored by FLASH, and is presently not used for any calculations. The format is extracted by LA-UR-92-407, and focuses on information which is specifically relevant to FLASH4. The reader is encouraged to read more about the SESAME TEOS database from this and related documents.

It should be noted that table 306 and table series 400, 500, and 600 are ignored by FLASH4.

  1. Header structure (general):
    1. Material identification number (e.g. 9999)
    2. Table identification number (e.g. 101)
    3. Number of words per table (each line is 80 characters)
    4. Date created and last modified
    5. Version number
  2. Tables 101 and 102 contain comments
  3. Table 201:
    1. Mean atomic number $\bar{Z}$
    2. Mean atomic mass $ \bar{A}$
    3. Normal solid density $\rho_{\circ}$
    4. Solid bulk modulus $B_{\circ}$ (ignored by FLASH)
    5. Exchange coefficient $C_{\rm {ex}}$ (ignored by FLASH)
  4. Tables 300-series: 301-305 (FLASH uses only 303 and 304)
    1. Number of specie density points (ndens is word 1)
    2. Number of temperature points (ntemp is word 2)
    3. Density array (densnn(id), id=1,ndens) [$ g/cm^3$] (starts at word 3)
    4. Temperature array (tplsma(it), it=1,ntemp) [$\rm {K}$] (starts at ndens+3 word)
    5. Pressure array ((press(id,it), id=1,ndens),it=1,ntemp) [$\rm {GPa}$]
      (starts at ndens+ntemp+3 word)
    6. Energy array ((enrgy(id,it), id=1,ndens),it=1,ntemp) [ $\rm {MJ/kg}$]
      (starts at ndens+ntemp+3+ndens*ntemp word)
    7. Helmholtz free energy array [MJ/kg] (ignored by FLASH)


17.4.3.5 Example format of a SESAME table

Below, the exact file format for SESAME is included. It shows how the file should look like to be usable in FLASH. The 300-series have identical mock data in a $(\rho,T)$ grid $38\times27$ wide, including solid-state entries.
 

0  9999   101   240   r    22481   102082   4                                 0
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxx
   1  9999   101   232   r    22481   102082   4                                 1
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
   1  9999   201     5   r    22481   102082   4                                 1
   2.000000000000000E+00 4.002600000000000E+00 4.000000000000000E-01 0.000000000000000E+00 0.000000000000000E+0011111
   1  9999   301  2119   r    22481   102082   4                                 1
   3.800000000000000E+01 2.700000000000000E+01 0.000000000000000E+00 1.000000000000000E-06 1.000000000000000E-0511111
   1.000000000000000E-04 2.154434690000000E-04 4.641588830000000E-04 1.000000000000000E-03 2.154434690000000E-0311111
   4.641588830000000E-03 2.000000000000000E-02-1.465243200000000E-02 2.146937640000000E-02 3.145785770000000E-0211111
   4.609341210000000E-02 6.753805870000000E-02 9.895968120000000E-02-1.450000000000000E-01-1.910612320000000E-0111111
   . . .
   1  9999   303  2119   r    22481   102082   4                                 1
   3.800000000000000E+01 2.700000000000000E+01 0.000000000000000E+00 1.000000000000000E-06 1.000000000000000E-0511111
   1.000000000000000E-04 2.154434690000000E-04 4.641588830000000E-04 1.000000000000000E-03 2.154434690000000E-0311111
   4.641588830000000E-03 2.000000000000000E-02-1.465243200000000E-02 2.146937640000000E-02 3.145785770000000E-0211111
   4.609341210000000E-02 6.753805870000000E-02 9.895968120000000E-02-1.450000000000000E-01-1.910612320000000E-0111111
   . . .
   1  9999   304  2119   r    22481   102082   4                                 1
   3.800000000000000E+01 2.700000000000000E+01 0.000000000000000E+00 1.000000000000000E-06 1.000000000000000E-0511111
   1.000000000000000E-04 2.154434690000000E-04 4.641588830000000E-04 1.000000000000000E-03 2.154434690000000E-0311111
   4.641588830000000E-03 2.000000000000000E-02-1.465243200000000E-02 2.146937640000000E-02 3.145785770000000E-0211111
   4.609341210000000E-02 6.753805870000000E-02 9.895968120000000E-02-1.450000000000000E-01-1.910612320000000E-0111111
   . . .
  

Users might find that their SESAME table uses a different data format from the expected default E22.15. If that is the case the desired number format may be specified on a per species basis using the runtime parameter eos_specSesDblFmt.


17.4.4 Multitype

Multitype implementation does Eos computations by combining Eos calls for different materials. A material is a species in the sense of the Multispecies unit. Properties of materials relevant to the Multitype Eos are thus kept in the Multispecies database.

The Multitype implementation can combine materials of different eos types. If can be used for 3T Eos modes. When used in this generally, we speak of MTMMMT Eos - multitemperature multimaterial multitype.

Currently, the Eos types that can be combined are:

The Multitype implementation calls eos_idealGamma and eos_tabIonmix only in MODE_DENS_TEMP_component modes.

The prescription for combining results of such calls is currently simple: Make Eos calls for different materials separately, passing the material's partial density into the Eos as the density. Ther per-material calls are thus not aware of other materials in the same cell. Results are combined as appropriate: pressures are taken as partial pressures and are added up to give the total multimaterial pressure; specific energies are multiplied with partial densities to give energy densities, which are added up.

For 3T modes, the above is applied separately for ion and electron components, resulting in separate total energies, pressures, etc., for ions and electrons. Newton-Raphson root search is done to implement Eos modes that take energies or pressures as inputs (like MODE_DENS_EI$ *$, MODE_DENS_PRES [not completely implemented]), separately for ions and electrons if necessary. The blackbody radiation component is added.

To use MTMMMT, use the +mtmmmt setup shortcut. See the LaserSlab simulation for an example. See the Multispecies unit on initializing material properties.