102 integer,
intent(in) :: igrid
103 type(state),
target :: psb(max_blocks)
108 integer,
intent(in) :: ixI^L, ixO^L
109 double precision,
intent(inout) :: w(ixI^S, nw)
110 double precision,
intent(in) :: x(ixI^S, 1:^ND)
115 integer,
intent(in) :: ixI^L, ixO^L, idir
116 double precision,
intent(in) :: qt
117 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
118 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
124 integer,
intent(in) :: ixI^L, ixO^L, idim
125 double precision,
intent(in) :: w(ixI^S, nw), x(ixI^S, 1:^ND)
126 double precision,
intent(inout) :: cmax(ixI^S)
131 integer,
intent(in) :: ixI^L, ixO^L
132 double precision,
intent(inout) :: w(ixI^S, nw)
133 double precision,
intent(in) :: x(ixI^S, 1:^ND)
134 double precision,
intent(out) :: tco_local, Tmax_local
138 double precision,
intent(in) :: trac_alfa,tco,T_peak,T_bott
143 integer,
intent(in) :: ixI^L, ixO^L
144 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:^ND)
145 double precision,
intent(out) :: v(ixI^S,1:ndir)
150 integer,
intent(in) :: ixI^L, ixO^L
151 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:^ND)
152 double precision,
intent(out) :: rho(ixI^S)
157 integer,
intent(in) :: ixI^L, ixO^L, idim
158 double precision,
intent(in) :: wprim(ixI^S, nw)
159 double precision,
intent(in) :: x(ixI^S,1:ndim)
160 double precision,
intent(out) :: Hspeed(ixI^S,1:number_species)
163 subroutine sub_get_cbounds(wLC, wRC, wLp, wRp, x, ixI^L, ixO^L, idim, Hspeed, cmax, cmin)
166 integer,
intent(in) :: ixI^L, ixO^L, idim
167 double precision,
intent(in) :: wLC(ixI^S, nw), wRC(ixI^S, nw)
168 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
169 double precision,
intent(in) :: x(ixI^S, 1:^ND)
170 double precision,
intent(inout) :: cmax(ixI^S,1:number_species)
171 double precision,
intent(inout),
optional :: cmin(ixI^S,1:number_species)
172 double precision,
intent(in) :: Hspeed(ixI^S,1:number_species)
177 integer,
intent(in) :: ixI^L, ixO^L, idim
178 double precision,
intent(in) :: wC(ixI^S, 1:nw)
179 double precision,
intent(in) :: w(ixI^S, 1:nw)
180 double precision,
intent(in) :: x(ixI^S, 1:^ND)
181 double precision,
intent(out) :: f(ixI^S, nwflux)
186 integer,
intent(in) :: ixI^L, ixO^L
187 double precision,
intent(in) :: qdt, dtfactor, x(ixI^S, 1:^ND)
188 double precision,
intent(inout) :: wCT(ixI^S, 1:nw), wprim(ixI^S, 1:nw), w(ixI^S, 1:nw)
192 qsourcesplit, active)
194 integer,
intent(in) :: ixI^L, ixO^L
195 double precision,
intent(in) :: qdt, dtfactor
196 double precision,
intent(in) :: wCT(ixI^S, 1:nw), wCTprim(ixI^S,1:nw), x(ixI^S, 1:ndim)
197 double precision,
intent(inout) :: w(ixI^S, 1:nw)
198 logical,
intent(in) :: qsourcesplit
199 logical,
intent(inout) :: active
205 double precision,
intent(in) :: qdt
206 double precision,
intent(in) :: qt
207 logical,
intent(inout) :: active
213 double precision,
intent(in) :: qdt
214 double precision,
intent(in) :: qt
215 logical,
intent(inout) :: active
220 integer,
intent(in) :: igrid
227 double precision,
intent(in) :: qt
228 type(state),
target :: psa(max_blocks)
233 integer,
intent(in) :: ixI^L, ixO^L
234 double precision,
intent(in) :: dx^D, x(ixI^S, 1:^ND)
235 double precision,
intent(in) :: w(ixI^S, 1:nw)
236 double precision,
intent(inout) :: dtnew
241 logical,
intent(in) :: primitive
242 integer,
intent(in) :: ixI^L, ixO^L
243 double precision,
intent(in) :: w(ixI^S,1:nw)
244 logical,
intent(inout) :: w_flag(ixI^S,1:nw)
249 integer,
intent(in) :: ixI^L, ixO^L
250 double precision,
intent(in) :: w(ixI^S,nw)
251 double precision,
intent(in) :: x(ixI^S,1:ndim)
252 double precision,
intent(out):: pth(ixI^S)
257 integer,
intent(in) :: ixI^L, ixO^L
258 double precision,
intent(inout) :: w(ixI^S,nw)
259 double precision,
intent(in) :: x(ixI^S,1:ndim)
264 integer,
intent(in) :: ixI^L, ixO^L
265 double precision,
intent(inout) :: w(ixI^S,nw)
270 integer,
intent(in) :: ixI^L, ixO^L
271 double precision,
intent(in) :: w(ixI^S,nw)
272 double precision,
intent(in) :: x(ixI^S,1:ndim)
273 double precision,
intent(out):: tgas(ixI^S)
277 integer,
intent(in) :: file_handle
282 logical,
intent(in) :: primitive
283 integer,
intent(in) :: ixI^L,ixO^L
284 double precision,
intent(inout) :: w(ixI^S,1:nw)
285 double precision,
intent(in) :: x(ixI^S,1:ndim)
286 character(len=*),
intent(in) :: subname
291 integer,
intent(in) :: ixI^L, ixO^L
292 double precision,
intent(in) :: w(ixI^S, nw)
293 double precision,
intent(out) :: out(ixO^S)
299 integer,
intent(in) :: ixI^L, ixO^L, idim
300 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
301 double precision,
intent(in) :: cmax(ixI^S)
302 double precision,
intent(in),
optional :: cmin(ixI^S)
303 type(ct_velocity),
intent(inout):: vcts
308 integer,
intent(in) :: ixI^L, ixO^L
309 double precision,
intent(in) :: qt, qdt
311 double precision,
intent(in) :: wprim(ixI^S,1:nw)
313 type(state) :: sCT, s
314 type(ct_velocity) :: vcts
315 double precision,
intent(in) :: fC(ixI^S,1:nwflux,1:ndim)
316 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
321 integer,
intent(in) :: ixO^L
327 type(state),
target :: psa(max_blocks)
328 double precision,
intent(in) :: qtC
333 type(state),
target :: psa(max_blocks)
334 type(state),
target :: psb(max_blocks)
335 double precision,
intent(in) :: qdt
336 double precision,
intent(in) :: qtC
337 double precision,
intent(in) :: dtfactor
342 integer,
intent(in) :: ixI^L, ixO^L
343 double precision,
intent(in) :: wCT(ixI^S,nw),x(ixI^S,1:ndim)
344 double precision,
intent(inout) :: w(ixI^S,nw)
368 call mpistop(
"Error: phys_to_conserved not defined")
371 call mpistop(
"Error: phys_to_primitive not defined")
377 call mpistop(
"Error: no phys_get_cmax not defined")
383 call mpistop(
"Error: no phys_get_cbounds not defined")
386 call mpistop(
"Error: no phys_get_flux not defined")
389 call mpistop(
"Error: no phys_get_dt not defined")
441 integer,
intent(in) :: ixI^L, ixO^L, idir
442 double precision,
intent(in) :: qt
443 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
444 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
450 integer,
intent(in) :: ixI^L, ixO^L, idim
451 double precision,
intent(in) :: wprim(ixI^S, nw)
452 double precision,
intent(in) :: x(ixI^S,1:ndim)
453 double precision,
intent(out) :: Hspeed(ixI^S,1:number_species)
458 integer,
intent(in) :: ixI^L, ixO^L
459 double precision,
intent(in) :: qdt, dtfactor, x(ixI^S, 1:^ND)
460 double precision,
intent(inout) :: wCT(ixI^S, 1:nw), wprim(ixI^S,1:nw),w(ixI^S, 1:nw)
464 qsourcesplit, active)
466 integer,
intent(in) :: ixI^L, ixO^L
467 double precision,
intent(in) :: qdt,dtfactor
468 double precision,
intent(in) :: wCT(ixI^S, 1:nw), wCTprim(ixI^S,1:nw), x(ixI^S, 1:ndim)
469 double precision,
intent(inout) :: w(ixI^S, 1:nw)
470 logical,
intent(in) :: qsourcesplit
471 logical,
intent(inout) :: active
477 logical,
intent(in) :: primitive
478 integer,
intent(in) :: ixI^L, ixO^L
479 double precision,
intent(in) :: w(ixI^S,1:nw)
480 logical,
intent(inout) :: w_flag(ixI^S,1:nw)
489 integer,
intent(in) :: ixI^L, ixO^L
490 double precision,
intent(in) :: w(ixI^S, nw)
491 double precision,
intent(in) :: x(ixI^S, 1:ndim)
492 double precision,
intent(out):: pth(ixI^S)
494 call mpistop(
"No get_pthermal method specified")
501 integer,
intent(in) :: ixI^L, ixO^L
502 double precision,
intent(inout) :: w(ixI^S, nw)
503 double precision,
intent(in) :: x(ixI^S, 1:ndim)
512 integer,
intent(in) :: ixI^L, ixO^L
513 double precision,
intent(inout) :: w(ixI^S, nw)
515 call mpistop(
"No get_auxiliary_prim method specified")
520 integer,
intent(in) :: igrid
521 type(state),
target :: psb(max_blocks)
526 integer,
intent(in) :: fh
527 integer,
dimension(MPI_STATUS_SIZE) :: st
531 integer,
parameter :: n_par = 0
533 call mpi_file_write(fh, n_par, 1, mpi_integer, st, er)
538 logical,
intent(in) :: primitive
539 integer,
intent(in) :: ixI^L,ixO^L
540 double precision,
intent(inout) :: w(ixI^S,1:nw)
541 double precision,
intent(in) :: x(ixI^S,1:ndim)
542 character(len=*),
intent(in) :: subname
548 integer,
intent(in) :: ixI^L, ixO^L, idim
549 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
550 double precision,
intent(in) :: cmax(ixI^S)
551 double precision,
intent(in),
optional :: cmin(ixI^S)
552 type(ct_velocity),
intent(inout):: vcts
557 integer,
intent(in) :: ixI^L, ixO^L
558 double precision,
intent(in) :: qt, qdt
560 double precision,
intent(in) :: wprim(ixI^S,1:nw)
561 type(state) :: sCT, s
562 type(ct_velocity) :: vcts
563 double precision,
intent(in) :: fC(ixI^S,1:nwflux,1:ndim)
564 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
569 integer,
intent(in) :: ixO^L
575 type(state),
target :: psa(max_blocks)
576 double precision,
intent(in) :: qtC
577 integer :: iigrid, igrid
581 do iigrid=1,igridstail; igrid=igrids(iigrid);
582 psa(igrid)%w = 0.0d0*psa(igrid)%w
591 type(state),
target :: psa(max_blocks)
592 type(state),
target :: psb(max_blocks)
593 double precision,
intent(in) :: qdt
594 double precision,
intent(in) :: qtC
595 double precision,
intent(in) :: dtfactor
596 integer :: iigrid, igrid
600 do iigrid=1,igridstail; igrid=igrids(iigrid);
601 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_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)
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
procedure(sub_implicit_update), pointer phys_implicit_update
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.