module mod_physics_vars_ffhd use mod_global_parameters, only: name_len, ndim implicit none public double precision :: phys_gamma=5.d0/3.d0 !> String describing the physics type of the simulation character(len=name_len) :: physics_type = "ffhd" !> To use wider stencils in flux calculations. A value of 1 will extend it by !> one cell in both directions, in any dimension integer :: phys_wider_stencil = 0 !> Array per direction per variable, which can be used to specify that certain !> fluxes have to be treated differently integer, allocatable :: flux_type(:, :) !> Indicates a normal flux integer, parameter :: flux_default = 0 !> Indicates the flux should be treated with tvdlf integer, parameter :: flux_tvdlf = 1 !> Whether the physics routines require diagonal ghost cells, for example for !> computing a curl. logical :: phys_req_diagonal = .true. !> Solve energy equation or not logical :: phys_energy=.false. !> Solve total energy equation or not logical :: phys_total_energy=.false. !> Solve internal energy instead of total energy logical :: phys_internal_e=.false. !> Solve partially ionized one-fluid plasma logical :: phys_partial_ionization=.false. !> if equilibrium pressure is splitted logical :: phys_equi_pe=.false. integer, parameter :: dp = kind(0.0d0) !> Base number of physical variables (density, momentum, energy, (q), b1, b2, b3) integer, parameter, public :: nw_phys_base=6 !> Total number of physical variables (base + conditional additions) !> This will be set to nw_phys_base + 1 if HYPERTC is defined integer, parameter, public :: nw_phys=nw_phys_base & + 1 integer, parameter, public :: nw_flux_base=3 integer, parameter, public :: nw_flux=nw_flux_base & + 1 !> Whether an energy equation is used logical, public :: ffhd_energy = .true. !> Index of the density (in the w array) integer, public :: rho_ !> Indices of the momentum density integer, allocatable, public :: mom(:) !> Index of the energy density (-1 if not present) integer, public :: e_ !> Index of the gas pressure (-1 if not present) should equal e_ integer, public :: p_ !> Index of the hyperbolic flux variable integer, public :: q_ ! !> Index of the frozen magnetic field integer, public :: iw_b1 integer, public :: iw_b2 integer, public :: iw_b3 !> The adiabatic index double precision, public :: ffhd_gamma = 5.d0/3.0d0 double precision, public :: gamma_1, inv_gamma_1 !> The adiabatic constant double precision, public :: ffhd_adiab = 1.0d0 !> The helium abundance double precision, public :: He_abundance=0.1d0 !> The thermal conductivity kappa in hyperbolic thermal conduction double precision, public :: hypertc_kappa=-1.0d0 !> Whether p*divb source term is not zero logical, public :: ffhd_pdivb = .false. !> switch for hyperbolic thermal conduction logical, public :: ffhd_hyperbolic_thermal_conduction = .false. !> Whether plasma is partially ionized logical, public :: ffhd_partial_ionization = .false. !> switch for gravity logical, public :: ffhd_gravity = .false. !> switch for radiative cooling logical, public :: ffhd_radiative_cooling = .false. !> switch for source user logical, public :: ffhd_source_usr = .false. end module mod_physics_vars_ffhd