Module with all the methods that users can customize in AMRVAC
Each procedure pointer can be initialized in a user's mod_usr.t
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| procedure(Rfactor), | public, | pointer | :: | usr_Rfactor | => | null() | |
| procedure(add_aux_names), | public, | pointer | :: | usr_add_aux_names | => | null() | |
| procedure(after_refine), | public, | pointer | :: | usr_after_refine | => | null() | |
| procedure(aux_output), | public, | pointer | :: | usr_aux_output | => | null() | |
| procedure(p_no_args), | public, | pointer | :: | usr_before_main_loop | => | null() | |
| procedure(check_particle), | public, | pointer | :: | usr_check_particle | => | null() | |
| procedure(create_particles), | public, | pointer | :: | usr_create_particles | => | null() | |
| procedure(phys_dust_get_dt), | public, | pointer | :: | usr_dust_get_dt | => | null() | |
| procedure(flag_grid), | public, | pointer | :: | usr_flag_grid | => | null() | |
| procedure(phys_dust_get_3d_dragforce), | public, | pointer | :: | usr_get_3d_dragforce | => | null() | |
| procedure(get_dt), | public, | pointer | :: | usr_get_dt | => | null() | |
| procedure(phys_gravity), | public, | pointer | :: | usr_gravity | => | null() | |
| procedure(p_no_args), | public, | pointer | :: | usr_improve_initial_condition | => | null() | |
| procedure(init_one_grid), | public, | pointer | :: | usr_init_one_grid | => | null() |
Initialize earch grid block data |
| procedure(init_vector_potential), | public, | pointer | :: | usr_init_vector_potential | => | null() | |
| procedure(internal_bc), | public, | pointer | :: | usr_internal_bc | => | null() | |
| procedure(sub_modify_io), | public, | pointer | :: | usr_modify_output | => | null() | |
| procedure(particle_analytic), | public, | pointer | :: | usr_particle_analytic | => | null() | |
| procedure(particle_fields), | public, | pointer | :: | usr_particle_fields | => | null() | |
| procedure(particle_position), | public, | pointer | :: | usr_particle_position | => | null() | |
| procedure(p_no_args), | public, | pointer | :: | usr_print_log | => | null() | |
| procedure(process_adv_global), | public, | pointer | :: | usr_process_adv_global | => | null() | |
| procedure(process_adv_grid), | public, | pointer | :: | usr_process_adv_grid | => | null() | |
| procedure(process_global), | public, | pointer | :: | usr_process_global | => | null() | |
| procedure(process_grid), | public, | pointer | :: | usr_process_grid | => | null() | |
| procedure(a_refine_threshold), | public, | pointer | :: | usr_refine_threshold | => | null() | |
| procedure(set_B0), | public, | pointer | :: | usr_set_B0 | => | null() | |
| procedure(set_J0), | public, | pointer | :: | usr_set_J0 | => | null() | |
| procedure(set_electric_field), | public, | pointer | :: | usr_set_electric_field | => | null() | |
| procedure(set_equi_vars), | public, | pointer | :: | usr_set_equi_vars | => | null() | |
| procedure(set_field), | public, | pointer | :: | usr_set_field | => | null() | |
| procedure(set_field_w), | public, | pointer | :: | usr_set_field_w | => | null() | |
| procedure(p_no_args), | public, | pointer | :: | usr_set_parameters | => | null() |
Initialize the user's settings (after initializing amrvac) |
| procedure(hd_pthermal), | public, | pointer | :: | usr_set_pthermal | => | null() | |
| procedure(set_surface), | public, | pointer | :: | usr_set_surface | => | null() | |
| procedure(set_wLR), | public, | pointer | :: | usr_set_wLR | => | null() | |
| procedure(phys_visco), | public, | pointer | :: | usr_setvisco | => | null() | |
| procedure(source), | public, | pointer | :: | usr_source | => | null() | |
| procedure(special_aniso_opacity), | public, | pointer | :: | usr_special_aniso_opacity | => | null() | |
| procedure(special_bc), | public, | pointer | :: | usr_special_bc | => | null() | |
| procedure(special_convert), | public, | pointer | :: | usr_special_convert | => | null() | |
| procedure(special_diffcoef), | public, | pointer | :: | usr_special_diffcoef | => | null() | |
| procedure(special_fluxlimiter), | public, | pointer | :: | usr_special_fluxlimiter | => | null() | |
| procedure(special_mg_bc), | public, | pointer | :: | usr_special_mg_bc | => | null() | |
| procedure(special_opacity), | public, | pointer | :: | usr_special_opacity | => | null() | |
| procedure(special_opacity_qdot), | public, | pointer | :: | usr_special_opacity_qdot | => | null() | |
| procedure(special_resistivity), | public, | pointer | :: | usr_special_resistivity | => | null() | |
| procedure(transform_w), | public, | pointer | :: | usr_transform_w | => | null() | |
| procedure(update_payload), | public, | pointer | :: | usr_update_payload | => | null() | |
| procedure(var_for_errest), | public, | pointer | :: | usr_var_for_errest | => | null() | |
| procedure(p_no_args), | public, | pointer | :: | usr_write_analysis | => | null() |
Calculation R factor for ideal gas law with partial ionization
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(out) | :: | pth(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) |
use different threshold in special regions for AMR to reduce/increase resolution there where nothing/something interesting happens.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | wlocal(1:nw) | |||
| double precision, | intent(in) | :: | xlocal(1:ndim) | |||
| double precision, | intent(inout) | :: | threshold | |||
| double precision, | intent(in) | :: | qt | |||
| integer, | intent(in) | :: | level |
Add names for the auxiliary variables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*) | :: | varnames |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | n_coarsen | |||
| integer, | intent(in) | :: | n_refine |
this subroutine can be used in convert, to add auxiliary variables to the converted output file, for further analysis using tecplot, paraview, .... these auxiliary values need to be stored in the nw+1:nw+nwauxio slots the array normconv can be filled in the (nw+1:nw+nwauxio) range with corresponding normalization values (default value 1)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,nw+nwauxio) | ||||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision | :: | normconv(0:nw+nwauxio) |
Check arbitrary particle conditions or modifications
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | igrid | |||
| double precision, | intent(inout) | :: | x(1:ndir) | |||
| double precision, | intent(inout) | :: | v(1:ndir) | |||
| double precision, | intent(inout) | :: | q | |||
| double precision, | intent(inout) | :: | m | |||
| logical, | intent(inout) | :: | follow | |||
| logical, | intent(out) | :: | check |
Create particles
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | n_particles | |||
| double precision, | intent(out) | :: | x(3,n_particles) | |||
| double precision, | intent(out) | :: | v(3,n_particles) | |||
| double precision, | intent(out) | :: | q(n_particles) | |||
| double precision, | intent(out) | :: | m(n_particles) | |||
| logical, | intent(out) | :: | follow(n_particles) |
flag=-1 : Treat all cells active, omit deactivation (onentry, default) flag=0 : Treat as normal domain flag=1 : Treat as passive, but reduce by safety belt flag=2 : Always treat as passive
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qt | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| integer, | intent(inout) | :: | flag |
Limit "dt" further if necessary, e.g. due to the special source terms. The getdt_courant (CFL condition) and the getdt subroutine in the AMRVACPHYS module have already been called.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(inout) | :: | dtnew | |||
| double precision, | intent(in) | :: | dx1 | |||
| double precision, | intent(in) | :: | dx2 | |||
| double precision, | intent(in) | :: | dx3 | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) |
Calculation anormal pressure for hd & energy=.False.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(out) | :: | pth(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) |
Initialize one grid
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) |
initialize vector potential on cell edges for magnetic field
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixCmin1 | |||
| integer, | intent(in) | :: | ixCmin2 | |||
| integer, | intent(in) | :: | ixCmin3 | |||
| integer, | intent(in) | :: | ixCmax1 | |||
| integer, | intent(in) | :: | ixCmax2 | |||
| integer, | intent(in) | :: | ixCmax3 | |||
| double precision, | intent(in) | :: | xC(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(out) | :: | A(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) | |||
| integer, | intent(in) | :: | idir |
internal boundary, user defined This subroutine can be used to artificially overwrite ALL conservative variables in a user-selected region of the mesh, and thereby act as an internal boundary region. It is called just before external (ghost cell) boundary regions will be set by the BC selection. Here, you could e.g. want to introduce an extra variable (nwextra, to be distinguished from nwaux) which can be used to identify the internal boundary region location. Its effect should always be local as it acts on the mesh.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | level | |||
| double precision, | intent(in) | :: | qt | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ix(ndir) |
Indices in gridvars |
||
| double precision, | intent(in) | :: | x(ndir) | |||
| double precision, | intent(in) | :: | tloc | |||
| double precision, | intent(out) | :: | vec(ndir) |
Associate fields to particle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | w(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,1:ndim) | |||
| double precision, | intent(out) | :: | E(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,ndir) | |||
| double precision, | intent(out) | :: | B(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,ndir) |
User-defined particle movement
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(inout) | :: | x(3) | |||
| integer, | intent(in) | :: | n | |||
| double precision, | intent(in) | :: | tloc | |||
| double precision, | intent(in) | :: | tlocnew |
Calculate the 3d drag force of gas onto dust
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(out) | :: | fdrag(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndir,1:dust_n_species) | |||
| double precision, | intent(in) | :: | ptherm(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) | |||
| double precision, | intent(in) | :: | vgas(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,ndir) | |||
| integer, | intent(in) | :: | dust_n_species |
Calculate the time step associated with the usr drag force
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(inout) | :: | dtdust(1:dust_n_species) | |||
| double precision, | intent(in) | :: | dx1 | |||
| double precision, | intent(in) | :: | dx2 | |||
| double precision, | intent(in) | :: | dx3 | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| integer, | intent(in) | :: | dust_n_species |
Calculate gravitational acceleration in each dimension
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | wCT(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(out) | :: | gravity_field(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,ndim) |
Calculation anormal viscosity depending on space
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(out) | :: | mu(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) |
for processing after the advance (PIC-MHD, e.g.)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | iit | |||
| double precision, | intent(in) | :: | qt |
for processing after the advance (PIC-MHD, e.g.)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | igrid | |||
| integer, | intent(in) | :: | level | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | qt | |||
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) |
This subroutine is called at the beginning of each time step by each processor. No communication is specified, so the user has to implement MPI routines if information has to be shared
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | iit | |||
| double precision, | intent(in) | :: | qt |
this subroutine is ONLY to be used for computing auxiliary variables which happen to be non-local (like div v), and are in no way used for flux computations. As auxiliaries, they are also not advanced
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | igrid | |||
| integer, | intent(in) | :: | level | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | qt | |||
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) |
Enforce additional refinement or coarsening One can use the coordinate info in x and/or time qt=t_n and w(t_n) values w. you must set consistent values for integers refine/coarsen: refine = -1 enforce to not refine refine = 0 doesn't enforce anything refine = 1 enforce refinement coarsen = -1 enforce to not coarsen coarsen = 0 doesn't enforce anything coarsen = 1 enforce coarsen e.g. refine for negative first coordinate x < 0 as if (any(x(ix^S,1) < zero)) refine=1
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | igrid | |||
| integer, | intent(in) | :: | level | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | qt | |||
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| integer, | intent(inout) | :: | refine | |||
| integer, | intent(inout) | :: | coarsen |
Here one can add a steady (time-independent) potential background field
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(inout) | :: | wB0(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndir) |
Here one can add a time-independent background current density
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(inout) | :: | wJ0(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,7-2*ndir:ndir) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | qt | |||
| double precision, | intent(in) | :: | qdt | |||
| double precision, | intent(inout) | :: | fE(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,sdim:3) | |||
| type(state) | :: | s |
Here one can add a steady (time-independent) equi vars
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(inout) | :: | w0(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:number_equi_vars) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | xfn(ndim) | |||
| integer, | intent(in) | :: | igrid | |||
| double precision, | intent(inout) | :: | field(ndim) | |||
| character(len=std_len), | intent(in) | :: | ftype |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | igrid | |||
| integer, | intent(in) | :: | ip | |||
| double precision, | intent(in) | :: | xf(numP,ndim) | |||
| double precision, | intent(inout) | :: | wP(numP,nwP) | |||
| double precision, | intent(inout) | :: | wL(1+nwL) | |||
| integer, | intent(in) | :: | numP | |||
| integer, | intent(in) | :: | nwP | |||
| integer, | intent(in) | :: | nwL | |||
| double precision, | intent(in) | :: | dL | |||
| logical, | intent(in) | :: | forward | |||
| character(len=std_len), | intent(in) | :: | ftype | |||
| character(len=std_len), | intent(in) | :: | tcondi |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(in) | :: | delx(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(out) | :: | exp_factor(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) | |||
| double precision, | intent(out) | :: | del_exp_factor(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) | |||
| double precision, | intent(out) | :: | exp_factor_primitive(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) |
allow user to specify 'variables' left and right state at physical boundaries to control flux through the boundary surface
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | qt | |||
| double precision, | intent(inout) | :: | wLC(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(inout) | :: | wRC(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(inout) | :: | wLp(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(inout) | :: | wRp(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| type(state) | :: | s | ||||
| integer, | intent(in) | :: | idir |
Calculate w(iw)=w(iw)+qdt*SOURCE[wCT,qtC,x] within ixO for all indices iw=iwmin...iwmax. wCT is at time qCT
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qdt | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| integer, | intent(in) | :: | iwmin | |||
| integer, | intent(in) | :: | iwmax | |||
| double precision, | intent(in) | :: | qtC | |||
| double precision, | intent(in) | :: | wCT(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | qt | |||
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) |
Set user defined, anisotropic opacity for use in diffusion coeff, heating and cooling, and radiation force
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(out) | :: | kappa(ixOmin1:ixOmax1,ixOmin2:ixOmax2,ixOmin3:ixOmax3) | |||
| integer, | intent(in) | :: | idir |
special boundary types, users must assign conservative variables in boundaries
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qt | |||
| integer, | intent(in) | :: | ixImin1 |
Shape of input arrays |
||
| integer, | intent(in) | :: | ixImin2 |
Shape of input arrays |
||
| integer, | intent(in) | :: | ixImin3 |
Shape of input arrays |
||
| integer, | intent(in) | :: | ixImax1 |
Shape of input arrays |
||
| integer, | intent(in) | :: | ixImax2 |
Shape of input arrays |
||
| integer, | intent(in) | :: | ixImax3 |
Shape of input arrays |
||
| integer, | intent(in) | :: | ixOmin1 |
Region where boundary values have to be set |
||
| integer, | intent(in) | :: | ixOmin2 |
Region where boundary values have to be set |
||
| integer, | intent(in) | :: | ixOmin3 |
Region where boundary values have to be set |
||
| integer, | intent(in) | :: | ixOmax1 |
Region where boundary values have to be set |
||
| integer, | intent(in) | :: | ixOmax2 |
Region where boundary values have to be set |
||
| integer, | intent(in) | :: | ixOmax3 |
Region where boundary values have to be set |
||
| integer, | intent(in) | :: | iB |
Integer indicating direction of boundary |
||
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) |
Allow user to use their own data-postprocessing procedures
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | qunitconvert |
Set user defined FLD diffusion coefficient
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | wCT(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 |
Set user defined FLD flux limiter, lambda
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(out) | :: | fld_lambda(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) | |||
| double precision, | intent(out) | :: | fld_R(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) |
Special boundary type for radiation hydrodynamics module, only used to set the boundary conditions for the radiation energy.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | iB |
Set user defined opacity for use in diffusion coeff, heating and cooling, and radiation force
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(out) | :: | kappa(ixOmin1:ixOmax1,ixOmin2:ixOmax2,ixOmin3:ixOmax3) |
Set user defined opacity for use in diffusion coeff, heating and cooling, and radiation force. Overwrites special_opacity
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(out) | :: | kappa(ixOmin1:ixOmax1,ixOmin2:ixOmax2,ixOmin3:ixOmax3) |
Set the "eta" array for resistive MHD based on w or the "current" variable which has components between idirmin and 3.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,nw) | |||
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| integer, | intent(in) | :: | idirmin | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision | :: | current(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,7-2*ndir:3) | ||||
| double precision | :: | eta(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) |
If defined, this routine is called before writing output, and it can set/modify the variables in the w array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(in) | :: | qt | |||
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) |
adjust w when restart from dat file with different w variables
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| integer, | intent(in) | :: | nw_in | |||
| double precision, | intent(in) | :: | w_in(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw_in) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(out) | :: | w_out(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) |
Update payload of particles
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | igrid | |||
| double precision, | intent(in) | :: | x(1:ndir) | |||
| double precision, | intent(in) | :: | u(1:ndir) | |||
| double precision, | intent(in) | :: | q | |||
| double precision, | intent(in) | :: | m | |||
| double precision, | intent(out) | :: | mypayload(mynpayload) | |||
| integer, | intent(in) | :: | mynpayload | |||
| double precision, | intent(in) | :: | particle_time |
this is the place to compute a local auxiliary variable to be used as refinement criterion for the Lohner error estimator only -->it is then requiring and iflag>nw note that ixO=ixI=ixG, hence the term local (gradients need special attention!)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| integer, | intent(in) | :: | iflag | |||
| double precision, | intent(in) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) | |||
| double precision, | intent(out) | :: | var(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) |