MPI-AMRVAC
2.2
The MPI - Adaptive Mesh Refinement - Versatile Advection Code
|
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_ei_to_e_aux (ixIL, ixOL, w, x) |
Update eaux and transform internal energy to total energy. More... | |
subroutine | mhd_e_to_ei_aux (ixIL, ixOL, w, x) |
Transform total energy to internal energy via eaux as internal energy. More... | |
subroutine | mhd_energy_synchro (ixIL, ixOL, 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_h_speed (wprim, x, ixIL, ixOL, idim, Hspeed) |
get H speed for H-correction to fix the carbuncle problem at grid-aligned shock front More... | |
subroutine | mhd_get_cbounds (wLC, wRC, wLp, wRp, x, ixIL, ixOL, idim, Hspeed, cmax, cmin) |
Estimating bounds for the minimum and maximum signal velocities. More... | |
subroutine | mhd_get_ct_velocity (vcts, wLp, wRp, ixIL, ixOL, idim, cmax, cmin) |
prepare velocities for ct methods 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, 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, nflux) |
Sets the sources for the ambipolar this is used for the STS method. More... | |
subroutine | update_faces_ambipolar (ixIL, ixOL, w, x, ECC, fE, circ) |
get ambipolar electric field and the integrals around cell faces More... | |
subroutine | get_flux_on_cell_face (ixIL, ixOL, ff, src) |
use cell-center flux to get cell-face flux and get the source term as the divergence of the flux 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 (igrid, psb) |
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, vcts) |
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, vcts) |
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, vcts) |
update faces More... | |
subroutine | get_resistive_electric_field (ixIL, ixOL, sCT, s, jce) |
calculate eta J at cell edges More... | |
subroutine | get_ambipolar_electric_field (ixIL, ixOL, w, x, fE) |
get ambipolar electric field on 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 | 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_ambipolar_exp = .false. |
Whether Ambipolar term is implemented explicitly. 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_trac = .false. |
Whether TRAC method is used. More... | |
integer, public, protected | mhd_trac_type =1 |
Which TRAC method is used More... | |
double precision, public, protected | mhd_trac_mask = 0.d0 |
Height of the mask used in the TRAC method. More... | |
integer, public, protected | mhd_trac_finegrid =4 |
Distance between two adjacent traced magnetic field lines (in finest cell size) 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, public, protected | tcoff_ |
Index of the cutoff temperature for the TRAC method. More... | |
integer, public, protected | tweight_ |
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() |
Magneto-hydrodynamics module.
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 1871 of file mod_mhd_phys.t.
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 2479 of file mod_mhd_phys.t.
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 | ||
) |
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 2709 of file mod_mhd_phys.t.
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 | ||
) |
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 | ||
) |
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 2819 of file mod_mhd_phys.t.
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 2532 of file mod_mhd_phys.t.
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 2645 of file mod_mhd_phys.t.
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 4631 of file mod_mhd_phys.t.
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 | ||
) |
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 1008 of file mod_mhd_phys.t.
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 | ||
) |
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 2141 of file mod_mhd_phys.t.
subroutine mod_mhd_phys::get_ambipolar_electric_field | ( | 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, dimension(ixi^s,7-2*ndim:3), intent(out) | fE | ||
) |
get ambipolar electric field on cell edges
Definition at line 4538 of file mod_mhd_phys.t.
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 3022 of file mod_mhd_phys.t.
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 2952 of file mod_mhd_phys.t.
subroutine mod_mhd_phys::get_flux_on_cell_face | ( | integer, intent(in) | ixI, |
integer, intent(in) | L, | ||
integer, intent(in) | ixO, | ||
L, | |||
double precision, dimension(:^d&,:), intent(inout) | ff, | ||
double precision, dimension(ixi^s), intent(out) | src | ||
) |
use cell-center flux to get cell-face flux and get the source term as the divergence of the flux
Definition at line 2086 of file mod_mhd_phys.t.
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 2360 of file mod_mhd_phys.t.
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 2988 of file mod_mhd_phys.t.
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 4469 of file mod_mhd_phys.t.
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 | ||
) |
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 2191 of file mod_mhd_phys.t.
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 | ||
) |
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 | ||
) |
subroutine mod_mhd_phys::mhd_boundary_adjust | ( | integer, intent(in) | igrid, |
type(state), dimension(max_blocks), target | psb | ||
) |
subroutine mod_mhd_phys::mhd_check_params |
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 | ||
) |
subroutine, public mod_mhd_phys::mhd_clean_divb_multigrid | ( | double precision, intent(in) | qdt, |
double precision, intent(in) | qt, | ||
logical, intent(inout) | active | ||
) |
[in] | qdt | Current time step |
[in] | qt | Current time |
[in,out] | active | Output if the source is active |
Definition at line 3852 of file mod_mhd_phys.t.
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 853 of file mod_mhd_phys.t.
subroutine mod_mhd_phys::mhd_e_to_ei_aux | ( | 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 via eaux as internal energy.
Definition at line 886 of file mod_mhd_phys.t.
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 839 of file mod_mhd_phys.t.
subroutine mod_mhd_phys::mhd_ei_to_e_aux | ( | 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 | ||
) |
Update eaux and transform internal energy to total energy.
Definition at line 871 of file mod_mhd_phys.t.
subroutine mod_mhd_phys::mhd_energy_synchro | ( | 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 | ||
) |
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 4571 of file mod_mhd_phys.t.
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 2388 of file mod_mhd_phys.t.
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 2406 of file mod_mhd_phys.t.
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 1085 of file mod_mhd_phys.t.
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(in) | Hspeed, | ||
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 1327 of file mod_mhd_phys.t.
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 1072 of file mod_mhd_phys.t.
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 1459 of file mod_mhd_phys.t.
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 1639 of file mod_mhd_phys.t.
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 1509 of file mod_mhd_phys.t.
subroutine mod_mhd_phys::mhd_get_ct_velocity | ( | type(ct_velocity), intent(inout) | vcts, |
double precision, dimension(ixi^s, nw), intent(in) | wLp, | ||
double precision, dimension(ixi^s, nw), intent(in) | wRp, | ||
integer, intent(in) | ixI, | ||
integer, intent(in) | L, | ||
integer, intent(in) | ixO, | ||
L, | |||
integer, intent(in) | idim, | ||
double precision, dimension(ixi^s), intent(in) | cmax, | ||
double precision, dimension(ixi^s), intent(in), optional | cmin | ||
) |
prepare velocities for ct methods
Definition at line 1406 of file mod_mhd_phys.t.
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 3046 of file mod_mhd_phys.t.
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 1670 of file mod_mhd_phys.t.
subroutine mod_mhd_phys::mhd_get_h_speed | ( | double precision, dimension(ixi^s, nw), intent(in) | wprim, |
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) | Hspeed | ||
) |
get H speed for H-correction to fix the carbuncle problem at grid-aligned shock front
Definition at line 1281 of file mod_mhd_phys.t.
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 | ||
) |
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(out) | res | ||
) |
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 1655 of file mod_mhd_phys.t.
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 1561 of file mod_mhd_phys.t.
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(inout) | 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)
test case, fixed cutoff temperature
iijima et al. 2021, LTRAC method
test case, fixed cutoff temperature
iijima et al. 2021, LTRAC method
do nothing here
Definition at line 1108 of file mod_mhd_phys.t.
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 1613 of file mod_mhd_phys.t.
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 1626 of file mod_mhd_phys.t.
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 1044 of file mod_mhd_phys.t.
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 1060 of file mod_mhd_phys.t.
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 3350 of file mod_mhd_phys.t.
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 | ||
) |
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 2447 of file mod_mhd_phys.t.
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 | ||
) |
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 3291 of file mod_mhd_phys.t.
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 3281 of file mod_mhd_phys.t.
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 3253 of file mod_mhd_phys.t.
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 3267 of file mod_mhd_phys.t.
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 3382 of file mod_mhd_phys.t.
subroutine, public mod_mhd_phys::mhd_phys_init |
subroutine mod_mhd_phys::mhd_physical_units |
Definition at line 696 of file mod_mhd_phys.t.
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 775 of file mod_mhd_phys.t.
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 805 of file mod_mhd_phys.t.
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, | ||
type(ct_velocity) | vcts | ||
) |
subroutine mod_mhd_phys::mhd_write_info | ( | integer, intent(in) | fh | ) |
Write this module's parameters to a snapsoht.
Definition at line 269 of file mod_mhd_phys.t.
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 2174 of file mod_mhd_phys.t.
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 1026 of file mod_mhd_phys.t.
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, intent(in) | nflux | ||
) |
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 1927 of file mod_mhd_phys.t.
subroutine mod_mhd_phys::update_faces_ambipolar | ( | 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, dimension(ixi^s,1:3), intent(in) | ECC, | ||
double precision, dimension(ixi^s,7-2*ndim:3), intent(out) | fE, | ||
double precision, dimension(ixi^s,1:ndim), intent(out) | circ | ||
) |
get ambipolar electric field and the integrals around cell faces
Definition at line 2032 of file mod_mhd_phys.t.
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 4029 of file mod_mhd_phys.t.
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, | ||
type(ct_velocity) | vcts | ||
) |
update faces using UCT contact mode by Gardiner and Stone 2005 JCP 205, 509
Definition at line 4132 of file mod_mhd_phys.t.
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, | ||
type(ct_velocity) | vcts | ||
) |
update faces
Definition at line 4306 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::b0field_forcefree =.true. |
B0 field is force-free.
Definition at line 181 of file mod_mhd_phys.t.
logical, dimension(2*^nd), public, protected mod_mhd_phys::boundary_divbfix =.true. |
To control divB=0 fix for boundary.
Definition at line 175 of file mod_mhd_phys.t.
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 178 of file mod_mhd_phys.t.
logical, public mod_mhd_phys::clean_initial_divb = .false. |
clean initial divB
Definition at line 169 of file mod_mhd_phys.t.
logical, public mod_mhd_phys::divbwave = .true. |
Add divB wave in Roe solver.
Definition at line 166 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::e_ |
Index of the energy density (-1 if not present)
Definition at line 98 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::eaux_ |
Indices of auxiliary internal energy.
Definition at line 110 of file mod_mhd_phys.t.
double precision, public, protected mod_mhd_phys::he_abundance =0.1d0 |
Helium abundance over Hydrogen.
Definition at line 172 of file mod_mhd_phys.t.
integer, dimension(:), allocatable, public, protected mod_mhd_phys::mag |
Indices of the magnetic field.
Definition at line 104 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_4th_order = .false. |
MHD fourth order.
Definition at line 86 of file mod_mhd_phys.t.
double precision, public mod_mhd_phys::mhd_adiab = 1.0d0 |
The adiabatic constant.
Definition at line 124 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_ambipolar = .false. |
Whether Ambipolar term is used.
Definition at line 31 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_ambipolar_exp = .false. |
Whether Ambipolar term is implemented explicitly.
Definition at line 37 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_ambipolar_sts = .false. |
Whether Ambipolar term is implemented using supertimestepping.
Definition at line 34 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_divb_4thorder = .false. |
Whether divB is computed with a fourth order approximation.
Definition at line 151 of file mod_mhd_phys.t.
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.
double precision, public mod_mhd_phys::mhd_eta = 0.0d0 |
The MHD resistivity.
Definition at line 127 of file mod_mhd_phys.t.
double precision, public mod_mhd_phys::mhd_eta_ambi = 0.0d0 |
The MHD ambipolar coefficient.
Definition at line 136 of file mod_mhd_phys.t.
double precision, public mod_mhd_phys::mhd_eta_hyper = 0.0d0 |
The MHD hyper-resistivity.
Definition at line 130 of file mod_mhd_phys.t.
double precision, public mod_mhd_phys::mhd_etah = 0.0d0 |
TODO: what is this?
Definition at line 133 of file mod_mhd_phys.t.
double precision, public mod_mhd_phys::mhd_gamma = 5.d0/3.0d0 |
The adiabatic index.
Definition at line 121 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_glm = .false. |
Whether GLM-MHD is used.
Definition at line 46 of file mod_mhd_phys.t.
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 71 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_gravity = .false. |
Whether gravity is added.
Definition at line 25 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_hall = .false. |
Whether Hall-MHD is used.
Definition at line 28 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_internal_e = .false. |
Whether internal energy is solved instead of total energy.
Definition at line 64 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_magnetofriction = .false. |
Whether magnetofriction is added.
Definition at line 43 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::mhd_n_tracer = 0 |
Number of tracer species.
Definition at line 89 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_particles = .false. |
Whether particles module is added.
Definition at line 40 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_radiative_cooling = .false. |
Whether radiative cooling is added.
Definition at line 19 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_solve_eaux = .false. |
Whether auxiliary internal energy is solved.
Definition at line 61 of file mod_mhd_phys.t.
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.
logical, public, protected mod_mhd_phys::mhd_trac = .false. |
Whether TRAC method is used.
Definition at line 49 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::mhd_trac_finegrid =4 |
Distance between two adjacent traced magnetic field lines (in finest cell size)
Definition at line 58 of file mod_mhd_phys.t.
double precision, public, protected mod_mhd_phys::mhd_trac_mask = 0.d0 |
Height of the mask used in the TRAC method.
Definition at line 55 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::mhd_trac_type =1 |
Which TRAC method is used
Definition at line 52 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::mhd_viscosity = .false. |
Whether viscosity is added.
Definition at line 22 of file mod_mhd_phys.t.
integer, dimension(:), allocatable, public, protected mod_mhd_phys::mom |
Indices of the momentum density.
Definition at line 95 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::p_ |
Index of the gas pressure (-1 if not present) should equal e_.
Definition at line 101 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::paux_ |
Definition at line 111 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::psi_ |
Indices of the GLM psi.
Definition at line 107 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::rho_ |
Index of the density (in the w array)
Definition at line 92 of file mod_mhd_phys.t.
logical, public, protected mod_mhd_phys::source_split_divb = .false. |
Whether divB cleaning sources are added splitting from fluid solver.
Definition at line 67 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::tcoff_ |
Index of the cutoff temperature for the TRAC method.
Definition at line 114 of file mod_mhd_phys.t.
integer, dimension(:), allocatable, public, protected mod_mhd_phys::tracer |
Indices of the tracers.
Definition at line 118 of file mod_mhd_phys.t.
integer, public, protected mod_mhd_phys::tweight_ |
Definition at line 115 of file mod_mhd_phys.t.
character(len=std_len), public, protected mod_mhd_phys::type_ct = 'uct_contact' |
Method type of constrained transport.
Definition at line 148 of file mod_mhd_phys.t.
character(len=std_len), public, protected mod_mhd_phys::typedivbfix = 'linde' |
Method type to clean divergence of B.
Definition at line 145 of file mod_mhd_phys.t.
procedure (mask_subroutine), pointer, public mod_mhd_phys::usr_mask_ambipolar => null() |
Definition at line 237 of file mod_mhd_phys.t.