mod_physics_vars_ffhd.f90 Source File


This file depends on

sourcefile~~mod_physics_vars_ffhd.f90~~EfferentGraph sourcefile~mod_physics_vars_ffhd.f90 mod_physics_vars_ffhd.f90 sourcefile~mod_global_parameters.f90 mod_global_parameters.f90 sourcefile~mod_physics_vars_ffhd.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_basic_types.f90 mod_basic_types.f90 sourcefile~mod_global_parameters.f90->sourcefile~mod_basic_types.f90 sourcefile~mod_connectivity.f90 mod_connectivity.f90 sourcefile~mod_global_parameters.f90->sourcefile~mod_connectivity.f90 sourcefile~mod_constants.f90 mod_constants.f90 sourcefile~mod_global_parameters.f90->sourcefile~mod_constants.f90 sourcefile~mod_physicaldata.f90 mod_physicaldata.f90 sourcefile~mod_global_parameters.f90->sourcefile~mod_physicaldata.f90 sourcefile~mod_variables.f90 mod_variables.f90 sourcefile~mod_global_parameters.f90->sourcefile~mod_variables.f90 sourcefile~mod_variables.f90->sourcefile~mod_basic_types.f90

Source Code

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