|
MPI-AMRVAC 3.2
The MPI - Adaptive Mesh Refinement - Versatile Advection Code (development version)
|
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.
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:
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.
For field-aligned conduction, use:
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:
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:
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.
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.
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.
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).
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.
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.
| 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.
Each example's README provides build, run, and analysis instructions.