126 integer,
intent(in) :: ixI^L, ixO^L
127 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
128 logical,
intent(in) :: primitive
129 double precision,
intent(out):: zeta(ixI^S), thread_radius(ixI^S)
130 double precision,
intent(out):: lperp_alfven(ixI^S)
139 integer,
intent(in) :: ixI^L, ixO^L
140 double precision,
intent(in) :: x(ixI^S,1:ndim)
141 double precision,
intent(inout) :: w(ixI^S,1:nw)
149 integer,
intent(in) :: ixI^L
151 integer,
intent(in) :: ixO^L
153 integer,
intent(in) :: iB
154 double precision,
intent(in) :: qdt,qt, x(ixI^S,1:ndim)
155 double precision,
intent(inout) :: w(ixI^S,1:nw)
160 double precision,
intent(in) :: qt, qdt
167 integer,
intent(in) :: iB
180 integer,
intent(in) :: ixI^L,ixO^L,level
181 double precision,
intent(in) :: qt, qdt
182 double precision,
intent(inout) :: w(ixI^S,1:nw)
183 double precision,
intent(in) :: x(ixI^S,1:ndim)
191 integer,
intent(in) :: igrid,level,ixI^L,ixO^L
192 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
193 double precision,
intent(inout) :: w(ixI^S,1:nw)
200 integer,
intent(in) :: ixI^L,ixO^L
201 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
202 double precision,
intent(inout) :: w(ixI^S,1:nw)
210 integer,
intent(in) :: iit
211 double precision,
intent(in) :: qt
217 integer,
intent(in) :: igrid,level,ixI^L,ixO^L
218 double precision,
intent(in) :: qt,x(ixI^S,1:ndim)
219 double precision,
intent(inout) :: w(ixI^S,1:nw)
225 integer,
intent(in) :: iit
226 double precision,
intent(in) :: qt
237 integer,
intent(in) :: ixI^L,ixO^L
238 double precision,
intent(in) :: x(ixI^S,1:ndim)
239 double precision :: w(ixI^S,nw+nwauxio)
240 double precision :: normconv(0:nw+nwauxio)
246 character(len=*) :: varnames
251 subroutine source(qdt,ixI^L,ixO^L,iw^LIM,qtC,wCT,qt,w,x)
253 integer,
intent(in) :: ixI^L, ixO^L, iw^LIM
254 double precision,
intent(in) :: qdt, qtC, qt
255 double precision,
intent(in) :: wCT(ixI^S,1:nw), x(ixI^S,1:ndim)
256 double precision,
intent(inout) :: w(ixI^S,1:nw)
262 subroutine get_dt(w,ixI^L,ixO^L,dtnew,dx^D,x)
264 integer,
intent(in) :: ixI^L, ixO^L
265 double precision,
intent(in) :: dx^D, x(ixI^S,1:ndim)
266 double precision,
intent(in) :: w(ixI^S,1:nw)
267 double precision,
intent(inout) :: dtnew
273 integer,
intent(in) :: ixI^L, ixO^L
274 double precision,
intent(in) :: x(ixI^S,1:ndim)
275 double precision,
intent(in) :: wCT(ixI^S,1:nw)
276 double precision,
intent(out) :: gravity_field(ixI^S,ndim)
282 integer,
intent(in) :: ixI^L, ixO^L, dust_n_species
283 double precision,
intent(in) :: x(ixI^S, 1:ndim)
284 double precision,
intent(in) :: w(ixI^S, 1:nw)
285 double precision,
intent(out) :: &
286 fdrag(ixI^S, 1:ndir, 1:dust_n_species)
287 double precision,
intent(in) :: ptherm(ixI^S), vgas(ixI^S, ndir)
293 integer,
intent(in) :: ixI^L, ixO^L, dust_n_species
294 double precision,
intent(in) :: dx^D, x(ixI^S,1:ndim)
295 double precision,
intent(in) :: w(ixI^S,1:nw)
296 double precision,
intent(inout) :: dtdust(1:dust_n_species)
302 integer,
intent(in) :: ixI^L, ixO^L
303 double precision,
intent(in) :: x(ixI^S,1:ndim)
304 double precision,
intent(in) :: wp(ixI^S,1:nw)
305 double precision,
intent(out) :: mu(ixI^S)
311 integer,
intent(in) :: ixI^L, ixO^L
312 double precision,
intent(in) :: x(ixI^S,1:ndim)
313 double precision,
intent(in) :: w(ixI^S,1:nw)
314 double precision,
intent(out) :: pth(ixI^S)
320 integer,
intent(in) :: ixI^L, ixO^L
321 double precision,
intent(in) :: x(ixI^S,1:ndim)
322 double precision,
intent(in) :: w(ixI^S,1:nw)
323 double precision,
intent(out) :: pth(ixI^S)
329 integer,
intent(in) :: ixI^L, ixO^L
330 double precision,
intent(in) :: x(ixI^S,1:ndim)
331 double precision,
intent(in) :: w(ixI^S,1:nw)
332 double precision,
intent(out) :: adiab(ixI^S)
339 integer,
intent(in) :: ixI^L, ixO^L, idirmin
340 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:ndim)
341 double precision,
intent(in) :: current(ixI^S,7-2*ndir:3)
342 double precision,
intent(out) :: eta(ixI^S)
349 integer,
intent(in) :: ixI^L, ixO^L
350 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
351 double precision,
intent(out):: kappa(ixI^S)
357 integer,
intent(in) :: ixI^L, ixO^L
358 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
359 double precision,
intent(out):: fld_lambda(ixI^S),fld_R(ixI^S)
365 integer,
intent(in) :: ixI^L, ixO^L
366 double precision,
intent(inout) :: w(ixI^S, 1:nw)
367 double precision,
intent(in) :: wprim(ixI^S, 1:nw)
368 double precision,
intent(in) :: x(ixI^S, 1:ndim)
382 subroutine refine_grid(igrid,level,ixI^L,ixO^L,qt,w,x,refine,coarsen)
384 integer,
intent(in) :: igrid, level, ixI^L, ixO^L
385 double precision,
intent(in) :: qt, w(ixI^S,1:nw), x(ixI^S,1:ndim)
386 integer,
intent(inout) :: refine, coarsen
395 integer,
intent(in) :: ixI^L,ixO^L,iflag
396 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
397 double precision,
intent(out) :: var(ixI^S)
403 integer,
intent(in) :: ixI^L,ixO^L
404 double precision,
intent(in) :: x(ixI^S,1:ndim)
405 double precision,
intent(inout) :: wB0(ixI^S,1:ndir)
411 integer,
intent(in) :: ixI^L,ixO^L
412 double precision,
intent(in) :: x(ixI^S,1:ndim)
413 double precision,
intent(inout) :: wJ0(ixI^S,7-2*ndir:ndir)
419 integer,
intent(in) :: ixI^L,ixO^L
420 double precision,
intent(in) :: x(ixI^S,1:ndim)
421 double precision,
intent(inout) :: w0(ixI^S,1:number_equi_vars)
427 integer,
intent(in) :: ixI^L, ixO^L, nw_in
428 double precision,
intent(in) :: w_in(ixI^S,1:nw_in)
429 double precision,
intent(in) :: x(ixI^S, 1:ndim)
430 double precision,
intent(out) :: w_out(ixI^S,1:nw)
437 double precision,
intent(in) :: wlocal(1:nw),xlocal(1:ndim),qt
438 double precision,
intent(inout) :: threshold
439 integer,
intent(in) :: level
445 integer,
intent(in) :: qunitconvert
446 character(len=20) :: userconvert_type
455 integer,
intent(in) :: ixI^L, ixO^L
456 integer,
intent(inout) :: flag
457 double precision,
intent(in) :: qt
458 double precision,
intent(inout) :: w(ixI^S,1:nw)
459 double precision,
intent(in) :: x(ixI^S,1:ndim)
465 integer,
intent(in) :: igrid,mynpayload
466 double precision,
intent(in) :: x(1:ndir),u(1:ndir),q,m,particle_time
467 double precision,
intent(out) :: mypayload(mynpayload)
472 integer,
intent(in) :: n_particles
473 double precision,
intent(out) :: x(3, n_particles)
474 double precision,
intent(out) :: v(3, n_particles)
475 double precision,
intent(out) :: q(n_particles)
476 double precision,
intent(out) :: m(n_particles)
477 logical,
intent(out) :: follow(n_particles)
483 integer,
intent(in) :: igrid
484 double precision,
intent(inout) :: x(1:ndir)
485 double precision,
intent(inout) :: v(1:ndir),q,m
486 logical,
intent(inout) :: follow
487 logical,
intent(out) :: check
493 double precision,
intent(in) :: w(ixG^T,1:nw)
494 double precision,
intent(in) :: x(ixG^T,1:ndim)
495 double precision,
intent(out) :: E(ixG^T, ndir)
496 double precision,
intent(out) :: B(ixG^T, ndir)
501 integer,
intent(in) :: ix(ndir)
502 double precision,
intent(in) :: x(ndir)
503 double precision,
intent(in) :: tloc
504 double precision,
intent(out) :: vec(ndir)
510 integer,
intent(in) :: n
511 double precision,
intent(inout) :: x(3)
512 double precision,
intent(in) :: tloc, tlocnew
516 integer,
intent(in) :: n_coarsen
517 integer,
intent(in) :: n_refine
524 integer,
intent(in) :: ixI^L, ixC^L, idir
525 double precision,
intent(in) :: xC(ixI^S,1:ndim)
526 double precision,
intent(out) :: A(ixI^S)
533 integer,
intent(in) :: ixI^L, ixO^L
534 double precision,
intent(in) :: qt, qdt
536 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
566 subroutine set_wlr(ixI^L,ixO^L,qt,wLC,wRC,wLp,wRp,s,idir)
568 integer,
intent(in) :: ixI^L, ixO^L, idir
569 double precision,
intent(in) :: qt
570 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
571 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
582 subroutine set_surface(ixI^L,x,delx,exp_factor,del_exp_factor,exp_factor_primitive)
584 integer,
intent(in) :: ixI^L
585 double precision,
intent(in) :: delx(ixI^S,1:ndim), x(ixI^S,1:ndim)
586 double precision,
intent(out) :: exp_factor(ixI^S), del_exp_factor(ixI^S)
587 double precision,
intent(out) :: exp_factor_primitive(ixI^S)
591 subroutine set_field_w(igrid,ip,xf,wP,wL,numP,nwP,nwL,dL,forward,ftype,tcondi)
595 integer,
intent(in) :: igrid,ip,numP,nwP,nwL
596 double precision,
intent(in) :: xf(numP,ndim)
597 double precision,
intent(inout) :: wP(numP,nwP),wL(1+nwL)
598 double precision,
intent(in) :: dL
599 logical,
intent(in) :: forward
600 character(len=std_len),
intent(in) :: ftype,tcondi
617 integer,
intent(in) :: igrid
618 double precision,
intent(in) :: xfn(ndim)
619 double precision,
intent(inout) :: field(ndim)
620 character(len=std_len),
intent(in) :: ftype
632 integer,
intent(in) :: ixI^L, ixO^L
633 double precision,
intent(in) :: x(ixI^S,1:ndim), w(ixI^S,1:nw)
634 double precision,
intent(out):: Qgrid(ixI^S)
640 integer,
intent(in) :: ixI^L, ixO^L
641 double precision,
intent(in) :: w(ixI^S,1:nw), x(ixI^S,1:ndim)
642 double precision,
intent(out):: chi(ixI^S), bpl(ixI^S)
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...
Calculate volumetric heating rate for TRAC broadening.
If defined, this routine is called before writing output, and it can set/modify the variables in the ...
Opacity chi = kappa rho and Planck source bpl = a_rad T^4 (code units) for the SC RT.
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_after
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(sub_get_heating), pointer usr_get_heating
procedure(particle_position), pointer usr_particle_position
procedure(special_prepare_bc), pointer usr_prepare_boundary
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(uawsom_coefficients), pointer usr_uawsom_coefficients
Optionally provide local UAWSoM closure coefficients. The returned thread radius and Alfven correlati...
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(sub_rt_sc_chib), pointer usr_rt_sc_chib
opacity and Planck source for the SC RT when rt_sc_opacity = 'usr'
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