MPI-AMRVAC 3.2
The MPI - Adaptive Mesh Refinement - Versatile Advection Code (development version)
Loading...
Searching...
No Matches
Thermal conduction in MPI-AMRVAC

MPI-AMRVAC offers two approaches: parabolic conduction with super time stepping (STS), and hyperbolic conduction with a relaxing heat flux. This page describes both, using MHD as the main example. Set the normalization units in usr_init() before activating the physics module.

Parabolic conduction

Enable mhd_thermal_conduction=.true. in &mhd_list, or hd_thermal_conduction=.true. in &hd_list. The conduction equation is advanced separately from the fluid equations using STS, including the RKL2 method.

The &tc_list provides these options:

  • tc_perpendicular=.true.: add perpendicular conduction in MHD.
  • tc_saturate=.true.: include heat-flux saturation.
  • tc_slope_limiter: choose the transverse-gradient limiter.

The first two options default to false. If the STS update produces oscillations, reduce sts_dtpar in &sts_list from its default 0.5. These settings apply to the parabolic method; hyperbolic conduction uses the parameters below.

Hyperbolic conduction: getting started

For field-aligned conduction, use:

&mhd_list
mhd_energy = .true.
mhd_hyperbolic_tc = .true.
/

This selects Spitzer conduction and disables mhd_thermal_conduction if it was also enabled. To add perpendicular transport in 2D/3D, include these settings in the same namelist:

mhd_hyperbolic_tc_use_perp = .true.
mhd_hyperbolic_tc_perp_mode = 'fixed_reference'
mhd_hyperbolic_tc_kappa_perp_factor = 1.d-3

Here \(10^{-3}\) is an illustrative prescribed conductivity ratio. Other choices are described in Perpendicular closures. Initialize the heat fluxes in mod_usr.t, for example:

if (mhd_hyperbolic_tc) then
w(ixo^s,qpar_) = 0.d0
if (mhd_hyperbolic_tc_use_perp) w(ixo^s,qperp_) = 0.d0
end if

Zero initial flux gives a relaxation transient. The output variables are q and, when enabled, qperp. Their boundary types default to the density boundary type; a special boundary should supply heat-flux values consistent with its thermal condition.

Field-aligned hyperbolic conduction

The field-aligned method is described in Zhou et al. (2025), Section 2.2. It evolves a scalar heat flux toward the classical conductive flux:

\[ \boldsymbol q=q_\parallel\boldsymbol b,\qquad \tau\frac{\partial q_\parallel}{\partial t}+q_\parallel =-f_{\rm sat}\kappa_\parallel\boldsymbol b\cdot\nabla T, \]

where \(\boldsymbol b\) is the unit vector along the total magnetic field, including B0. The energy equation receives \(-\nabla\cdot\boldsymbol q\).

By default, \(\kappa_\parallel=\kappa_0T^{5/2}\), with the Spitzer prefactor \(\kappa_0=8\times10^{-7}\) in cgs or \(8\times10^{-12}\) in SI, converted internally to code units. A positive mhd_hyperbolic_tc_kappa instead selects a constant conductivity in code units.

Relaxation and saturation

The MHD relaxation time is

\[ \tau=\max\left(4\Delta t, \frac{f_{\rm sat}\kappa_\parallel T_{\rm cond} C_{\rm CFL}^2} {[p/(\gamma-1)]c_{\rm f,max}^2}\right). \]

Here \(C_{\rm CFL}\) is courantpar, and \(c_{\rm f,max}\) is the largest local classical fast magnetosonic speed over coordinate directions. Normally \(T_{\rm cond}=T\); with TRAC and Spitzer conduction, the conductivity and relaxation estimate use \(\max(T,T_{\rm cutoff})\), while the gradient remains that of \(T\).

Without saturation, \(f_{\rm sat}=1\). Setting mhd_hyperbolic_tc_sat=.true. uses

\[ f_{\rm sat}=\frac{1}{1+|\boldsymbol q_{\rm cl}|/q_{\rm sat}}, \qquad q_{\rm sat}=1.5\rho(p/\rho)^{3/2}, \]

where \(\boldsymbol q_{\rm cl}\) is the classical target flux.

The finite relaxation time avoids the explicit parabolic timestep restriction, but affects rapid thermal transients. Check accuracy against a resolved parabolic reference; the flux solver and reconstruction also contribute numerical diffusion.

Perpendicular hyperbolic conduction

The current MHD implementation adds a new perpendicular channel to the field-aligned method. Define

\[ \nabla_\perp T=\nabla T-\boldsymbol b(\boldsymbol b\cdot\nabla T), \qquad \boldsymbol n_\perp=\frac{\nabla_\perp T}{|\nabla_\perp T|}. \]

The second scalar flux evolves as

\[ \tau\frac{\partial q_\perp}{\partial t}+q_\perp =-f_{\rm sat}\kappa_\perp|\nabla_\perp T|,\qquad \boldsymbol q=q_\parallel\boldsymbol b+q_\perp\boldsymbol n_\perp. \]

Thus qperp_ is a signed amplitude along the perpendicular temperature gradient. The direction is set to zero where that gradient vanishes. Both channels share \(\tau\) and, when enabled, a saturation factor based on the magnitude of their combined classical flux. This two-channel extension is new work in MPI-AMRVAC, separate from the method in Zhou et al. (2025).

Perpendicular closures

Choose mhd_hyperbolic_tc_perp_mode according to the intended model:

Mode \(\kappa_\perp/\kappa_\parallel\) Use
fixed_reference mhd_hyperbolic_tc_kappa_perp_factor Fixed reference or prescribed effective ratio.
weak_field_isotropization \(B_{\min}^2/(B^2+B_{\min}^2)\) Empirical transition to isotropic conduction in weak fields.
electron_magnetization \(1/(1+\chi_e^2)\) Simplified electron-magnetization model using local B, T, and electron density.

The electron-magnetization estimate scales as \(\chi_e\propto BT^{3/2}/(n_e\ln\Lambda)\), with electron density supplied by the EOS and a default Coulomb logarithm of 20. It describes electron transport, without additional neutral conduction or electron-neutral collisions.

MHD parameter summary

All parameters belong to &mhd_list.

Parameter Default Meaning
mhd_hyperbolic_tc .false. Enable hyperbolic conduction; requires an energy equation.
mhd_hyperbolic_tc_sat .false. Enable heat-flux saturation.
mhd_hyperbolic_tc_kappa 0 Zero: Spitzer conductivity. Positive: constant conductivity in code units.
mhd_hyperbolic_tc_use_perp .false. Enable the perpendicular channel in 2D/3D.
mhd_hyperbolic_tc_perp_mode 'off' Select one of the three closures above when enabling the perpendicular channel.
mhd_hyperbolic_tc_kappa_perp_factor 0 Fixed-reference ratio; zero selects an automatic normalization-based value.
mhd_hyperbolic_tc_Bmin 0 Weak-field transition scale; positive values are in code magnetic-field units. Zero selects 0.1/unit_magneticfield.
mhd_hyperbolic_tc_coulomb_log 20 Positive Coulomb logarithm for electron_magnetization.

For fixed_reference, the automatic ratio is 4.d-10*unit_numberdensity**2/unit_magneticfield**2/unit_temperature**3 in cgs, with prefactor 4.d-30 in SI. It is fixed at initialization. For weak_field_isotropization, specify a positive code-unit Bmin when a particular physical scale is intended; the default expression above applies literally in either unit system.

To turn off perpendicular conduction, set mhd_hyperbolic_tc_use_perp=.false.. A zero reference factor selects the automatic value, while enabling the channel with mode 'off' is rejected.

Other physics modules

Module Enable in its physics namelist Support
MHD mhd_hyperbolic_tc Parallel in 1D/2D/3D; perpendicular in 2D/3D.
FFHD ffhd_hyperbolic_tc Parallel conduction in 2D/3D along the frozen field.
HD hd_hyperbolic_thermal_conduction 1D conduction with a face-based heat-flux update.

FFHD and HD use the scalar index q_. Their saturation switches are ffhd_hyperbolic_tc_sat and hd_htc_sat, respectively. FFHD uses the global hydrodynamic signal speed for relaxation and disables its parabolic conduction when hyperbolic conduction is enabled. HD requires the user to disable its parabolic option. Its hd_htc_kappa_override changes the Spitzer prefactor, retaining the \(T^{5/2}\) dependence.

Examples

  • Oblique Fourier conduction: a uniform-grid comparison of parallel, oblique, and perpendicular modes against an RKL2 parabolic reference, varying resolution and relaxation time.
  • Flare current-sheet conduction: a 2.5D application comparing perpendicular closures and prescribed ratios.

Each example's README provides build, run, and analysis instructions.