123 integer,
intent(in) :: ixI^L, ixO^L
124 double precision,
intent(in) :: x(ixI^S,1:ndim)
125 double precision,
intent(inout) :: w(ixI^S,1:nw)
133 integer,
intent(in) :: ixI^L
135 integer,
intent(in) :: ixO^L
137 integer,
intent(in) :: iB
138 double precision,
intent(in) :: qt, x(ixI^S,1:ndim)
139 double precision,
intent(inout) :: w(ixI^S,1:nw)
146 integer,
intent(in) :: iB
159 integer,
intent(in) :: ixI^L,ixO^L,level
160 double precision,
intent(in) :: qt
161 double precision,
intent(inout) :: w(ixI^S,1:nw)
162 double precision,
intent(in) :: x(ixI^S,1:ndim)
170 integer,
intent(in) :: igrid,level,ixI^L,ixO^L
171 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
172 double precision,
intent(inout) :: w(ixI^S,1:nw)
179 integer,
intent(in) :: ixI^L,ixO^L
180 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
181 double precision,
intent(inout) :: w(ixI^S,1:nw)
189 integer,
intent(in) :: iit
190 double precision,
intent(in) :: qt
196 integer,
intent(in) :: igrid,level,ixI^L,ixO^L
197 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
198 double precision,
intent(inout) :: w(ixI^S,1:nw)
204 integer,
intent(in) :: iit
205 double precision,
intent(in) :: qt
216 integer,
intent(in) :: ixI^L,ixO^L
217 double precision,
intent(in) :: x(ixI^S,1:ndim)
218 double precision :: w(ixI^S,nw+nwauxio)
219 double precision :: normconv(0:nw+nwauxio)
225 character(len=*) :: varnames
230 subroutine source(qdt,ixI^L,ixO^L,iw^LIM,qtC,wCT,qt,w,x)
232 integer,
intent(in) :: ixI^L, ixO^L, iw^LIM
233 double precision,
intent(in) :: qdt, qtC, qt
234 double precision,
intent(in) :: wCT(ixI^S,1:nw), x(ixI^S,1:ndim)
235 double precision,
intent(inout) :: w(ixI^S,1:nw)
241 subroutine get_dt(w,ixI^L,ixO^L,dtnew,dx^D,x)
243 integer,
intent(in) :: ixI^L, ixO^L
244 double precision,
intent(in) :: dx^D, x(ixI^S,1:ndim)
245 double precision,
intent(in) :: w(ixI^S,1:nw)
246 double precision,
intent(inout) :: dtnew
252 integer,
intent(in) :: ixI^L, ixO^L
253 double precision,
intent(in) :: x(ixI^S,1:ndim)
254 double precision,
intent(in) :: wCT(ixI^S,1:nw)
255 double precision,
intent(out) :: gravity_field(ixI^S,ndim)
261 integer,
intent(in) :: ixI^L, ixO^L, dust_n_species
262 double precision,
intent(in) :: x(ixI^S, 1:ndim)
263 double precision,
intent(in) :: w(ixI^S, 1:nw)
264 double precision,
intent(out) :: &
265 fdrag(ixI^S, 1:ndir, 1:dust_n_species)
266 double precision,
intent(in) :: ptherm(ixI^S), vgas(ixI^S, ndir)
272 integer,
intent(in) :: ixI^L, ixO^L, dust_n_species
273 double precision,
intent(in) :: dx^D, x(ixI^S,1:ndim)
274 double precision,
intent(in) :: w(ixI^S,1:nw)
275 double precision,
intent(inout) :: dtdust(1:dust_n_species)
281 integer,
intent(in) :: ixI^L, ixO^L
282 double precision,
intent(in) :: x(ixI^S,1:ndim)
283 double precision,
intent(in) :: w(ixI^S,1:nw)
284 double precision,
intent(out) :: mu(ixI^S)
290 integer,
intent(in) :: ixI^L, ixO^L
291 double precision,
intent(in) :: x(ixI^S,1:ndim)
292 double precision,
intent(in) :: w(ixI^S,1:nw)
293 double precision,
intent(out) :: pth(ixI^S)
299 integer,
intent(in) :: ixI^L, ixO^L
300 double precision,
intent(in) :: x(ixI^S,1:ndim)
301 double precision,
intent(in) :: w(ixI^S,1:nw)
302 double precision,
intent(out) :: pth(ixI^S)
308 integer,
intent(in) :: ixI^L, ixO^L
309 double precision,
intent(in) :: x(ixI^S,1:ndim)
310 double precision,
intent(in) :: w(ixI^S,1:nw)
311 double precision,
intent(out) :: adiab(ixO^S)
318 integer,
intent(in) :: ixI^L, ixO^L, idirmin
319 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:ndim)
320 double precision :: current(ixI^S,7-2*ndir:3), eta(ixI^S)
327 integer,
intent(in) :: ixI^L, ixO^L
328 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
329 double precision,
intent(out):: kappa(ixO^S)
335 integer,
intent(in) :: ixI^L, ixO^L, idir
336 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
337 double precision,
intent(out):: kappa(ixO^S)
343 integer,
intent(in) :: ixI^L, ixO^L
344 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
345 double precision,
intent(out):: kappa(ixO^S)
351 integer,
intent(in) :: ixI^L, ixO^L
352 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
353 double precision,
intent(out):: fld_lambda(ixI^S),fld_R(ixI^S)
359 integer,
intent(in) :: ixI^L, ixO^L
360 double precision,
intent(inout) :: w(ixI^S, 1:nw)
361 double precision,
intent(in) :: wCT(ixI^S, 1:nw)
362 double precision,
intent(in) :: x(ixI^S, 1:ndim)
376 subroutine refine_grid(igrid,level,ixI^L,ixO^L,qt,w,x,refine,coarsen)
378 integer,
intent(in) :: igrid, level, ixI^L, ixO^L
379 double precision,
intent(in) :: qt, w(ixI^S,1:nw), x(ixI^S,1:ndim)
380 integer,
intent(inout) :: refine, coarsen
389 integer,
intent(in) :: ixI^L,ixO^L,iflag
390 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
391 double precision,
intent(out) :: var(ixI^S)
397 integer,
intent(in) :: ixI^L,ixO^L
398 double precision,
intent(in) :: x(ixI^S,1:ndim)
399 double precision,
intent(inout) :: wB0(ixI^S,1:ndir)
405 integer,
intent(in) :: ixI^L,ixO^L
406 double precision,
intent(in) :: x(ixI^S,1:ndim)
407 double precision,
intent(inout) :: wJ0(ixI^S,7-2*ndir:ndir)
413 integer,
intent(in) :: ixI^L,ixO^L
414 double precision,
intent(in) :: x(ixI^S,1:ndim)
415 double precision,
intent(inout) :: w0(ixI^S,1:number_equi_vars)
421 integer,
intent(in) :: ixI^L, ixO^L, nw_in
422 double precision,
intent(in) :: w_in(ixI^S,1:nw_in)
423 double precision,
intent(in) :: x(ixI^S, 1:ndim)
424 double precision,
intent(out) :: w_out(ixI^S,1:nw)
431 double precision,
intent(in) :: wlocal(1:nw),xlocal(1:ndim),qt
432 double precision,
intent(inout) :: threshold
433 integer,
intent(in) :: level
439 integer,
intent(in) :: qunitconvert
440 character(len=20) :: userconvert_type
449 integer,
intent(in) :: ixI^L, ixO^L
450 integer,
intent(inout) :: flag
451 double precision,
intent(in) :: qt
452 double precision,
intent(inout) :: w(ixI^S,1:nw)
453 double precision,
intent(in) :: x(ixI^S,1:ndim)
459 integer,
intent(in) :: igrid,mynpayload
460 double precision,
intent(in) :: x(1:ndir),u(1:ndir),q,m,particle_time
461 double precision,
intent(out) :: mypayload(mynpayload)
466 integer,
intent(in) :: n_particles
467 double precision,
intent(out) :: x(3, n_particles)
468 double precision,
intent(out) :: v(3, n_particles)
469 double precision,
intent(out) :: q(n_particles)
470 double precision,
intent(out) :: m(n_particles)
471 logical,
intent(out) :: follow(n_particles)
477 integer,
intent(in) :: igrid
478 double precision,
intent(inout) :: x(1:ndir)
479 double precision,
intent(inout) :: v(1:ndir),q,m
480 logical,
intent(inout) :: follow
481 logical,
intent(out) :: check
487 double precision,
intent(in) :: w(ixG^T,1:nw)
488 double precision,
intent(in) :: x(ixG^T,1:ndim)
489 double precision,
intent(out) :: E(ixG^T, ndir)
490 double precision,
intent(out) :: B(ixG^T, ndir)
495 integer,
intent(in) :: ix(ndir)
496 double precision,
intent(in) :: x(ndir)
497 double precision,
intent(in) :: tloc
498 double precision,
intent(out) :: vec(ndir)
504 integer,
intent(in) :: n
505 double precision,
intent(inout) :: x(3)
506 double precision,
intent(in) :: tloc, tlocnew
510 integer,
intent(in) :: n_coarsen
511 integer,
intent(in) :: n_refine
518 integer,
intent(in) :: ixI^L, ixC^L, idir
519 double precision,
intent(in) :: xC(ixI^S,1:ndim)
520 double precision,
intent(out) :: A(ixI^S)
527 integer,
intent(in) :: ixI^L, ixO^L
528 double precision,
intent(in) :: qt, qdt
530 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
560 subroutine set_wlr(ixI^L,ixO^L,qt,wLC,wRC,wLp,wRp,s,idir)
562 integer,
intent(in) :: ixI^L, ixO^L, idir
563 double precision,
intent(in) :: qt
564 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
565 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
576 subroutine set_surface(ixI^L,x,delx,exp_factor,del_exp_factor,exp_factor_primitive)
578 integer,
intent(in) :: ixI^L
579 double precision,
intent(in) :: delx(ixI^S,1:ndim), x(ixI^S,1:ndim)
580 double precision,
intent(out) :: exp_factor(ixI^S), del_exp_factor(ixI^S)
581 double precision,
intent(out) :: exp_factor_primitive(ixI^S)
585 subroutine set_field_w(igrid,ip,xf,wP,wL,numP,nwP,nwL,dL,forward,ftype,tcondi)
589 integer,
intent(in) :: igrid,ip,numP,nwP,nwL
590 double precision,
intent(in) :: xf(numP,ndim)
591 double precision,
intent(inout) :: wP(numP,nwP),wL(1+nwL)
592 double precision,
intent(in) :: dL
593 logical,
intent(in) :: forward
594 character(len=std_len),
intent(in) :: ftype,tcondi
611 integer,
intent(in) :: igrid
612 double precision,
intent(in) :: xfn(ndim)
613 double precision,
intent(inout) :: field(ndim)
614 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.
Calculation anormal viscosity depending on space.
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.
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......
Set user defined, anisotropic opacity for use in diffusion coeff, heating and cooling,...
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 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(phys_visco), pointer usr_setvisco
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(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(special_opacity_qdot), pointer usr_special_opacity_qdot
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(special_aniso_opacity), pointer usr_special_aniso_opacity
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