107 integer,
intent(in) :: igrid
108 type(state),
target :: psb(max_blocks)
113 integer,
intent(in) :: ixI^L, ixO^L
114 double precision,
intent(inout) :: w(ixI^S, nw)
115 double precision,
intent(in) :: x(ixI^S, 1:^ND)
120 integer,
intent(in) :: ixI^L, ixO^L, idir
121 double precision,
intent(in) :: qt
122 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
123 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
129 integer,
intent(in) :: ixI^L, ixO^L, idim
130 double precision,
intent(in) :: w(ixI^S, nw), x(ixI^S, 1:^ND)
131 double precision,
intent(inout) :: cmax(ixI^S)
136 integer,
intent(in) :: ixI^L, ixO^L
137 double precision,
intent(in) :: w(ixI^S, nw), x(ixI^S, 1:^ND)
138 double precision,
intent(inout) :: a2max(ndim)
143 integer,
intent(in) :: ixI^L, ixO^L
144 double precision,
intent(inout) :: w(ixI^S, nw)
145 double precision,
intent(in) :: x(ixI^S, 1:^ND)
146 double precision,
intent(out) :: tco_local, Tmax_local
150 double precision,
intent(in) :: trac_alfa,tco,T_peak,T_bott
155 integer,
intent(in) :: ixI^L, ixO^L
156 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:^ND)
157 double precision,
intent(out) :: v(ixI^S,1:ndir)
162 integer,
intent(in) :: ixI^L, ixO^L
163 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:^ND)
164 double precision,
intent(out) :: rho(ixI^S)
169 integer,
intent(in) :: ixI^L, ixO^L, idim
170 double precision,
intent(in) :: wprim(ixI^S, nw)
171 double precision,
intent(in) :: x(ixI^S,1:ndim)
172 double precision,
intent(out) :: Hspeed(ixI^S,1:number_species)
175 subroutine sub_get_cbounds(wLC, wRC, wLp, wRp, x, ixI^L, ixO^L, idim, Hspeed, cmax, cmin)
178 integer,
intent(in) :: ixI^L, ixO^L, idim
179 double precision,
intent(in) :: wLC(ixI^S, nw), wRC(ixI^S, nw)
180 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
181 double precision,
intent(in) :: x(ixI^S, 1:^ND)
182 double precision,
intent(inout) :: cmax(ixI^S,1:number_species)
183 double precision,
intent(inout),
optional :: cmin(ixI^S,1:number_species)
184 double precision,
intent(in) :: Hspeed(ixI^S,1:number_species)
189 integer,
intent(in) :: ixI^L, ixO^L, idim
190 double precision,
intent(in) :: wC(ixI^S, 1:nw)
191 double precision,
intent(in) :: w(ixI^S, 1:nw)
192 double precision,
intent(in) :: x(ixI^S, 1:^ND)
193 double precision,
intent(out) :: f(ixI^S, nwflux)
198 integer,
intent(in) :: ixI^L, ixO^L
199 double precision,
intent(in) :: qdt, dtfactor, x(ixI^S, 1:^ND)
200 double precision,
intent(inout) :: wCT(ixI^S, 1:nw), wprim(ixI^S, 1:nw), w(ixI^S, 1:nw)
204 qsourcesplit, active)
206 integer,
intent(in) :: ixI^L, ixO^L
207 double precision,
intent(in) :: qdt, dtfactor
208 double precision,
intent(in) :: wCT(ixI^S, 1:nw), wCTprim(ixI^S,1:nw), x(ixI^S, 1:ndim)
209 double precision,
intent(inout) :: w(ixI^S, 1:nw)
210 logical,
intent(in) :: qsourcesplit
211 logical,
intent(inout) :: active
217 double precision,
intent(in) :: qdt
218 double precision,
intent(in) :: qt
219 logical,
intent(inout) :: active
225 double precision,
intent(in) :: qdt
226 double precision,
intent(in) :: qt
227 logical,
intent(inout) :: active
232 integer,
intent(in) :: igrid
239 double precision,
intent(in) :: qt
240 type(state),
target :: psa(max_blocks)
245 integer,
intent(in) :: ixI^L, ixO^L
246 double precision,
intent(in) :: dx^D, x(ixI^S, 1:^ND)
247 double precision,
intent(in) :: w(ixI^S, 1:nw)
248 double precision,
intent(inout) :: dtnew
253 logical,
intent(in) :: primitive
254 integer,
intent(in) :: ixI^L, ixO^L
255 double precision,
intent(in) :: w(ixI^S,1:nw)
256 logical,
intent(inout) :: w_flag(ixI^S,1:nw)
261 integer,
intent(in) :: ixI^L, ixO^L
262 double precision,
intent(in) :: w(ixI^S,nw)
263 double precision,
intent(in) :: x(ixI^S,1:ndim)
264 double precision,
intent(out):: pth(ixI^S)
269 integer,
intent(in) :: ixI^L, ixO^L
270 double precision,
intent(inout) :: w(ixI^S,nw)
271 double precision,
intent(in) :: x(ixI^S,1:ndim)
276 integer,
intent(in) :: ixI^L, ixO^L
277 double precision,
intent(inout) :: w(ixI^S,nw)
282 integer,
intent(in) :: ixI^L, ixO^L
283 double precision,
intent(in) :: w(ixI^S,nw)
284 double precision,
intent(in) :: x(ixI^S,1:ndim)
285 double precision,
intent(out):: tgas(ixI^S)
290 integer,
intent(in) :: ixI^L, ixO^L
291 double precision,
intent(in) :: w(ixI^S,nw)
292 double precision,
intent(in) :: x(ixI^S,1:ndim)
293 double precision,
intent(out):: trad(ixI^S)
297 integer,
intent(in) :: file_handle
302 logical,
intent(in) :: primitive
303 integer,
intent(in) :: ixI^L,ixO^L
304 double precision,
intent(inout) :: w(ixI^S,1:nw)
305 double precision,
intent(in) :: x(ixI^S,1:ndim)
306 character(len=*),
intent(in) :: subname
311 integer,
intent(in) :: ixI^L, ixO^L
312 double precision,
intent(in) :: w(ixI^S, nw)
313 double precision,
intent(out) :: out(ixO^S)
319 integer,
intent(in) :: ixI^L, ixO^L, idim
320 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
321 double precision,
intent(in) :: cmax(ixI^S)
322 double precision,
intent(in),
optional :: cmin(ixI^S)
323 type(ct_velocity),
intent(inout):: vcts
328 integer,
intent(in) :: ixI^L, ixO^L
329 double precision,
intent(in) :: qt, qdt
331 double precision,
intent(in) :: wprim(ixI^S,1:nw)
333 type(state) :: sCT, s
334 type(ct_velocity) :: vcts
335 double precision,
intent(in) :: fC(ixI^S,1:nwflux,1:ndim)
336 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
341 integer,
intent(in) :: ixO^L
347 type(state),
target :: psa(max_blocks)
348 double precision,
intent(in) :: qtC
353 type(state),
target :: psa(max_blocks)
354 type(state),
target :: psb(max_blocks)
355 double precision,
intent(in) :: qdt
356 double precision,
intent(in) :: qtC
357 double precision,
intent(in) :: dtfactor
362 integer,
intent(in) :: ixI^L, ixO^L
363 double precision,
intent(in) :: wCT(ixI^S,nw),x(ixI^S,1:ndim)
364 double precision,
intent(inout) :: w(ixI^S,nw)
388 call mpistop(
"Error: phys_to_conserved not defined")
391 call mpistop(
"Error: phys_to_primitive not defined")
397 call mpistop(
"Error: no phys_get_cmax not defined")
406 call mpistop(
"Error: no phys_get_cbounds not defined")
409 call mpistop(
"Error: no phys_get_flux not defined")
412 call mpistop(
"Error: no phys_get_dt not defined")
464 integer,
intent(in) :: ixI^L, ixO^L, idir
465 double precision,
intent(in) :: qt
466 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
467 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
473 integer,
intent(in) :: ixI^L, ixO^L, idim
474 double precision,
intent(in) :: wprim(ixI^S, nw)
475 double precision,
intent(in) :: x(ixI^S,1:ndim)
476 double precision,
intent(out) :: Hspeed(ixI^S,1:number_species)
482 integer,
intent(in) :: ixI^L, ixO^L
483 double precision,
intent(in) :: w(ixI^S, nw), x(ixI^S, 1:^ND)
484 double precision,
intent(inout) :: a2max(ndim)
485 call mpistop(
"Error: entered dummy_get_a2max")
490 integer,
intent(in) :: ixI^L, ixO^L
491 double precision,
intent(in) :: qdt, dtfactor, x(ixI^S, 1:^ND)
492 double precision,
intent(inout) :: wCT(ixI^S, 1:nw), wprim(ixI^S,1:nw),w(ixI^S, 1:nw)
496 qsourcesplit, active)
498 integer,
intent(in) :: ixI^L, ixO^L
499 double precision,
intent(in) :: qdt,dtfactor
500 double precision,
intent(in) :: wCT(ixI^S, 1:nw), wCTprim(ixI^S,1:nw), x(ixI^S, 1:ndim)
501 double precision,
intent(inout) :: w(ixI^S, 1:nw)
502 logical,
intent(in) :: qsourcesplit
503 logical,
intent(inout) :: active
509 logical,
intent(in) :: primitive
510 integer,
intent(in) :: ixI^L, ixO^L
511 double precision,
intent(in) :: w(ixI^S,1:nw)
512 logical,
intent(inout) :: w_flag(ixI^S,1:nw)
521 integer,
intent(in) :: ixI^L, ixO^L
522 double precision,
intent(in) :: w(ixI^S, nw)
523 double precision,
intent(in) :: x(ixI^S, 1:ndim)
524 double precision,
intent(out):: pth(ixI^S)
526 call mpistop(
"No get_pthermal method specified")
533 integer,
intent(in) :: ixI^L, ixO^L
534 double precision,
intent(inout) :: w(ixI^S, nw)
535 double precision,
intent(in) :: x(ixI^S, 1:ndim)
544 integer,
intent(in) :: ixI^L, ixO^L
545 double precision,
intent(inout) :: w(ixI^S, nw)
547 call mpistop(
"No get_auxiliary_prim method specified")
552 integer,
intent(in) :: igrid
553 type(state),
target :: psb(max_blocks)
558 integer,
intent(in) :: fh
559 integer,
dimension(MPI_STATUS_SIZE) :: st
563 integer,
parameter :: n_par = 0
565 call mpi_file_write(fh, n_par, 1, mpi_integer, st, er)
570 logical,
intent(in) :: primitive
571 integer,
intent(in) :: ixI^L,ixO^L
572 double precision,
intent(inout) :: w(ixI^S,1:nw)
573 double precision,
intent(in) :: x(ixI^S,1:ndim)
574 character(len=*),
intent(in) :: subname
580 integer,
intent(in) :: ixI^L, ixO^L, idim
581 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
582 double precision,
intent(in) :: cmax(ixI^S)
583 double precision,
intent(in),
optional :: cmin(ixI^S)
584 type(ct_velocity),
intent(inout):: vcts
589 integer,
intent(in) :: ixI^L, ixO^L
590 double precision,
intent(in) :: qt, qdt
592 double precision,
intent(in) :: wprim(ixI^S,1:nw)
593 type(state) :: sCT, s
594 type(ct_velocity) :: vcts
595 double precision,
intent(in) :: fC(ixI^S,1:nwflux,1:ndim)
596 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
601 integer,
intent(in) :: ixO^L
607 type(state),
target :: psa(max_blocks)
608 double precision,
intent(in) :: qtC
609 integer :: iigrid, igrid
613 do iigrid=1,igridstail; igrid=igrids(iigrid);
614 psa(igrid)%w = 0.0d0*psa(igrid)%w
623 type(state),
target :: psa(max_blocks)
624 type(state),
target :: psb(max_blocks)
625 double precision,
intent(in) :: qdt
626 double precision,
intent(in) :: qtC
627 double precision,
intent(in) :: dtfactor
628 integer :: iigrid, igrid
632 do iigrid=1,igridstail; igrid=igrids(iigrid);
633 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
integer transverse_ghost_cells
extra ghost cells in the transverse dimensions for fluxes of CT
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.