! =============================================================================
!> Module containing all equilibrium parameters.
!! All parameters used in the equilibrium submodules are defined here
!! for convenience, including the wave numbers \(k_2\) and \(k_3\).
!! All of these values are NaN initially, such that variables that are
!! not properly set propagate their value and are easy to spot in follow-up checks.
!! @note Variables that are not used remain equal to NaN throughout program execution.
!! We define all of these in one module so they allow for easy setting through
!! the parfile, and hence allow for more flexible control in the submodules.
module mod_equilibrium_params
use mod_global_variables, only: dp
implicit none
public
!> wavenumber in y-direction (Cartesian) or theta-direction (cylindrical)
real(dp) :: k2
!> wavenumber in z-direction
real(dp) :: k3
!> general constant usually used for density
real(dp) :: cte_rho0
!> general constant usually used for temperature
real(dp) :: cte_T0
!> general constant usually used for the 01 magnetic field component
real(dp) :: cte_B01
!> general constant usually used for the 02 magnetic field component
real(dp) :: cte_B02
!> general constant usually used for the 03 magnetic field component
real(dp) :: cte_B03
!> general constant usually used for the 02 velocity component
real(dp) :: cte_v02
!> general constant usually used for the 03 velocity component
real(dp) :: cte_v03
!> general constant usually used for pressure
real(dp) :: cte_p0
!> general constant usually used in polynomials
real(dp) :: p1
!> general constant usually used in polynomials
real(dp) :: p2
!> general constant usually used in polynomials
real(dp) :: p3
!> general constant usually used in polynomials
real(dp) :: p4
!> general constant usually used in polynomials
real(dp) :: p5
!> general constant usually used in polynomials
real(dp) :: p6
!> general constant usually used in polynomials
real(dp) :: p7
!> general constant usually used in polynomials
real(dp) :: p8
!> general constant used in various expressions
real(dp) :: alpha
!> general constant used in various expressions
real(dp) :: beta
!> general constant used in various expressions
real(dp) :: delta
!> general constant used in various expressions
real(dp) :: theta
!> general constant used in various expressions
real(dp) :: tau
!> general constant used in various expressions
real(dp) :: lambda
!> general constant used in various expressions
real(dp) :: nu
!> general constant usually used for radius
real(dp) :: r0
!> general constant usually used for radius
real(dp) :: rc
!> general constant usually used for radius
real(dp) :: rj
!> general constant usually used in cylindrical geometry
real(dp) :: Bth0
!> general constant usually used in cylindrical geometry
real(dp) :: Bz0
!> general constant usually used in shear-related setups
real(dp) :: V
!> general constant usually used for current
real(dp) :: j0
!> general constant usually used for gravity
real(dp) :: g
!> general boolean for varied use, defaults to False
logical :: eq_bool
contains
!> Initialises all variables defined at module scope to NaN,
!! including the wave numbers. This ensures that these have to
!! be explicitly set.
subroutine init_equilibrium_params()
use mod_global_variables, only: NaN
k2 = NaN
k3 = NaN
cte_rho0 = NaN
cte_T0 = NaN
cte_B01 = NaN
cte_B02 = NaN
cte_B03 = NaN
cte_v02 = NaN
cte_v03 = NaN
cte_p0 = NaN
p1 = NaN
p2 = NaN
p3 = NaN
p4 = NaN
p5 = NaN
p6 = NaN
p7 = NaN
p8 = NaN
alpha = NaN
beta = NaN
delta = NaN
theta = NaN
tau = NaN
lambda = NaN
nu = NaN
r0 = NaN
rc = NaN
rj = NaN
Bth0 = NaN
Bz0 = NaN
V = NaN
j0 = NaN
g = NaN
eq_bool = .false.
end subroutine init_equilibrium_params
end module mod_equilibrium_params