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)
129 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
130 call eos%update_eos(ixg^
ll,ixg^
ll,ps(igrid)%w,ps(igrid)%x)
140 t_advance_local = mpi_wtime() - t_advance_start
142 call mpi_gather(t_advance_local,1,mpi_double_precision, &
144 call mpi_gather(lb_compute_accum,1,mpi_double_precision, &
146 call mpi_gather(
lb_tc_accum,1,mpi_double_precision, &
150 call mpi_gather(
lb_rt_accum,1,mpi_double_precision, &
152 tmax = maxval(t_all_ranks)
153 tmean = sum(t_all_ranks)/dble(
npe)
154 cmax = maxval(c_all_ranks)
155 cmean = sum(c_all_ranks)/dble(
npe)
156 tcmax = maxval(tc_all_ranks)
157 tcmean = sum(tc_all_ranks)/dble(
npe)
158 coolmax = maxval(cool_all_ranks)
159 coolmean = sum(cool_all_ranks)/dble(
npe)
160 rtmax = maxval(rt_all_ranks)
161 rtmean = sum(rt_all_ranks)/dble(
npe)
162 if (tmean > 0.0d0)
then
167 if (cmean > 0.0d0)
then
172 if (tcmean > 0.0d0)
then
173 ratiotc = tcmax/tcmean
177 if (coolmean > 0.0d0)
then
178 ratiocool = coolmax/coolmean
182 if (rtmean > 0.0d0)
then
183 ratiort = rtmax/rtmean
189 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') t_all_ranks(ipe)
192 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') c_all_ranks(ipe)
195 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') tc_all_ranks(ipe)
198 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') cool_all_ranks(ipe)
201 write(lb_log_unit,
'(es14.6,1x)',
advance=
'no') rt_all_ranks(ipe)
203 write(lb_log_unit,
'(15(es14.6,1x))') &
204 tmax, tmean, ratio, cmax, cmean, ratioc, &
205 tcmax, tcmean, ratiotc, coolmax, coolmean, ratiocool, &
206 rtmax, rtmean, ratiort
209 call mpi_gather(t_advance_local,1,mpi_double_precision, &
211 call mpi_gather(lb_compute_accum,1,mpi_double_precision, &
213 call mpi_gather(
lb_tc_accum,1,mpi_double_precision, &
217 call mpi_gather(
lb_rt_accum,1,mpi_double_precision, &
229 subroutine advect(idim^LIM)
235 integer,
intent(in) :: idim^lim
236 integer :: iigrid, igrid
243 do iigrid=1,igridstail; igrid=igrids(iigrid);
244 ps1(igrid)%w=ps(igrid)%w
264 do iigrid=1,igridstail; igrid=igrids(iigrid);
265 ps1(igrid)%w=ps(igrid)%w
272 call mpistop(
"unkown onestep time_integrator in advect")
280 fix_conserve_at_step = .false.
290 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
291 ps(igrid)%w = ps(igrid)%w+
rk_b1*(ps1(igrid)%w-ps(igrid)%w)/
rk_a21
301 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
302 ps(igrid)%w = half*ps(igrid)%w+half*ps1(igrid)%w
303 if(
stagger_grid) ps(igrid)%ws = half*ps(igrid)%ws+half*ps1(igrid)%ws
312 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
313 ps(igrid)%w = ps(igrid)%w+2.0d0*(ps2(igrid)%w-ps1(igrid)%w)
314 if(
stagger_grid) ps(igrid)%ws = ps(igrid)%ws+2.0d0*(ps2(igrid)%ws-ps1(igrid)%ws)
322 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
323 ps2(igrid)%w = half*(ps(igrid)%w+ps1(igrid)%w)
324 if(
stagger_grid) ps2(igrid)%ws = half*(ps(igrid)%ws+ps1(igrid)%ws)
329 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
330 ps1(igrid)%w = ps1(igrid)%w+half*
dt*ps(igrid)%w
331 if(
stagger_grid) ps1(igrid)%ws = ps1(igrid)%ws+half*
dt*ps(igrid)%ws
335 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
336 ps(igrid)%w = ps2(igrid)%w+half*
dt*ps(igrid)%w
337 if(
stagger_grid) ps(igrid)%ws = ps2(igrid)%ws+half*
dt*ps(igrid)%ws
343 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
344 ps(igrid)%w = ps(igrid)%w+ps2(igrid)%w-ps1(igrid)%w
345 if(
stagger_grid) ps(igrid)%ws = ps(igrid)%ws+ps2(igrid)%ws-ps1(igrid)%ws
359 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
360 ps2(igrid)%w = ps(igrid)%w
373 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
379 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
380 ps(igrid)%w = half*(ps(igrid)%w + ps1(igrid)%w + ps2(igrid)%w)
381 if(
stagger_grid) ps(igrid)%ws = half*(ps(igrid)%ws + ps1(igrid)%ws + ps2(igrid)%ws)
385 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
386 ps1(igrid)%w = ps1(igrid)%w + (1.0d0 - 2.0d0*
imex222_lambda)*ps2(igrid)%w
394 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
395 ps2(igrid)%w = 2.0d0*ps2(igrid)%w - ps1(igrid)%w -
imex222_lambda*ps2(igrid)%w
404 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
405 ps(igrid)%w = ps(igrid)%w + (ps2(igrid)%w - ps1(igrid)%w) / (2.0d0 *
imex222_lambda)
413 call mpistop(
"unkown twostep time_integrator in advect")
422 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
429 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
440 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
441 ps3(igrid)%w=(ps1(igrid)%w-ps(igrid)%w)/
rk3_a21
446 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
447 ps2(igrid)%w=ps(igrid)%w+
rk3_a31*ps3(igrid)%w
453 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
454 ps(igrid)%w=ps(igrid)%w+
rk3_b1*ps3(igrid)%w &
457 ps(igrid)%ws=ps(igrid)%ws+
rk3_b1*ps3(igrid)%ws &
468 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
469 ps4(igrid)%w=(ps1(igrid)%w-ps(igrid)%w)/
ars_gamma
475 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
476 ps1(igrid)%w=(ps2(igrid)%w-ps1(igrid)%w)/
ars_gamma
481 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
482 ps3(igrid)%w=ps(igrid)%w+(
ars_gamma-1.0d0)*ps4(igrid)%w+(1.0d0-2.0d0*
ars_gamma)*ps1(igrid)%w
484 ps3(igrid)%ws=ps(igrid)%ws+(
ars_gamma-1.0d0)*ps4(igrid)%ws+(1.0d0-2.0d0*
ars_gamma)*ps1(igrid)%ws
490 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
491 ps2(igrid)%w=ps1(igrid)%w+(ps3(igrid)%w-(ps(igrid)%w+ &
494 ps2(igrid)%ws=ps1(igrid)%ws+(ps3(igrid)%ws-(ps(igrid)%ws+ &
501 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
502 ps(igrid)%w=ps(igrid)%w+half*ps2(igrid)%w &
503 +half*(ps4(igrid)%w-ps3(igrid)%w)/
ars_gamma
505 ps(igrid)%ws=ps(igrid)%ws+half*ps2(igrid)%ws &
506 +half*(ps4(igrid)%ws-ps3(igrid)%ws)/
ars_gamma
516 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
517 ps4(igrid)%w=(ps1(igrid)%w-ps(igrid)%w)/
imex_a21
518 ps3(igrid)%w=ps(igrid)%w
520 ps4(igrid)%ws=(ps1(igrid)%ws-ps(igrid)%ws)/
imex_a21
521 ps3(igrid)%ws=ps(igrid)%ws
527 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
528 ps1(igrid)%w=ps1(igrid)%w+
imex_ha21*
dt*ps3(igrid)%w
535 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
536 ps(igrid)%w=ps(igrid)%w+
imex_a31*ps4(igrid)%w &
539 ps(igrid)%ws=ps(igrid)%ws+
imex_a31*ps4(igrid)%ws &
545 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
546 ps3(igrid)%w=ps1(igrid)%w-
imex_a21*ps4(igrid)%w &
549 ps3(igrid)%ws=ps1(igrid)%ws-
imex_a21*ps4(igrid)%ws &
556 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
560 ps2(igrid)%ws=(ps(igrid)%ws-ps3(igrid)%ws-
imex_a31*ps4(igrid)%ws)/
imex_a32 &
566 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
567 ps1(igrid)%w=ps3(igrid)%w+
imex_b1*ps4(igrid)%w+
imex_b2*ps2(igrid)%w
569 ps1(igrid)%ws=ps3(igrid)%ws+
imex_b1*ps4(igrid)%ws+
imex_b2*ps2(igrid)%ws
575 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
576 ps(igrid)%w=ps1(igrid)%w+ps2(igrid)%w-ps(igrid)%w
578 ps(igrid)%ws=ps1(igrid)%ws+ps2(igrid)%ws-ps(igrid)%ws
593 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
594 ps3(igrid)%w = ps(igrid)%w +
imex_a32/
imex_a22 * (ps2(igrid)%w - ps1(igrid)%w)
595 ps(igrid)%w = ps(igrid)%w +
imex_b2 /
imex_a22 * (ps2(igrid)%w - ps1(igrid)%w)
596 ps1(igrid)%w = ps3(igrid)%w
604 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
605 ps(igrid)%w = ps(igrid)%w +
imex_b2 /
imex_ha32 * (ps3(igrid)%w - ps1(igrid)%w)
610 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
611 ps(igrid)%w = ps(igrid)%w +
imex_b3 /
imex_a33 * (ps1(igrid)%w - ps3(igrid)%w)
618 call mpistop(
"unkown threestep time_integrator in advect")
631 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
638 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
645 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
655 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
656 ps2(igrid)%w=ps(igrid)%w
657 ps3(igrid)%w=ps(igrid)%w
659 ps2(igrid)%ws=ps(igrid)%ws
660 ps3(igrid)%ws=ps(igrid)%ws
668 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
669 ps(igrid)%w=(1.0d0/3.0d0)*(-ps(igrid)%w+ps1(igrid)%w+2.0d0*ps2(igrid)%w+ps3(igrid)%w)
671 *(-ps(igrid)%ws+ps1(igrid)%ws+2.0d0*ps2(igrid)%ws+ps3(igrid)%ws)
677 call mpistop(
"unkown fourstep time_integrator in advect")
687 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
694 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
701 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
707 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
714 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
715 ps(igrid)%w=ps3(igrid)%w+
rk_alfa55*ps2(igrid)%w &
718 ps(igrid)%ws=ps3(igrid)%ws+
rk_alfa55*ps2(igrid)%ws &
727 call mpistop(
"unkown fivestep time_integrator in advect")
731 call mpistop(
"unkown time_stepper in advect")
734 end subroutine advect
737 subroutine global_implicit_update(dtfactor,qdt,qtC,psa,psb)
744 double precision,
intent(in) :: qdt
745 double precision,
intent(in) :: qtc
746 double precision,
intent(in) :: dtfactor
748 integer :: iigrid, igrid
752 do iigrid=1,igridstail; igrid=igrids(iigrid);
753 psa(igrid)%w = psb(igrid)%w
762 call getbc(qtc,0.d0,psa,iwstart,nwgc)
764 end subroutine global_implicit_update
767 subroutine evaluate_implicit(qtC,psa)
771 double precision,
intent(in) :: qtc
776 end subroutine evaluate_implicit
779 subroutine advect1(method,dtfactor,idim^LIM,qtC,psa,qt,psb)
786 integer,
intent(in) :: idim^lim
789 double precision,
intent(in) :: dtfactor
790 double precision,
intent(in) :: qtc
791 double precision,
intent(in) :: qt
794 double precision :: qdt
795 double precision :: lb_t0_advect1, lb_t0_block
796 integer :: iigrid, igrid
808 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
812 call eos%update_eos(ixg^
ll,ixg^
ll,psa(igrid)%w,psa(igrid)%x)
813 call advect1_grid(igrid,method(
block%level),qdt,dtfactor,ixg^
ll,idim^lim,&
814 qtc,psa(igrid),qt,psb(igrid),
rnode(rpdx1_:
rnodehi,igrid),ps(igrid)%x)
818 if (
lb_diagnose) lb_compute_accum = lb_compute_accum + (mpi_wtime() - lb_t0_advect1)
831 do iigrid=1,igridstail_active; igrid=igrids_active(iigrid);
839 call getbc(qt+qdt,qdt,psb,iwstart,nwgc)
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