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) :: cs2(ixI^S)
141 integer,
intent(in) :: ixI^L, ixO^L
142 double precision,
intent(in) :: w(ixI^S, nw), x(ixI^S, 1:^ND)
143 double precision,
intent(inout) :: a2max(ndim)
148 integer,
intent(in) :: ixI^L, ixO^L
149 double precision,
intent(inout) :: w(ixI^S, nw)
150 double precision,
intent(in) :: x(ixI^S, 1:^ND)
151 double precision,
intent(out) :: tco_local, Tmax_local
155 double precision,
intent(in) :: trac_alfa,tco,T_peak,T_bott
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) :: v(ixI^S,1:ndir)
167 integer,
intent(in) :: ixI^L, ixO^L
168 double precision,
intent(in) :: w(ixI^S,nw), x(ixI^S,1:^ND)
169 double precision,
intent(out) :: rho(ixI^S)
174 integer,
intent(in) :: ixI^L, ixO^L, idim
175 double precision,
intent(in) :: wprim(ixI^S, nw)
176 double precision,
intent(in) :: x(ixI^S,1:ndim)
177 double precision,
intent(out) :: Hspeed(ixI^S,1:number_species)
180 subroutine sub_get_cbounds(wLC, wRC, wLp, wRp, x, ixI^L, ixO^L, idim, Hspeed, cmax, cmin)
183 integer,
intent(in) :: ixI^L, ixO^L, idim
184 double precision,
intent(in) :: wLC(ixI^S, nw), wRC(ixI^S, nw)
185 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
186 double precision,
intent(in) :: x(ixI^S, 1:^ND)
187 double precision,
intent(inout) :: cmax(ixI^S,1:number_species)
188 double precision,
intent(inout),
optional :: cmin(ixI^S,1:number_species)
189 double precision,
intent(in) :: Hspeed(ixI^S,1:number_species)
194 integer,
intent(in) :: ixI^L, ixO^L, idim
195 double precision,
intent(in) :: wC(ixI^S, 1:nw)
196 double precision,
intent(in) :: w(ixI^S, 1:nw)
197 double precision,
intent(in) :: x(ixI^S, 1:^ND)
198 double precision,
intent(out) :: f(ixI^S, nwflux)
203 integer,
intent(in) :: ixI^L, ixO^L
204 double precision,
intent(in) :: qdt, dtfactor, x(ixI^S, 1:^ND)
205 double precision,
intent(inout) :: wCT(ixI^S, 1:nw), wprim(ixI^S, 1:nw), w(ixI^S, 1:nw)
209 qsourcesplit, active)
211 integer,
intent(in) :: ixI^L, ixO^L
212 double precision,
intent(in) :: qdt, dtfactor
213 double precision,
intent(in) :: wCT(ixI^S, 1:nw), wCTprim(ixI^S,1:nw), x(ixI^S, 1:ndim)
214 double precision,
intent(inout) :: w(ixI^S, 1:nw)
215 logical,
intent(in) :: qsourcesplit
216 logical,
intent(inout) :: active
222 double precision,
intent(in) :: qdt
223 double precision,
intent(in) :: qt
224 logical,
intent(inout) :: active
230 double precision,
intent(in) :: qdt
231 double precision,
intent(in) :: qt
232 logical,
intent(inout) :: active
237 integer,
intent(in) :: igrid
244 double precision,
intent(in) :: qt
245 type(state),
target :: psa(max_blocks)
250 integer,
intent(in) :: ixI^L, ixO^L
251 double precision,
intent(in) :: dx^D, x(ixI^S, 1:^ND)
252 double precision,
intent(in) :: w(ixI^S, 1:nw)
253 double precision,
intent(inout) :: dtnew
258 logical,
intent(in) :: primitive
259 integer,
intent(in) :: ixI^L, ixO^L
260 double precision,
intent(in) :: w(ixI^S,1:nw)
261 logical,
intent(inout) :: w_flag(ixI^S,1:nw)
266 integer,
intent(in) :: ixI^L, ixO^L
267 double precision,
intent(in) :: w(ixI^S,nw)
268 double precision,
intent(in) :: x(ixI^S,1:ndim)
269 double precision,
intent(out):: pth(ixI^S)
274 integer,
intent(in) :: ixI^L, ixO^L
275 double precision,
intent(inout) :: w(ixI^S,nw)
276 double precision,
intent(in) :: x(ixI^S,1:ndim)
281 integer,
intent(in) :: ixI^L, ixO^L
282 double precision,
intent(inout) :: w(ixI^S,nw)
287 integer,
intent(in) :: ixI^L, ixO^L
288 double precision,
intent(in) :: w(ixI^S,nw)
289 double precision,
intent(in) :: x(ixI^S,1:ndim)
290 double precision,
intent(out):: tgas(ixI^S)
295 integer,
intent(in) :: ixI^L, ixO^L
296 double precision,
intent(in) :: w(ixI^S,nw)
297 double precision,
intent(in) :: x(ixI^S,1:ndim)
298 double precision,
intent(out):: trad(ixI^S)
302 integer,
intent(in) :: file_handle
307 logical,
intent(in) :: primitive
308 integer,
intent(in) :: ixI^L,ixO^L
309 double precision,
intent(inout) :: w(ixI^S,1:nw)
310 double precision,
intent(in) :: x(ixI^S,1:ndim)
311 character(len=*),
intent(in) :: subname
316 integer,
intent(in) :: ixI^L, ixO^L
317 double precision,
intent(in) :: w(ixI^S, nw)
318 double precision,
intent(out) :: out(ixO^S)
324 integer,
intent(in) :: ixI^L, ixO^L, idim
325 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
326 double precision,
intent(in) :: cmax(ixI^S)
327 double precision,
intent(in),
optional :: cmin(ixI^S)
328 type(ct_velocity),
intent(inout):: vcts
333 integer,
intent(in) :: ixI^L, ixO^L
334 double precision,
intent(in) :: qt, qdt
336 double precision,
intent(in) :: wprim(ixI^S,1:nw)
338 type(state) :: sCT, s
339 type(ct_velocity) :: vcts
340 double precision,
intent(in) :: fC(ixI^S,1:nwflux,1:ndim)
341 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
346 integer,
intent(in) :: ixO^L
352 type(state),
target :: psa(max_blocks)
353 double precision,
intent(in) :: qtC
358 type(state),
target :: psa(max_blocks)
359 type(state),
target :: psb(max_blocks)
360 double precision,
intent(in) :: qdt
361 double precision,
intent(in) :: qtC
362 double precision,
intent(in) :: dtfactor
367 integer,
intent(in) :: ixI^L, ixO^L
368 double precision,
intent(in) :: wCT(ixI^S,nw),x(ixI^S,1:ndim)
369 double precision,
intent(inout) :: w(ixI^S,nw)
393 call mpistop(
"Error: phys_to_conserved not defined")
396 call mpistop(
"Error: phys_to_primitive not defined")
402 call mpistop(
"Error: no phys_get_cmax not defined")
411 call mpistop(
"Error: no phys_get_cbounds not defined")
414 call mpistop(
"Error: no phys_get_flux not defined")
417 call mpistop(
"Error: no phys_get_dt not defined")
469 integer,
intent(in) :: ixI^L, ixO^L, idir
470 double precision,
intent(in) :: qt
471 double precision,
intent(inout) :: wLC(ixI^S,1:nw), wRC(ixI^S,1:nw)
472 double precision,
intent(inout) :: wLp(ixI^S,1:nw), wRp(ixI^S,1:nw)
478 integer,
intent(in) :: ixI^L, ixO^L, idim
479 double precision,
intent(in) :: wprim(ixI^S, nw)
480 double precision,
intent(in) :: x(ixI^S,1:ndim)
481 double precision,
intent(out) :: Hspeed(ixI^S,1:number_species)
487 integer,
intent(in) :: ixI^L, ixO^L
488 double precision,
intent(in) :: w(ixI^S, nw), x(ixI^S, 1:^ND)
489 double precision,
intent(inout) :: a2max(ndim)
490 call mpistop(
"Error: entered dummy_get_a2max")
495 integer,
intent(in) :: ixI^L, ixO^L
496 double precision,
intent(in) :: qdt, dtfactor, x(ixI^S, 1:^ND)
497 double precision,
intent(inout) :: wCT(ixI^S, 1:nw), wprim(ixI^S,1:nw),w(ixI^S, 1:nw)
501 qsourcesplit, active)
503 integer,
intent(in) :: ixI^L, ixO^L
504 double precision,
intent(in) :: qdt,dtfactor
505 double precision,
intent(in) :: wCT(ixI^S, 1:nw), wCTprim(ixI^S,1:nw), x(ixI^S, 1:ndim)
506 double precision,
intent(inout) :: w(ixI^S, 1:nw)
507 logical,
intent(in) :: qsourcesplit
508 logical,
intent(inout) :: active
514 logical,
intent(in) :: primitive
515 integer,
intent(in) :: ixI^L, ixO^L
516 double precision,
intent(in) :: w(ixI^S,1:nw)
517 logical,
intent(inout) :: w_flag(ixI^S,1:nw)
526 integer,
intent(in) :: ixI^L, ixO^L
527 double precision,
intent(in) :: w(ixI^S, nw)
528 double precision,
intent(in) :: x(ixI^S, 1:ndim)
529 double precision,
intent(out):: pth(ixI^S)
531 call mpistop(
"No get_pthermal method specified")
538 integer,
intent(in) :: ixI^L, ixO^L
539 double precision,
intent(inout) :: w(ixI^S, nw)
540 double precision,
intent(in) :: x(ixI^S, 1:ndim)
549 integer,
intent(in) :: ixI^L, ixO^L
550 double precision,
intent(inout) :: w(ixI^S, nw)
552 call mpistop(
"No get_auxiliary_prim method specified")
557 integer,
intent(in) :: igrid
558 type(state),
target :: psb(max_blocks)
563 integer,
intent(in) :: fh
564 integer,
dimension(MPI_STATUS_SIZE) :: st
568 integer,
parameter :: n_par = 0
570 call mpi_file_write(fh, n_par, 1, mpi_integer, st, er)
575 logical,
intent(in) :: primitive
576 integer,
intent(in) :: ixI^L,ixO^L
577 double precision,
intent(inout) :: w(ixI^S,1:nw)
578 double precision,
intent(in) :: x(ixI^S,1:ndim)
579 character(len=*),
intent(in) :: subname
585 integer,
intent(in) :: ixI^L, ixO^L, idim
586 double precision,
intent(in) :: wLp(ixI^S, nw), wRp(ixI^S, nw)
587 double precision,
intent(in) :: cmax(ixI^S)
588 double precision,
intent(in),
optional :: cmin(ixI^S)
589 type(ct_velocity),
intent(inout):: vcts
594 integer,
intent(in) :: ixI^L, ixO^L
595 double precision,
intent(in) :: qt, qdt
597 double precision,
intent(in) :: wprim(ixI^S,1:nw)
598 type(state) :: sCT, s
599 type(ct_velocity) :: vcts
600 double precision,
intent(in) :: fC(ixI^S,1:nwflux,1:ndim)
601 double precision,
intent(inout) :: fE(ixI^S,sdim:3)
606 integer,
intent(in) :: ixO^L
612 type(state),
target :: psa(max_blocks)
613 double precision,
intent(in) :: qtC
614 integer :: iigrid, igrid
618 do iigrid=1,igridstail; igrid=igrids(iigrid);
619 psa(igrid)%w = 0.0d0*psa(igrid)%w
628 type(state),
target :: psa(max_blocks)
629 type(state),
target :: psb(max_blocks)
630 double precision,
intent(in) :: qdt
631 double precision,
intent(in) :: qtC
632 double precision,
intent(in) :: dtfactor
633 integer :: iigrid, igrid
637 do iigrid=1,igridstail; igrid=igrids(iigrid);
638 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
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_get_cs2), pointer phys_get_cs2
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.