MPI-AMRVAC 3.2
The MPI - Adaptive Mesh Refinement - Versatile Advection Code (development version)
Loading...
Searching...
No Matches
Modules | Functions/Subroutines | Variables
mod_hd_phys.t File Reference

Go to the source code of this file.

Modules

module  mod_hd_phys
 Hydrodynamics physics module.
 

Functions/Subroutines

subroutine, public mod_hd_phys::hd_phys_init ()
 Initialize the module.
 
subroutine, public mod_hd_phys::hd_check_params
 
subroutine, public mod_hd_phys::hd_check_w (primitive, ixil, ixol, w, flag)
 Returns logical argument flag where values are ok.
 
subroutine, public mod_hd_phys::hd_ei_to_e (ixil, ixol, w, x)
 Transform internal energy to total energy.
 
subroutine, public mod_hd_phys::hd_e_to_ei (ixil, ixol, w, x)
 Transform total energy to internal energy.
 
subroutine, public mod_hd_phys::hd_get_csound2 (w, x, ixil, ixol, csound2)
 Calculate the square of the thermal sound speed csound2 within ixO^L. For conserved w: extracts pthermal first, then applies Gamma_1. For LTE+IonE: look up Gamma_1 from pressure-indexed table, then cs2 = Gamma_1 * p/rho. Uses pressure-indexed table (gamma1_from_nH_p) because pressure is continuous at contact discontinuities, avoiding spurious gamma1 spikes from the eint-indexed table.
 
subroutine, public mod_hd_phys::hd_get_csrad2 (w, x, ixil, ixol, csound)
 Calculate modified squared sound speed for FLD NOTE: only for diagnostic purposes, unused subroutine.
 
subroutine, public mod_hd_phys::hd_get_csrad2_prim (w, x, ixil, ixol, csound)
 Calculate modified squared sound speed for FLD NOTE: w is primitive on entry here! NOTE: used in FLD module as phys_get_csrad2.
 
subroutine, public mod_hd_phys::hd_get_pradiation_from_prim (w, x, ixil, ixol, prad)
 Calculate radiation pressure within ixO^L NOTE: w is primitive on entry here! NOTE: used in FLD module as it is called from phys_get_csrad2.
 
subroutine, public mod_hd_phys::hd_get_pthermal_plus_pradiation (w, x, ixil, ixol, pth_plus_prad)
 calculates the sum of the gas pressure and max Prad tensor element NOTE: only for diagnostic purposes, unused subroutine
 
subroutine, public mod_hd_phys::hd_get_trad (w, x, ixil, ixol, trad)
 Calculates radiation temperature.
 
subroutine, public mod_hd_phys::hd_get_temperature_from_etot (w, x, ixil, ixol, res)
 Calculate temperature=p/rho when in e_ the total energy is stored.
 
double precision function, dimension(ixo^s), public mod_hd_phys::hd_kin_en (w, ixil, ixol, inv_rho)
 
subroutine, public mod_hd_phys::hd_handle_small_values (primitive, w, x, ixil, ixol, subname)
 

Variables

logical, public, protected mod_hd_phys::hd_energy = .true.
 Whether an energy equation is used.
 
logical, public, protected mod_hd_phys::hd_thermal_conduction = .false.
 Whether thermal conduction is added.
 
logical, public, protected mod_hd_phys::hd_hyperbolic_thermal_conduction = .false.
 Whether hyperbolic thermal conduction (Cattaneo relaxation) is used. 1D only — the q-variable is treated as a scalar carrying the heat flux along the only spatial direction.
 
logical, public, protected mod_hd_phys::hd_htc_sat = .false.
 Whether saturation is considered for hyperbolic TC.
 
type(tc_fluid), allocatable, public mod_hd_phys::tc_fl
 
type(te_fluid), allocatable, public mod_hd_phys::te_fl_hd
 
logical, public, protected mod_hd_phys::hd_radiative_cooling = .false.
 Whether radiative cooling is added.
 
type(rc_fluid), allocatable, public mod_hd_phys::rc_fl
 
logical, public, protected mod_hd_phys::hd_dust = .false.
 Whether dust is added.
 
logical, public, protected mod_hd_phys::hd_dust_implicit = .false.
 Whether dust is added using and implicit update in IMEX.
 
logical, public, protected mod_hd_phys::hd_radiation_fld = .false.
 Whether radiation-gas interaction is handled using flux limited diffusion.
 
type(fld_fluid), allocatable, public mod_hd_phys::fld_fl
 Radiation fluid object (gas-EoS callbacks for FLD), wired in hd_link_eos.
 
logical, public, protected mod_hd_phys::hd_viscosity = .false.
 Whether viscosity is added.
 
logical, public, protected mod_hd_phys::hd_gravity = .false.
 Whether gravity is added.
 
logical, public, protected mod_hd_phys::hd_particles = .false.
 Whether particles module is added.
 
logical, public, protected mod_hd_phys::hd_rotating_frame = .false.
 Whether rotating frame is activated.
 
logical, public, protected mod_hd_phys::hd_cak_force = .false.
 Whether CAK radiation line force is activated.
 
integer, public, protected mod_hd_phys::hd_n_tracer = 0
 Number of tracer species.
 
integer, public, protected mod_hd_phys::rho_
 Whether plasma is partially ionized.
 
integer, dimension(:), allocatable, public, protected mod_hd_phys::mom
 Indices of the momentum density.
 
integer, public, protected mod_hd_phys::c
 Indices of the momentum density for the form of better vectorization.
 
integer, public, protected mod_hd_phys::m
 
integer, public, protected mod_hd_phys::c_
 
integer, dimension(:), allocatable, public, protected mod_hd_phys::tracer
 Indices of the tracers.
 
integer, public, protected mod_hd_phys::e_
 Index of the energy density (-1 if not present)
 
integer, public, protected mod_hd_phys::p_
 Index of the gas pressure (-1 if not present) should equal e_.
 
integer, public, protected mod_hd_phys::ne_
 Index of the electron number density for LTE module.
 
integer, public, protected mod_hd_phys::r_e
 Index of the radiation energy (when fld active)
 
integer, public, protected mod_hd_phys::te_
 Indices of temperature.
 
integer, public, protected mod_hd_phys::fip_ = -1
 Index of the FIP passive scalar rho*fip in conserved form, fip in primitive form.
 
logical, public, protected mod_hd_phys::hd_fip = .false.
 Whether FIP passive scalar is enabled.
 
integer, public, protected mod_hd_phys::tcoff_
 Index of the cutoff temperature for the TRAC method.
 
integer, public, protected mod_hd_phys::q_
 Index of the hyperbolic-TC heat-flux variable (-1 if not present)
 
double precision, public mod_hd_phys::hypertc_kappa
 Thermal-conductivity prefactor in hyperbolic TC, set in hd_physical_units. Spitzer form: κ(T) = hypertc_kappa · T^{5/2}.
 
double precision, public, protected mod_hd_phys::hd_htc_kappa_override = -1.0d0
 Optional parfile override for hypertc_kappa (e.g. to match a constant-κ parabolic TC run for benchmarking). Default -1.0 leaves the Spitzer value computed from physical units.
 
double precision, public, protected mod_hd_phys::hd_htc_hyp_diff = 0.02d0
 Hyperdiffusion coefficient applied to the cell-refreshed q at the end of each face-recipe substep. 4th-order undivided difference smoother: q -= alpha * (qdt/dt) * (q_{i+2} + q_{i-2}.
 
double precision, public, protected mod_hd_phys::hd_htc_beta = 2.0d0
 Face-recipe heat-wave speed scaling: c_HTC,f = hd_htc_beta * c_max,f. Higher value -> closer to diffusion limit (q tracks Spitzer noise aggressively, AMR-triggering corona noise). Lower value -> more hyperbolic (q lags Spitzer target by Delta_t/tau ~ 1/beta^2 per step, dampening high-frequency noise). At our resolution beta=2-3 is the practical sweet spot: q evolves slowly enough that T-table round-off noise doesn't propagate, but fast enough that real TR conduction equilibrates within O(100) hydro timesteps.
 
double precision, public, protected mod_hd_phys::hd_htc_sat_alpha = 1.0d0
 Cowie-McKee saturation coefficient: q_sat = hd_htc_sat_alpha * rho * c_s^3. Standard convention is alpha ~ 1 (absorbs the sqrt(m_p/m_e) factor that would appear if c_s were replaced by the electron thermal speed). Default 1.0.
 
double precision, public, protected mod_hd_phys::hd_htc_pos_eta = 0.5d0
 Per-face energy-positivity safety fraction: |q_f^{n+1/2} dt A_f| <= hd_htc_pos_eta * min(e_int_L V_L, e_int_R V_R). Default 0.5 leaves headroom against simultaneous PdV and cooling decrements.
 
double precision, public, protected mod_hd_phys::hd_htc_validity_warn = 0.1d0
 Validity-monitor threshold for l_r,f / Delta_x_f. Warn if any face exceeds this in a given block (printed once per dtsave_log step). Default 0.1: above this, HTC is modifying the physics beyond pure Spitzer; above 1.0 the local Spitzer approximation breaks down.
 
double precision, public, protected mod_hd_phys::hd_htc_gradt_floor = 1.0d-3
 Gradient deadband: zero out the Spitzer face flux when abs(T_R - T_L) / max(T_L, T_R) < hd_htc_gradT_floor This suppresses sign-flipping q noise driven by EoS-table round-off (~1e-4 in T) being amplified by huge coronal kappa. Default 1.0e-3 sits 10x above the table noise floor but 5x below typical coronal gradients (Delta_x / L_T ~ 5e-3 at our resolution), so it kills the noise without suppressing real conduction. Set to 0.0 to disable.
 
double precision, public mod_hd_phys::hd_htc_validity_max_runtime = 0.0d0
 Running max of l_r,f / dx_f across all face-recipe calls since simulation start. Inspect post-hoc via debugger or dump alongside dat files. Not reset per timestep – monotonic non-decreasing.
 
integer, public, protected mod_hd_phys::iw_colmass = -1
 Index into wextra for escape probability column mass.
 
double precision, public mod_hd_phys::hd_adiab = 1.0d0
 gamma is set in &eos_list and accessed via eosgamma
 
logical, public, protected mod_hd_phys::hd_trac = .false.
 Whether TRAC method is used.
 
integer, public, protected mod_hd_phys::hd_trac_type = 1
 
integer, public, protected mod_hd_phys::hd_trac_nzones = 1
 
double precision, dimension(10), public, protected mod_hd_phys::hd_trac_zone_splits = -1.d0
 
double precision, public, protected mod_hd_phys::hd_trac_delta = 0.5d0
 Johnston 2021 resolution parameter delta (default 0.5)
 
double precision, public, protected mod_hd_phys::hd_trac_v_thresh = 0.01d0
 Johnston 2021 mass flux velocity threshold (fraction of local c_s). Below this Mach number, enthalpy flux is ignored in the TRAC formula to prevent feedback-driven asymmetry from subsonic sloshing.
 
logical, public, protected mod_hd_phys::hd_well_balanced = .false.
 Whether well-balanced reconstruction is used (Kaeppeli & Mishra style)
 
logical, public mod_hd_phys::hd_equi_rho0 = .false.
 Equilibrium splitting variables (stubs for mod_usr.t compatibility)
 
logical, public mod_hd_phys::hd_equi_pe0 = .false.
 
integer, public mod_hd_phys::equi_rho0_ = -1
 
integer, public mod_hd_phys::equi_pe0_ = -1
 
integer, public mod_hd_phys::equi_e0_ = -1
 
double precision, public, protected mod_hd_phys::h_ion_fr =1d0
 Helium abundance over Hydrogen He_abundance is set in &eos_list and accessed via eosHe_abundance Ionization fraction of H H_ion_fr = H+/(H+ + H)
 
double precision, public, protected mod_hd_phys::he_ion_fr =1d0
 Ionization fraction of He He_ion_fr = (He2+ + He+)/(He2+ + He+ + He)
 
double precision, public, protected mod_hd_phys::he_ion_fr2 =1d0
 Ratio of number He2+ / number He+ + He2+ He_ion_fr2 = He2+/(He2+ + He+)
 
double precision, public, protected mod_hd_phys::rr =1d0