110 integer,
intent(in) :: igrid
111 type(state),
target :: psb(max_blocks)
116 integer,
intent(in) :: ixI^L, ixO^L
117 double precision,
intent(inout) :: w(ixI^S, nw)
118 double precision,
intent(in) :: x(ixI^S, 1:^ND)
123 integer,
intent(in) :: ixI^L, ixO^L, idir
124 double precision,
intent(in) :: qt
125 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
126 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
133 integer,
intent(in) :: ixI^L, ixO^L, idims
134 double precision,
intent(inout) :: w(ixI^S, 1:nw)
135 double precision,
intent(in) :: x(ixI^S, 1:ndim)
136 double precision,
intent(out) :: wb_phi(ixI^S)
137 double precision,
intent(out) :: wb_phi_face(ixI^S)
138 double precision,
intent(out) :: wb_T(ixI^S)
142 wb_phi, wb_phi_face, wb_T)
144 integer,
intent(in) :: ixI^L, ixL^L, ixR^L, idims
145 double precision,
intent(inout) :: wLp(ixI^S, 1:nw), wRp(ixI^S, 1:nw)
146 double precision,
intent(inout) :: w(ixI^S, 1:nw)
147 double precision,
intent(in) :: wb_phi(ixI^S), wb_phi_face(ixI^S)
148 double precision,
intent(in) :: wb_T(ixI^S)
153 integer,
intent(in) :: ixI^L, ixO^L
154 double precision,
intent(inout) :: w(ixI^S, 1:nw)
155 double precision,
intent(in) :: x(ixI^S, 1:ndim)
160 integer,
intent(in) :: ixI^L, ixO^L, idim
161 double precision,
intent(in) :: w(ixI^S, nw), x(ixI^S, 1:^ND)
162 double precision,
intent(inout) :: cmax(ixI^S)
167 integer,
intent(in) :: ixI^L, ixO^L
168 double precision,
intent(inout) :: w(ixI^S, nw)
169 double precision,
intent(in) :: x(ixI^S, 1:^ND)
170 double precision,
intent(out) :: tco_local, Tmax_local
174 double precision,
intent(in) :: trac_alfa,tco,T_peak,T_bott
179 integer,
intent(in) :: ixI^L, ixO^L
180 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:^ND)
181 double precision,
intent(out) :: v(ixI^S,1:ndir)
186 integer,
intent(in) :: ixI^L, ixO^L
187 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:^ND)
188 double precision,
intent(out) :: rho(ixI^S)
193 integer,
intent(in) :: ixI^L, ixO^L, idim
194 double precision,
intent(in) :: wprim(ixI^S, nw)
195 double precision,
intent(in) :: x(ixI^S,1:ndim)
196 double precision,
intent(out) :: Hspeed(ixI^S,1:number_species)
199 subroutine sub_get_cbounds(wLC, wRC, wLp, wRp, x, ixI^L, ixO^L, idim, Hspeed, cmax, cmin)
202 integer,
intent(in) :: ixI^L, ixO^L, idim
203 double precision,
intent(in) :: wLC(ixI^S, nw), wRC(ixI^S, nw)
204 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
205 double precision,
intent(in) :: x(ixI^S, 1:^ND)
206 double precision,
intent(inout) :: cmax(ixI^S,1:number_species)
207 double precision,
intent(inout),
optional :: cmin(ixI^S,1:number_species)
208 double precision,
intent(in) :: Hspeed(ixI^S,1:number_species)
213 integer,
intent(in) :: ixI^L, ixO^L, idim
214 double precision,
intent(in) :: wC(ixI^S, 1:nw)
215 double precision,
intent(in) :: w(ixI^S, 1:nw)
216 double precision,
intent(in) :: x(ixI^S, 1:^ND)
217 double precision,
intent(out) :: f(ixI^S, nwflux)
222 integer,
intent(in) :: ixI^L, ixO^L
223 double precision,
intent(inout) :: w(ixI^S, nw)
224 double precision,
intent(in) :: x(ixI^S, 1:ndim)
229 integer,
intent(in) :: ixi^
l, ixo^
l
230 double precision,
intent(in) :: w(ixi^s, nw)
231 double precision :: ei(ixo^s)
236 integer,
intent(in) :: ixI^L, ixO^L
237 double precision,
intent(in) :: qdt, dtfactor, x(ixI^S, 1:^ND)
238 double precision,
intent(inout) :: wCT(ixI^S, 1:nw), wprim(ixI^S, 1:nw), w(ixI^S, 1:nw)
242 qsourcesplit, active)
244 integer,
intent(in) :: ixI^L, ixO^L
245 double precision,
intent(in) :: qdt, dtfactor
246 double precision,
intent(in) :: wCT(ixI^S, 1:nw), wCTprim(ixI^S,1:nw), x(ixI^S, 1:ndim)
247 double precision,
intent(inout) :: w(ixI^S, 1:nw)
248 logical,
intent(in) :: qsourcesplit
249 logical,
intent(inout) :: active
255 double precision,
intent(in) :: qdt
256 double precision,
intent(in) :: qt
257 logical,
intent(inout) :: active
263 double precision,
intent(in) :: qdt
264 double precision,
intent(in) :: qt
265 logical,
intent(inout) :: active
270 integer,
intent(in) :: igrid
277 double precision,
intent(in) :: qt
278 type(state),
target :: psa(max_blocks)
283 integer,
intent(in) :: ixI^L, ixO^L
284 double precision,
intent(in) :: dx^D, x(ixI^S, 1:^ND)
285 double precision,
intent(in) :: w(ixI^S, 1:nw)
286 double precision,
intent(inout) :: dtnew
291 logical,
intent(in) :: primitive
292 integer,
intent(in) :: ixI^L, ixO^L
293 double precision,
intent(in) :: w(ixI^S,1:nw)
294 logical,
intent(inout) :: w_flag(ixI^S,1:nw)
299 integer,
intent(in) :: ixI^L, ixO^L
300 double precision,
intent(in) :: w(ixI^S,nw)
301 double precision,
intent(in) :: x(ixI^S,1:ndim)
302 double precision,
intent(out):: pth(ixI^S)
307 integer,
intent(in) :: ixI^L, ixO^L
308 double precision,
intent(inout) :: w(ixI^S,nw)
309 double precision,
intent(in) :: x(ixI^S,1:ndim)
314 integer,
intent(in) :: ixI^L, ixO^L
315 double precision,
intent(inout) :: w(ixI^S,nw)
320 integer,
intent(in) :: ixI^L, ixO^L
321 double precision,
intent(in) :: w(ixI^S,nw)
322 double precision,
intent(in) :: x(ixI^S,1:ndim)
323 double precision,
intent(out):: tgas(ixI^S)
328 integer,
intent(in) :: ixI^L, ixO^L
329 double precision,
intent(in) :: w(ixI^S,nw)
330 double precision,
intent(in) :: x(ixI^S,1:ndim)
331 double precision,
intent(out):: cmax(ixI^S)
336 integer,
intent(in) :: ixI^L, ixO^L
337 double precision,
intent(in) :: w(ixI^S,nw)
338 double precision,
intent(in) :: x(ixI^S,1:ndim)
339 double precision,
intent(out):: cmax(ixI^S)
343 integer,
intent(in) :: file_handle
348 logical,
intent(in) :: primitive
349 integer,
intent(in) :: ixI^L,ixO^L
350 double precision,
intent(inout) :: w(ixI^S,1:nw)
351 double precision,
intent(in) :: x(ixI^S,1:ndim)
352 character(len=*),
intent(in) :: subname
358 integer,
intent(in) :: ixI^L, ixO^L, idim
359 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
360 double precision,
intent(in) :: cmax(ixI^S)
361 double precision,
intent(in),
optional :: cmin(ixI^S)
362 type(ct_velocity),
intent(inout):: vcts
367 integer,
intent(in) :: ixI^L, ixO^L
368 double precision,
intent(in) :: qt, qdt
370 double precision,
intent(in) :: wprim(ixI^S,1:nw)
372 type(state) :: sCT, s
373 type(ct_velocity) :: vcts
374 double precision,
intent(in) :: fC(ixI^S,1:nwflux,1:ndim)
375 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
380 integer,
intent(in) :: ixO^L
386 type(state),
target :: psa(max_blocks)
387 double precision,
intent(in) :: qtC
392 type(state),
target :: psa(max_blocks)
393 type(state),
target :: psb(max_blocks)
394 double precision,
intent(in) :: qdt
395 double precision,
intent(in) :: qtC
396 double precision,
intent(in) :: dtfactor
420 call mpistop(
"Error: phys_to_conserved not defined")
423 call mpistop(
"Error: phys_to_primitive not defined")
429 call mpistop(
"Error: no phys_get_cmax not defined")
435 call mpistop(
"Error: no phys_get_cbounds not defined")
438 call mpistop(
"Error: no phys_get_flux not defined")
441 call mpistop(
"Error: no phys_get_dt not defined")
493 integer,
intent(in) :: ixI^L, ixO^L, idir
494 double precision,
intent(in) :: qt
495 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
496 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
502 integer,
intent(in) :: ixI^L, ixO^L, idim
503 double precision,
intent(in) :: wprim(ixI^S, nw)
504 double precision,
intent(in) :: x(ixI^S,1:ndim)
505 double precision,
intent(out) :: Hspeed(ixI^S,1:number_species)
510 integer,
intent(in) :: ixI^L, ixO^L
511 double precision,
intent(in) :: qdt, dtfactor, x(ixI^S, 1:^ND)
512 double precision,
intent(inout) :: wCT(ixI^S, 1:nw), wprim(ixI^S,1:nw),w(ixI^S, 1:nw)
516 qsourcesplit, active)
518 integer,
intent(in) :: ixI^L, ixO^L
519 double precision,
intent(in) :: qdt,dtfactor
520 double precision,
intent(in) :: wCT(ixI^S, 1:nw), wCTprim(ixI^S,1:nw), x(ixI^S, 1:ndim)
521 double precision,
intent(inout) :: w(ixI^S, 1:nw)
522 logical,
intent(in) :: qsourcesplit
523 logical,
intent(inout) :: active
529 logical,
intent(in) :: primitive
530 integer,
intent(in) :: ixI^L, ixO^L
531 double precision,
intent(in) :: w(ixI^S,1:nw)
532 logical,
intent(inout) :: w_flag(ixI^S,1:nw)
541 integer,
intent(in) :: ixI^L, ixO^L
542 double precision,
intent(in) :: w(ixI^S, nw)
543 double precision,
intent(in) :: x(ixI^S, 1:ndim)
544 double precision,
intent(out):: pth(ixI^S)
546 call mpistop(
"No get_pthermal method specified")
553 integer,
intent(in) :: ixI^L, ixO^L
554 double precision,
intent(inout) :: w(ixI^S, nw)
555 double precision,
intent(in) :: x(ixI^S, 1:ndim)
564 integer,
intent(in) :: ixI^L, ixO^L
565 double precision,
intent(inout) :: w(ixI^S, nw)
567 call mpistop(
"No get_auxiliary_prim method specified")
572 integer,
intent(in) :: igrid
573 type(state),
target :: psb(max_blocks)
578 integer,
intent(in) :: fh
579 integer,
dimension(MPI_STATUS_SIZE) :: st
583 integer,
parameter :: n_par = 0
585 call mpi_file_write(fh, n_par, 1, mpi_integer, st, er)
590 logical,
intent(in) :: primitive
591 integer,
intent(in) :: ixI^L,ixO^L
592 double precision,
intent(inout) :: w(ixI^S,1:nw)
593 double precision,
intent(in) :: x(ixI^S,1:ndim)
594 character(len=*),
intent(in) :: subname
600 integer,
intent(in) :: ixI^L, ixO^L, idim
601 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
602 double precision,
intent(in) :: cmax(ixI^S)
603 double precision,
intent(in),
optional :: cmin(ixI^S)
604 type(ct_velocity),
intent(inout):: vcts
609 integer,
intent(in) :: ixI^L, ixO^L
610 double precision,
intent(in) :: qt, qdt
612 double precision,
intent(in) :: wprim(ixI^S,1:nw)
613 type(state) :: sCT, s
614 type(ct_velocity) :: vcts
615 double precision,
intent(in) :: fC(ixI^S,1:nwflux,1:ndim)
616 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
621 integer,
intent(in) :: ixO^L
627 type(state),
target :: psa(max_blocks)
628 double precision,
intent(in) :: qtC
629 integer :: iigrid, igrid
633 do iigrid=1,igridstail; igrid=igrids(iigrid);
634 psa(igrid)%w = 0.0d0*psa(igrid)%w
643 type(state),
target :: psa(max_blocks)
644 type(state),
target :: psb(max_blocks)
645 double precision,
intent(in) :: qdt
646 double precision,
intent(in) :: qtC
647 double precision,
intent(in) :: dtfactor
648 integer :: iigrid, igrid
652 do iigrid=1,igridstail; igrid=igrids(iigrid);
653 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_check_params), pointer phys_bind_eos_to_source
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_wb_transform), pointer phys_wb_transform
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_e_to_ei), pointer phys_e_to_ei
procedure(sub_get_flux), pointer phys_get_flux
procedure(sub_e_to_ei), pointer phys_ei_to_e
procedure(sub_evaluate_implicit), pointer phys_evaluate_implicit
subroutine dummy_get_auxiliary(ixil, ixol, w, x)
subroutine dummy_face_to_center(ixol, s)
procedure(sub_get_pthermal), pointer phys_get_gamma1
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_wb_inverse), pointer phys_wb_inverse
procedure(sub_get_dt), pointer phys_get_dt
subroutine dummy_update_faces(ixil, ixol, qt, qdt, wprim, fc, fe, sct, s, vcts)
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_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
procedure(sub_wb_prolong), pointer phys_wb_prolong
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.
procedure(sub_get_ei), pointer phys_get_ei
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...
procedure(sub_get_rfactor), pointer phys_get_rfactor
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_prolong
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
procedure(sub_convert), pointer phys_from_prolong
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)
procedure(sub_get_csrad2), pointer phys_get_csrad2
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.