121 integer,
intent(in) :: ixI^L, ixO^L
122 double precision,
intent(in) :: x(ixI^S,1:ndim)
123 double precision,
intent(inout) :: w(ixI^S,1:nw)
131 integer,
intent(in) :: ixI^L
133 integer,
intent(in) :: ixO^L
135 integer,
intent(in) :: iB
136 double precision,
intent(in) :: qt, x(ixI^S,1:ndim)
137 double precision,
intent(inout) :: w(ixI^S,1:nw)
144 integer,
intent(in) :: iB
157 integer,
intent(in) :: ixI^L,ixO^L,level
158 double precision,
intent(in) :: qt
159 double precision,
intent(inout) :: w(ixI^S,1:nw)
160 double precision,
intent(in) :: x(ixI^S,1:ndim)
168 integer,
intent(in) :: igrid,level,ixI^L,ixO^L
169 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
170 double precision,
intent(inout) :: w(ixI^S,1:nw)
177 integer,
intent(in) :: ixI^L,ixO^L
178 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
179 double precision,
intent(inout) :: w(ixI^S,1:nw)
187 integer,
intent(in) :: iit
188 double precision,
intent(in) :: qt
194 integer,
intent(in) :: igrid,level,ixI^L,ixO^L
195 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
196 double precision,
intent(inout) :: w(ixI^S,1:nw)
202 integer,
intent(in) :: iit
203 double precision,
intent(in) :: qt
214 integer,
intent(in) :: ixI^L,ixO^L
215 double precision,
intent(in) :: x(ixI^S,1:ndim)
216 double precision :: w(ixI^S,nw+nwauxio)
217 double precision :: normconv(0:nw+nwauxio)
223 character(len=*) :: varnames
228 subroutine source(qdt,ixI^L,ixO^L,iw^LIM,qtC,wCT,qt,w,x)
230 integer,
intent(in) :: ixI^L, ixO^L, iw^LIM
231 double precision,
intent(in) :: qdt, qtC, qt
232 double precision,
intent(in) :: wCT(ixI^S,1:nw), x(ixI^S,1:ndim)
233 double precision,
intent(inout) :: w(ixI^S,1:nw)
239 subroutine get_dt(w,ixI^L,ixO^L,dtnew,dx^D,x)
241 integer,
intent(in) :: ixI^L, ixO^L
242 double precision,
intent(in) :: dx^D, x(ixI^S,1:ndim)
243 double precision,
intent(in) :: w(ixI^S,1:nw)
244 double precision,
intent(inout) :: dtnew
250 integer,
intent(in) :: ixI^L, ixO^L
251 double precision,
intent(in) :: x(ixI^S,1:ndim)
252 double precision,
intent(in) :: wCT(ixI^S,1:nw)
253 double precision,
intent(out) :: gravity_field(ixI^S,ndim)
259 integer,
intent(in) :: ixI^L, ixO^L, dust_n_species
260 double precision,
intent(in) :: x(ixI^S, 1:ndim)
261 double precision,
intent(in) :: w(ixI^S, 1:nw)
262 double precision,
intent(out) :: &
263 fdrag(ixI^S, 1:ndir, 1:dust_n_species)
264 double precision,
intent(in) :: ptherm(ixI^S), vgas(ixI^S, ndir)
270 integer,
intent(in) :: ixI^L, ixO^L, dust_n_species
271 double precision,
intent(in) :: dx^D, x(ixI^S,1:ndim)
272 double precision,
intent(in) :: w(ixI^S,1:nw)
273 double precision,
intent(inout) :: dtdust(1:dust_n_species)
279 integer,
intent(in) :: ixI^L, ixO^L
280 double precision,
intent(in) :: x(ixI^S,1:ndim)
281 double precision,
intent(in) :: wp(ixI^S,1:nw)
282 double precision,
intent(out) :: mu(ixI^S)
288 integer,
intent(in) :: ixI^L, ixO^L
289 double precision,
intent(in) :: x(ixI^S,1:ndim)
290 double precision,
intent(in) :: w(ixI^S,1:nw)
291 double precision,
intent(out) :: pth(ixI^S)
297 integer,
intent(in) :: ixI^L, ixO^L
298 double precision,
intent(in) :: x(ixI^S,1:ndim)
299 double precision,
intent(in) :: w(ixI^S,1:nw)
300 double precision,
intent(out) :: pth(ixI^S)
306 integer,
intent(in) :: ixI^L, ixO^L
307 double precision,
intent(in) :: x(ixI^S,1:ndim)
308 double precision,
intent(in) :: w(ixI^S,1:nw)
309 double precision,
intent(out) :: adiab(ixI^S)
316 integer,
intent(in) :: ixI^L, ixO^L, idirmin
317 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:ndim)
318 double precision :: current(ixI^S,7-2*ndir:3), eta(ixI^S)
325 integer,
intent(in) :: ixI^L, ixO^L
326 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
327 double precision,
intent(out):: kappa(ixI^S)
333 integer,
intent(in) :: ixI^L, ixO^L
334 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
335 double precision,
intent(out):: fld_lambda(ixI^S),fld_R(ixI^S)
341 integer,
intent(in) :: ixI^L, ixO^L
342 double precision,
intent(inout) :: w(ixI^S, 1:nw)
343 double precision,
intent(in) :: wprim(ixI^S, 1:nw)
344 double precision,
intent(in) :: x(ixI^S, 1:ndim)
358 subroutine refine_grid(igrid,level,ixI^L,ixO^L,qt,w,x,refine,coarsen)
360 integer,
intent(in) :: igrid, level, ixI^L, ixO^L
361 double precision,
intent(in) :: qt, w(ixI^S,1:nw), x(ixI^S,1:ndim)
362 integer,
intent(inout) :: refine, coarsen
371 integer,
intent(in) :: ixI^L,ixO^L,iflag
372 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
373 double precision,
intent(out) :: var(ixI^S)
379 integer,
intent(in) :: ixI^L,ixO^L
380 double precision,
intent(in) :: x(ixI^S,1:ndim)
381 double precision,
intent(inout) :: wB0(ixI^S,1:ndir)
387 integer,
intent(in) :: ixI^L,ixO^L
388 double precision,
intent(in) :: x(ixI^S,1:ndim)
389 double precision,
intent(inout) :: wJ0(ixI^S,7-2*ndir:ndir)
395 integer,
intent(in) :: ixI^L,ixO^L
396 double precision,
intent(in) :: x(ixI^S,1:ndim)
397 double precision,
intent(inout) :: w0(ixI^S,1:number_equi_vars)
403 integer,
intent(in) :: ixI^L, ixO^L, nw_in
404 double precision,
intent(in) :: w_in(ixI^S,1:nw_in)
405 double precision,
intent(in) :: x(ixI^S, 1:ndim)
406 double precision,
intent(out) :: w_out(ixI^S,1:nw)
413 double precision,
intent(in) :: wlocal(1:nw),xlocal(1:ndim),qt
414 double precision,
intent(inout) :: threshold
415 integer,
intent(in) :: level
421 integer,
intent(in) :: qunitconvert
422 character(len=20) :: userconvert_type
431 integer,
intent(in) :: ixI^L, ixO^L
432 integer,
intent(inout) :: flag
433 double precision,
intent(in) :: qt
434 double precision,
intent(inout) :: w(ixI^S,1:nw)
435 double precision,
intent(in) :: x(ixI^S,1:ndim)
441 integer,
intent(in) :: igrid,mynpayload
442 double precision,
intent(in) :: x(1:ndir),u(1:ndir),q,m,particle_time
443 double precision,
intent(out) :: mypayload(mynpayload)
448 integer,
intent(in) :: n_particles
449 double precision,
intent(out) :: x(3, n_particles)
450 double precision,
intent(out) :: v(3, n_particles)
451 double precision,
intent(out) :: q(n_particles)
452 double precision,
intent(out) :: m(n_particles)
453 logical,
intent(out) :: follow(n_particles)
459 integer,
intent(in) :: igrid
460 double precision,
intent(inout) :: x(1:ndir)
461 double precision,
intent(inout) :: v(1:ndir),q,m
462 logical,
intent(inout) :: follow
463 logical,
intent(out) :: check
469 double precision,
intent(in) :: w(ixG^T,1:nw)
470 double precision,
intent(in) :: x(ixG^T,1:ndim)
471 double precision,
intent(out) :: E(ixG^T, ndir)
472 double precision,
intent(out) :: B(ixG^T, ndir)
477 integer,
intent(in) :: ix(ndir)
478 double precision,
intent(in) :: x(ndir)
479 double precision,
intent(in) :: tloc
480 double precision,
intent(out) :: vec(ndir)
486 integer,
intent(in) :: n
487 double precision,
intent(inout) :: x(3)
488 double precision,
intent(in) :: tloc, tlocnew
492 integer,
intent(in) :: n_coarsen
493 integer,
intent(in) :: n_refine
500 integer,
intent(in) :: ixI^L, ixC^L, idir
501 double precision,
intent(in) :: xC(ixI^S,1:ndim)
502 double precision,
intent(out) :: A(ixI^S)
509 integer,
intent(in) :: ixI^L, ixO^L
510 double precision,
intent(in) :: qt, qdt
512 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
542 subroutine set_wlr(ixI^L,ixO^L,qt,wLC,wRC,wLp,wRp,s,idir)
544 integer,
intent(in) :: ixI^L, ixO^L, idir
545 double precision,
intent(in) :: qt
546 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
547 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
558 subroutine set_surface(ixI^L,x,delx,exp_factor,del_exp_factor,exp_factor_primitive)
560 integer,
intent(in) :: ixI^L
561 double precision,
intent(in) :: delx(ixI^S,1:ndim), x(ixI^S,1:ndim)
562 double precision,
intent(out) :: exp_factor(ixI^S), del_exp_factor(ixI^S)
563 double precision,
intent(out) :: exp_factor_primitive(ixI^S)
567 subroutine set_field_w(igrid,ip,xf,wP,wL,numP,nwP,nwL,dL,forward,ftype,tcondi)
571 integer,
intent(in) :: igrid,ip,numP,nwP,nwL
572 double precision,
intent(in) :: xf(numP,ndim)
573 double precision,
intent(inout) :: wP(numP,nwP),wL(1+nwL)
574 double precision,
intent(in) :: dL
575 logical,
intent(in) :: forward
576 character(len=std_len),
intent(in) :: ftype,tcondi
593 integer,
intent(in) :: igrid
594 double precision,
intent(in) :: xfn(ndim)
595 double precision,
intent(inout) :: field(ndim)
596 character(len=std_len),
intent(in) :: ftype
use different threshold in special regions for AMR to reduce/increase resolution there where nothing/...
Add names for the auxiliary variables.
this subroutine can be used in convert, to add auxiliary variables to the converted output file,...
Check arbitrary particle conditions or modifications.
flag=-1 : Treat all cells active, omit deactivation (onentry, default) flag=0 : Treat as normal domai...
Limit "dt" further if necessary, e.g. due to the special source terms. The getdt_courant (CFL conditi...
Calculation anormal pressure for hd & energy=.False.
initialize vector potential on cell edges for magnetic field
internal boundary, user defined This subroutine can be used to artificially overwrite ALL conservativ...
Associate fields to particle.
User-defined particle movement.
Calculate the 3d drag force of gas onto dust.
Calculate the time step associated with the usr drag force.
Calculate gravitational acceleration in each dimension.
for processing after the advance (PIC-MHD, e.g.)
for processing after the advance (PIC-MHD, e.g.)
This subroutine is called at the beginning of each time step by each processor. No communication is s...
this subroutine is ONLY to be used for computing auxiliary variables which happen to be non-local (li...
Enforce additional refinement or coarsening One can use the coordinate info in x and/or time qt=t_n a...
Calculation R factor for ideal gas law with partial ionization.
Here one can add a steady (time-independent) potential background field.
Here one can add a steady (time-independent) equi vars.
Here one can add a time-independent background current density.
Calculation anormal viscosity depending on space.
allow user to specify 'variables' left and right state at physical boundaries to control flux through...
Calculate w(iw)=w(iw)+qdt*SOURCE[wCT,qtC,x] within ixO for all indices iw=iwmin......
special boundary types, users must assign conservative variables in boundaries
Allow user to use their own data-postprocessing procedures.
Set user defined FLD diffusion coefficient.
Set user defined FLD flux limiter, lambda.
Special boundary type for radiation hydrodynamics module, only used to set the boundary conditions fo...
Set user defined opacity for use in diffusion coeff, heating and cooling, and radiation force.
Set the "eta" array for resistive MHD based on w or the "current" variable which has components betwe...
If defined, this routine is called before writing output, and it can set/modify the variables in the ...
Update payload of particles.
this is the place to compute a local auxiliary variable to be used as refinement criterion for the Lo...
This module contains definitions of global parameters and variables and some generic functions/subrou...
Module with all the methods that users can customize in AMRVAC.
procedure(rfactor), pointer usr_rfactor
procedure(source), pointer usr_source
procedure(special_resistivity), pointer usr_special_resistivity
procedure(set_adiab), pointer usr_set_adiab
procedure(special_opacity), pointer usr_special_opacity
procedure(set_adiab), pointer usr_set_gamma
procedure(process_grid), pointer usr_process_grid
procedure(particle_position), pointer usr_particle_position
procedure(check_particle), pointer usr_check_particle
procedure(p_no_args), pointer usr_improve_initial_condition
procedure(a_refine_threshold), pointer usr_refine_threshold
procedure(set_surface), pointer usr_set_surface
procedure(phys_dust_get_dt), pointer usr_dust_get_dt
procedure(phys_gravity), pointer usr_gravity
procedure(aux_output), pointer usr_aux_output
procedure(p_no_args), pointer usr_print_log
procedure(phys_dust_get_3d_dragforce), pointer usr_get_3d_dragforce
procedure(special_diffcoef), pointer usr_special_diffcoef
procedure(process_adv_grid), pointer usr_process_adv_grid
procedure(particle_analytic), pointer usr_particle_analytic
procedure(set_viscosity), pointer usr_set_viscosity
procedure(special_convert), pointer usr_special_convert
procedure(create_particles), pointer usr_create_particles
procedure(init_one_grid), pointer usr_init_one_grid
Initialize earch grid block data.
procedure(update_payload), pointer usr_update_payload
procedure(p_no_args), pointer usr_write_analysis
procedure(sub_modify_io), pointer usr_modify_output
procedure(p_no_args), pointer usr_before_main_loop
procedure(special_fluxlimiter), pointer usr_special_fluxlimiter
procedure(set_field_w), pointer usr_set_field_w
procedure(flag_grid), pointer usr_flag_grid
procedure(process_global), pointer usr_process_global
procedure(special_bc), pointer usr_special_bc
procedure(process_adv_global), pointer usr_process_adv_global
procedure(internal_bc), pointer usr_internal_bc
procedure(set_equi_vars), pointer usr_set_equi_vars
procedure(special_mg_bc), pointer usr_special_mg_bc
procedure(set_j0), pointer usr_set_j0
procedure(particle_fields), pointer usr_particle_fields
procedure(refine_grid), pointer usr_refine_grid
procedure(hd_pthermal), pointer usr_set_pthermal
procedure(init_vector_potential), pointer usr_init_vector_potential
procedure(p_no_args), pointer usr_set_parameters
Initialize the user's settings (after initializing amrvac)
procedure(var_for_errest), pointer usr_var_for_errest
procedure(set_b0), pointer usr_set_b0
procedure(set_electric_field), pointer usr_set_electric_field
procedure(set_wlr), pointer usr_set_wlr
procedure(transform_w), pointer usr_transform_w
procedure(after_refine), pointer usr_after_refine
procedure(get_dt), pointer usr_get_dt
procedure(set_field), pointer usr_set_field
procedure(add_aux_names), pointer usr_add_aux_names