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,
allocatable,
save :: rt_all_ranks(:)
42 double precision :: cmax, cmean, ratioc
43 double precision :: tcmax, tcmean, ratiotc
44 double precision :: coolmax, coolmean, ratiocool
45 double precision :: rtmax, rtmean, ratiort
46 integer,
save :: lb_log_unit = -1
47 logical,
save :: lb_first_call = .true.
49 double precision :: tmax, tmean, ratio
50 character(len=256) :: lb_log_name
54 if (lb_first_call .and.
mype==0)
then
55 allocate(t_all_ranks(
npe))
56 allocate(c_all_ranks(
npe))
57 allocate(tc_all_ranks(
npe))
58 allocate(cool_all_ranks(
npe))
59 allocate(rt_all_ranks(
npe))
60 write(lb_log_name,
'(a,a)') trim(
base_filename),
'rank_timing.log'
61 open(newunit=lb_log_unit, file=trim(lb_log_name), status=
'replace', action=
'write')
62 write(lb_log_unit,
'(a)',
advance=
'no')
'# it time '
64 write(lb_log_unit,
'(a,i0,a)',
advance=
'no')
't_rank',ipe,
' '
67 write(lb_log_unit,
'(a,i0,a)',
advance=
'no')
'c_rank',ipe,
' '
70 write(lb_log_unit,
'(a,i0,a)',
advance=
'no')
't_tc_rank',ipe,
' '
73 write(lb_log_unit,
'(a,i0,a)',
advance=
'no')
't_cool_rank',ipe,
' '
76 write(lb_log_unit,
'(a,i0,a)',
advance=
'no')
't_rt_rank',ipe,
' '
78 write(lb_log_unit,
'(a)',
advance=
'no')
'tmax tmean R cmax cmean Rc '
79 write(lb_log_unit,
'(a)',
advance=
'no')
'tcmax tcmean Rtc coolmax coolmean Rcool '
80 write(lb_log_unit,
'(a)')
'rtmax rtmean Rrt'
82 lb_first_call = .false.
83 else if (lb_first_call)
then
84 lb_first_call = .false.
86 t_advance_start = mpi_wtime()
87 lb_compute_accum = 0.0d0
109 call advect(idimsplit,idimsplit)
114 do idimsplit=
ndim,1,-1
115 call advect(idimsplit,idimsplit)
134 t_advance_local = mpi_wtime() - t_advance_start
136 call mpi_gather(t_advance_local,1,mpi_double_precision, &
138 call mpi_gather(lb_compute_accum,1,mpi_double_precision, &
140 call mpi_gather(
lb_tc_accum,1,mpi_double_precision, &
144 call mpi_gather(
lb_rt_accum,1,mpi_double_precision, &
146 tmax = maxval(t_all_ranks)
147 tmean = sum(t_all_ranks)/dble(
npe)
148 cmax = maxval(c_all_ranks)
149 cmean = sum(c_all_ranks)/dble(
npe)
150 tcmax = maxval(tc_all_ranks)
151 tcmean = sum(tc_all_ranks)/dble(
npe)
152 coolmax = maxval(cool_all_ranks)
153 coolmean = sum(cool_all_ranks)/dble(
npe)
154 rtmax = maxval(rt_all_ranks)
155 rtmean = sum(rt_all_ranks)/dble(
npe)
156 if (tmean > 0.0d0)
then
161 if (cmean > 0.0d0)
then
166 if (tcmean > 0.0d0)
then
167 ratiotc = tcmax/tcmean
171 if (coolmean > 0.0d0)
then
172 ratiocool = coolmax/coolmean
176 if (rtmean > 0.0d0)
then
177 ratiort = rtmax/rtmean
183 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') t_all_ranks(ipe)
186 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') c_all_ranks(ipe)
189 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') tc_all_ranks(ipe)
192 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') cool_all_ranks(ipe)
195 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') rt_all_ranks(ipe)
197 write(lb_log_unit,
'(15(es14.6,1x))') &
198 tmax, tmean, ratio, cmax, cmean, ratioc, &
199 tcmax, tcmean, ratiotc, coolmax, coolmean, ratiocool, &
200 rtmax, rtmean, ratiort
203 call mpi_gather(t_advance_local,1,mpi_double_precision, &
205 call mpi_gather(lb_compute_accum,1,mpi_double_precision, &
207 call mpi_gather(
lb_tc_accum,1,mpi_double_precision, &
211 call mpi_gather(
lb_rt_accum,1,mpi_double_precision, &
223 subroutine advect(idim^LIM)
229 integer,
intent(in) :: idim^lim
230 integer :: iigrid, igrid
237 do iigrid=1,igridstail; igrid=igrids(iigrid);
238 ps1(igrid)%w=ps(igrid)%w
258 do iigrid=1,igridstail; igrid=igrids(iigrid);
259 ps1(igrid)%w=ps(igrid)%w
266 call mpistop(
"unkown onestep time_integrator in advect")
274 fix_conserve_at_step = .false.
284 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
285 ps(igrid)%w = ps(igrid)%w+
rk_b1*(ps1(igrid)%w-ps(igrid)%w)/
rk_a21
295 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
296 ps(igrid)%w = half*ps(igrid)%w+half*ps1(igrid)%w
297 if(
stagger_grid) ps(igrid)%ws = half*ps(igrid)%ws+half*ps1(igrid)%ws
306 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
307 ps(igrid)%w = ps(igrid)%w+2.0d0*(ps2(igrid)%w-ps1(igrid)%w)
308 if(
stagger_grid) ps(igrid)%ws = ps(igrid)%ws+2.0d0*(ps2(igrid)%ws-ps1(igrid)%ws)
316 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
317 ps2(igrid)%w = half*(ps(igrid)%w+ps1(igrid)%w)
318 if(
stagger_grid) ps2(igrid)%ws = half*(ps(igrid)%ws+ps1(igrid)%ws)
323 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
324 ps1(igrid)%w = ps1(igrid)%w+half*
dt*ps(igrid)%w
325 if(
stagger_grid) ps1(igrid)%ws = ps1(igrid)%ws+half*
dt*ps(igrid)%ws
329 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
330 ps(igrid)%w = ps2(igrid)%w+half*
dt*ps(igrid)%w
331 if(
stagger_grid) ps(igrid)%ws = ps2(igrid)%ws+half*
dt*ps(igrid)%ws
337 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
338 ps(igrid)%w = ps(igrid)%w+ps2(igrid)%w-ps1(igrid)%w
339 if(
stagger_grid) ps(igrid)%ws = ps(igrid)%ws+ps2(igrid)%ws-ps1(igrid)%ws
353 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
354 ps2(igrid)%w = ps(igrid)%w
367 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
373 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
374 ps(igrid)%w = half*(ps(igrid)%w + ps1(igrid)%w + ps2(igrid)%w)
375 if(
stagger_grid) ps(igrid)%ws = half*(ps(igrid)%ws + ps1(igrid)%ws + ps2(igrid)%ws)
379 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
380 ps1(igrid)%w = ps1(igrid)%w + (1.0d0 - 2.0d0*
imex222_lambda)*ps2(igrid)%w
388 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
389 ps2(igrid)%w = 2.0d0*ps2(igrid)%w - ps1(igrid)%w -
imex222_lambda*ps2(igrid)%w
398 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
399 ps(igrid)%w = ps(igrid)%w + (ps2(igrid)%w - ps1(igrid)%w) / (2.0d0 *
imex222_lambda)
407 call mpistop(
"unkown twostep time_integrator in advect")
416 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
423 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
434 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
435 ps3(igrid)%w=(ps1(igrid)%w-ps(igrid)%w)/
rk3_a21
440 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
441 ps2(igrid)%w=ps(igrid)%w+
rk3_a31*ps3(igrid)%w
447 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
448 ps(igrid)%w=ps(igrid)%w+
rk3_b1*ps3(igrid)%w &
451 ps(igrid)%ws=ps(igrid)%ws+
rk3_b1*ps3(igrid)%ws &
462 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
463 ps4(igrid)%w=(ps1(igrid)%w-ps(igrid)%w)/
ars_gamma
469 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
470 ps1(igrid)%w=(ps2(igrid)%w-ps1(igrid)%w)/
ars_gamma
475 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
476 ps3(igrid)%w=ps(igrid)%w+(
ars_gamma-1.0d0)*ps4(igrid)%w+(1.0d0-2.0d0*
ars_gamma)*ps1(igrid)%w
478 ps3(igrid)%ws=ps(igrid)%ws+(
ars_gamma-1.0d0)*ps4(igrid)%ws+(1.0d0-2.0d0*
ars_gamma)*ps1(igrid)%ws
484 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
485 ps2(igrid)%w=ps1(igrid)%w+(ps3(igrid)%w-(ps(igrid)%w+ &
488 ps2(igrid)%ws=ps1(igrid)%ws+(ps3(igrid)%ws-(ps(igrid)%ws+ &
495 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
496 ps(igrid)%w=ps(igrid)%w+half*ps2(igrid)%w &
497 +half*(ps4(igrid)%w-ps3(igrid)%w)/
ars_gamma
499 ps(igrid)%ws=ps(igrid)%ws+half*ps2(igrid)%ws &
500 +half*(ps4(igrid)%ws-ps3(igrid)%ws)/
ars_gamma
510 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
511 ps4(igrid)%w=(ps1(igrid)%w-ps(igrid)%w)/
imex_a21
512 ps3(igrid)%w=ps(igrid)%w
514 ps4(igrid)%ws=(ps1(igrid)%ws-ps(igrid)%ws)/
imex_a21
515 ps3(igrid)%ws=ps(igrid)%ws
521 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
522 ps1(igrid)%w=ps1(igrid)%w+
imex_ha21*
dt*ps3(igrid)%w
529 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
530 ps(igrid)%w=ps(igrid)%w+
imex_a31*ps4(igrid)%w &
533 ps(igrid)%ws=ps(igrid)%ws+
imex_a31*ps4(igrid)%ws &
539 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
540 ps3(igrid)%w=ps1(igrid)%w-
imex_a21*ps4(igrid)%w &
543 ps3(igrid)%ws=ps1(igrid)%ws-
imex_a21*ps4(igrid)%ws &
550 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
554 ps2(igrid)%ws=(ps(igrid)%ws-ps3(igrid)%ws-
imex_a31*ps4(igrid)%ws)/
imex_a32 &
560 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
561 ps1(igrid)%w=ps3(igrid)%w+
imex_b1*ps4(igrid)%w+
imex_b2*ps2(igrid)%w
563 ps1(igrid)%ws=ps3(igrid)%ws+
imex_b1*ps4(igrid)%ws+
imex_b2*ps2(igrid)%ws
569 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
570 ps(igrid)%w=ps1(igrid)%w+ps2(igrid)%w-ps(igrid)%w
572 ps(igrid)%ws=ps1(igrid)%ws+ps2(igrid)%ws-ps(igrid)%ws
587 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
588 ps3(igrid)%w = ps(igrid)%w +
imex_a32/
imex_a22 * (ps2(igrid)%w - ps1(igrid)%w)
589 ps(igrid)%w = ps(igrid)%w +
imex_b2 /
imex_a22 * (ps2(igrid)%w - ps1(igrid)%w)
590 ps1(igrid)%w = ps3(igrid)%w
598 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
599 ps(igrid)%w = ps(igrid)%w +
imex_b2 /
imex_ha32 * (ps3(igrid)%w - ps1(igrid)%w)
604 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
605 ps(igrid)%w = ps(igrid)%w +
imex_b3 /
imex_a33 * (ps1(igrid)%w - ps3(igrid)%w)
612 call mpistop(
"unkown threestep time_integrator in advect")
625 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
632 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
639 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
649 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
650 ps2(igrid)%w=ps(igrid)%w
651 ps3(igrid)%w=ps(igrid)%w
653 ps2(igrid)%ws=ps(igrid)%ws
654 ps3(igrid)%ws=ps(igrid)%ws
662 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
663 ps(igrid)%w=(1.0d0/3.0d0)*(-ps(igrid)%w+ps1(igrid)%w+2.0d0*ps2(igrid)%w+ps3(igrid)%w)
665 *(-ps(igrid)%ws+ps1(igrid)%ws+2.0d0*ps2(igrid)%ws+ps3(igrid)%ws)
671 call mpistop(
"unkown fourstep time_integrator in advect")
681 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
688 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
695 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
701 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
708 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
709 ps(igrid)%w=ps3(igrid)%w+
rk_alfa55*ps2(igrid)%w &
712 ps(igrid)%ws=ps3(igrid)%ws+
rk_alfa55*ps2(igrid)%ws &
721 call mpistop(
"unkown fivestep time_integrator in advect")
725 call mpistop(
"unkown time_stepper in advect")
728 end subroutine advect
731 subroutine global_implicit_update(dtfactor,qdt,qtC,psa,psb)
738 double precision,
intent(in) :: qdt
739 double precision,
intent(in) :: qtc
740 double precision,
intent(in) :: dtfactor
742 integer :: iigrid, igrid
746 do iigrid=1,igridstail; igrid=igrids(iigrid);
747 psa(igrid)%w = psb(igrid)%w
756 call getbc(qtc,0.d0,psa,iwstart,nwgc)
758 end subroutine global_implicit_update
761 subroutine evaluate_implicit(qtC,psa)
765 double precision,
intent(in) :: qtc
770 end subroutine evaluate_implicit
773 subroutine advect1(method,dtfactor,idim^LIM,qtC,psa,qt,psb)
780 integer,
intent(in) :: idim^lim
783 double precision,
intent(in) :: dtfactor
784 double precision,
intent(in) :: qtc
785 double precision,
intent(in) :: qt
788 double precision :: qdt
789 double precision :: lb_t0_advect1, lb_t0_block
790 integer :: iigrid, igrid
802 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
806 call advect1_grid(igrid,method(
block%level),qdt,dtfactor,ixg^
ll,idim^lim,&
807 qtc,psa(igrid),qt,psb(igrid),
rnode(rpdx1_:
rnodehi,igrid),ps(igrid)%x)
811 if (
lb_diagnose) lb_compute_accum = lb_compute_accum + (mpi_wtime() - lb_t0_advect1)
824 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
832 call getbc(qt+qdt,qdt,psb,iwstart,nwgc)
836 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
837 call eos%update_eos(ixg^
ll,ixg^
ll,psb(igrid)%w,psb(igrid)%x)
841 end subroutine advect1
844 subroutine advect1_grid(igrid,method,qdt,dtfactor,ixI^L,idim^LIM,qtC,sCT,qt,s,dxs,x)
856 integer,
intent(in) :: igrid,method
857 integer,
intent(in) :: ixi^
l, idim^lim
858 double precision,
intent(in) :: qdt, dtfactor, qtc, qt, dxs(
ndim), x(ixi^s,1:
ndim)
859 type(state),
target :: sct, s
862 double precision :: fc(ixi^s,1:nwflux,1:
ndim)
864 double precision :: fe(ixi^s,
sdim:3)
865 double precision :: wprim(ixi^s,1:nw)
869 if(iwstart>1) fc=0.d0
871 ixo^
l=ixi^
l^lsubnghostcells;
874 call finite_volume(method,qdt,dtfactor,ixi^
l,ixo^
l,idim^lim,qtc,sct,qt,s,fc,fe,dxs,x)
876 call centdiff(method,qdt,dtfactor,ixi^
l,ixo^
l,idim^lim,qtc,sct,qt,s,fc,fe,dxs,x)
878 call hancock(qdt,dtfactor,ixi^
l,ixo^
l,idim^lim,qtc,sct,qt,s,dxs,x)
880 call fd(qdt,dtfactor,ixi^
l,ixo^
l,idim^lim,qtc,sct,qt,s,fc,fe,dxs,x)
882 call centdiff(
fs_cd,qdt,dtfactor,ixi^
l,ixo^
l,idim^lim,qtc,sct,qt,s,fc,fe,dxs,x)
883 call tvdlimit(method,qdt,ixi^
l,ixo^
l,idim^lim,sct,qt+qdt,s,fc,dxs,x)
890 dtfactor*dble(idimmax-idimmin+1)/dble(
ndim),&
891 ixi^
l,ixo^
l,1,nw,qtc,sct%w,wprim,qt,s%w,x,.false.)
895 call mpistop(
"unknown flux scheme in advect1_grid")
909 end subroutine advect1_grid
919 integer,
intent(in) :: iit
920 double precision,
intent(in):: qt
922 integer:: iigrid, igrid
930 do iigrid=1,igridstail; igrid=igrids(iigrid);
935 qt,ps(igrid)%w,ps(igrid)%x)
938 call getbc(qt,
dt,ps,iwstart,nwgc)
952 integer,
intent(in) :: iit
953 double precision,
intent(in):: qt
955 integer:: iigrid, igrid
963 do iigrid=1,igridstail; igrid=igrids(iigrid);
969 qt,ps(igrid)%w,ps(igrid)%x)
972 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, dimension(:), allocatable block_cost_rt
Per-step per-block cost of the short-characteristics sweep, indexed by igrid. Separate from block_cos...
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
double precision lb_rt_accum
Per-rank wall time spent in the SC radiative-transfer KBA sweep this step, for the lb_diagnose rank-t...
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