Transport Coefficients

Thermal Conductivity

The thermal conductivities, kth, are provided to allow for modeling of thermal diffusion, for instance in an energy equation:

(ρe)t=kthT

Thermal conductivities are provided by the conductivity/ directory. The main interface has the form:

template <typename T>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
void conductivity (T& state)

where currently, the input type needs to be the full EOS type, eos_t. The conductivity is then available as eos_t eos_state.conductivity.

Important

It is assumed that the state is thermodynamically consistent before calling the conductivity routine. It may be necessary to do an EOS call first, to enforce the consistency.

There are several implementations of the conductivity currently:

  • constant :

    This simply sets the conductivity to a constant value set via conductivity.const_conductivity.

  • constant_opacity :

    This is intended for creating a conductivity from an opacity, for instance, electron scattering. The opacity is taken as constant and set via conductivity.const_opacity, and then the conductivity is set as:

    kth=16σSBT33κρ

    where σSB is the Stefan-Boltzmann constant.

  • powerlaw :

    This models a temperature-dependent conductivity of the form:

    kth=k0Tν

    where k0 is set via conductivity.cond_coeff and ν is set via conductivity.cond_exponent.

  • stellar :

    This is a general stellar conductivity based on [10]. It combines radiative opacities and thermal conductivities into a single expression. This conductivity is suitable for modeling laminar flames.

These can be set via the CONDUCTIVITY_DIR make variable.

Radiation Opacities

For radiation transport, we provide simple opacity routines that return the Planck and Rosseland mean opacities.

The interface for these opacities is:

AMREX_GPU_HOST_DEVICE AMREX_INLINE
void actual_opacity (Real& kp, Real& kr, Real rho, Real temp, Real rhoYe, Real nu,
                     bool get_Planck_mean, bool get_Rosseland_mean)

where the boolean get_Planck_mean and get_Rosseland_mean specify where those opacity terms are filled upon return.

There are 2 interfaces, which are selected via the make variable OPACITY_DIR.

  • breakout :

    This returns a simple electron scattering opacity with a crude approximation connecting the Planck and Rosseland means.

  • rad_power_law :

    This constructs a power-law opacity. For the Planck mean, it is:

    κp=κp,0ρmpTnpνpp

    where κp,0 is set via opacity.const_kappa_p, mp is set via opacity.kappa_p_exp_m, np is set via opacity.kappa_p_exp_n, and pp is set via opacity.kappa_p_exp_p.

    The Rosseland mean has a scattering component, κs, which is computed as:

    κs=κs,0ρmsTnsνps

    where κs,0 is set via opacity.const_scatter, ms is set via opacity.scatter_exp_m, ns is set via opacity.scatter_n, and ps is set via opacity.scatter_p. The Rosseland mean is then computed as:

    κr=κr,0ρmrTnrνpr

    where κr,0 is set via opacity.const_kappa_r, mr is set via opacity.kappa_r_exp_m, nr is set via opacity.kappa_r_exp_n, and pr is set via opacity.kappa_r_exp_p, and then combined with scattering as:

    κr=max{κr+κs,κfloor}

    where κfloor is set via opacity.kappa_floor,