MPI-AMRVAC
3.1
The MPI - Adaptive Mesh Refinement - Versatile Advection Code (development version)
|
Magnetofriction module. More...
Functions/Subroutines | |
subroutine | mf_write_info (fh) |
Write this module's parameters to a snapsoht. More... | |
subroutine, public | mf_phys_init () |
subroutine | mf_check_params |
subroutine | mf_physical_units () |
subroutine, public | mf_to_conserved (ixIL, ixOL, w, x) |
Transform primitive variables into conservative ones. More... | |
subroutine, public | mf_to_primitive (ixIL, ixOL, w, x) |
Transform conservative variables into primitive ones. More... | |
subroutine, public | mf_get_v (w, x, ixIL, ixOL, v) |
Calculate v vector. More... | |
subroutine, public | mf_get_v_idim (w, x, ixIL, ixOL, idim, v) |
Calculate v component. More... | |
subroutine | mf_get_cmax (w, x, ixIL, ixOL, idim, cmax) |
Calculate cmax_idim=csound+abs(v_idim) within ixO^L. More... | |
subroutine | mf_get_cbounds (wLC, wRC, wLp, wRp, x, ixIL, ixOL, idim, Hspeed, cmax, cmin) |
Estimating bounds for the minimum and maximum signal velocities. More... | |
subroutine | mf_get_ct_velocity (vcts, wLp, wRp, ixIL, ixOL, idim, cmax, cmin) |
prepare velocities for ct methods More... | |
subroutine | mf_get_p_total (w, x, ixIL, ixOL, p) |
Calculate total pressure within ixO^L including magnetic pressure. More... | |
subroutine | mf_get_flux (wC, w, x, ixIL, ixOL, idim, f) |
Calculate fluxes within ixO^L. More... | |
subroutine | mf_velocity_update (qt, psa) |
Add global source terms to update frictional velocity on complete domain. More... | |
subroutine | mf_add_source (qdt, dtfactor, ixIL, ixOL, wCT, wCTprim, w, x, qsourcesplit, active) |
w[iws]=w[iws]+qdt*S[iws,wCT] where S is the source based on wCT within ixO More... | |
subroutine | frictional_velocity (w, x, ixIL, ixOL) |
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_normalized_divb (w, ixIL, ixOL, divb) |
get dimensionless div B = |divB| * volume / area / |B| More... | |
subroutine, public | get_current (w, ixIL, ixOL, idirmin, current, fourthorder) |
Calculate idirmin and the idirmin:3 components of the common current array make sure that dxlevel(^D) is set correctly. More... | |
subroutine | mf_get_dt (w, ixIL, ixOL, dtnew, dxD, x) |
If resistivity is not zero, check diffusion time limit for dt. More... | |
subroutine | mf_add_source_geom (qdt, dtfactor, ixIL, ixOL, wCT, w, x) |
double precision function, dimension(ixo^s), public | mf_mag_en_all (w, ixIL, ixOL) |
Compute 2 times total magnetic energy. More... | |
double precision function, dimension(ixo^s) | mf_mag_i_all (w, ixIL, ixOL, idir) |
Compute full magnetic field by direction. More... | |
double precision function, dimension(ixo^s) | mf_mag_en (w, ixIL, ixOL) |
Compute evolving magnetic energy. More... | |
subroutine | mf_modify_wlr (ixIL, ixOL, qt, wLC, wRC, wLp, wRp, s, idir) |
subroutine | mf_boundary_adjust (igrid, psb) |
subroutine | fixdivb_boundary (ixGL, ixOL, w, x, iB) |
subroutine, public | mf_clean_divb_multigrid (qdt, qt, active) |
subroutine | mf_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, public | mf_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... | |
subroutine, public | record_force_free_metrics () |
subroutine | mask_inner (ixIL, ixOL, w, x, patchwi, volume_pe) |
double precision function | integral_grid_mf (ixIL, ixOL, w, x, iw, patchwi) |
Variables | |
double precision, public | mf_nu = 1.d-15 |
viscosity coefficient in s cm^-2 for solar corona (Cheung 2012 ApJ) More... | |
double precision, public | mf_vmax = 3.d6 |
maximal limit of magnetofrictional velocity in cm s^-1 (Pomoell 2019 A&A) More... | |
double precision, dimension(2 *^nd), public | mf_decay_scale =0.d0 |
decay scale of frictional velocity near boundaries More... | |
logical, public, protected | mf_particles = .false. |
Whether particles module is added. More... | |
logical, public, protected | mf_glm = .false. |
Whether GLM-MHD is used. More... | |
logical, public, protected | source_split_divb = .false. |
Whether divB cleaning sources are added splitting from fluid solver. More... | |
double precision, public | mf_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 | mf_4th_order = .false. |
MHD fourth order. More... | |
logical, public, protected | mf_record_electric_field = .false. |
set to true if need to record electric field on cell edges More... | |
integer, dimension(:), allocatable, public, protected | mom |
Indices of the momentum density. More... | |
integer, public, protected | psi_ |
Indices of the GLM psi. More... | |
double precision, public | mf_eta = 0.0d0 |
The resistivity. More... | |
double precision, public | mf_eta_hyper = 0.0d0 |
The hyper-resistivity. More... | |
character(len=std_len), public, protected | typedivbfix = 'ct' |
Method type to clean divergence of B. More... | |
character(len=std_len), public, protected | type_ct = 'average' |
Method type of constrained transport. More... | |
logical, public, protected | mf_divb_4thorder = .false. |
Whether divB is computed with a fourth order approximation. More... | |
logical, public | divbwave = .true. |
Add divB wave in Roe solver. 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 | clean_initial_divb =.false. |
clean divb in the initial condition More... | |
Magnetofriction module.
subroutine mod_mf_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_mf_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 918 of file mod_mf_phys.t.
subroutine mod_mf_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_mf_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 1048 of file mod_mf_phys.t.
subroutine mod_mf_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 1002 of file mod_mf_phys.t.
subroutine mod_mf_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 769 of file mod_mf_phys.t.
subroutine mod_mf_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 864 of file mod_mf_phys.t.
subroutine, public mod_mf_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 2436 of file mod_mf_phys.t.
subroutine mod_mf_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 1381 of file mod_mf_phys.t.
subroutine mod_mf_phys::frictional_velocity | ( | 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 | |||
) |
subroutine, public mod_mf_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, | ||
logical, intent(in), optional | fourthorder | ||
) |
Calculate idirmin and the idirmin:3 components of the common current array make sure that dxlevel(^D) is set correctly.
Definition at line 1151 of file mod_mf_phys.t.
subroutine, public mod_mf_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 1117 of file mod_mf_phys.t.
subroutine mod_mf_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,sdim:3) | jce | ||
) |
calculate eta J at cell edges
Definition at line 2307 of file mod_mf_phys.t.
double precision function mod_mf_phys::integral_grid_mf | ( | integer, intent(in) | ixI, |
integer, intent(in) | L, | ||
integer, intent(in) | ixO, | ||
L, | |||
double precision, dimension(ixi^s,nw+nwauxio) | w, | ||
double precision, dimension(ixi^s,1:ndim), intent(in) | x, | ||
integer, intent(in) | iw, | ||
logical, dimension(ixi^s), intent(in) | patchwi | ||
) |
subroutine mod_mf_phys::mask_inner | ( | integer, intent(in) | ixI, |
double precision, intent(in) | L, | ||
integer, intent(in) | ixO, | ||
L, | |||
double precision, dimension(ixi^s,nw), intent(in) | w, | ||
double precision, dimension(ixi^s,1:ndim), intent(in) | x, | ||
logical, dimension(ixi^s), intent(out) | patchwi, | ||
double precision, intent(inout) | volume_pe | ||
) |
Definition at line 2544 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_add_source | ( | double precision, intent(in) | qdt, |
double precision, intent(in) | dtfactor, | ||
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(in) | wCTprim, | ||
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 622 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_add_source_geom | ( | double precision, intent(in) | qdt, |
double precision, intent(in) | dtfactor, | ||
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_mf_phys::mf_boundary_adjust | ( | integer, intent(in) | igrid, |
type(state), dimension(max_blocks), target | psb | ||
) |
subroutine mod_mf_phys::mf_check_params |
Definition at line 313 of file mod_mf_phys.t.
subroutine, public mod_mf_phys::mf_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 1746 of file mod_mf_phys.t.
subroutine, public mod_mf_phys::mf_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 2376 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_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,1:number_species), intent(in) | Hspeed, | ||
double precision, dimension(ixi^s,1:number_species), intent(inout) | cmax, | ||
double precision, dimension(ixi^s,1:number_species), intent(inout), optional | cmin | ||
) |
Estimating bounds for the minimum and maximum signal velocities.
Definition at line 438 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_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 426 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_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 463 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_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 1175 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_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 529 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_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 516 of file mod_mf_phys.t.
subroutine, public mod_mf_phys::mf_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 398 of file mod_mf_phys.t.
subroutine, public mod_mf_phys::mf_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 414 of file mod_mf_phys.t.
double precision function, dimension(ixo^s) mod_mf_phys::mf_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 1302 of file mod_mf_phys.t.
double precision function, dimension(ixo^s), public mod_mf_phys::mf_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 1282 of file mod_mf_phys.t.
double precision function, dimension(ixo^s) mod_mf_phys::mf_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 1292 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_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 1311 of file mod_mf_phys.t.
subroutine, public mod_mf_phys::mf_phys_init |
subroutine mod_mf_phys::mf_physical_units |
Definition at line 318 of file mod_mf_phys.t.
subroutine, public mod_mf_phys::mf_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 378 of file mod_mf_phys.t.
subroutine, public mod_mf_phys::mf_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 388 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_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,sdim:3), intent(inout) | fE, | ||
type(state) | sCT, | ||
type(state) | s, | ||
type(ct_velocity) | vcts | ||
) |
subroutine mod_mf_phys::mf_velocity_update | ( | double precision, intent(in) | qt, |
type(state), dimension(max_blocks), target | psa | ||
) |
Add global source terms to update frictional velocity on complete domain.
[in] | qt | Current time |
psa | Compute based on this state |
Definition at line 570 of file mod_mf_phys.t.
subroutine mod_mf_phys::mf_write_info | ( | integer, intent(in) | fh | ) |
Write this module's parameters to a snapsoht.
Definition at line 144 of file mod_mf_phys.t.
subroutine, public mod_mf_phys::record_force_free_metrics |
subroutine mod_mf_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,sdim:3), intent(inout) | fE, | ||
type(state) | sCT, | ||
type(state) | s | ||
) |
get electric field though averaging neighors to update faces in CT
Definition at line 1910 of file mod_mf_phys.t.
subroutine mod_mf_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,sdim: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 1998 of file mod_mf_phys.t.
subroutine mod_mf_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,sdim:3), intent(inout) | fE, | ||
type(state) | sCT, | ||
type(state) | s, | ||
type(ct_velocity) | vcts | ||
) |
update faces
Definition at line 2160 of file mod_mf_phys.t.
logical, dimension(2*^nd), public, protected mod_mf_phys::boundary_divbfix =.true. |
To control divB=0 fix for boundary.
Definition at line 80 of file mod_mf_phys.t.
integer, dimension(2*^nd), public, protected mod_mf_phys::boundary_divbfix_skip =0 |
To skip * layer of ghost cells during divB=0 fix for boundary.
Definition at line 83 of file mod_mf_phys.t.
logical, public, protected mod_mf_phys::clean_initial_divb =.false. |
clean divb in the initial condition
Definition at line 86 of file mod_mf_phys.t.
logical, public mod_mf_phys::divbwave = .true. |
Add divB wave in Roe solver.
Definition at line 74 of file mod_mf_phys.t.
double precision, public, protected mod_mf_phys::he_abundance =0.1d0 |
Helium abundance over Hydrogen.
Definition at line 77 of file mod_mf_phys.t.
logical, public, protected mod_mf_phys::mf_4th_order = .false. |
MHD fourth order.
Definition at line 34 of file mod_mf_phys.t.
double precision, dimension(2*^nd), public mod_mf_phys::mf_decay_scale =0.d0 |
decay scale of frictional velocity near boundaries
Definition at line 18 of file mod_mf_phys.t.
logical, public, protected mod_mf_phys::mf_divb_4thorder = .false. |
Whether divB is computed with a fourth order approximation.
Definition at line 59 of file mod_mf_phys.t.
double precision, public mod_mf_phys::mf_eta = 0.0d0 |
The resistivity.
Definition at line 47 of file mod_mf_phys.t.
double precision, public mod_mf_phys::mf_eta_hyper = 0.0d0 |
The hyper-resistivity.
Definition at line 50 of file mod_mf_phys.t.
logical, public, protected mod_mf_phys::mf_glm = .false. |
Whether GLM-MHD is used.
Definition at line 24 of file mod_mf_phys.t.
double precision, public mod_mf_phys::mf_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 31 of file mod_mf_phys.t.
double precision, public mod_mf_phys::mf_nu = 1.d-15 |
viscosity coefficient in s cm^-2 for solar corona (Cheung 2012 ApJ)
Definition at line 12 of file mod_mf_phys.t.
logical, public, protected mod_mf_phys::mf_particles = .false. |
Whether particles module is added.
Definition at line 21 of file mod_mf_phys.t.
logical, public, protected mod_mf_phys::mf_record_electric_field = .false. |
set to true if need to record electric field on cell edges
Definition at line 37 of file mod_mf_phys.t.
double precision, public mod_mf_phys::mf_vmax = 3.d6 |
maximal limit of magnetofrictional velocity in cm s^-1 (Pomoell 2019 A&A)
Definition at line 15 of file mod_mf_phys.t.
integer, dimension(:), allocatable, public, protected mod_mf_phys::mom |
Indices of the momentum density.
Definition at line 40 of file mod_mf_phys.t.
integer, public, protected mod_mf_phys::psi_ |
Indices of the GLM psi.
Definition at line 44 of file mod_mf_phys.t.
logical, public, protected mod_mf_phys::source_split_divb = .false. |
Whether divB cleaning sources are added splitting from fluid solver.
Definition at line 27 of file mod_mf_phys.t.
character(len=std_len), public, protected mod_mf_phys::type_ct = 'average' |
Method type of constrained transport.
Definition at line 56 of file mod_mf_phys.t.
character(len=std_len), public, protected mod_mf_phys::typedivbfix = 'ct' |
Method type to clean divergence of B.
Definition at line 53 of file mod_mf_phys.t.