105 integer,
intent(in) :: igrid
106 type(state),
target :: psb(max_blocks)
111 integer,
intent(in) :: ixI^L, ixO^L
112 double precision,
intent(inout) :: w(ixI^S, nw)
113 double precision,
intent(in) :: x(ixI^S, 1:^ND)
118 integer,
intent(in) :: ixI^L, ixO^L, idir
119 double precision,
intent(in) :: qt
120 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
121 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
127 integer,
intent(in) :: ixI^L, ixO^L, idim
128 double precision,
intent(in) :: w(ixI^S, nw), x(ixI^S, 1:^ND)
129 double precision,
intent(inout) :: cmax(ixI^S)
134 integer,
intent(in) :: ixI^L, ixO^L
135 double precision,
intent(in) :: w(ixI^S, nw), x(ixI^S, 1:^ND)
136 double precision,
intent(inout) :: a2max(ndim)
141 integer,
intent(in) :: ixI^L, ixO^L
142 double precision,
intent(inout) :: w(ixI^S, nw)
143 double precision,
intent(in) :: x(ixI^S, 1:^ND)
144 double precision,
intent(out) :: tco_local, Tmax_local
148 double precision,
intent(in) :: trac_alfa,tco,T_peak,T_bott
153 integer,
intent(in) :: ixI^L, ixO^L
154 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:^ND)
155 double precision,
intent(out) :: v(ixI^S,1:ndir)
160 integer,
intent(in) :: ixI^L, ixO^L
161 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:^ND)
162 double precision,
intent(out) :: rho(ixI^S)
167 integer,
intent(in) :: ixI^L, ixO^L, idim
168 double precision,
intent(in) :: wprim(ixI^S, nw)
169 double precision,
intent(in) :: x(ixI^S,1:ndim)
170 double precision,
intent(out) :: Hspeed(ixI^S,1:number_species)
173 subroutine sub_get_cbounds(wLC, wRC, wLp, wRp, x, ixI^L, ixO^L, idim, Hspeed, cmax, cmin)
176 integer,
intent(in) :: ixI^L, ixO^L, idim
177 double precision,
intent(in) :: wLC(ixI^S, nw), wRC(ixI^S, nw)
178 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
179 double precision,
intent(in) :: x(ixI^S, 1:^ND)
180 double precision,
intent(inout) :: cmax(ixI^S,1:number_species)
181 double precision,
intent(inout),
optional :: cmin(ixI^S,1:number_species)
182 double precision,
intent(in) :: Hspeed(ixI^S,1:number_species)
187 integer,
intent(in) :: ixI^L, ixO^L, idim
188 double precision,
intent(in) :: wC(ixI^S, 1:nw)
189 double precision,
intent(in) :: w(ixI^S, 1:nw)
190 double precision,
intent(in) :: x(ixI^S, 1:^ND)
191 double precision,
intent(out) :: f(ixI^S, nwflux)
196 integer,
intent(in) :: ixI^L, ixO^L
197 double precision,
intent(in) :: qdt, dtfactor, x(ixI^S, 1:^ND)
198 double precision,
intent(inout) :: wCT(ixI^S, 1:nw), wprim(ixI^S, 1:nw), w(ixI^S, 1:nw)
202 qsourcesplit, active)
204 integer,
intent(in) :: ixI^L, ixO^L
205 double precision,
intent(in) :: qdt, dtfactor
206 double precision,
intent(in) :: wCT(ixI^S, 1:nw), wCTprim(ixI^S,1:nw), x(ixI^S, 1:ndim)
207 double precision,
intent(inout) :: w(ixI^S, 1:nw)
208 logical,
intent(in) :: qsourcesplit
209 logical,
intent(inout) :: active
215 double precision,
intent(in) :: qdt
216 double precision,
intent(in) :: qt
217 logical,
intent(inout) :: active
223 double precision,
intent(in) :: qdt
224 double precision,
intent(in) :: qt
225 logical,
intent(inout) :: active
230 integer,
intent(in) :: igrid
237 double precision,
intent(in) :: qt
238 type(state),
target :: psa(max_blocks)
243 integer,
intent(in) :: ixI^L, ixO^L
244 double precision,
intent(in) :: dx^D, x(ixI^S, 1:^ND)
245 double precision,
intent(in) :: w(ixI^S, 1:nw)
246 double precision,
intent(inout) :: dtnew
251 logical,
intent(in) :: primitive
252 integer,
intent(in) :: ixI^L, ixO^L
253 double precision,
intent(in) :: w(ixI^S,1:nw)
254 logical,
intent(inout) :: w_flag(ixI^S,1:nw)
259 integer,
intent(in) :: ixI^L, ixO^L
260 double precision,
intent(in) :: w(ixI^S,nw)
261 double precision,
intent(in) :: x(ixI^S,1:ndim)
262 double precision,
intent(out):: pth(ixI^S)
267 integer,
intent(in) :: ixI^L, ixO^L
268 double precision,
intent(inout) :: w(ixI^S,nw)
269 double precision,
intent(in) :: x(ixI^S,1:ndim)
274 integer,
intent(in) :: ixI^L, ixO^L
275 double precision,
intent(inout) :: w(ixI^S,nw)
280 integer,
intent(in) :: ixI^L, ixO^L
281 double precision,
intent(in) :: w(ixI^S,nw)
282 double precision,
intent(in) :: x(ixI^S,1:ndim)
283 double precision,
intent(out):: tgas(ixI^S)
288 integer,
intent(in) :: ixI^L, ixO^L
289 double precision,
intent(in) :: w(ixI^S,nw)
290 double precision,
intent(in) :: x(ixI^S,1:ndim)
291 double precision,
intent(out):: trad(ixI^S)
295 integer,
intent(in) :: file_handle
300 logical,
intent(in) :: primitive
301 integer,
intent(in) :: ixI^L,ixO^L
302 double precision,
intent(inout) :: w(ixI^S,1:nw)
303 double precision,
intent(in) :: x(ixI^S,1:ndim)
304 character(len=*),
intent(in) :: subname
309 integer,
intent(in) :: ixI^L, ixO^L
310 double precision,
intent(in) :: w(ixI^S, nw)
311 double precision,
intent(out) :: out(ixO^S)
317 integer,
intent(in) :: ixI^L, ixO^L, idim
318 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
319 double precision,
intent(in) :: cmax(ixI^S)
320 double precision,
intent(in),
optional :: cmin(ixI^S)
321 type(ct_velocity),
intent(inout):: vcts
326 integer,
intent(in) :: ixI^L, ixO^L
327 double precision,
intent(in) :: qt, qdt
329 double precision,
intent(in) :: wprim(ixI^S,1:nw)
331 type(state) :: sCT, s
332 type(ct_velocity) :: vcts
333 double precision,
intent(in) :: fC(ixI^S,1:nwflux,1:ndim)
334 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
339 integer,
intent(in) :: ixO^L
345 type(state),
target :: psa(max_blocks)
346 double precision,
intent(in) :: qtC
351 type(state),
target :: psa(max_blocks)
352 type(state),
target :: psb(max_blocks)
353 double precision,
intent(in) :: qdt
354 double precision,
intent(in) :: qtC
355 double precision,
intent(in) :: dtfactor
360 integer,
intent(in) :: ixI^L, ixO^L
361 double precision,
intent(in) :: wCT(ixI^S,nw),x(ixI^S,1:ndim)
362 double precision,
intent(inout) :: w(ixI^S,nw)
386 call mpistop(
"Error: phys_to_conserved not defined")
389 call mpistop(
"Error: phys_to_primitive not defined")
395 call mpistop(
"Error: no phys_get_cmax not defined")
404 call mpistop(
"Error: no phys_get_cbounds not defined")
407 call mpistop(
"Error: no phys_get_flux not defined")
410 call mpistop(
"Error: no phys_get_dt not defined")
462 integer,
intent(in) :: ixI^L, ixO^L, idir
463 double precision,
intent(in) :: qt
464 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
465 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
471 integer,
intent(in) :: ixI^L, ixO^L, idim
472 double precision,
intent(in) :: wprim(ixI^S, nw)
473 double precision,
intent(in) :: x(ixI^S,1:ndim)
474 double precision,
intent(out) :: Hspeed(ixI^S,1:number_species)
480 integer,
intent(in) :: ixI^L, ixO^L
481 double precision,
intent(in) :: w(ixI^S, nw), x(ixI^S, 1:^ND)
482 double precision,
intent(inout) :: a2max(ndim)
483 call mpistop(
"Error: entered dummy_get_a2max")
488 integer,
intent(in) :: ixI^L, ixO^L
489 double precision,
intent(in) :: qdt, dtfactor, x(ixI^S, 1:^ND)
490 double precision,
intent(inout) :: wCT(ixI^S, 1:nw), wprim(ixI^S,1:nw),w(ixI^S, 1:nw)
494 qsourcesplit, active)
496 integer,
intent(in) :: ixI^L, ixO^L
497 double precision,
intent(in) :: qdt,dtfactor
498 double precision,
intent(in) :: wCT(ixI^S, 1:nw), wCTprim(ixI^S,1:nw), x(ixI^S, 1:ndim)
499 double precision,
intent(inout) :: w(ixI^S, 1:nw)
500 logical,
intent(in) :: qsourcesplit
501 logical,
intent(inout) :: active
507 logical,
intent(in) :: primitive
508 integer,
intent(in) :: ixI^L, ixO^L
509 double precision,
intent(in) :: w(ixI^S,1:nw)
510 logical,
intent(inout) :: w_flag(ixI^S,1:nw)
519 integer,
intent(in) :: ixI^L, ixO^L
520 double precision,
intent(in) :: w(ixI^S, nw)
521 double precision,
intent(in) :: x(ixI^S, 1:ndim)
522 double precision,
intent(out):: pth(ixI^S)
524 call mpistop(
"No get_pthermal method specified")
531 integer,
intent(in) :: ixI^L, ixO^L
532 double precision,
intent(inout) :: w(ixI^S, nw)
533 double precision,
intent(in) :: x(ixI^S, 1:ndim)
542 integer,
intent(in) :: ixI^L, ixO^L
543 double precision,
intent(inout) :: w(ixI^S, nw)
545 call mpistop(
"No get_auxiliary_prim method specified")
550 integer,
intent(in) :: igrid
551 type(state),
target :: psb(max_blocks)
556 integer,
intent(in) :: fh
557 integer,
dimension(MPI_STATUS_SIZE) :: st
561 integer,
parameter :: n_par = 0
563 call mpi_file_write(fh, n_par, 1, mpi_integer, st, er)
568 logical,
intent(in) :: primitive
569 integer,
intent(in) :: ixI^L,ixO^L
570 double precision,
intent(inout) :: w(ixI^S,1:nw)
571 double precision,
intent(in) :: x(ixI^S,1:ndim)
572 character(len=*),
intent(in) :: subname
578 integer,
intent(in) :: ixI^L, ixO^L, idim
579 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
580 double precision,
intent(in) :: cmax(ixI^S)
581 double precision,
intent(in),
optional :: cmin(ixI^S)
582 type(ct_velocity),
intent(inout):: vcts
587 integer,
intent(in) :: ixI^L, ixO^L
588 double precision,
intent(in) :: qt, qdt
590 double precision,
intent(in) :: wprim(ixI^S,1:nw)
591 type(state) :: sCT, s
592 type(ct_velocity) :: vcts
593 double precision,
intent(in) :: fC(ixI^S,1:nwflux,1:ndim)
594 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
599 integer,
intent(in) :: ixO^L
605 type(state),
target :: psa(max_blocks)
606 double precision,
intent(in) :: qtC
607 integer :: iigrid, igrid
611 do iigrid=1,igridstail; igrid=igrids(iigrid);
612 psa(igrid)%w = 0.0d0*psa(igrid)%w
621 type(state),
target :: psa(max_blocks)
622 type(state),
target :: psb(max_blocks)
623 double precision,
intent(in) :: qdt
624 double precision,
intent(in) :: qtC
625 double precision,
intent(in) :: dtfactor
626 integer :: iigrid, igrid
630 do iigrid=1,igridstail; igrid=igrids(iigrid);
631 psa(igrid)%w = psb(igrid)%w
Add global source terms on complete domain (potentially implicit)
set equilibrium variables other than b0 (e.g. p0 and rho0)
Add special advance in each advect step.
subroutine, public mpistop(message)
Exit MPI-AMRVAC with an error message.
This module contains definitions of global parameters and variables and some generic functions/subrou...
logical stagger_grid
True for using stagger grid.
integer ndir
Number of spatial dimensions (components) for vector variables.
subroutine phys_hllc_check
subroutine phys_roe_check()
This module defines the procedures of a physics module. It contains function pointers for the various...
procedure(sub_get_a2max), pointer phys_get_a2max
procedure(sub_get_ct_velocity), pointer phys_get_ct_velocity
subroutine dummy_implicit_update(dtfactor, qdt, qtc, psa, psb)
subroutine dummy_boundary_adjust(igrid, psb)
procedure(sub_convert), pointer phys_to_primitive
procedure(sub_get_tgas), pointer phys_get_tgas
integer, parameter flux_tvdlf
Indicates the flux should be treated with tvdlf.
procedure(sub_small_values), pointer phys_handle_small_values
procedure(sub_write_info), pointer phys_write_info
procedure(sub_get_flux), pointer phys_get_flux
procedure(sub_evaluate_implicit), pointer phys_evaluate_implicit
subroutine dummy_get_auxiliary(ixil, ixol, w, x)
subroutine dummy_face_to_center(ixol, s)
subroutine dummy_modify_wlr(ixil, ixol, qt, wlc, wrc, wlp, wrp, s, idir)
subroutine dummy_get_a2max(w, x, ixil, ixol, a2max)
procedure(sub_get_cbounds), pointer phys_get_cbounds
procedure(sub_check_params), pointer phys_te_images
procedure(sub_get_dt), pointer phys_get_dt
subroutine dummy_update_faces(ixil, ixol, qt, qdt, wprim, fc, fe, sct, s, vcts)
logical phys_partial_ionization
Solve partially ionized one-fluid plasma.
logical phys_total_energy
Solve total energy equation or not.
integer, parameter flux_hll
Indicates the flux should be treated with hll.
procedure(sub_get_pthermal), pointer phys_get_pthermal
procedure(sub_update_temperature), pointer phys_update_temperature
procedure(sub_get_tcutoff), pointer phys_get_tcutoff
subroutine dummy_get_pthermal(w, x, ixil, ixol, pth)
procedure(sub_add_source_geom), pointer phys_add_source_geom
procedure(sub_check_params), pointer phys_check_params
integer, parameter flux_default
Indicates a normal flux.
procedure(sub_get_auxiliary), pointer phys_get_auxiliary
subroutine dummy_get_h_speed(wprim, x, ixil, ixol, idim, hspeed)
subroutine dummy_small_values(primitive, w, x, ixil, ixol, subname)
procedure(sub_get_auxiliary_prim), pointer phys_get_auxiliary_prim
integer, parameter flux_special
Indicates the flux should be specially treated.
procedure(sub_trac_after_setdt), pointer phys_trac_after_setdt
integer, parameter flux_no_dissipation
Indicates dissipation should be omitted.
subroutine dummy_add_source_geom(qdt, dtfactor, ixil, ixol, wct, wprim, w, x)
procedure(sub_set_equi_vars), pointer phys_set_equi_vars
integer, dimension(:, :), allocatable flux_type
Array per direction per variable, which can be used to specify that certain fluxes have to be treated...
integer phys_wider_stencil
To use wider stencils in flux calculations. A value of 1 will extend it by one cell in both direction...
subroutine dummy_init_params
procedure(sub_update_faces), pointer phys_update_faces
procedure(sub_convert), pointer phys_to_conserved
character(len=name_len) physics_type
String describing the physics type of the simulation.
procedure(sub_check_w), pointer phys_check_w
subroutine dummy_get_ct_velocity(vcts, wlp, wrp, ixil, ixol, idim, cmax, cmin)
procedure(sub_set_mg_bounds), pointer phys_set_mg_bounds
logical phys_equi_pe
if equilibrium pressure is splitted
procedure(sub_implicit_update), pointer phys_implicit_update
procedure(sub_get_trad), pointer phys_get_trad
subroutine dummy_evaluate_implicit(qtc, psa)
subroutine dummy_check_params
procedure(sub_clean_divb), pointer phys_clean_divb
procedure(sub_boundary_adjust), pointer phys_boundary_adjust
subroutine dummy_add_source(qdt, dtfactor, ixil, ixol, wct, wctprim, w, x, qsourcesplit, active)
double precision phys_gamma
procedure(sub_global_source), pointer phys_global_source_after
procedure(sub_add_source), pointer phys_add_source
procedure(sub_face_to_center), pointer phys_face_to_center
procedure(sub_modify_wlr), pointer phys_modify_wlr
subroutine dummy_write_info(fh)
procedure(sub_get_h_speed), pointer phys_get_h_speed
subroutine dummy_get_auxiliary_prim(ixil, ixol, w)
logical phys_internal_e
Solve internal energy instead of total energy.
procedure(sub_get_cmax), pointer phys_get_cmax
procedure(sub_get_rho), pointer phys_get_rho
procedure(sub_get_v), pointer phys_get_v
subroutine dummy_check_w(primitive, ixil, ixol, w, w_flag)
logical phys_energy
Solve energy equation or not.
procedure(sub_special_advance), pointer phys_special_advance
Module with all the methods that users can customize in AMRVAC.