MPI-AMRVAC  2.2
The MPI - Adaptive Mesh Refinement - Versatile Advection Code
Data Types | Functions/Subroutines | Variables
mod_mhd_phys Module Reference

Magneto-hydrodynamics module. More...

Functions/Subroutines

subroutine mhd_write_info (fh)
 Write this module's parameters to a snapsoht. More...
 
subroutine mhd_angmomfix (fC, x, wnew, ixIL, ixOL, idim)
 
subroutine, public mhd_phys_init ()
 
subroutine mhd_check_params
 
subroutine mhd_physical_units ()
 
subroutine mhd_check_w (primitive, ixIL, ixOL, w, flag)
 
subroutine, public mhd_to_conserved (ixIL, ixOL, w, x)
 Transform primitive variables into conservative ones. More...
 
subroutine, public mhd_to_primitive (ixIL, ixOL, w, x)
 Transform conservative variables into primitive ones. More...
 
subroutine mhd_ei_to_e (ixIL, ixOL, w, x)
 Transform internal energy to total energy. More...
 
subroutine mhd_e_to_ei (ixIL, ixOL, w, x)
 Transform total energy to internal energy. More...
 
subroutine mhd_energy_synchro (qdt, ixIL, ixOL, wCT, w, x)
 
subroutine mhd_handle_small_values (primitive, w, x, ixIL, ixOL, subname)
 
subroutine e_to_rhos (ixIL, ixOL, w, x)
 Convert energy to entropy. More...
 
subroutine rhos_to_e (ixIL, ixOL, w, x)
 Convert entropy to energy. More...
 
subroutine, public mhd_get_v (w, x, ixIL, ixOL, v)
 Calculate v vector. More...
 
subroutine, public mhd_get_v_idim (w, x, ixIL, ixOL, idim, v)
 Calculate v component. More...
 
subroutine mhd_get_cmax (w, x, ixIL, ixOL, idim, cmax)
 Calculate cmax_idim=csound+abs(v_idim) within ixO^L. More...
 
subroutine mhd_get_a2max (w, x, ixIL, ixOL, a2max)
 
subroutine mhd_get_tcutoff (ixIL, ixOL, w, x, tco_local, Tmax_local)
 get adaptive cutoff temperature for TRAC (Johnston 2019 ApJL, 873, L22) More...
 
subroutine mhd_get_cbounds (wLC, wRC, wLp, wRp, x, ixIL, ixOL, idim, cmax, cmin)
 Estimating bounds for the minimum and maximum signal velocities. More...
 
subroutine mhd_get_csound (w, x, ixIL, ixOL, idim, csound)
 Calculate fast magnetosonic wave speed. More...
 
subroutine mhd_get_csound_prim (w, x, ixIL, ixOL, idim, csound)
 Calculate fast magnetosonic wave speed. More...
 
subroutine, public mhd_get_pthermal (w, x, ixIL, ixOL, pth)
 Calculate thermal pressure=(gamma-1)*(e-0.5*m**2/rho-b**2/2) within ixO^L. More...
 
subroutine mhd_get_temperature_from_eint (w, x, ixIL, ixOL, res)
 Calculate temperature=p/rho when in e_ the internal energy is stored. More...
 
subroutine mhd_get_temperature_from_etot (w, x, ixIL, ixOL, res)
 Calculate temperature=p/rho when in e_ the total energy is stored this does not check the values of mhd_energy and mhd_internal_e, mhd_energy = .true. and mhd_internal_e = .false. also check small_values is avoided. More...
 
subroutine mhd_ei_to_e1 (ixIL, ixOL, w, x)
 Transform internal energy to total energy. More...
 
subroutine mhd_e_to_ei1 (ixIL, ixOL, w, x)
 Transform total energy to internal energy. More...
 
subroutine, public mhd_get_csound2 (w, x, ixIL, ixOL, csound2)
 Calculate the square of the thermal sound speed csound2 within ixO^L. csound2=gamma*p/rho. More...
 
subroutine mhd_get_p_total (w, x, ixIL, ixOL, p)
 Calculate total pressure within ixO^L including magnetic pressure. More...
 
subroutine mhd_get_flux (wC, w, x, ixIL, ixOL, idim, f)
 Calculate fluxes within ixO^L. More...
 
subroutine add_source_ambipolar_internal_energy (qdt, ixIL, ixOL, wCT, w, x, ie)
 Source terms J.E in internal energy. For the ambipolar term E = ambiCoef * JxBxB=ambiCoef * B^2(-J_perpB) More...
 
subroutine mhd_get_jxbxb (w, x, ixIL, ixOL, res)
 
subroutine sts_set_source_ambipolar (ixIL, ixOL, w, x, wres, fix_conserve_at_step, my_dt, igrid, indexChangeStart, indexChangeN, indexChangeFixC)
 Sets the sources for the ambipolar this is used for the STS method. More...
 
double precision function get_ambipolar_dt (w, ixIL, ixOL, dxD, x)
 Calculates the explicit dt for the ambipokar term This function is used by both explicit scheme and STS method. More...
 
subroutine, public multiplyambicoef (ixIL, ixOL, res, w, x)
 multiply res by the ambipolar coefficient The ambipolar coefficient is calculated as -mhd_eta_ambi/rho^2 The user may mask its value in the user file by implemneting usr_mask_ambipolar subroutine More...
 
subroutine mhd_add_source (qdt, ixIL, ixOL, wCT, w, x, qsourcesplit, active)
 w[iws]=w[iws]+qdt*S[iws,wCT] where S is the source based on wCT within ixO More...
 
subroutine boris_add_source (qdt, ixIL, ixOL, wCT, w, x, qsourcesplit, active)
 
subroutine get_lorentz (ixIL, ixOL, w, JxB)
 Compute the Lorentz force (JxB) More...
 
subroutine mhd_gamma2_alfven (ixIL, ixOL, w, gamma_A2)
 Compute 1/(1+v_A^2/c^2) for Boris' approximation, where v_A is the Alfven velocity. More...
 
double precision function, dimension(ixo^s) mhd_gamma_alfven (w, ixIL, ixOL)
 Compute 1/sqrt(1+v_A^2/c^2) for Boris simplification, where v_A is the Alfven velocity. More...
 
subroutine internal_energy_add_source (qdt, ixIL, ixOL, wCT, w, x, ie)
 
subroutine mhd_handle_small_ei (w, x, ixIL, ixOL, ie, subname)
 handle small or negative internal energy More...
 
subroutine add_source_b0split (qdt, ixIL, ixOL, wCT, w, x)
 Source terms after split off time-independent magnetic field. More...
 
subroutine add_source_res1 (qdt, ixIL, ixOL, wCT, w, x)
 Add resistive source to w within ixO Uses 3 point stencil (1 neighbour) in each direction, non-conservative. If the fourthorder precompiler flag is set, uses fourth order central difference for the laplacian. Then the stencil is 5 (2 neighbours). More...
 
subroutine add_source_res2 (qdt, ixIL, ixOL, wCT, w, x)
 Add resistive source to w within ixO Uses 5 point stencil (2 neighbours) in each direction, conservative. More...
 
subroutine add_source_hyperres (qdt, ixIL, ixOL, wCT, w, x)
 Add Hyper-resistive source to w within ixO Uses 9 point stencil (4 neighbours) in each direction. More...
 
subroutine add_source_glm (qdt, ixIL, ixOL, wCT, w, x)
 
subroutine add_source_powel (qdt, ixIL, ixOL, wCT, w, x)
 Add divB related sources to w within ixO corresponding to Powel. More...
 
subroutine add_source_janhunen (qdt, ixIL, ixOL, wCT, w, x)
 
subroutine add_source_linde (qdt, ixIL, ixOL, wCT, w, x)
 
subroutine, public get_divb (w, ixIL, ixOL, divb, fourthorder)
 Calculate div B within ixO. More...
 
subroutine, public get_normalized_divb (w, ixIL, ixOL, divb)
 get dimensionless div B = |divB| * volume / area / |B| More...
 
subroutine, public get_current (w, ixIL, ixOL, idirmin, current)
 Calculate idirmin and the idirmin:3 components of the common current array make sure that dxlevel(^D) is set correctly. More...
 
subroutine mhd_get_dt (w, ixIL, ixOL, dtnew, dxD, x)
 If resistivity is not zero, check diffusion time limit for dt. More...
 
subroutine mhd_add_source_geom (qdt, ixIL, ixOL, wCT, w, x)
 
double precision function, dimension(ixo^s), public mhd_mag_en_all (w, ixIL, ixOL)
 Compute 2 times total magnetic energy. More...
 
double precision function, dimension(ixo^s) mhd_mag_i_all (w, ixIL, ixOL, idir)
 Compute full magnetic field by direction. More...
 
double precision function, dimension(ixo^s) mhd_mag_en (w, ixIL, ixOL)
 Compute evolving magnetic energy. More...
 
double precision function, dimension(ixo^s), public mhd_kin_en (w, ixIL, ixOL, inv_rho)
 compute kinetic energy More...
 
subroutine mhd_getv_hall (w, x, ixIL, ixOL, vHall)
 
subroutine mhd_get_jambi (w, x, ixIL, ixOL, res)
 
subroutine mhd_getdt_hall (w, x, ixIL, ixOL, dxD, dthall)
 
subroutine mhd_modify_wlr (ixIL, ixOL, qt, wLC, wRC, wLp, wRp, s, idir)
 
subroutine mhd_boundary_adjust
 
subroutine fixdivb_boundary (ixGL, ixOL, w, x, iB)
 
subroutine, public mhd_clean_divb_multigrid (qdt, qt, active)
 
subroutine mhd_update_faces (ixIL, ixOL, qt, qdt, wprim, fC, fE, sCT, s)
 
subroutine update_faces_average (ixIL, ixOL, qt, qdt, fC, fE, sCT, s)
 get electric field though averaging neighors to update faces in CT More...
 
subroutine update_faces_contact (ixIL, ixOL, qt, qdt, wp, fC, fE, sCT, s)
 update faces using UCT contact mode by Gardiner and Stone 2005 JCP 205, 509 More...
 
subroutine update_faces_hll (ixIL, ixOL, qt, qdt, fE, sCT, s)
 update faces More...
 
subroutine get_resistive_electric_field (ixIL, ixOL, sCT, s, jce)
 calculate eta J at cell edges More...
 
subroutine, public mhd_face_to_center (ixOL, s)
 calculate cell-center values from face-center values More...
 
subroutine, public b_from_vector_potential (ixIsL, ixIL, ixOL, ws, x)
 calculate magnetic field from vector potential More...
 

Variables

logical, public, protected mhd_energy = .true.
 Whether an energy equation is used. More...
 
logical, public, protected mhd_thermal_conduction = .false.
 Whether thermal conduction is used. More...
 
logical, public, protected use_new_mhd_tc = .false.
 Whether use new mod_tc. More...
 
logical, public, protected mhd_radiative_cooling = .false.
 Whether radiative cooling is added. More...
 
logical, public, protected mhd_viscosity = .false.
 Whether viscosity is added. More...
 
logical, public, protected mhd_gravity = .false.
 Whether gravity is added. More...
 
logical, public, protected mhd_hall = .false.
 Whether Hall-MHD is used. More...
 
logical, public, protected mhd_ambipolar = .false.
 Whether Ambipolar term is used. More...
 
logical, public, protected mhd_ambipolar_sts = .false.
 Whether Ambipolar term is implemented using supertimestepping. More...
 
logical, public, protected mhd_particles = .false.
 Whether particles module is added. More...
 
logical, public, protected mhd_magnetofriction = .false.
 Whether magnetofriction is added. More...
 
logical, public, protected mhd_glm = .false.
 Whether GLM-MHD is used. More...
 
logical, public, protected mhd_solve_eaux = .false.
 Whether auxiliary internal energy is solved. More...
 
logical, public, protected mhd_internal_e = .false.
 Whether internal energy is solved instead of total energy. More...
 
logical, public, protected source_split_divb = .false.
 Whether divB cleaning sources are added splitting from fluid solver. More...
 
double precision, public mhd_glm_alpha = 0.5d0
 GLM-MHD parameter: ratio of the diffusive and advective time scales for div b taking values within [0, 1]. More...
 
logical, public, protected mhd_4th_order = .false.
 MHD fourth order. More...
 
integer, public, protected mhd_n_tracer = 0
 Number of tracer species. More...
 
integer, public, protected rho_
 Index of the density (in the w array) More...
 
integer, dimension(:), allocatable, public, protected mom
 Indices of the momentum density. More...
 
integer, public, protected e_
 Index of the energy density (-1 if not present) More...
 
integer, public, protected p_
 Index of the gas pressure (-1 if not present) should equal e_. More...
 
integer, dimension(:), allocatable, public, protected mag
 Indices of the magnetic field. More...
 
integer, public, protected psi_
 Indices of the GLM psi. More...
 
integer, public, protected eaux_
 Indices of auxiliary internal energy. More...
 
integer, public, protected paux_
 
integer, dimension(:), allocatable, public, protected tracer
 Indices of the tracers. More...
 
double precision, public mhd_gamma = 5.d0/3.0d0
 The adiabatic index. More...
 
double precision, public mhd_adiab = 1.0d0
 The adiabatic constant. More...
 
double precision, public mhd_eta = 0.0d0
 The MHD resistivity. More...
 
double precision, public mhd_eta_hyper = 0.0d0
 The MHD hyper-resistivity. More...
 
double precision, public mhd_etah = 0.0d0
 TODO: what is this? More...
 
double precision, public mhd_eta_ambi = 0.0d0
 The MHD ambipolar coefficient. More...
 
character(len=std_len), public, protected typedivbfix = 'linde'
 Method type to clean divergence of B. More...
 
character(len=std_len), public, protected type_ct = 'uct_contact'
 Method type of constrained transport. More...
 
logical, public, protected mhd_divb_4thorder = .false.
 Whether divB is computed with a fourth order approximation. More...
 
logical, public divbwave = .true.
 Add divB wave in Roe solver. More...
 
logical, public clean_initial_divb = .false.
 clean initial divB More...
 
double precision, public, protected he_abundance =0.1d0
 Helium abundance over Hydrogen. More...
 
logical, dimension(2 *^nd), public, protected boundary_divbfix =.true.
 To control divB=0 fix for boundary. More...
 
integer, dimension(2 *^nd), public, protected boundary_divbfix_skip =0
 To skip * layer of ghost cells during divB=0 fix for boundary. More...
 
logical, public, protected b0field_forcefree =.true.
 B0 field is force-free. More...
 
procedure(mask_subroutine), pointer, public usr_mask_ambipolar => null()
 

Detailed Description

Magneto-hydrodynamics module.

Function/Subroutine Documentation

◆ add_source_ambipolar_internal_energy()

subroutine mod_mhd_phys::add_source_ambipolar_internal_energy ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ie 
)

Source terms J.E in internal energy. For the ambipolar term E = ambiCoef * JxBxB=ambiCoef * B^2(-J_perpB)

ambiCoef is calculated as mhd_ambi_coef/rho^2, see also the subroutine mhd_get_Jambi

Definition at line 1572 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ add_source_b0split()

subroutine mod_mhd_phys::add_source_b0split ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Source terms after split off time-independent magnetic field.

Definition at line 2056 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ add_source_glm()

subroutine mod_mhd_phys::add_source_glm ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Definition at line 2347 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ add_source_hyperres()

subroutine mod_mhd_phys::add_source_hyperres ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Add Hyper-resistive source to w within ixO Uses 9 point stencil (4 neighbours) in each direction.

Definition at line 2288 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ add_source_janhunen()

subroutine mod_mhd_phys::add_source_janhunen ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Definition at line 2436 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ add_source_linde()

subroutine mod_mhd_phys::add_source_linde ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Definition at line 2459 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ add_source_powel()

subroutine mod_mhd_phys::add_source_powel ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Add divB related sources to w within ixO corresponding to Powel.

Definition at line 2401 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ add_source_res1()

subroutine mod_mhd_phys::add_source_res1 ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Add resistive source to w within ixO Uses 3 point stencil (1 neighbour) in each direction, non-conservative. If the fourthorder precompiler flag is set, uses fourth order central difference for the laplacian. Then the stencil is 5 (2 neighbours).

Definition at line 2109 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ add_source_res2()

subroutine mod_mhd_phys::add_source_res2 ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Add resistive source to w within ixO Uses 5 point stencil (2 neighbours) in each direction, conservative.

Definition at line 2227 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ b_from_vector_potential()

subroutine, public mod_mhd_phys::b_from_vector_potential ( integer, intent(in)  ixIs,
integer, intent(in)  L,
integer, intent(in)  ixI,
  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixis^s,1:nws), intent(inout)  ws,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

calculate magnetic field from vector potential

Definition at line 4152 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ boris_add_source()

subroutine mod_mhd_phys::boris_add_source ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
logical, intent(in)  qsourcesplit,
logical, intent(inout)  active 
)

Definition at line 1909 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ e_to_rhos()

subroutine mod_mhd_phys::e_to_rhos ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Convert energy to entropy.

Definition at line 877 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ fixdivb_boundary()

subroutine mod_mhd_phys::fixdivb_boundary ( integer, intent(in)  ixG,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixg^s,1:nw), intent(inout)  w,
double precision, dimension(ixg^s,1:ndim), intent(in)  x,
integer, intent(in)  iB 
)

Definition at line 3044 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ get_ambipolar_dt()

double precision function mod_mhd_phys::get_ambipolar_dt ( double precision, dimension(ixi^s,1:nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, intent(in)  dx,
double precision, intent(in)  D,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Calculates the explicit dt for the ambipokar term This function is used by both explicit scheme and STS method.

Definition at line 1727 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ get_current()

subroutine, public mod_mhd_phys::get_current ( double precision, dimension(ixi^s,1:nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(out)  idirmin,
double precision, dimension(ixi^s,7-2*ndir:3)  current 
)

Calculate idirmin and the idirmin:3 components of the common current array make sure that dxlevel(^D) is set correctly.

Definition at line 2599 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ get_divb()

subroutine, public mod_mhd_phys::get_divb ( double precision, dimension(ixi^s,1:nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s), intent(inout)  divb,
logical, intent(in), optional  fourthorder 
)

Calculate div B within ixO.

Definition at line 2534 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ get_lorentz()

subroutine mod_mhd_phys::get_lorentz ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  w,
double precision, dimension(ixi^s,3), intent(inout)  JxB 
)

Compute the Lorentz force (JxB)

Definition at line 1937 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ get_normalized_divb()

subroutine, public mod_mhd_phys::get_normalized_divb ( double precision, dimension(ixi^s,1:nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s)  divb 
)

get dimensionless div B = |divB| * volume / area / |B|

Definition at line 2570 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ get_resistive_electric_field()

subroutine mod_mhd_phys::get_resistive_electric_field ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
type(state), intent(in)  sCT,
type(state), intent(in)  s,
double precision, dimension(ixi^s,7-2*ndim:3)  jce 
)

calculate eta J at cell edges

Definition at line 4023 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ internal_energy_add_source()

subroutine mod_mhd_phys::internal_energy_add_source ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ie 
)

Definition at line 1993 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_add_source()

subroutine mod_mhd_phys::mhd_add_source ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
logical, intent(in)  qsourcesplit,
logical, intent(inout)  active 
)

w[iws]=w[iws]+qdt*S[iws,wCT] where S is the source based on wCT within ixO

Definition at line 1772 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_add_source_geom()

subroutine mod_mhd_phys::mhd_add_source_geom ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(inout)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Definition at line 2686 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_angmomfix()

subroutine mod_mhd_phys::mhd_angmomfix ( double precision, dimension(ixi^s,1:nwflux,1:ndim), intent(inout)  fC,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
double precision, dimension(ixi^s,1:nw), intent(inout)  wnew,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idim 
)

Definition at line 262 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_boundary_adjust()

subroutine mod_mhd_phys::mhd_boundary_adjust ( )

Definition at line 3000 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_check_params()

subroutine mod_mhd_phys::mhd_check_params ( )

Definition at line 581 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_check_w()

subroutine mod_mhd_phys::mhd_check_w ( logical, intent(in)  primitive,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,nw), intent(in)  w,
logical, dimension(ixi^s,1:nw), intent(inout)  flag 
)

Definition at line 639 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_clean_divb_multigrid()

subroutine, public mod_mhd_phys::mhd_clean_divb_multigrid ( double precision, intent(in)  qdt,
double precision, intent(in)  qt,
logical, intent(inout)  active 
)
Parameters
[in]qdtCurrent time step
[in]qtCurrent time
[in,out]activeOutput if the source is active

Definition at line 3421 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_e_to_ei()

subroutine mod_mhd_phys::mhd_e_to_ei ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, nw), intent(inout)  w,
double precision, dimension(ixi^s, 1:ndim), intent(in)  x 
)

Transform total energy to internal energy.

Definition at line 748 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_e_to_ei1()

subroutine mod_mhd_phys::mhd_e_to_ei1 ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, nw), intent(inout)  w,
double precision, dimension(ixi^s, 1:ndim), intent(in)  x 
)

Transform total energy to internal energy.

Definition at line 1317 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_ei_to_e()

subroutine mod_mhd_phys::mhd_ei_to_e ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, nw), intent(inout)  w,
double precision, dimension(ixi^s, 1:ndim), intent(in)  x 
)

Transform internal energy to total energy.

Definition at line 732 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_ei_to_e1()

subroutine mod_mhd_phys::mhd_ei_to_e1 ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, nw), intent(inout)  w,
double precision, dimension(ixi^s, 1:ndim), intent(in)  x 
)

Transform internal energy to total energy.

Definition at line 1303 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_energy_synchro()

subroutine mod_mhd_phys::mhd_energy_synchro ( double precision, intent(in)  qdt,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  wCT,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Definition at line 763 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_face_to_center()

subroutine, public mod_mhd_phys::mhd_face_to_center ( integer, intent(in)  ixO,
integer, intent(in)  L,
type(state)  s 
)

calculate cell-center values from face-center values

Definition at line 4092 of file mod_mhd_phys.t.

◆ mhd_gamma2_alfven()

subroutine mod_mhd_phys::mhd_gamma2_alfven ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, nw), intent(in)  w,
double precision, dimension(ixo^s), intent(out)  gamma_A2 
)

Compute 1/(1+v_A^2/c^2) for Boris' approximation, where v_A is the Alfven velocity.

Definition at line 1965 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_gamma_alfven()

double precision function, dimension(ixo^s) mod_mhd_phys::mhd_gamma_alfven ( double precision, dimension(ixi^s, nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L 
)

Compute 1/sqrt(1+v_A^2/c^2) for Boris simplification, where v_A is the Alfven velocity.

Definition at line 1983 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_a2max()

subroutine mod_mhd_phys::mhd_get_a2max ( double precision, dimension(ixi^s, nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ndim), intent(inout)  a2max 
)

4th order

Definition at line 954 of file mod_mhd_phys.t.

◆ mhd_get_cbounds()

subroutine mod_mhd_phys::mhd_get_cbounds ( double precision, dimension(ixi^s, nw), intent(in)  wLC,
double precision, dimension(ixi^s, nw), intent(in)  wRC,
double precision, dimension(ixi^s, nw), intent(in)  wLp,
double precision, dimension(ixi^s, nw), intent(in)  wRp,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idim,
double precision, dimension(ixi^s), intent(inout)  cmax,
double precision, dimension(ixi^s), intent(inout), optional  cmin 
)

Estimating bounds for the minimum and maximum signal velocities.

Definition at line 1039 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_cmax()

subroutine mod_mhd_phys::mhd_get_cmax ( double precision, dimension(ixi^s, nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idim,
double precision, dimension(ixi^s), intent(inout)  cmax 
)

Calculate cmax_idim=csound+abs(v_idim) within ixO^L.

Definition at line 941 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_csound()

subroutine mod_mhd_phys::mhd_get_csound ( double precision, dimension(ixi^s, nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idim,
double precision, dimension(ixi^s), intent(out)  csound 
)

Calculate fast magnetosonic wave speed.

Definition at line 1129 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_csound2()

subroutine, public mod_mhd_phys::mhd_get_csound2 ( double precision, dimension(ixi^s,nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s), intent(out)  csound2 
)

Calculate the square of the thermal sound speed csound2 within ixO^L. csound2=gamma*p/rho.

Definition at line 1334 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_csound_prim()

subroutine mod_mhd_phys::mhd_get_csound_prim ( double precision, dimension(ixi^s, nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idim,
double precision, dimension(ixi^s), intent(out)  csound 
)

Calculate fast magnetosonic wave speed.

Definition at line 1179 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_dt()

subroutine mod_mhd_phys::mhd_get_dt ( double precision, dimension(ixi^s,1:nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, intent(inout)  dtnew,
double precision, intent(in)  dx,
double precision, intent(in)  D,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

If resistivity is not zero, check diffusion time limit for dt.

Definition at line 2623 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_flux()

subroutine mod_mhd_phys::mhd_get_flux ( double precision, dimension(ixi^s,nw), intent(in)  wC,
double precision, dimension(ixi^s,nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idim,
double precision, dimension(ixi^s,nwflux), intent(out)  f 
)

Calculate fluxes within ixO^L.

Definition at line 1365 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_jambi()

subroutine mod_mhd_phys::mhd_get_jambi ( double precision, dimension(ixi^s,nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(:^d&,:), intent(inout), allocatable  res 
)

Definition at line 2902 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_jxbxb()

subroutine mod_mhd_phys::mhd_get_jxbxb ( double precision, dimension(ixi^s,nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(:^d&,:), intent(inout), allocatable  res 
)

Definition at line 1588 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_p_total()

subroutine mod_mhd_phys::mhd_get_p_total ( double precision, dimension(ixi^s,nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s), intent(out)  p 
)

Calculate total pressure within ixO^L including magnetic pressure.

Definition at line 1350 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_pthermal()

subroutine, public mod_mhd_phys::mhd_get_pthermal ( double precision, dimension(ixi^s,nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s), intent(out)  pth 
)

Calculate thermal pressure=(gamma-1)*(e-0.5*m**2/rho-b**2/2) within ixO^L.

Definition at line 1231 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_tcutoff()

subroutine mod_mhd_phys::mhd_get_tcutoff ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
double precision, intent(out)  tco_local,
double precision, intent(out)  Tmax_local 
)

get adaptive cutoff temperature for TRAC (Johnston 2019 ApJL, 873, L22)

Definition at line 977 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_temperature_from_eint()

subroutine mod_mhd_phys::mhd_get_temperature_from_eint ( double precision, dimension(ixi^s, 1:nw), intent(in)  w,
double precision, dimension(ixi^s, 1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s), intent(out)  res 
)

Calculate temperature=p/rho when in e_ the internal energy is stored.

Definition at line 1276 of file mod_mhd_phys.t.

◆ mhd_get_temperature_from_etot()

subroutine mod_mhd_phys::mhd_get_temperature_from_etot ( double precision, dimension(ixi^s, 1:nw), intent(in)  w,
double precision, dimension(ixi^s, 1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s), intent(out)  res 
)

Calculate temperature=p/rho when in e_ the total energy is stored this does not check the values of mhd_energy and mhd_internal_e, mhd_energy = .true. and mhd_internal_e = .false. also check small_values is avoided.

Definition at line 1289 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_get_v()

subroutine, public mod_mhd_phys::mhd_get_v ( double precision, dimension(ixi^s,nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,ndir), intent(out)  v 
)

Calculate v vector.

Definition at line 913 of file mod_mhd_phys.t.

◆ mhd_get_v_idim()

subroutine, public mod_mhd_phys::mhd_get_v_idim ( double precision, dimension(ixi^s,nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idim,
double precision, dimension(ixi^s), intent(out)  v 
)

Calculate v component.

Definition at line 929 of file mod_mhd_phys.t.

◆ mhd_getdt_hall()

subroutine mod_mhd_phys::mhd_getdt_hall ( double precision, dimension(ixi^s,1:nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, intent(in)  dx,
double precision, intent(in)  D,
double precision, intent(out)  dthall 
)

Definition at line 2926 of file mod_mhd_phys.t.

◆ mhd_getv_hall()

subroutine mod_mhd_phys::mhd_getv_hall ( double precision, dimension(ixi^s,nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:3), intent(inout)  vHall 
)

Definition at line 2881 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_handle_small_ei()

subroutine mod_mhd_phys::mhd_handle_small_ei ( double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  ie,
character(len=*), intent(in)  subname 
)

handle small or negative internal energy

Definition at line 2024 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_handle_small_values()

subroutine mod_mhd_phys::mhd_handle_small_values ( logical, intent(in)  primitive,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
character(len=*), intent(in)  subname 
)

Definition at line 804 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_kin_en()

double precision function, dimension(ixo^s), public mod_mhd_phys::mhd_kin_en ( double precision, dimension(ixi^s, nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixo^s), intent(in), optional  inv_rho 
)

compute kinetic energy

Definition at line 2867 of file mod_mhd_phys.t.

◆ mhd_mag_en()

double precision function, dimension(ixo^s) mod_mhd_phys::mhd_mag_en ( double precision, dimension(ixi^s, nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L 
)

Compute evolving magnetic energy.

Definition at line 2857 of file mod_mhd_phys.t.

◆ mhd_mag_en_all()

double precision function, dimension(ixo^s), public mod_mhd_phys::mhd_mag_en_all ( double precision, dimension(ixi^s, nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L 
)

Compute 2 times total magnetic energy.

Definition at line 2829 of file mod_mhd_phys.t.

◆ mhd_mag_i_all()

double precision function, dimension(ixo^s) mod_mhd_phys::mhd_mag_i_all ( double precision, dimension(ixi^s, nw), intent(in)  w,
integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
integer, intent(in)  idir 
)

Compute full magnetic field by direction.

Definition at line 2843 of file mod_mhd_phys.t.

◆ mhd_modify_wlr()

subroutine mod_mhd_phys::mhd_modify_wlr ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, intent(in)  qt,
double precision, dimension(ixi^s,1:nw), intent(inout)  wLC,
double precision, dimension(ixi^s,1:nw), intent(inout)  wRC,
double precision, dimension(ixi^s,1:nw), intent(inout)  wLp,
double precision, dimension(ixi^s,1:nw), intent(inout)  wRp,
type(state)  s,
integer, intent(in)  idir 
)

Definition at line 2958 of file mod_mhd_phys.t.

◆ mhd_phys_init()

subroutine, public mod_mhd_phys::mhd_phys_init ( )

Definition at line 275 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_physical_units()

subroutine mod_mhd_phys::mhd_physical_units ( )

Definition at line 603 of file mod_mhd_phys.t.

◆ mhd_to_conserved()

subroutine, public mod_mhd_phys::mhd_to_conserved ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, nw), intent(inout)  w,
double precision, dimension(ixi^s, 1:ndim), intent(in)  x 
)

Transform primitive variables into conservative ones.

Definition at line 668 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_to_primitive()

subroutine, public mod_mhd_phys::mhd_to_primitive ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s, nw), intent(inout)  w,
double precision, dimension(ixi^s, 1:ndim), intent(in)  x 
)

Transform conservative variables into primitive ones.

Definition at line 698 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_update_faces()

subroutine mod_mhd_phys::mhd_update_faces ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, intent(in)  qt,
double precision, intent(in)  qdt,
double precision, dimension(ixi^s,1:nw), intent(in)  wprim,
double precision, dimension(ixi^s,1:nwflux,1:ndim), intent(in)  fC,
double precision, dimension(ixi^s,7-2*ndim:3), intent(inout)  fE,
type(state)  sCT,
type(state)  s 
)

Definition at line 3573 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ mhd_write_info()

subroutine mod_mhd_phys::mhd_write_info ( integer, intent(in)  fh)

Write this module's parameters to a snapsoht.

Definition at line 245 of file mod_mhd_phys.t.

◆ multiplyambicoef()

subroutine, public mod_mhd_phys::multiplyambicoef ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s), intent(inout)  res,
double precision, dimension(ixi^s,1:nw), intent(in)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

multiply res by the ambipolar coefficient The ambipolar coefficient is calculated as -mhd_eta_ambi/rho^2 The user may mask its value in the user file by implemneting usr_mask_ambipolar subroutine

Definition at line 1755 of file mod_mhd_phys.t.

◆ rhos_to_e()

subroutine mod_mhd_phys::rhos_to_e ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,nw)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x 
)

Convert entropy to energy.

Definition at line 895 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ sts_set_source_ambipolar()

subroutine mod_mhd_phys::sts_set_source_ambipolar ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, dimension(ixi^s,1:nw), intent(inout)  w,
double precision, dimension(ixi^s,1:ndim), intent(in)  x,
double precision, dimension(ixi^s,1:nw), intent(inout)  wres,
logical, intent(in)  fix_conserve_at_step,
double precision, intent(in)  my_dt,
integer, intent(in)  igrid,
integer, dimension(:), intent(in)  indexChangeStart,
integer, dimension(:), intent(in)  indexChangeN,
logical, dimension(:), intent(in)  indexChangeFixC 
)

Sets the sources for the ambipolar this is used for the STS method.

at the corresponding indices store_flux_var is explicitly called for each of the fluxes one by one

Definition at line 1629 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ update_faces_average()

subroutine mod_mhd_phys::update_faces_average ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, intent(in)  qt,
double precision, intent(in)  qdt,
double precision, dimension(ixi^s,1:nwflux,1:ndim), intent(in)  fC,
double precision, dimension(ixi^s,7-2*ndim:3), intent(inout)  fE,
type(state)  sCT,
type(state)  s 
)

get electric field though averaging neighors to update faces in CT

Definition at line 3598 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ update_faces_contact()

subroutine mod_mhd_phys::update_faces_contact ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, intent(in)  qt,
double precision, intent(in)  qdt,
double precision, dimension(ixi^s,1:nw), intent(in)  wp,
double precision, dimension(ixi^s,1:nwflux,1:ndim), intent(in)  fC,
double precision, dimension(ixi^s,7-2*ndim:3), intent(inout)  fE,
type(state)  sCT,
type(state)  s 
)

update faces using UCT contact mode by Gardiner and Stone 2005 JCP 205, 509

Definition at line 3697 of file mod_mhd_phys.t.

Here is the call graph for this function:

◆ update_faces_hll()

subroutine mod_mhd_phys::update_faces_hll ( integer, intent(in)  ixI,
integer, intent(in)  L,
integer, intent(in)  ixO,
  L,
double precision, intent(in)  qt,
double precision, intent(in)  qdt,
double precision, dimension(ixi^s,7-2*ndim:3), intent(inout)  fE,
type(state)  sCT,
type(state)  s 
)

update faces

Definition at line 3866 of file mod_mhd_phys.t.

Here is the call graph for this function:

Variable Documentation

◆ b0field_forcefree

logical, public, protected mod_mhd_phys::b0field_forcefree =.true.

B0 field is force-free.

Definition at line 159 of file mod_mhd_phys.t.

◆ boundary_divbfix

logical, dimension(2*^nd), public, protected mod_mhd_phys::boundary_divbfix =.true.

To control divB=0 fix for boundary.

Definition at line 153 of file mod_mhd_phys.t.

◆ boundary_divbfix_skip

integer, dimension(2*^nd), public, protected mod_mhd_phys::boundary_divbfix_skip =0

To skip * layer of ghost cells during divB=0 fix for boundary.

Definition at line 156 of file mod_mhd_phys.t.

◆ clean_initial_divb

logical, public mod_mhd_phys::clean_initial_divb = .false.

clean initial divB

Definition at line 147 of file mod_mhd_phys.t.

◆ divbwave

logical, public mod_mhd_phys::divbwave = .true.

Add divB wave in Roe solver.

Definition at line 144 of file mod_mhd_phys.t.

◆ e_

integer, public, protected mod_mhd_phys::e_

Index of the energy density (-1 if not present)

Definition at line 80 of file mod_mhd_phys.t.

◆ eaux_

integer, public, protected mod_mhd_phys::eaux_

Indices of auxiliary internal energy.

Definition at line 92 of file mod_mhd_phys.t.

◆ he_abundance

double precision, public, protected mod_mhd_phys::he_abundance =0.1d0

Helium abundance over Hydrogen.

Definition at line 150 of file mod_mhd_phys.t.

◆ mag

integer, dimension(:), allocatable, public, protected mod_mhd_phys::mag

Indices of the magnetic field.

Definition at line 86 of file mod_mhd_phys.t.

◆ mhd_4th_order

logical, public, protected mod_mhd_phys::mhd_4th_order = .false.

MHD fourth order.

Definition at line 68 of file mod_mhd_phys.t.

◆ mhd_adiab

double precision, public mod_mhd_phys::mhd_adiab = 1.0d0

The adiabatic constant.

Definition at line 102 of file mod_mhd_phys.t.

◆ mhd_ambipolar

logical, public, protected mod_mhd_phys::mhd_ambipolar = .false.

Whether Ambipolar term is used.

Definition at line 29 of file mod_mhd_phys.t.

◆ mhd_ambipolar_sts

logical, public, protected mod_mhd_phys::mhd_ambipolar_sts = .false.

Whether Ambipolar term is implemented using supertimestepping.

Definition at line 31 of file mod_mhd_phys.t.

◆ mhd_divb_4thorder

logical, public, protected mod_mhd_phys::mhd_divb_4thorder = .false.

Whether divB is computed with a fourth order approximation.

Definition at line 129 of file mod_mhd_phys.t.

◆ mhd_energy

logical, public, protected mod_mhd_phys::mhd_energy = .true.

Whether an energy equation is used.

Definition at line 8 of file mod_mhd_phys.t.

◆ mhd_eta

double precision, public mod_mhd_phys::mhd_eta = 0.0d0

The MHD resistivity.

Definition at line 105 of file mod_mhd_phys.t.

◆ mhd_eta_ambi

double precision, public mod_mhd_phys::mhd_eta_ambi = 0.0d0

The MHD ambipolar coefficient.

Definition at line 114 of file mod_mhd_phys.t.

◆ mhd_eta_hyper

double precision, public mod_mhd_phys::mhd_eta_hyper = 0.0d0

The MHD hyper-resistivity.

Definition at line 108 of file mod_mhd_phys.t.

◆ mhd_etah

double precision, public mod_mhd_phys::mhd_etah = 0.0d0

TODO: what is this?

Definition at line 111 of file mod_mhd_phys.t.

◆ mhd_gamma

double precision, public mod_mhd_phys::mhd_gamma = 5.d0/3.0d0

The adiabatic index.

Definition at line 99 of file mod_mhd_phys.t.

◆ mhd_glm

logical, public, protected mod_mhd_phys::mhd_glm = .false.

Whether GLM-MHD is used.

Definition at line 40 of file mod_mhd_phys.t.

◆ mhd_glm_alpha

double precision, public mod_mhd_phys::mhd_glm_alpha = 0.5d0

GLM-MHD parameter: ratio of the diffusive and advective time scales for div b taking values within [0, 1].

Definition at line 53 of file mod_mhd_phys.t.

◆ mhd_gravity

logical, public, protected mod_mhd_phys::mhd_gravity = .false.

Whether gravity is added.

Definition at line 23 of file mod_mhd_phys.t.

◆ mhd_hall

logical, public, protected mod_mhd_phys::mhd_hall = .false.

Whether Hall-MHD is used.

Definition at line 26 of file mod_mhd_phys.t.

◆ mhd_internal_e

logical, public, protected mod_mhd_phys::mhd_internal_e = .false.

Whether internal energy is solved instead of total energy.

Definition at line 46 of file mod_mhd_phys.t.

◆ mhd_magnetofriction

logical, public, protected mod_mhd_phys::mhd_magnetofriction = .false.

Whether magnetofriction is added.

Definition at line 37 of file mod_mhd_phys.t.

◆ mhd_n_tracer

integer, public, protected mod_mhd_phys::mhd_n_tracer = 0

Number of tracer species.

Definition at line 71 of file mod_mhd_phys.t.

◆ mhd_particles

logical, public, protected mod_mhd_phys::mhd_particles = .false.

Whether particles module is added.

Definition at line 34 of file mod_mhd_phys.t.

◆ mhd_radiative_cooling

logical, public, protected mod_mhd_phys::mhd_radiative_cooling = .false.

Whether radiative cooling is added.

Definition at line 17 of file mod_mhd_phys.t.

◆ mhd_solve_eaux

logical, public, protected mod_mhd_phys::mhd_solve_eaux = .false.

Whether auxiliary internal energy is solved.

Definition at line 43 of file mod_mhd_phys.t.

◆ mhd_thermal_conduction

logical, public, protected mod_mhd_phys::mhd_thermal_conduction = .false.

Whether thermal conduction is used.

Definition at line 11 of file mod_mhd_phys.t.

◆ mhd_viscosity

logical, public, protected mod_mhd_phys::mhd_viscosity = .false.

Whether viscosity is added.

Definition at line 20 of file mod_mhd_phys.t.

◆ mom

integer, dimension(:), allocatable, public, protected mod_mhd_phys::mom

Indices of the momentum density.

Definition at line 77 of file mod_mhd_phys.t.

◆ p_

integer, public, protected mod_mhd_phys::p_

Index of the gas pressure (-1 if not present) should equal e_.

Definition at line 83 of file mod_mhd_phys.t.

◆ paux_

integer, public, protected mod_mhd_phys::paux_

Definition at line 93 of file mod_mhd_phys.t.

◆ psi_

integer, public, protected mod_mhd_phys::psi_

Indices of the GLM psi.

Definition at line 89 of file mod_mhd_phys.t.

◆ rho_

integer, public, protected mod_mhd_phys::rho_

Index of the density (in the w array)

Definition at line 74 of file mod_mhd_phys.t.

◆ source_split_divb

logical, public, protected mod_mhd_phys::source_split_divb = .false.

Whether divB cleaning sources are added splitting from fluid solver.

Definition at line 49 of file mod_mhd_phys.t.

◆ tracer

integer, dimension(:), allocatable, public, protected mod_mhd_phys::tracer

Indices of the tracers.

Definition at line 96 of file mod_mhd_phys.t.

◆ type_ct

character(len=std_len), public, protected mod_mhd_phys::type_ct = 'uct_contact'

Method type of constrained transport.

Definition at line 126 of file mod_mhd_phys.t.

◆ typedivbfix

character(len=std_len), public, protected mod_mhd_phys::typedivbfix = 'linde'

Method type to clean divergence of B.

Definition at line 123 of file mod_mhd_phys.t.

◆ use_new_mhd_tc

logical, public, protected mod_mhd_phys::use_new_mhd_tc = .false.

Whether use new mod_tc.

Definition at line 14 of file mod_mhd_phys.t.

◆ usr_mask_ambipolar

procedure (mask_subroutine), pointer, public mod_mhd_phys::usr_mask_ambipolar => null()

Definition at line 215 of file mod_mhd_phys.t.