116 integer,
intent(in) :: ixI^L, ixO^L
117 double precision,
intent(in) :: x(ixI^S,1:ndim)
118 double precision,
intent(inout) :: w(ixI^S,1:nw)
126 integer,
intent(in) :: ixI^L
128 integer,
intent(in) :: ixO^L
130 integer,
intent(in) :: iB
131 double precision,
intent(in) :: qt, x(ixI^S,1:ndim)
132 double precision,
intent(inout) :: w(ixI^S,1:nw)
139 integer,
intent(in) :: iB
152 integer,
intent(in) :: ixI^L,ixO^L,level
153 double precision,
intent(in) :: qt
154 double precision,
intent(inout) :: w(ixI^S,1:nw)
155 double precision,
intent(in) :: x(ixI^S,1:ndim)
163 integer,
intent(in) :: igrid,level,ixI^L,ixO^L
164 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
165 double precision,
intent(inout) :: w(ixI^S,1:nw)
172 integer,
intent(in) :: ixI^L,ixO^L
173 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
174 double precision,
intent(inout) :: w(ixI^S,1:nw)
182 integer,
intent(in) :: iit
183 double precision,
intent(in) :: qt
189 integer,
intent(in) :: igrid,level,ixI^L,ixO^L
190 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
191 double precision,
intent(inout) :: w(ixI^S,1:nw)
197 integer,
intent(in) :: iit
198 double precision,
intent(in) :: qt
209 integer,
intent(in) :: ixI^L,ixO^L
210 double precision,
intent(in) :: x(ixI^S,1:ndim)
211 double precision :: w(ixI^S,nw+nwauxio)
212 double precision :: normconv(0:nw+nwauxio)
218 character(len=*) :: varnames
223 subroutine source(qdt,ixI^L,ixO^L,iw^LIM,qtC,wCT,qt,w,x)
225 integer,
intent(in) :: ixI^L, ixO^L, iw^LIM
226 double precision,
intent(in) :: qdt, qtC, qt
227 double precision,
intent(in) :: wCT(ixI^S,1:nw), x(ixI^S,1:ndim)
228 double precision,
intent(inout) :: w(ixI^S,1:nw)
234 subroutine get_dt(w,ixI^L,ixO^L,dtnew,dx^D,x)
236 integer,
intent(in) :: ixI^L, ixO^L
237 double precision,
intent(in) :: dx^D, x(ixI^S,1:ndim)
238 double precision,
intent(in) :: w(ixI^S,1:nw)
239 double precision,
intent(inout) :: dtnew
245 integer,
intent(in) :: ixI^L, ixO^L
246 double precision,
intent(in) :: x(ixI^S,1:ndim)
247 double precision,
intent(in) :: wCT(ixI^S,1:nw)
248 double precision,
intent(out) :: gravity_field(ixI^S,ndim)
254 integer,
intent(in) :: ixI^L, ixO^L, dust_n_species
255 double precision,
intent(in) :: x(ixI^S, 1:ndim)
256 double precision,
intent(in) :: w(ixI^S, 1:nw)
257 double precision,
intent(out) :: &
258 fdrag(ixI^S, 1:ndir, 1:dust_n_species)
259 double precision,
intent(in) :: ptherm(ixI^S), vgas(ixI^S, ndir)
265 integer,
intent(in) :: ixI^L, ixO^L, dust_n_species
266 double precision,
intent(in) :: dx^D, x(ixI^S,1:ndim)
267 double precision,
intent(in) :: w(ixI^S,1:nw)
268 double precision,
intent(inout) :: dtdust(1:dust_n_species)
274 integer,
intent(in) :: ixI^L, ixO^L
275 double precision,
intent(in) :: x(ixI^S,1:ndim)
276 double precision,
intent(in) :: w(ixI^S,1:nw)
277 double precision,
intent(out) :: mu(ixI^S)
283 integer,
intent(in) :: ixI^L, ixO^L
284 double precision,
intent(in) :: x(ixI^S,1:ndim)
285 double precision,
intent(in) :: w(ixI^S,1:nw)
286 double precision,
intent(out) :: pth(ixI^S)
293 integer,
intent(in) :: ixI^L, ixO^L, idirmin
294 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:ndim)
295 double precision :: current(ixI^S,7-2*ndir:3), eta(ixI^S)
302 integer,
intent(in) :: ixI^L, ixO^L
303 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
304 double precision,
intent(out):: kappa(ixO^S)
310 integer,
intent(in) :: ixI^L, ixO^L, idir
311 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
312 double precision,
intent(out):: kappa(ixO^S)
318 integer,
intent(in) :: ixI^L, ixO^L
319 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
320 double precision,
intent(out):: kappa(ixO^S)
326 integer,
intent(in) :: ixI^L, ixO^L
327 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
328 double precision,
intent(out):: fld_lambda(ixI^S),fld_R(ixI^S)
334 integer,
intent(in) :: ixI^L, ixO^L
335 double precision,
intent(inout) :: w(ixI^S, 1:nw)
336 double precision,
intent(in) :: wCT(ixI^S, 1:nw)
337 double precision,
intent(in) :: x(ixI^S, 1:ndim)
351 subroutine refine_grid(igrid,level,ixI^L,ixO^L,qt,w,x,refine,coarsen)
353 integer,
intent(in) :: igrid, level, ixI^L, ixO^L
354 double precision,
intent(in) :: qt, w(ixI^S,1:nw), x(ixI^S,1:ndim)
355 integer,
intent(inout) :: refine, coarsen
364 integer,
intent(in) :: ixI^L,ixO^L,iflag
365 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
366 double precision,
intent(out) :: var(ixI^S)
370 subroutine set_b0(ixI^L,ixO^L,x,wB0)
372 integer,
intent(in) :: ixI^L,ixO^L
373 double precision,
intent(in) :: x(ixI^S,1:ndim)
374 double precision,
intent(inout) :: wB0(ixI^S,1:ndir)
375 end subroutine set_b0
378 subroutine set_j0(ixI^L,ixO^L,x,wJ0)
380 integer,
intent(in) :: ixI^L,ixO^L
381 double precision,
intent(in) :: x(ixI^S,1:ndim)
382 double precision,
intent(inout) :: wJ0(ixI^S,7-2*ndir:ndir)
383 end subroutine set_j0
388 integer,
intent(in) :: ixI^L,ixO^L
389 double precision,
intent(in) :: x(ixI^S,1:ndim)
390 double precision,
intent(inout) :: w0(ixI^S,1:number_equi_vars)
396 integer,
intent(in) :: ixI^L, ixO^L, nw_in
397 double precision,
intent(in) :: w_in(ixI^S,1:nw_in)
398 double precision,
intent(in) :: x(ixI^S, 1:ndim)
399 double precision,
intent(out) :: w_out(ixI^S,1:nw)
406 double precision,
intent(in) :: wlocal(1:nw),xlocal(1:ndim),qt
407 double precision,
intent(inout) :: threshold
408 integer,
intent(in) :: level
414 integer,
intent(in) :: qunitconvert
415 character(len=20) :: userconvert_type
424 integer,
intent(in) :: ixI^L, ixO^L
425 integer,
intent(inout) :: flag
426 double precision,
intent(in) :: qt
427 double precision,
intent(inout) :: w(ixI^S,1:nw)
428 double precision,
intent(in) :: x(ixI^S,1:ndim)
432 subroutine update_payload(igrid,w,wold,xgrid,x,u,q,m,mypayload,mynpayload,particle_time)
434 integer,
intent(in) :: igrid,mynpayload
435 double precision,
intent(in) :: w(ixG^T,1:nw),wold(ixG^T,1:nw)
436 double precision,
intent(in) :: xgrid(ixG^T,1:ndim),x(1:ndir),u(1:ndir),q,m,particle_time
437 double precision,
intent(out) :: mypayload(mynpayload)
442 integer,
intent(in) :: n_particles
443 double precision,
intent(out) :: x(3, n_particles)
444 double precision,
intent(out) :: v(3, n_particles)
445 double precision,
intent(out) :: q(n_particles)
446 double precision,
intent(out) :: m(n_particles)
447 logical,
intent(out) :: follow(n_particles)
453 integer,
intent(in) :: igrid
454 double precision,
intent(inout) :: x(1:ndir)
455 double precision,
intent(inout) :: v(1:ndir),q,m
456 logical,
intent(inout) :: follow
457 logical,
intent(out) :: check
463 double precision,
intent(in) :: w(ixG^T,1:nw)
464 double precision,
intent(in) :: x(ixG^T,1:ndim)
465 double precision,
intent(out) :: E(ixG^T, ndir)
466 double precision,
intent(out) :: B(ixG^T, ndir)
471 integer,
intent(in) :: ix(ndir)
472 double precision,
intent(in) :: x(ndir)
473 double precision,
intent(in) :: tloc
474 double precision,
intent(out) :: vec(ndir)
480 integer,
intent(in) :: n
481 double precision,
intent(inout) :: x(3)
482 double precision,
intent(in) :: tloc, tlocnew
486 integer,
intent(in) :: n_coarsen
487 integer,
intent(in) :: n_refine
494 integer,
intent(in) :: ixI^L, ixC^L, idir
495 double precision,
intent(in) :: xC(ixI^S,1:ndim)
496 double precision,
intent(out) :: A(ixI^S)
503 integer,
intent(in) :: ixI^L, ixO^L
504 double precision,
intent(in) :: qt, qdt
506 double precision,
intent(inout) :: fE(ixI^S,7-2*ndim:3)
536 subroutine set_wlr(ixI^L,ixO^L,qt,wLC,wRC,wLp,wRp,s,idir)
538 integer,
intent(in) :: ixI^L, ixO^L, idir
539 double precision,
intent(in) :: qt
540 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
541 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
550 end subroutine set_wlr
552 subroutine set_surface(ixI^L,x,delx,exp_factor,del_exp_factor,exp_factor_primitive)
554 integer,
intent(in) :: ixI^L
555 double precision,
intent(in) :: delx(ixI^S,1:ndim), x(ixI^S,1:ndim)
556 double precision,
intent(out) :: exp_factor(ixI^S), del_exp_factor(ixI^S)
557 double precision,
intent(out) :: exp_factor_primitive(ixI^S)
561 subroutine set_field_w(igrid,ip,xf,wP,wL,numP,nwP,nwL,dL,forward,ftype,tcondi)
565 integer,
intent(in) :: igrid,ip,numP,nwP,nwL
566 double precision,
intent(in) :: xf(numP,ndim)
567 double precision,
intent(inout) :: wP(numP,nwP),wL(1+nwL)
568 double precision,
intent(in) :: dL
569 logical,
intent(in) :: forward
570 character(len=std_len),
intent(in) :: ftype,tcondi
587 integer,
intent(in) :: igrid
588 double precision,
intent(in) :: xfn(ndim)
589 double precision,
intent(inout) :: field(ndim)
590 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...
Here one can add a steady (time-independent) equi vars.
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(source), pointer usr_source
procedure(special_resistivity), pointer usr_special_resistivity
procedure(special_opacity), pointer usr_special_opacity
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