2D AMRCLAW
amr_module.f90
Go to the documentation of this file.
1 module amr_module
2 
3  implicit none
4 
5  save
6 
7  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
8  ! ::::: data structure info.
9  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
10  integer, parameter :: rsize = 5
11  integer, parameter :: nsize = 19
12 
13  ! ::::::: integer part of node descriptor
14  integer, parameter :: levelptr = 1
15  integer, parameter :: tempptr = 2
16  integer, parameter :: errptr = 3
17  integer, parameter :: nestlevel = 4
18  integer, parameter :: cfluxptr = 5
19  integer, parameter :: ffluxptr = 6
20  integer, parameter :: store1 = 7
21  integer, parameter :: store2 = 8
22  integer, parameter :: ndilo = 9
23  integer, parameter :: ndihi = 10
24  integer, parameter :: ndjlo = 11
25  integer, parameter :: ndjhi = 12
26  integer, parameter :: storeaux = 13
27  integer, parameter :: storeflags = 14
28  integer, parameter :: numflags = 15
29  integer, parameter :: domflags_base = 16
30  integer, parameter :: domflags2 = 17
31  integer, parameter :: bndListSt = 18
32  integer, parameter :: bndListNum = 19
33 
34  ! ::::::: real part of node descriptor
35  integer, parameter :: cornxlo = 1
36  integer, parameter :: cornylo = 2
37  integer, parameter :: cornxhi = 3
38  integer, parameter :: cornyhi = 4
39  integer, parameter :: timemult = 5
40 
41  ! ::::::: for linking nodes
42  integer, parameter :: nextfree = 2
43  integer, parameter :: null = 0
44  integer, parameter :: nil = 0
45 
46  integer, parameter :: gridNbor = 1 !use 1st col, 2nd col is nextfree - the link
47 
48  ! ::::::: for flagging points
49  ! TODO: can use one bit for this instead of real?
50  ! needs no refine
51  real(kind=8), parameter :: goodpt = 0.0
52  ! needs refine
53  real(kind=8), parameter :: badpt = 2.0
54  real(kind=8), parameter :: badpro = 3.0
55 
56  real(kind=8), parameter :: NEEDS_TO_BE_SET = 10.e33
57  real(kind=8), parameter :: rinfinity = 10.e32
58  integer, parameter :: iinfinity = 999999999
59  integer, parameter :: horizontal = 1
60  integer, parameter :: vertical = 2
61  integer, parameter :: maxgr = 15000
62  integer, parameter :: maxlv = 10
63  integer, parameter :: maxcl = 5000
64 
65  ! The max1d parameter should be changed if using OpenMP grid based
66  ! looping, usually set to max1d = 60
67  integer, parameter :: max1d = 60
68 
69  integer, parameter :: maxvar = 10
70  integer, parameter :: maxaux = 20
71  integer, parameter :: maxwave = 10
72 
73 
74  ! note use of sentinel in listStart
75  integer :: listOfGrids(maxgr),listStart(0:maxlv+1)
76  integer,parameter :: bndListSize = 8*maxgr
77  integer :: bndList(bndListSize,2) ! guess size, average # nbors 4? manage as linked list
78 
79  real(kind=8) hxposs(maxlv), hyposs(maxlv),possk(maxlv),rnode(rsize, maxgr)
80 
81 
82 
83  real(kind=8) tol, tolsp
84  integer ibuff, mstart, ndfree, ndfree_bnd, lfine, node(nsize, maxgr), &
85  icheck(maxlv),lstart(maxlv),newstl(maxlv), &
86  listsp(maxlv),intratx(maxlv),intraty(maxlv), &
87  kratio(maxlv), iregsz(maxlv),jregsz(maxlv), &
88  iregst(maxlv),jregst(maxlv), &
89  iregend(maxlv),jregend(maxlv), &
90  numgrids(maxlv),numcells(maxlv), &
91  iorder,mxnest,kcheck
92 
93  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
94  ! :::: for alloc array/memory
95  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
96 
97  ! Static memory implementation
98  ! parameter (memsize = 10000000)
99  ! common /calloc/ alloc(memsize)
100 
101  ! Dynamic memory:
102  !real(kind=8), allocatable, target, dimension(:) :: storage
103  !real(kind=8), pointer, dimension(:) :: alloc ! old way, changed mjb Sept. 2014
104  real(kind=8), allocatable, dimension(:) :: alloc ! new way, use allocatable, not pointer
105  integer memsize
106 
107  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\
108  ! ::::: for space management of alloc array
109  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
110  integer, parameter :: lfdim=5000
111  integer lfree(lfdim,2),lenf
112 
113  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
114  ! ::::: domain description variables
115  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
116  logical xperdom, yperdom, spheredom
117  real(kind=8) :: xupper, yupper, xlower, ylower
118  integer :: nghost, mthbc(4)
119 
120  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
121  ! ::::: collect stats
122  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
123  real(kind=8) rvoll(maxlv),evol,rvol,avenumgrids(maxlv)
124  integer :: iregridcount(maxlv), tvoll(maxlv)
125  integer :: timeRegridding, timeUpdating, timeValout
126  integer :: timeFlglvl,timeGrdfit2,timeGrdfit3,timeGrdfitAll
127  integer :: timeBound,timeStepgrid
128  integer :: timeFlagger, timeBufnst,timeTick
129  real(kind=8) tvollCPU(maxlv), timeTickCPU
130  real(kind=8) timeBoundCPU,timeStepgridCPU,timeRegriddingCPU
131  real(kind=8) timeValoutCPU
132 
133  integer lentot,lenmax,lendim
134 
135  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
136  ! ::::: method parameters
137  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
138  character(len=10), allocatable :: auxtype(:)
139  integer method(7), mwaves, mcapa, dimensional_split
140  integer, allocatable :: mthlim(:)
141  real(kind=8) cfl,cflmax,cflv1,cfl_level
142 
143  logical :: use_fwaves
144  logical :: flag_richardson,flag_gradient
145  integer :: verbosity_regrid
146 
147  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
148  ! ::::: Parameters and variables related to I/O and checkpointing
149  ! ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
150  logical printout,matlabout,ncarout
151 
152  ! variables for conservation checking:
153  real(kind=8) tmass0
154 
155  ! variables for specifying output format
156  integer :: output_style, nstop, nout, iout
157  real(kind=8), allocatable :: tout(:)
158  real(kind=8) :: t0, tfinal
159  real(kind=8) :: tstart_thisrun ! /= t0 in case of restart
160  integer :: nq_components, naux_components, output_format
161  integer, allocatable :: output_q_components(:)
162  integer, allocatable :: output_aux_components(:)
163  logical :: output_aux_onlyonce
164 
165  ! checkpointing:
166  integer :: checkpt_style, nchkpt, checkpt_interval
167  real(kind=8), allocatable :: tchk(:)
168 
169  integer :: matlabu
170 
171  ! USE UNITS NUMBERS < 89.
172  ! 89 and + numthreads taken by gauge output
173  integer, parameter :: parmunit = 12
174  integer, parameter :: chkunit = 10
175  integer, parameter :: inunit = 5
176  integer, parameter :: outunit = 66
177  integer, parameter :: pltunit1 = 3
178  integer, parameter :: rstunit = 9
179  integer, parameter :: dbugunit = 11
180  integer, parameter :: matunit = 70
181 
182  ! :::: Debugging flags (verbose output)
183  logical &
184  dprint, & ! domain flags output
185  eprint, & ! error estimation output
186  edebug, & ! even more error estimation output
187  gprint, & ! verbose grid generation (clustering,colating...)
188  nprint, & ! nestck reporting
189  pprint, & ! projec tagged pts.
190  rprint, & ! regridding - summary of new grids
191  sprint, & ! space (memory) output
192  tprint, & ! tick (time stepping) reporting
193  uprint ! updating/upbnding reporting
194 
195 
196  ! Restart file name:
197  character(len=200) :: rstfile
198  logical :: check_a
199 
200 end module amr_module