8 logical :: fix_conserve_at_step = .true.
13 double precision :: lb_compute_accum = 0.0d0
30 integer,
intent(in) :: iit
32 integer :: iigrid, igrid, idimsplit
35 double precision :: t_advance_start, t_advance_local
36 double precision :: t_dummy(1)
37 double precision,
allocatable,
save :: t_all_ranks(:)
38 double precision,
allocatable,
save :: c_all_ranks(:)
39 double precision,
allocatable,
save :: tc_all_ranks(:)
40 double precision,
allocatable,
save :: cool_all_ranks(:)
41 double precision :: cmax, cmean, ratioc
42 double precision :: tcmax, tcmean, ratiotc
43 double precision :: coolmax, coolmean, ratiocool
44 integer,
save :: lb_log_unit = -1
45 logical,
save :: lb_first_call = .true.
47 double precision :: tmax, tmean, ratio
48 character(len=256) :: lb_log_name
52 if (lb_first_call .and.
mype==0)
then
53 allocate(t_all_ranks(
npe))
54 allocate(c_all_ranks(
npe))
55 allocate(tc_all_ranks(
npe))
56 allocate(cool_all_ranks(
npe))
57 write(lb_log_name,
'(a,a)') trim(
base_filename),
'rank_timing.log'
58 open(newunit=lb_log_unit, file=trim(lb_log_name), status=
'replace', action=
'write')
59 write(lb_log_unit,
'(a)',
advance=
'no')
'# it time '
61 write(lb_log_unit,
'(a,i0,a)',
advance=
'no')
't_rank',ipe,
' '
64 write(lb_log_unit,
'(a,i0,a)',
advance=
'no')
'c_rank',ipe,
' '
67 write(lb_log_unit,
'(a,i0,a)',
advance=
'no')
't_tc_rank',ipe,
' '
70 write(lb_log_unit,
'(a,i0,a)',
advance=
'no')
't_cool_rank',ipe,
' '
72 write(lb_log_unit,
'(a)')
'tmax tmean R cmax cmean Rc tcmax tcmean Rtc coolmax coolmean Rcool'
74 lb_first_call = .false.
75 else if (lb_first_call)
then
76 lb_first_call = .false.
78 t_advance_start = mpi_wtime()
79 lb_compute_accum = 0.0d0
95 call advect(idimsplit,idimsplit)
100 do idimsplit=
ndim,1,-1
101 call advect(idimsplit,idimsplit)
115 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
116 call eos%update_eos(ixg^
ll,ixg^
ll,ps(igrid)%w,ps(igrid)%x)
126 t_advance_local = mpi_wtime() - t_advance_start
128 call mpi_gather(t_advance_local,1,mpi_double_precision, &
130 call mpi_gather(lb_compute_accum,1,mpi_double_precision, &
132 call mpi_gather(
lb_tc_accum,1,mpi_double_precision, &
136 tmax = maxval(t_all_ranks)
137 tmean = sum(t_all_ranks)/dble(
npe)
138 cmax = maxval(c_all_ranks)
139 cmean = sum(c_all_ranks)/dble(
npe)
140 tcmax = maxval(tc_all_ranks)
141 tcmean = sum(tc_all_ranks)/dble(
npe)
142 coolmax = maxval(cool_all_ranks)
143 coolmean = sum(cool_all_ranks)/dble(
npe)
144 if (tmean > 0.0d0)
then
149 if (cmean > 0.0d0)
then
154 if (tcmean > 0.0d0)
then
155 ratiotc = tcmax/tcmean
159 if (coolmean > 0.0d0)
then
160 ratiocool = coolmax/coolmean
166 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') t_all_ranks(ipe)
169 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') c_all_ranks(ipe)
172 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') tc_all_ranks(ipe)
175 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') cool_all_ranks(ipe)
177 write(lb_log_unit,
'(12(es14.6,1x))') &
178 tmax, tmean, ratio, cmax, cmean, ratioc, &
179 tcmax, tcmean, ratiotc, coolmax, coolmean, ratiocool
182 call mpi_gather(t_advance_local,1,mpi_double_precision, &
184 call mpi_gather(lb_compute_accum,1,mpi_double_precision, &
186 call mpi_gather(
lb_tc_accum,1,mpi_double_precision, &
197 subroutine advect(idim^LIM)
203 integer,
intent(in) :: idim^lim
204 integer :: iigrid, igrid
211 do iigrid=1,igridstail; igrid=igrids(iigrid);
212 ps1(igrid)%w=ps(igrid)%w
232 do iigrid=1,igridstail; igrid=igrids(iigrid);
233 ps1(igrid)%w=ps(igrid)%w
240 call mpistop(
"unkown onestep time_integrator in advect")
248 fix_conserve_at_step = .false.
258 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
259 ps(igrid)%w = ps(igrid)%w+
rk_b1*(ps1(igrid)%w-ps(igrid)%w)/
rk_a21
269 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
270 ps(igrid)%w = half*ps(igrid)%w+half*ps1(igrid)%w
271 if(
stagger_grid) ps(igrid)%ws = half*ps(igrid)%ws+half*ps1(igrid)%ws
280 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
281 ps(igrid)%w = ps(igrid)%w+2.0d0*(ps2(igrid)%w-ps1(igrid)%w)
282 if(
stagger_grid) ps(igrid)%ws = ps(igrid)%ws+2.0d0*(ps2(igrid)%ws-ps1(igrid)%ws)
290 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
291 ps2(igrid)%w = half*(ps(igrid)%w+ps1(igrid)%w)
292 if(
stagger_grid) ps2(igrid)%ws = half*(ps(igrid)%ws+ps1(igrid)%ws)
297 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
298 ps1(igrid)%w = ps1(igrid)%w+half*
dt*ps(igrid)%w
299 if(
stagger_grid) ps1(igrid)%ws = ps1(igrid)%ws+half*
dt*ps(igrid)%ws
303 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
304 ps(igrid)%w = ps2(igrid)%w+half*
dt*ps(igrid)%w
305 if(
stagger_grid) ps(igrid)%ws = ps2(igrid)%ws+half*
dt*ps(igrid)%ws
311 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
312 ps(igrid)%w = ps(igrid)%w+ps2(igrid)%w-ps1(igrid)%w
313 if(
stagger_grid) ps(igrid)%ws = ps(igrid)%ws+ps2(igrid)%ws-ps1(igrid)%ws
327 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
328 ps2(igrid)%w = ps(igrid)%w
341 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
347 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
348 ps(igrid)%w = half*(ps(igrid)%w + ps1(igrid)%w + ps2(igrid)%w)
349 if(
stagger_grid) ps(igrid)%ws = half*(ps(igrid)%ws + ps1(igrid)%ws + ps2(igrid)%ws)
353 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
354 ps1(igrid)%w = ps1(igrid)%w + (1.0d0 - 2.0d0*
imex222_lambda)*ps2(igrid)%w
362 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
363 ps2(igrid)%w = 2.0d0*ps2(igrid)%w - ps1(igrid)%w -
imex222_lambda*ps2(igrid)%w
372 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
373 ps(igrid)%w = ps(igrid)%w + (ps2(igrid)%w - ps1(igrid)%w) / (2.0d0 *
imex222_lambda)
381 call mpistop(
"unkown twostep time_integrator in advect")
390 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
397 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
408 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
409 ps3(igrid)%w=(ps1(igrid)%w-ps(igrid)%w)/
rk3_a21
414 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
415 ps2(igrid)%w=ps(igrid)%w+
rk3_a31*ps3(igrid)%w
421 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
422 ps(igrid)%w=ps(igrid)%w+
rk3_b1*ps3(igrid)%w &
425 ps(igrid)%ws=ps(igrid)%ws+
rk3_b1*ps3(igrid)%ws &
436 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
437 ps4(igrid)%w=(ps1(igrid)%w-ps(igrid)%w)/
ars_gamma
443 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
444 ps1(igrid)%w=(ps2(igrid)%w-ps1(igrid)%w)/
ars_gamma
449 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
450 ps3(igrid)%w=ps(igrid)%w+(
ars_gamma-1.0d0)*ps4(igrid)%w+(1.0d0-2.0d0*
ars_gamma)*ps1(igrid)%w
452 ps3(igrid)%ws=ps(igrid)%ws+(
ars_gamma-1.0d0)*ps4(igrid)%ws+(1.0d0-2.0d0*
ars_gamma)*ps1(igrid)%ws
458 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
459 ps2(igrid)%w=ps1(igrid)%w+(ps3(igrid)%w-(ps(igrid)%w+ &
462 ps2(igrid)%ws=ps1(igrid)%ws+(ps3(igrid)%ws-(ps(igrid)%ws+ &
469 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
470 ps(igrid)%w=ps(igrid)%w+half*ps2(igrid)%w &
471 +half*(ps4(igrid)%w-ps3(igrid)%w)/
ars_gamma
473 ps(igrid)%ws=ps(igrid)%ws+half*ps2(igrid)%ws &
474 +half*(ps4(igrid)%ws-ps3(igrid)%ws)/
ars_gamma
484 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
485 ps4(igrid)%w=(ps1(igrid)%w-ps(igrid)%w)/
imex_a21
486 ps3(igrid)%w=ps(igrid)%w
488 ps4(igrid)%ws=(ps1(igrid)%ws-ps(igrid)%ws)/
imex_a21
489 ps3(igrid)%ws=ps(igrid)%ws
495 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
496 ps1(igrid)%w=ps1(igrid)%w+
imex_ha21*
dt*ps3(igrid)%w
503 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
504 ps(igrid)%w=ps(igrid)%w+
imex_a31*ps4(igrid)%w &
507 ps(igrid)%ws=ps(igrid)%ws+
imex_a31*ps4(igrid)%ws &
513 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
514 ps3(igrid)%w=ps1(igrid)%w-
imex_a21*ps4(igrid)%w &
517 ps3(igrid)%ws=ps1(igrid)%ws-
imex_a21*ps4(igrid)%ws &
524 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
528 ps2(igrid)%ws=(ps(igrid)%ws-ps3(igrid)%ws-
imex_a31*ps4(igrid)%ws)/
imex_a32 &
534 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
535 ps1(igrid)%w=ps3(igrid)%w+
imex_b1*ps4(igrid)%w+
imex_b2*ps2(igrid)%w
537 ps1(igrid)%ws=ps3(igrid)%ws+
imex_b1*ps4(igrid)%ws+
imex_b2*ps2(igrid)%ws
543 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
544 ps(igrid)%w=ps1(igrid)%w+ps2(igrid)%w-ps(igrid)%w
546 ps(igrid)%ws=ps1(igrid)%ws+ps2(igrid)%ws-ps(igrid)%ws
561 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
562 ps3(igrid)%w = ps(igrid)%w +
imex_a32/
imex_a22 * (ps2(igrid)%w - ps1(igrid)%w)
563 ps(igrid)%w = ps(igrid)%w +
imex_b2 /
imex_a22 * (ps2(igrid)%w - ps1(igrid)%w)
564 ps1(igrid)%w = ps3(igrid)%w
572 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
573 ps(igrid)%w = ps(igrid)%w +
imex_b2 /
imex_ha32 * (ps3(igrid)%w - ps1(igrid)%w)
578 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
579 ps(igrid)%w = ps(igrid)%w +
imex_b3 /
imex_a33 * (ps1(igrid)%w - ps3(igrid)%w)
586 call mpistop(
"unkown threestep time_integrator in advect")
599 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
606 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
613 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
623 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
624 ps2(igrid)%w=ps(igrid)%w
625 ps3(igrid)%w=ps(igrid)%w
627 ps2(igrid)%ws=ps(igrid)%ws
628 ps3(igrid)%ws=ps(igrid)%ws
636 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
637 ps(igrid)%w=(1.0d0/3.0d0)*(-ps(igrid)%w+ps1(igrid)%w+2.0d0*ps2(igrid)%w+ps3(igrid)%w)
639 *(-ps(igrid)%ws+ps1(igrid)%ws+2.0d0*ps2(igrid)%ws+ps3(igrid)%ws)
645 call mpistop(
"unkown fourstep time_integrator in advect")
655 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
662 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
669 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
675 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
682 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
683 ps(igrid)%w=ps3(igrid)%w+
rk_alfa55*ps2(igrid)%w &
686 ps(igrid)%ws=ps3(igrid)%ws+
rk_alfa55*ps2(igrid)%ws &
695 call mpistop(
"unkown fivestep time_integrator in advect")
699 call mpistop(
"unkown time_stepper in advect")
702 end subroutine advect
705 subroutine global_implicit_update(dtfactor,qdt,qtC,psa,psb)
712 double precision,
intent(in) :: qdt
713 double precision,
intent(in) :: qtc
714 double precision,
intent(in) :: dtfactor
716 integer :: iigrid, igrid
720 do iigrid=1,igridstail; igrid=igrids(iigrid);
721 psa(igrid)%w = psb(igrid)%w
730 call getbc(qtc,0.d0,psa,iwstart,nwgc)
732 end subroutine global_implicit_update
735 subroutine evaluate_implicit(qtC,psa)
739 double precision,
intent(in) :: qtc
744 end subroutine evaluate_implicit
747 subroutine advect1(method,dtfactor,idim^LIM,qtC,psa,qt,psb)
754 integer,
intent(in) :: idim^lim
757 double precision,
intent(in) :: dtfactor
758 double precision,
intent(in) :: qtc
759 double precision,
intent(in) :: qt
762 double precision :: qdt
763 double precision :: lb_t0_advect1, lb_t0_block
764 integer :: iigrid, igrid
776 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
780 call eos%update_eos(ixg^
ll,ixg^
ll,psa(igrid)%w,psa(igrid)%x)
781 call advect1_grid(igrid,method(
block%level),qdt,dtfactor,ixg^
ll,idim^lim,&
782 qtc,psa(igrid),qt,psb(igrid),
rnode(rpdx1_:
rnodehi,igrid),ps(igrid)%x)
786 if (
lb_diagnose) lb_compute_accum = lb_compute_accum + (mpi_wtime() - lb_t0_advect1)
799 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
807 call getbc(qt+qdt,qdt,psb,iwstart,nwgc)
809 end subroutine advect1
812 subroutine advect1_grid(igrid,method,qdt,dtfactor,ixI^L,idim^LIM,qtC,sCT,qt,s,dxs,x)
824 integer,
intent(in) :: igrid,method
825 integer,
intent(in) :: ixi^
l, idim^lim
826 double precision,
intent(in) :: qdt, dtfactor, qtc, qt, dxs(
ndim), x(ixi^s,1:
ndim)
827 type(state),
target :: sct, s
830 double precision :: fc(ixi^s,1:nwflux,1:
ndim)
832 double precision :: fe(ixi^s,
sdim:3)
833 double precision :: wprim(ixi^s,1:nw)
837 if(iwstart>1) fc=0.d0
839 ixo^
l=ixi^
l^lsubnghostcells;
842 call finite_volume(method,qdt,dtfactor,ixi^
l,ixo^
l,idim^lim,qtc,sct,qt,s,fc,fe,dxs,x)
844 call centdiff(method,qdt,dtfactor,ixi^
l,ixo^
l,idim^lim,qtc,sct,qt,s,fc,fe,dxs,x)
846 call hancock(qdt,dtfactor,ixi^
l,ixo^
l,idim^lim,qtc,sct,qt,s,dxs,x)
848 call fd(qdt,dtfactor,ixi^
l,ixo^
l,idim^lim,qtc,sct,qt,s,fc,fe,dxs,x)
850 call centdiff(
fs_cd,qdt,dtfactor,ixi^
l,ixo^
l,idim^lim,qtc,sct,qt,s,fc,fe,dxs,x)
851 call tvdlimit(method,qdt,ixi^
l,ixo^
l,idim^lim,sct,qt+qdt,s,fc,dxs,x)
858 dtfactor*dble(idimmax-idimmin+1)/dble(
ndim),&
859 ixi^
l,ixo^
l,1,nw,qtc,sct%w,wprim,qt,s%w,x,.false.)
863 call mpistop(
"unknown flux scheme in advect1_grid")
877 end subroutine advect1_grid
887 integer,
intent(in) :: iit
888 double precision,
intent(in):: qt
890 integer:: iigrid, igrid
898 do iigrid=1,igridstail; igrid=igrids(iigrid);
903 qt,ps(igrid)%w,ps(igrid)%x)
906 call getbc(qt,
dt,ps,iwstart,nwgc)
920 integer,
intent(in) :: iit
921 double precision,
intent(in):: qt
923 integer:: iigrid, igrid
931 do iigrid=1,igridstail; igrid=igrids(iigrid);
937 qt,ps(igrid)%w,ps(igrid)%x)
940 call getbc(qt,
dt,ps,iwstart,nwgc)
Module containing all the time stepping schemes.
subroutine, public process_advanced(iit, qt)
process_advanced is user entry in time loop, just after advance allows to modify solution,...
subroutine, public advance(iit)
Advance all the grids over one time step, including all sources.
subroutine, public process(iit, qt)
process is a user entry in time loop, before output and advance allows to modify solution,...
subroutine, public mpistop(message)
Exit MPI-AMRVAC with an error message.
Equation of state for AMRVAC, handled through a single eos_container object.
Module with finite difference methods for fluxes.
subroutine, public fd(qdt, dtfactor, ixil, ixol, idimslim, qtc, sct, qt, snew, fc, fe, dxs, x)
subroutine, public centdiff(method, qdt, dtfactor, ixil, ixol, idimslim, qtc, sct, qt, s, fc, fe, dxs, x)
Module with finite volume methods for fluxes.
subroutine, public finite_volume(method, qdt, dtfactor, ixil, ixol, idimslim, qtc, sct, qt, snew, fc, fe, dxs, x)
finite volume method
subroutine, public hancock(qdt, dtfactor, ixil, ixol, idimslim, qtc, sct, qt, snew, dxs, x)
The non-conservative Hancock predictor for TVDLF.
Module for flux conservation near refinement boundaries.
subroutine, public init_comm_fix_conserve(idimlim, nwfluxin)
subroutine, public fix_edges(psuse, idimlim)
subroutine, public recvflux(idimlim)
subroutine, public sendflux(idimlim)
subroutine, public store_flux(igrid, fc, idimlim, nwfluxin)
subroutine, public store_edge(igrid, ixil, fe, idimlim)
subroutine, public fix_conserve(psb, idimlim, nw0, nwfluxin)
update ghost cells of all blocks including physical boundaries
subroutine getbc(time, qdt, psb, nwstart, nwbc)
do update ghost cells of all blocks including physical boundaries
This module contains definitions of global parameters and variables and some generic functions/subrou...
type(state), pointer block
Block pointer for using one block and its previous state.
integer, parameter ssprk4
integer, dimension(:), allocatable typepred1
The spatial discretization for the predictor step when using a two step PC method.
integer, parameter fs_tvdlf
double precision rk_alfa41
double precision imex_a32
integer, parameter fs_hlld
integer, parameter imex_euler
logical lb_diagnose
Per-rank load-balance timing diagnostic toggle (off by default). When .true., per-rank wall times are...
double precision, dimension(:), allocatable block_cost
Per-step per-block (per-rank, indexed by igrid) cost accumulator. Reset at start of each advance call...
integer, parameter fs_tvd
double precision rk_beta55
double precision global_time
The global simulation time.
double precision rk_alfa22
integer istep
Index of the sub-step in a multi-step time integrator.
integer, parameter threestep
integer, parameter imex_232
double precision rk_alfa55
integer it
Number of time steps taken.
double precision rk_beta22
integer, parameter fivestep
double precision imex_ha32
double precision ars_gamma
IMEX_ARS3 parameter ars_gamma.
integer, parameter fs_hllcd
integer, parameter ndim
Number of spatial dimensions for grid variables.
integer, parameter nlevelshi
The maximum number of levels in the grid refinement.
integer, parameter ssprk5
logical stagger_grid
True for using stagger grid.
integer, parameter imex_ars3
logical use_particles
Use particles module or not.
integer, parameter fs_tvdmu
integer icomm
The MPI communicator.
double precision rk_alfa54
integer, parameter imex_trapezoidal
integer mype
The rank of the current MPI task.
integer, parameter plevel_
double precision rk_alfa21
double precision dt
global time step
double precision imex222_lambda
IMEX-222(lambda) one-parameter family of schemes.
integer ierrmpi
A global MPI error return code.
integer, dimension(:), allocatable flux_method
Which flux scheme of spatial discretization to use (per grid level)
double precision, dimension(:), allocatable, parameter d
integer, parameter fs_nul
double precision rk_beta54
integer, parameter rk2_alf
integer npe
The number of MPI tasks.
integer, parameter fs_hll
flux schemes
logical lb_automatic
Cost-weighted automatic load balancer toggle (off by default). When .true., the SFC partitioner cuts ...
double precision rk_beta11
logical time_advance
do time evolving
double precision, dimension(:,:), allocatable rnode
Corner coordinates.
double precision rk_alfa31
integer, parameter imex_sp
double precision rk_alfa44
double precision imex_ha22
double precision imex_a31
integer, parameter twostep
integer, parameter onestep
double precision rk_a21
RK2(alfa) method parameters from Butcher tableau.
integer, parameter predictor_corrector
integer, parameter sdim
starting dimension for electric field
integer, parameter forward_euler
logical fix_conserve_global
Whether to apply flux conservation at refinement boundaries.
character(len=std_len) typedimsplit
double precision rk_alfa53
double precision imex_ha21
integer, parameter ssprk3
double precision, dimension(^nd) dxlevel
store unstretched cell size of current level
integer t_stepper
time stepper type
integer, parameter fs_cd4
integer, parameter rk3_bt
integer, parameter fourstep
character(len=std_len) base_filename
Base file name for simulation output, which will be followed by a number.
double precision imex_a21
integer, parameter rnodehi
grid location info (corner coordinates and grid spacing)
integer, parameter fs_hllc
integer max_blocks
The maximum number of grid blocks in a processor.
double precision imex_a22
IMEX_CB3a extra parameters.
integer, parameter imex_cb3a
integer, parameter imex_222
double precision imex_a33
integer t_integrator
time integrator method
integer, parameter fs_hancock
integer, dimension(:,:), allocatable node
integer, parameter ssprk2
double precision rk_alfa33
integer, parameter fs_source
integer, parameter imex_midpoint
double precision rk_beta33
double precision rk_beta44
Module containing all the particle routines.
This module defines the procedures of a physics module. It contains function pointers for the various...
procedure(sub_convert), pointer phys_to_primitive
procedure(sub_evaluate_implicit), pointer phys_evaluate_implicit
procedure(sub_implicit_update), pointer phys_implicit_update
procedure(sub_face_to_center), pointer phys_face_to_center
procedure(sub_special_advance), pointer phys_special_advance
module radiative cooling – add optically thin radiative cooling
double precision, public lb_cool_accum
Per-rank cooling-only compute accumulator for lb_diagnose. Sums the wall time spent inside radiative_...
Module for handling split source terms (split from the fluxes)
subroutine, public addsource2(qdt, dtfactor, ixil, ixol, iwlim, qtc, wct, wctprim, qt, w, x, qsourcesplit, src_active)
Add source within ixO for iws: w=w+qdt*S[wCT].
subroutine, public add_split_source(prior)
Generic supertimestepping method which can be used for multiple source terms in the governing equatio...
double precision, public lb_tc_accum
Per-rank TC/STS compute accumulator for lb_diagnose. Sums the wall time spent inside the iigrid block...
Subroutines for TVD-MUSCL schemes.
subroutine, public tvdlimit(method, qdt, ixil, ixol, idimlim, s, qt, snew, fc, dxs, x)
Module with all the methods that users can customize in AMRVAC.
procedure(process_grid), pointer usr_process_grid
procedure(process_adv_grid), pointer usr_process_adv_grid
procedure(process_global), pointer usr_process_global
procedure(process_adv_global), pointer usr_process_adv_global