|
| 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) |
| |
|
| 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 |
| |