ADflow  v1.0
ADflow is a finite volume RANS solver tailored for gradient-based aerodynamic design optimization.
adflow.pyf
Go to the documentation of this file.
1 ! -*- f90 -*-
2 #ifdef USE_COMPLEX
3 python module libadflow_cs ! in
4 #else
5 python module libadflow
6 #endif
7  interface ! in :adflow
8 
9  ! ############################################################################
10  ! ADflow Modules
11  ! ############################################################################
12  module constants ! in :adflow:../../modules/constants.F90
13  use precision
14  integer parameter,optional :: maxstringlen = 256
15  integer parameter,optional :: maxcgnsnamelen = 32
16  integer(kind=inttype) parameter,optional :: eulerequations=1_inttype
17  integer(kind=inttype) parameter,optional :: nsequations=2_inttype
18  integer(kind=inttype) parameter,optional :: ransequations=3_inttype
19  integer(kind=inttype) parameter,optional :: steady=1_inttype
20  integer(kind=inttype) parameter,optional :: unsteady=2_inttype
21  integer(kind=inttype) parameter,optional :: timespectral=3_inttype
22  integer(kind=inttype) parameter,optional :: internalflow=1_inttype
23  integer(kind=inttype) parameter,optional :: externalflow=2_inttype
24  integer(kind=inttype) parameter,optional :: cpconstant=1_inttype
25  integer(kind=inttype) parameter,optional :: cptempcurvefits=2_inttype
26  integer(kind=inttype) parameter,optional :: spalartallmaras=2_inttype
27  integer(kind=inttype) parameter,optional :: spalartallmarasedwards=3_inttype
28  integer(kind=inttype) parameter,optional :: komegawilcox=4_inttype
29  integer(kind=inttype) parameter,optional :: komegamodified=5_inttype
30  integer(kind=inttype) parameter,optional :: ktau=6_inttype
31  integer(kind=inttype) parameter,optional :: mentersst=7_inttype
32  integer(kind=inttype) parameter,optional :: v2f=10_inttype
33  integer(kind=inttype) parameter,optional :: strain=1_inttype
34  integer(kind=inttype) parameter,optional :: vorticity=2_inttype
35  integer(kind=inttype) parameter,optional :: katolaunder=3_inttype
36  integer(kind=inttype) parameter,optional :: dissscalar=1_inttype
37  integer(kind=inttype) parameter,optional :: dissmatrix=2_inttype
38  integer(kind=inttype) parameter,optional :: disscusp=3_inttype
39  integer(kind=inttype) parameter,optional :: upwind=9_inttype
40  integer(kind=inttype) parameter,optional :: roe=1_inttype
41  integer(kind=inttype) parameter,optional :: vanleer=2_inttype
42  integer(kind=inttype) parameter,optional :: ausmdv=3_inttype
43  integer(kind=inttype) parameter,optional :: nolimiter=2_inttype
44  integer(kind=inttype) parameter,optional :: vanalbeda=3_inttype
45  integer(kind=inttype) parameter,optional :: minmod=4_inttype
46  integer(kind=inttype) parameter,optional :: noprecond=1_inttype
47  integer(kind=inttype) parameter,optional :: turkel=2_inttype
48  integer(kind=inttype) parameter,optional :: choimerkle=3_inttype
49  integer(kind=inttype) parameter,optional :: constantpressure=1_inttype
50  integer(kind=inttype) parameter,optional :: linextrapolpressure=2_inttype
51  integer(kind=inttype) parameter,optional :: quadextrapolpressure=3_inttype
52  integer(kind=inttype) parameter,optional :: normalmomentum=4_inttype
53  integer(kind=inttype) parameter,optional :: constantextrapol=1_inttype
54  integer(kind=inttype) parameter,optional :: linextrapol=2_inttype
55  integer(kind=inttype) parameter,optional :: rungekutta=1_inttype
56  integer(kind=inttype) parameter,optional :: dadi=2_inttype
57  integer(kind=inttype) parameter,optional :: nllusgs=3_inttype
58  integer(kind=inttype) parameter,optional :: nllusgsline=4_inttype
59  integer(kind=inttype) parameter,optional :: decoupled=1_inttype
60  integer(kind=inttype) parameter,optional :: coupled=2_inttype
61  integer(kind=inttype) parameter,optional :: gmres=1_inttype
62  integer(kind=inttype) parameter,optional :: adi=2_inttype
63  integer(kind=inttype) parameter,optional :: bcdirichlet0=0_inttype
64  integer(kind=inttype) parameter,optional :: bcneumann0=1_inttype
65  integer(kind=inttype) parameter,optional :: noresaveraging=0_inttype
66  integer(kind=inttype) parameter,optional :: alwaysresaveraging=1_inttype
67  integer(kind=inttype) parameter,optional :: alternateresaveraging=2_inttype
68  integer(kind=inttype) parameter,optional :: turbrelaxnotdefined=0_inttype
69  integer(kind=inttype) parameter,optional :: turbrelaxexplicit=1_inttype
70  integer(kind=inttype) parameter,optional :: turbrelaximplicit=2_inttype
71  integer(kind=inttype) parameter,optional :: precisionsingle=1
72  integer(kind=inttype) parameter,optional :: precisiondouble=2
73  integer(kind=inttype) parameter,optional :: bdf=1
74  integer(kind=inttype) parameter,optional :: explicitrk=2
75  integer(kind=inttype) parameter,optional :: implicitrk=3
76  integer(kind=inttype) parameter,optional :: md=4
77  integer(kind=inttype) :: nolinesearch=0_inttype
78  integer(kind=inttype) :: cubiclinesearch=1_inttype
79  integer(kind=inttype) :: nonmonotonelinesearch=2_inttype
80  integer(kind=inttype) :: updatefrozen = 0_inttype
81  integer(kind=inttype) :: updatefast = 1_inttype
82  integer(kind=inttype) :: updatefull = 2_inttype
83 
84  ! Cost functions
85  integer(kind=inttype) :: ncostfunction
86  integer(kind=inttype) parameter,optional :: costfunccdq=30
87  integer(kind=inttype) parameter,optional :: costfuncforcezcoef=10
88  integer(kind=inttype) parameter,optional :: costfuncmomzcoef=16
89  integer(kind=inttype) parameter,optional :: costfunccm0=17
90  integer(kind=inttype) parameter,optional :: costfuncforcex=5
91  integer(kind=inttype) parameter,optional :: costfuncclq=25
92  integer(kind=inttype) parameter,optional :: costfuncdrag=2
93  integer(kind=inttype) parameter,optional :: costfunccl0=22
94  integer(kind=inttype) parameter,optional :: costfunccmzqdot=21
95  integer(kind=inttype) parameter,optional :: costfuncforcexcoef=8
96  integer(kind=inttype) parameter,optional :: costfunccmzq=20
97  integer(kind=inttype) parameter,optional :: costfunccmzalphadot=19
98  integer(kind=inttype) parameter,optional :: costfunclift=1
99  integer(kind=inttype) parameter,optional :: costfunccd0=27
100  integer(kind=inttype) parameter,optional :: costfuncclqdot=26
101  integer(kind=inttype) parameter,optional :: costfuncforcey=6
102  integer(kind=inttype) parameter,optional :: costfuncforcez=7
103  integer(kind=inttype) parameter,optional :: costfuncmomz=13
104  integer(kind=inttype) parameter,optional :: costfunccdqdot=31
105  integer(kind=inttype) parameter,optional :: costfuncmomx=11
106  integer(kind=inttype) parameter,optional :: costfuncmomy=12
107  integer(kind=inttype) parameter,optional :: costfunccdalphadot=29
108  integer(kind=inttype) parameter,optional :: costfuncmomxcoef=14
109  integer(kind=inttype) parameter,optional :: costfunccdalpha=28
110  integer(kind=inttype) parameter,optional :: costfuncliftcoef=3
111  integer(kind=inttype) parameter,optional :: costfunccmzalpha=18
112  integer(kind=inttype) parameter,optional :: costfuncdragcoef=4
113  integer(kind=inttype) parameter,optional :: costfuncclalphadot=24
114  integer(kind=inttype) parameter,optional :: costfuncforceycoef=9
115  integer(kind=inttype) parameter,optional :: costfuncclalpha=23
116  integer(kind=inttype) parameter,optional :: costfuncmomycoef=15
117  integer(kind=inttype) parameter,optional :: costfunccfy0=32
118  integer(kind=inttype) parameter,optional :: costfunccfyalpha=33
119  integer(kind=inttype) parameter,optional :: costfunccfyalphadot=34
120  integer(kind=inttype) parameter,optional :: costfunccfyq=35
121  integer(kind=inttype) parameter,optional :: costfunccfyqdot=36
122  integer(kind=inttype) parameter,optional :: costfuncbendingcoef=37
123  integer(kind=inttype) parameter,optional :: costfuncsepsensor=38
124  integer(kind=inttype) parameter,optional :: costfuncsepsensoravgx=39
125  integer(kind=inttype) parameter,optional :: costfuncsepsensoravgy=40
126  integer(kind=inttype) parameter,optional :: costfuncsepsensoravgz=41
127  integer(kind=inttype) parameter,optional :: costfunccavitation=42
128  integer(kind=inttype) parameter,optional :: costfuncmdot=43
129  integer(kind=inttype) parameter,optional :: costfuncmavgptot=44
130  integer(kind=inttype) parameter,optional :: costfuncmavgttot=45
131  integer(kind=inttype) parameter,optional :: costfuncmavgrho=46
132  integer(kind=inttype) parameter,optional :: costfuncmavgps=47
133  integer(kind=inttype) parameter,optional :: costfuncmavgmn=48
134  integer(kind=inttype) parameter,optional :: costfuncmavga=49
135  integer(kind=inttype) parameter,optional :: costfuncarea=50
136  integer(kind=inttype) parameter,optional :: costfuncaxismoment=51
137  integer(kind=inttype) parameter,optional :: costfuncflowpower=52
138  integer(kind=inttype) parameter,optional :: costfuncforcexpressure=53
139  integer(kind=inttype) parameter,optional :: costfuncforceypressure=54
140  integer(kind=inttype) parameter,optional :: costfuncforcezpressure=55
141  integer(kind=inttype) parameter,optional :: costfuncforcexviscous=56
142  integer(kind=inttype) parameter,optional :: costfuncforceyviscous=57
143  integer(kind=inttype) parameter,optional :: costfuncforcezviscous=58
144  integer(kind=inttype) parameter,optional :: costfuncforcexmomentum=59
145  integer(kind=inttype) parameter,optional :: costfuncforceymomentum=60
146  integer(kind=inttype) parameter,optional :: costfuncforcezmomentum=61
147  integer(kind=inttype) parameter,optional :: costfuncdragpressure=62
148  integer(kind=inttype) parameter,optional :: costfuncdragviscous=63
149  integer(kind=inttype) parameter,optional :: costfuncdragmomentum=64
150  integer(kind=inttype) parameter,optional :: costfuncliftpressure=65
151  integer(kind=inttype) parameter,optional :: costfuncliftviscous=66
152  integer(kind=inttype) parameter,optional :: costfuncliftmomentum=67
153  integer(kind=inttype) parameter,optional :: costfuncforcexcoefpressure=68
154  integer(kind=inttype) parameter,optional :: costfuncforcexcoefviscous=69
155  integer(kind=inttype) parameter,optional :: costfuncforcexcoefmomentum=70
156  integer(kind=inttype) parameter,optional :: costfuncforceycoefpressure=71
157  integer(kind=inttype) parameter,optional :: costfuncforceycoefviscous=72
158  integer(kind=inttype) parameter,optional :: costfuncforceycoefmomentum=73
159  integer(kind=inttype) parameter,optional :: costfuncforcezcoefpressure=74
160  integer(kind=inttype) parameter,optional :: costfuncforcezcoefviscous=75
161  integer(kind=inttype) parameter,optional :: costfuncforcezcoefmomentum=76
162  integer(kind=inttype) parameter,optional :: costfuncliftcoefpressure=77
163  integer(kind=inttype) parameter,optional :: costfuncliftcoefviscous=78
164  integer(kind=inttype) parameter,optional :: costfuncliftcoefmomentum=79
165  integer(kind=inttype) parameter,optional :: costfuncdragcoefpressure=80
166  integer(kind=inttype) parameter,optional :: costfuncdragcoefviscous=81
167  integer(kind=inttype) parameter,optional :: costfuncdragcoefmomentum=82
168  integer(kind=inttype) parameter,optional :: costfuncmavgvx=83
169  integer(kind=inttype) parameter,optional :: costfuncmavgvy=84
170  integer(kind=inttype) parameter,optional :: costfuncmavgvz=85
171  integer(kind=inttype) parameter,optional :: costfunccperror2=86
172  integer(kind=inttype) parameter,optional :: costfuncaavgptot=87
173  integer(kind=inttype) parameter,optional :: costfuncaavgps=88
174  integer(kind=inttype) parameter,optional :: costfunccpmin=89
175  integer(kind=inttype) parameter,optional :: costfunccoforcexx=90
176  integer(kind=inttype) parameter,optional :: costfunccoforcexy=91
177  integer(kind=inttype) parameter,optional :: costfunccoforcexz=92
178  integer(kind=inttype) parameter,optional :: costfunccoforceyx=93
179  integer(kind=inttype) parameter,optional :: costfunccoforceyy=94
180  integer(kind=inttype) parameter,optional :: costfunccoforceyz=95
181  integer(kind=inttype) parameter,optional :: costfunccoforcezx=96
182  integer(kind=inttype) parameter,optional :: costfunccoforcezy=97
183  integer(kind=inttype) parameter,optional :: costfunccoforcezz=98
184  integer(kind=inttype) parameter,optional :: costfunccofliftx=99
185  integer(kind=inttype) parameter,optional :: costfunccoflifty=100
186  integer(kind=inttype) parameter,optional :: costfunccofliftz=101
187  integer(kind=inttype) parameter,optional :: costfuncmavgvi=102
188  integer(kind=inttype) parameter,optional :: costfuncsepsensorks=103
189  integer(kind=inttype) parameter,optional :: costfuncsepsensorksarea=104
190  end module constants
191 
192  module utils
193  subroutine writeintromessage
194  end subroutine writeintromessage
195 
196  subroutine getliftdirfromsymmetry(liftdir)
197  integer(kind=inttype), intent(out) :: liftdir
198  end subroutine getliftdirfromsymmetry
199 
200  subroutine allocconvarrays(nitertot)
201  integer(kind=inttype) :: nitertot
202  end subroutine allocconvarrays
203 
204  subroutine alloctimearrays(nitertot)
205  integer(kind=inttype) :: ntimetot
206  end subroutine alloctimearrays
207 
208  subroutine unsteadyheader
209  end subroutine unsteadyheader
210 
211 
212  subroutine pointreduce(pts,n,tol,uniquepts,link,nunique) ! in :test:utils.F90:utils
213  real(kind=realtype) dimension(3,n),intent(in) :: pts
214  integer(kind=inttype), optional,intent(in),check(shape(pts,1)==n),depend(pts) :: n=shape(pts,1)
215  real(kind=realtype) intent(in) :: tol
216  real(kind=realtype) dimension(3,n),intent(out),depend(n) :: uniquepts
217  integer(kind=inttype) dimension(n),intent(out),depend(n) :: link
218  integer(kind=inttype) intent(out) :: nunique
219  end subroutine pointreduce
220 
221  subroutine getcellcenters(level,n,xcen) ! in :test:utils.F90:utils
222  integer(kind=inttype) intent(in) :: level
223  integer(kind=inttype) intent(in) :: n
224  real(kind=realtype) dimension(3,n),intent(out),depend(n) :: xcen
225  end subroutine getcellcenters
226 
227  subroutine getcellcgnsblockids(level,n,cellid) ! in :test:utils.F90:utils
228  integer(kind=inttype) intent(in) :: level
229  integer(kind=inttype) intent(in) :: n
230  real(kind=realtype) dimension(n),intent(out),depend(n) :: cellid
231  end subroutine getcellcgnsblockids
232 
233  subroutine getncgnszones(nzones) ! in :test:utils.F90
234  integer(kind=inttype) intent(out) :: nzones
235  end subroutine getncgnszones
236  subroutine getcgnszonename(i,zone) ! in :test:utils.F90
237  integer(kind=inttype) intent(in) :: i
238  character(32) intent(out) :: zone
239  end subroutine getcgnszonename
240 
241  subroutine releasememorypart1
242  end subroutine releasememorypart1
243 
244  subroutine releasememorypart2
245  end subroutine releasememorypart2
246 
247  subroutine getmonitorvariablenames(nvar, monitor_variables)
248  integer(kind=inttype), intent(in) :: nvar
249  character, dimension(nvar,32), intent(out):: monitor_variables
250  end subroutine getmonitorvariablenames
251 
252  subroutine getsolvertypearray(niter, nsps, type_array)
253  integer(kind=inttype), intent(in) :: niter, nsps,
254  character, dimension(0:niter,nsps,8), intent(out):: type_array
255  end subroutine getsolvertypearray
256 
257 
258  end module utils
259 
260  module walldistance
261 
262  subroutine updatewalldistancealllevels
263  end subroutine updatewalldistancealllevels
264 
265  end module walldistance
266 
267  module initializeflow
268 
269  subroutine updatebcdataalllevels
270  end subroutine updatebcdataalllevels
271 
272  subroutine initflow
273  end subroutine initflow
274 
275  subroutine initflowrestart
276  end subroutine initflowrestart
277 
278  subroutine setuniformflow
279  end subroutine setuniformflow
280 
281  subroutine allocrestartfiles(nfiles)
282  integer(kind=inttype) :: nfiles
283  end subroutine allocrestartfiles
284 
285  subroutine setrestartfiles(filename,i)
286  character*(*) intent(in) :: filename
287  integer(kind=inttype) :: i
288  end subroutine setrestartfiles
289 
290  subroutine infchangecorrection(oldwinf, correctiontol, correctiontype) ! in :test:solverUtils.F90:solverutils
291  real(kind=realtype), dimension(5),intent(in) :: oldwinf
292  real(kind=realtype), intent(in) :: correctiontol
293  character*(*), intent(in) :: correctiontype
294  end subroutine infchangecorrection
295 
296  end module initializeflow
297 
298  module bcdata
299  subroutine setbcdata(bcdatanamesin,bcdatain,famlists,sps,nvar,nfammax) ! in :test:BCData.F90:bcdata
300  character dimension(nvar,32),intent(in) :: bcdatanamesin
301  real(kind=realtype) dimension(nvar),intent(in),depend(nvar) :: bcdatain
302  integer(kind=inttype) dimension(nvar,nfammax),depend(nvar) :: famlists
303  integer(kind=inttype) intent(in) :: sps
304  integer(kind=inttype), optional,intent(in),check(shape(bcdatanamesin,0)==nvar),depend(bcdatanamesin) :: nvar=shape(bcdatanamesin,0)
305  integer(kind=inttype), optional,intent(in),check(shape(famlists,1)==nfammax),depend(famlists) :: nfammax=shape(famlists,1)
306  end subroutine setbcdata
307 
308  end module bcdata
309 
310 
311  module amg
312 
313  subroutine setupamg
314  end subroutine setupamg
315 
316  subroutine destroyamg
317  end subroutine destroyamg
318 
319  end module amg
320 
321  module flowutils
322 
323  subroutine updategamma
324  end subroutine updategamma
325 
326  subroutine adjustinflowangle()
327  end subroutine adjustinflowangle
328 
329  end module flowutils
330 
331  module inputparamroutines
332 
333  subroutine setdefaultvalues()
334  end subroutine setdefaultvalues
335 
336  subroutine monitorvariables(variables) ! in :test:monitorVariables.f90
337  character*(*) intent(in) :: variables
338  end subroutine monitorvariables
339 
340  subroutine surfacevariables(variables) ! in :test:surfaceVariables.f90
341  character*(*) intent(in) :: variables
342  end subroutine surfacevariables
343 
344  subroutine volumevariables(variables) ! in :test:volumeVariables.f90
345  character*(*) intent(in) :: variables
346  end subroutine volumevariables
347 
348  subroutine isovariables(variables) ! in :test:volumeVariables.f90
349  character*(*) intent(in) :: variables
350  end subroutine isovariables
351 
352  subroutine initializeisosurfacevariables(values,nvalues) ! in :test:setIsoSurfaceValues.F90
353  real(kind=realtype), dimension(nvalues),intent(in) :: values
354  integer(kind=inttype), optional,intent(in),check(len(values)>=nvalues),depend(values) :: nvalues=len(values)
355  end subroutine initializeisosurfacevariables
356 
357  subroutine setisosurfacevariable(variable,ivar) ! in :test:setIsoSurfaceValues.F90
358  character*(*), intent(in) :: variable
359  integer(kind=inttype), intent(in) :: ivar
360  end subroutine setisosurfacevariable
361 
362  subroutine dummyreadparamfile ! in :adflow:../../inputParam/readParamFile.f90
363  end subroutine dummyreadparamfile
364 
365  end module inputparamroutines
366 
367  module nksolver
368  use constants
369 
370  character(len=maxstringlen) :: nk_precondtype
371  integer(kind=inttype) :: nk_innerpreconits
372  integer(kind=inttype) :: nk_innerpreconitscoarse
373  integer(kind=inttype) :: nk_outerpreconits
374  integer(kind=inttype) :: nk_amglevels
375  integer(kind=inttype) :: nk_amgnsmooth
376  integer(kind=inttype) :: nk_jacobianlag
377  logical :: usenksolver
378  logical :: nk_adpc
379  logical :: nk_useew
380  logical :: nk_viscpc
381  integer(kind=inttype) :: nk_ls
382  integer(kind=inttype) :: nk_subspace
383  integer(kind=inttype) :: nk_asmoverlap
384  integer(kind=inttype) :: nk_asmoverlapcoarse
385  real(kind=realtype) :: nk_rtolinit
386  integer(kind=inttype) :: nk_ilufill
387  integer(kind=inttype) :: nk_ilufillcoarse
388  real(kind=realtype) :: nk_switchtol
389  real(kind=realtype) :: nk_cfl0
390  real(kind=realtype) :: nk_fixedstep
391  integer(kind=inttype) :: applypcsubspacesize
392  logical :: freestreamresset
393 
394  subroutine getstates(states,ndimw)
395  real(kind=realtype) dimension(ndimw),intent(out),depend(ndimw) :: states
396  integer(kind=inttype) intent(in) :: ndimw
397  end subroutine getstates
398 
399  subroutine setstates(states,ndimw)
400  real(kind=realtype) dimension(ndimw),intent(in) :: states
401  integer(kind=inttype) optional,intent(in),check(len(states)>=ndimw),depend(states) :: ndimw=len(states)
402  end subroutine setstates
403 
404  subroutine getinfosize(isize)
405  integer(kind=inttype) intent(out) :: isize
406  end subroutine getinfosize
407 
408  subroutine setinfo(info,isize)
409  real(kind=realtype) dimension(isize),intent(in) :: info
410  integer(kind=inttype) optional,intent(in),check(len(info)>=isize),depend(info) :: isize=len(info)
411  end subroutine setinfo
412 
413  subroutine getinfo(info,isize)
414  real(kind=realtype) dimension(isize),intent(out),depend(isize) :: info
415  integer(kind=inttype) intent(in) :: isize
416  end subroutine getinfo
417 
418  subroutine getres(res,ndimw)
419  real(kind=realtype) dimension(ndimw),intent(in,out) :: res
420  integer(kind=inttype) optional,intent(in),check(len(res)>=ndimw),depend(res) :: ndimw=len(res)
421  end subroutine getres
422 
423  subroutine applypc(in_vec,out_vec,ndof)
424  real(kind=realtype) dimension(ndof),intent(in) :: in_vec
425  real(kind=realtype) dimension(ndof),intent(in, out),depend(ndof) :: out_vec
426  integer(kind=inttype) optional,check(len(in_vec)>=ndof),depend(in_vec) :: ndof=len(in_vec)
427  end subroutine applypc
428 
429  subroutine applyadjointpc(in_vec,out_vec,ndof)
430  real(kind=realtype) dimension(ndof),intent(in) :: in_vec
431  real(kind=realtype) dimension(ndof),intent(in, out),depend(ndof) :: out_vec
432  integer(kind=inttype) optional,check(len(in_vec)>=ndof),depend(in_vec) :: ndof=len(in_vec)
433  end subroutine applyadjointpc
434 
435  subroutine destroynksolver
436  end subroutine destroynksolver
437 
438  subroutine getfreestreamresidual(rhores,totalrres) ! in :test:NKSolvers.F90:nksolver
439  real(kind=realtype) intent(out) :: rhores
440  real(kind=realtype) intent(out) :: totalrres
441  end subroutine getfreestreamresidual
442 
443  end module nksolver
444 
445  module anksolver
446  use constants
447 
448  character(len=maxstringlen) :: ank_precondtype
449  integer(kind=inttype) :: ank_innerpreconits
450  integer(kind=inttype) :: ank_innerpreconitscoarse
451  integer(kind=inttype) :: ank_outerpreconits
452  integer(kind=inttype) :: ank_amglevels
453  integer(kind=inttype) :: ank_amgnsmooth
454  integer(kind=inttype) :: ank_jacobianlag
455  logical :: useanksolver
456  logical :: ank_useturbdadi
457  logical :: ank_useapproxsa
458  integer(kind=inttype) :: ank_subspace
459  integer(kind=inttype) :: ank_maxiter
460  integer(kind=inttype) :: ank_asmoverlap
461  integer(kind=inttype) :: ank_asmoverlapcoarse
462  real(kind=realtype) :: ank_rtol
463  real(kind=realtype) :: ank_atol_buffer
464  real(kind=realtype) :: ank_linresmax
465  integer(kind=inttype) :: ank_ilufill
466  integer(kind=inttype) :: ank_ilufillcoarse
467  real(kind=realtype) :: ank_switchtol
468  real(kind=realtype) :: ank_cfl
469  real(kind=realtype) :: ank_cfl0
470  real(kind=realtype) :: ank_cflmin0
471  real(kind=realtype) :: ank_cfllimit
472  real(kind=realtype) :: ank_cflfactor
473  real(kind=realtype) :: ank_cflexponent
474  real(kind=realtype) :: ank_cflcutback
475  logical :: ank_cflreset
476  real(kind=realtype) :: ank_stepfactor
477  real(kind=realtype) :: ank_stepmin
478  real(kind=realtype) :: ank_constcflstep
479  real(kind=realtype) :: ank_physlstol
480  real(kind=realtype) :: ank_physlstolturb
481  real(kind=realtype) :: ank_unstdylstol
482  real(kind=realtype) :: ank_secondordswitchtol
483  real(kind=realtype) :: ank_coupledswitchtol
484  real(kind=realtype) :: ank_turbcflscale
485  logical :: ank_usefullvisc
486  real(kind=realtype) :: ank_pcupdatetol
487  real(kind=realtype) :: ank_pcupdatetol2
488  real(kind=realtype) :: ank_pcupdatecutoff
489  logical :: ank_adpc
490  integer(kind=inttype) :: ank_nsubiterturb
491  logical :: ank_turbdebug
492  logical :: ank_usematrixfree
493  character(len=maxstringlen) :: ank_chartimesteptype
494  subroutine destroyanksolver
495  end subroutine destroyanksolver
496 
497  end module anksolver
498 
499  module partitioning
500  subroutine partitionandreadgrid(partitiononly)
501  logical :: partitiononly
502  end subroutine partitionandreadgrid
503 
504  subroutine checkpartitioning(np,load_inbalance,face_inbalance)
505  integer(kind=inttype) intent(in) :: np
506  real(kind=realtype) intent(out) :: load_inbalance
507  real(kind=realtype) intent(out) :: face_inbalance
508  end subroutine checkpartitioning
509 
510  end module partitioning
511 
512  module warping
513 
514  subroutine getcgnsmeshindices(ndof,indices)
515  integer(kind=inttype) intent(in) :: ndof
516  integer(kind=inttype) dimension(ndof),intent(out),depend(ndof) :: indices
517  end subroutine getcgnsmeshindices
518 
519  subroutine setgrid(grid,ndof)
520  real(kind=realtype) dimension(ndof),intent(in) :: grid
521  integer(kind=inttype) optional,intent(in),check(len(grid)>=ndof),depend(grid) :: ndof=len(grid)
522  end subroutine setgrid
523 
524  subroutine getgrid(grid,ndof)
525  real(kind=realtype) dimension(ndof),intent(out),depend(ndof) :: grid
526  integer(kind=inttype) intent(in) :: ndof
527  end subroutine getgrid
528 
529  subroutine getstateperturbation(randvec,nrand,randstate,nrandstate)
530  real(kind=realtype) dimension(nrand),intent(in) :: randvec
531  integer(kind=inttype), optional,intent(in),check(len(randvec)>=nrand),depend(randvec) :: nrand=len(randvec)
532  real(kind=realtype) dimension(nrandstate),intent(out),depend(nrandstate) :: randstate
533  integer(kind=inttype) intent(in) :: nrandstate
534  end subroutine getstateperturbation
535 
536  subroutine getsurfaceperturbation(xrand,nrand,randsurface,nrandsurface, famlist,nfamlist,sps) ! in :test:warping.F90:warping
537  real(kind=realtype) dimension(nrand),intent(in) :: xrand
538  integer(kind=inttype), optional,intent(in),check(len(xrand)>=nrand),depend(xrand) :: nrand=len(xrand)
539  real(kind=realtype) dimension(3 * nrandsurface),intent(inout) :: randsurface
540  integer(kind=inttype), optional,intent(in),check((len(randsurface))/(3)>=nrandsurface),depend(randsurface) :: nrandsurface=(len(randsurface))/(3)
541  integer(kind=inttype) dimension(nfamlist),intent(in) :: famlist
542  integer(kind=inttype), optional,intent(in),check(len(famlist)>=nfamlist),depend(famlist) :: nfamlist=len(famlist)
543  integer(kind=inttype) intent(in) :: sps
544  end subroutine getsurfaceperturbation
545 
546  subroutine setgridforoneinstance(grid,sps) ! in warping.F90:warping
547  real(kind=realtype) dimension(:),intent(in) :: grid
548  integer intent(in) :: sps
549  end subroutine setgridforoneinstance
550 
551  end module warping
552 
553  module surfaceutils
554  subroutine getsurfacesize(size_bn,sizecell,famlist,n,includezipper) ! in :test:surfaceUtils.F90:surfaceutils
555  integer(kind=inttype) intent(out) :: size_bn
556  integer(kind=inttype) intent(out) :: sizecell
557  integer(kind=inttype) dimension(n),intent(in) :: famlist
558  integer(kind=inttype), optional,intent(in),check(len(famlist)>=n),depend(famlist) :: n=len(famlist)
559  logical intent(in) :: includezipper
560  end subroutine getsurfacesize
561  subroutine getsurfaceconnectivity(conn,cgnsblockid,ncell,famlist,nfamlist,includezipper) ! in :test:surfaceUtils.F90:surfaceutils
562  integer(kind=inttype) dimension(4 * ncell),intent(inout) :: conn
563  integer(kind=inttype) dimension(ncell),intent(inout) :: cgnsblockid
564  integer(kind=inttype), optional,intent(in),check((len(conn))/(4)>=ncell),depend(conn) :: ncell=(len(conn))/(4)
565  integer(kind=inttype) dimension(nfamlist),intent(in) :: famlist
566  integer(kind=inttype), optional,intent(in),check(len(famlist)>=nfamlist),depend(famlist) :: nfamlist=len(famlist)
567  logical intent(in) :: includezipper
568  end subroutine getsurfaceconnectivity
569 
570  subroutine getsurfacepoints(points,npts,sps_in,famlist,nfamlist,includezipper) ! in :test:surfaceUtils.F90:surfaceutils
571  real(kind=realtype) dimension(3,npts),intent(inout) :: points
572  integer(kind=inttype), optional,intent(in),check(shape(points,1)==npts),depend(points) :: npts=shape(points,1)
573  integer(kind=inttype) intent(in) :: sps_in
574  integer(kind=inttype) dimension(nfamlist),intent(in) :: famlist
575  integer(kind=inttype), optional,intent(in),check(len(famlist)>=nfamlist),depend(famlist) :: nfamlist=len(famlist)
576  logical intent(in) :: includezipper
577  end subroutine getsurfacepoints
578 
579  ! subroutine mapvector(vec1,n1,famlist1,nf1,vec2,n2,famlist2,nf2,includezipper) ! in :test:surfaceUtils.F90:surfaceutils
580  ! real(kind=realtype) dimension(3,n1),intent(in) :: vec1
581  ! integer(kind=inttype), optional,check(shape(vec1,1)==n1),depend(vec1) :: n1=shape(vec1,1)
582  ! integer(kind=inttype) dimension(nf1),intent(in) :: famlist1
583  ! integer(kind=inttype), optional,check(len(famlist1)>=nf1),depend(famlist1) :: nf1=len(famlist1)
584  ! real(kind=realtype) dimension(3,n2),intent(inout) :: vec2
585  ! integer(kind=inttype), optional,check(shape(vec2,1)==n2),depend(vec2) :: n2=shape(vec2,1)
586  ! integer(kind=inttype) dimension(nf2),intent(in) :: famlist2
587  ! integer(kind=inttype), optional,check(len(famlist2)>=nf2),depend(famlist2) :: nf2=len(famlist2)
588  ! logical intent(in) :: includezipper
589  ! end subroutine mapvector
590 
591  subroutine mapvector(vec1,n1,famlist1,nf1,vec2,n2,famlist2,nf2,includezipper,ndim) ! in ../utils/surfaceUtils.F90:surfaceutils
592  use blockpointers, only: ndom,flowdoms
593  use sorting, only: faminlist
594  use surfacefamilies, only: bcfamgroups
595  use constants
596  use oversetdata, only: oversetpresent,zippermeshes,zippermesh
597  real(kind=realtype) dimension(ndim,n1),intent(in) :: vec1
598  integer(kind=inttype), optional,check(shape(vec1,1)==n1),depend(vec1) :: n1=shape(vec1,1)
599  integer(kind=inttype) dimension(nf1),intent(in) :: famlist1
600  integer(kind=inttype), optional,check(len(famlist1)>=nf1),depend(famlist1) :: nf1=len(famlist1)
601  real(kind=realtype) dimension(ndim,n2),intent(inout),depend(ndim) :: vec2
602  integer(kind=inttype), optional,check(shape(vec2,1)==n2),depend(vec2) :: n2=shape(vec2,1)
603  integer(kind=inttype) dimension(nf2),intent(in) :: famlist2
604  integer(kind=inttype), optional,check(len(famlist2)>=nf2),depend(famlist2) :: nf2=len(famlist2)
605  logical intent(in) :: includezipper
606  integer(kind=inttype), optional,check(shape(vec1,0)==ndim),depend(vec1) :: ndim=shape(vec1,0)
607  end subroutine mapvector
608 
609  subroutine getwalllist(walllist,nwalllist,nfamtotal) ! in :test:surfaceUtils.F90:surfaceutils
610  integer(kind=inttype) dimension(nfamtotal),intent(out),depend(nfamtotal) :: walllist
611  integer(kind=inttype) intent(out) :: nwalllist
612  integer(kind=inttype) intent(in) :: nfamtotal
613  end subroutine getwalllist
614  end module surfaceutils
615 
616  module tecplotio
617  subroutine addparaslice(slicename,pt,normal,dir_vec,use_dir,famlist,n) ! in :test:liftDistribution.F90
618  character*(*) intent(in) :: slicename
619  real(kind=realtype) dimension(3),intent(in) :: pt
620  real(kind=realtype) dimension(3),intent(in) :: normal
621  real(kind=realtype) dimension(3),intent(in) :: dir_vec
622  logical, intent(in) :: use_dir
623  integer(kind=inttype) dimension(n),intent(in) :: famlist
624  integer(kind=inttype), optional,intent(in),check(len(famlist)>=n),depend(famlist) :: n=len(famlist)
625  end subroutine addparaslice
626 
627  subroutine addabsslice(slicename,pt,normal,dir_vec,use_dir,famlist,n) ! in :test:liftDistribution.F90
628  character*(*) intent(in) :: slicename
629  real(kind=realtype) dimension(3),intent(in) :: pt
630  real(kind=realtype) dimension(3),intent(in) :: normal
631  real(kind=realtype) dimension(3),intent(in) :: dir_vec
632  logical, intent(in) :: use_dir
633  integer(kind=inttype) dimension(n),intent(in) :: famlist
634  integer(kind=inttype), optional,intent(in),check(len(famlist)>=n),depend(famlist) :: n=len(famlist)
635  end subroutine addabsslice
636 
637  subroutine addliftdistribution(nsegments,normal,normal_ind, distname,famlist,n) ! in :test:liftDistribution.F90
638  integer(kind=inttype) intent(in) :: nsegments
639  real(kind=realtype) dimension(3), intent(in) :: normal
640  integer(kind=inttype), intent(in) :: normal_ind
641  character*(*) intent(in) :: distname
642  integer(kind=inttype) dimension(n),intent(in) :: famlist
643  integer(kind=inttype), optional,intent(in),check(len(famlist)>=n),depend(famlist) :: n=len(famlist)
644  end subroutine addliftdistribution
645 
646  subroutine writetecplot(slicefile,writeslices,liftfile,writelift,surffile,writesurf,famlist,nfamlist) ! in :test:tecplotIO.F90:tecplotio
647  character*(*) intent(in) :: slicefile
648  logical intent(in) :: writeslices
649  character*(*) intent(in) :: liftfile
650  logical intent(in) :: writelift
651  character*(*) intent(in) :: surffile
652  logical intent(in) :: writesurf
653  integer(kind=inttype) dimension(nfamlist),intent(in) :: famlist
654  integer(kind=inttype), optional,intent(in),check(len(famlist)>=nfamlist),depend(famlist) :: nfamlist=len(famlist)
655  end subroutine writetecplot
656 
657  subroutine initializeliftdistributiondata
658  end subroutine initializeliftdistributiondata
659  end subroutine tecplotio
660 
661  module surfaceintegrations
662  subroutine getsolutionwrap(famlists,funcvalues,ncost,ngroups,nfammax) ! in :test:surfaceIntegrations.F90:surfaceintegrations
663  integer(kind=inttype) dimension(ngroups,nfammax) :: famlists
664  real(kind=realtype) dimension(ncost,ngroups),intent(out),depend(ncost,ngroups) :: funcvalues
665  integer(kind=inttype) :: ncost
666  integer(kind=inttype), optional,check(shape(famlists,0)==ngroups),depend(famlists) :: ngroups=shape(famlists,0)
667  integer(kind=inttype), optional,check(shape(famlists,1)==nfammax),depend(famlists) :: nfammax=shape(famlists,1)
668  end subroutine getsolutionwrap
669  end module surfaceintegrations
670 
671  module usersurfaceintegrations
672  subroutine addintegrationsurface(pts,conn,famname,famid,isinflow,npts,nconn) ! in :test:surfaceIntegrations.F90:surfaceintegrations
673  real(kind=realtype) dimension(3,npts),intent(in) :: pts
674  integer(kind=inttype) dimension(3,nconn),intent(in) :: conn
675  character*maxstringlen :: famname
676  integer(kind=inttype), intent(in) :: famid
677  logical, intent(in) :: isinflow
678  integer(kind=inttype), optional,intent(in),check(shape(pts,1)==npts),depend(pts) :: npts=shape(pts,1)
679  integer(kind=inttype), optional,intent(in),check(shape(conn,1)==nconn),depend(conn) :: nconn=shape(conn,1)
680  end subroutine addintegrationsurface
681 
682  subroutine interpolateintegrationsurfaces
683  end subroutine interpolateintegrationsurfaces
684 
685  end module usersurfaceintegrations
686 
687  module actuatorregion ! in :test:actuatorDiskRegion.F90
688  subroutine addactuatorregion(pts,conn,axis1,axis2,famname,famid,thrust,torque,heat,relaxstart,relaxend,npts,nconn) ! in :test:actuatorDiskRegion.F90:actuatorregion
689  real(kind=realtype) dimension(3,npts),intent(in) :: pts
690  integer(kind=inttype) dimension(4,nconn),intent(in) :: conn
691  real(kind=realtype), dimension(3),intent(in) :: axis1
692  real(kind=realtype), dimension(3),intent(in) :: axis2
693  character*(*) :: famname
694  integer(kind=inttype) intent(in) :: famid
695  real(kind=realtype) :: thrust
696  real(kind=realtype) :: torque
697  real(kind=realtype) :: heat
698  real(kind=realtype) :: relaxstart
699  real(kind=realtype) :: relaxend
700  integer(kind=inttype), optional,intent(in),check(shape(pts,1)==npts),depend(pts) :: npts=shape(pts,1)
701  integer(kind=inttype), optional,intent(in),check(shape(conn,1)==nconn),depend(conn) :: nconn=shape(conn,1)
702  end subroutine addactuatorregion
703 
704  subroutine writeactuatorregions(filename)
705  character*(*) intent(in) :: filename
706  end subroutine writeactuatorregions
707  end module actuatorregion
708 
709  module solvers
710 
711  subroutine solver
712  end subroutine solver
713 
714  subroutine solverunsteadyinit
715  end subroutine solverunsteadyinit
716 
717  subroutine updateunsteadygeometry
718  end subroutine updateunsteadygeometry
719 
720  subroutine solverunsteadystep
721  end subroutine solverunsteadystep
722 
723  end module solvers
724 
725  module aleutils
726 
727  subroutine shiftlevelale
728  end subroutine shiftlevelale
729 
730  end module aleutils
731 
732  module preprocessingapi
733  subroutine preprocessing ! in :adflow:../../preprocessing/preprocessing.f90
734  end subroutine preprocessing
735 
736  subroutine updatecoordinatesalllevels ! in :adflow:../../preprocessing/mdUpdateRoutines.f90
737  end subroutine updatecoordinatesalllevels
738 
739  subroutine updatemetricsalllevels ! in :adflow:../../preprocessing/mdUpdateRoutines.f90
740  end subroutine updatemetricsalllevels
741 
742  subroutine updategridvelocitiesalllevels ! in :adflow:../../preprocessing/mdUpdateRoutines.f90
743  end subroutine updategridvelocitiesalllevels
744 
745  subroutine updateperiodicinfoalllevels
746  end subroutine updateperiodicinfoalllevels
747 
748  subroutine shiftcoorandvolumes ! in :adflow:../../preprocessing/shiftCoorAndVolumes.F90
749  end subroutine shiftcoorandvolumes
750 
751  subroutine updatereferencepoint
752  end subroutine updatereferencepoint
753 
754  subroutine updaterotationrate(rotcenter,rotrate,blocks,nblocks) ! in :test:updateRotationRate.f90
755  real(kind=realtype) dimension(3),intent(in) :: rotcenter
756  real(kind=realtype) dimension(3),intent(in) :: rotrate
757  integer(kind=inttype) dimension(nblocks),intent(in) :: blocks
758  integer(kind=inttype), optional,intent(in),check(len(blocks)>=nblocks),depend(blocks) :: nblocks=len(blocks)
759  end subroutine updaterotationrate
760 
761  subroutine preprocessingoverset(flag,n, closedfamlist, nfam) ! in :test:preprocessingAPI.F90:preprocessingapi
762  integer(kind=inttype) dimension(n) :: flag
763  integer(kind=inttype), optional,intent(in),check(len(flag)>=n),depend(flag) :: n=len(flag)
764  integer(kind=inttype) dimension(nfam) :: closedfamlist
765  integer(kind=inttype), optional,intent(in),check(len(closedfamlist)>=nfam),depend(closedfamlist) :: nfam=len(closedfamlist)
766  end subroutine preprocessingoverset
767 
768  end module preprocessingapi
769 
770  module oversetapi
771  subroutine updateoverset(flag, n, closedfamlist, nfam)
772  integer(kind=inttype) dimension(n) :: flag
773  integer(kind=inttype), optional,intent(in),check(len(flag)>=n),depend(flag) :: n=len(flag)
774  integer(kind=inttype) dimension(nfam) :: closedfamlist
775  integer(kind=inttype), optional,intent(in),check(len(closedfamlist)>=nfam),depend(closedfamlist) :: nfam=len(closedfamlist)
776  end subroutine updateoverset
777  subroutine writepartitionedmesh(filename)
778  character*(*) intent(in) :: filename
779  end subroutine writepartitionedmesh
780  subroutine oversetcomm(level, firstime, coarselevel)
781  integer(kind=inttype), intent(in) :: level
782  logical, intent(in) :: firsttime
783  logical, intent(in) :: coarselevel
784  end subroutine oversetcomm
785  subroutine setblockpriority(blkname, value, setvalue)
786  character*(*) intent(in) :: blkname
787  real(kind=realtype), intent(in) :: value
788  logical, intent(out) :: setvalue
789  end subroutine setblockpriority
790  subroutine flagcellsinsurface(pts,npts,conn,nconn,flag,ncell,blockids,nblocks,k_min)
791  real(kind=realtype) dimension(3,npts),intent(in) :: pts
792  integer(kind=inttype), optional,intent(in),check(shape(pts,1)==npts),depend(pts) :: npts=shape(pts,1)
793  integer(kind=inttype) dimension(4,nconn),intent(in) :: conn
794  integer(kind=inttype), optional,intent(in),check(shape(conn,1)==nconn),depend(conn) :: nconn=shape(conn,1)
795  integer(kind=inttype) dimension(ncell),intent(inout) :: flag
796  integer(kind=inttype), optional,intent(in),check(len(flag)==ncell),depend(flag) :: ncell=len(flag)
797  integer(kind=inttype) dimension(nblocks),intent(in) :: blockids
798  integer(kind=inttype), optional,intent(in),check(len(blockids)==nblocks),depend(blockids) :: nblocks=len(blockids)
799  integer(kind=inttype), intent(in) :: k_min
800  end subroutine flagcellsinsurface
801  end module oversetapi
802 
803  module oversetutilities
804  subroutine getoversetiblank(blklist,n) ! in :test:oversetUtilities.F90:oversetutilities
805  integer(kind=inttype) dimension(n),intent(out),depend(n) :: blklist
806  integer(kind=inttype) intent(in) :: n
807  end subroutine getoversetiblank
808  end module oversetutilities
809 
810  module adjointapi
811 
812  subroutine setuppetscksp
813  end subroutine setuppetscksp
814 
815  subroutine setupallresidualmatricesfwd
816  end subroutine setupallresidualmatricesfwd
817 
818  subroutine solveadjoint(rhs,psi,checksolution,nstate) ! in :test:solveADjointTransposePETSc.F90
819  real(kind=realtype) dimension(nstate) :: rhs
820  real(kind=realtype) dimension(nstate),depend(nstate) :: psi
821  logical :: checksolution
822  integer(kind=inttype), optional,check(len(rhs)>=nstate),depend(rhs) :: nstate=len(rhs)
823  end subroutine solveadjoint
824 
825  subroutine solveadjointforrhs(invec,outvec,ndof,relativetolerance) ! in :test:matrixFreeRoutines.F90
826  real(kind=realtype) dimension(ndof),intent(in) :: invec
827  real(kind=realtype) dimension(ndof),intent(out),depend(ndof) :: outvec
828  integer(kind=inttype), optional,intent(in),check(len(invec)>=ndof),depend(invec) :: ndof=len(invec)
829  real(kind=realtype) intent(in) :: relativetolerance
830  end subroutine solveadjointforrhs
831  subroutine solvedirectforrhs(invec,outvec,ndof,relativetolerance) ! in :test:matrixFreeRoutines.F90
832  real(kind=realtype) dimension(ndof),intent(in) :: invec
833  real(kind=realtype) dimension(ndof),intent(out),depend(ndof) :: outvec
834  integer(kind=inttype), optional,intent(in),check(len(invec)>=ndof),depend(invec) :: ndof=len(invec)
835  real(kind=realtype) intent(in) :: relativetolerance
836  end subroutine solvedirectforrhs
837 
838  subroutine saveadjointmatrix(filename)
839  character*(*) intent(in) :: filename
840  end subroutine saveadjointmatrix
841 
842  subroutine saveadjointpc(filename)
843  character*(*) intent(in) :: filename
844  end subroutine saveadjointpc
845 
846  subroutine saveadjointrhs(rhs,filename,nstate) ! in :test:solveADjointTransposePETSc.F90
847  real(kind=realtype) dimension(nstate) :: rhs
848  character*(*) intent(in) :: filename
849  integer(kind=inttype), optional,check(len(rhs)>=nstate),depend(rhs) :: nstate=len(rhs)
850  end subroutine solveadjoint
851 
852 
853  subroutine savecellcenters(filename)
854  character*(*) intent(in) :: filename
855  end subroutine savecellcenters
856 
857  subroutine spectralprecscribedmotion(input,nin,dxv,nout)
858  real(kind=realtype) dimension(nin),intent(in) :: input
859  integer(kind=inttype), optional,intent(in),check(len(input)>=nin),depend(input) :: nin=len(input)
860  real(kind=realtype) dimension(nout),intent(out),depend(nout) :: dxv
861  integer(kind=inttype) intent(in) :: nout
862  end subroutine spectralprecscribedmotion
863 
864  subroutine createpetscvars
865  end subroutine createpetscvars
866 
867 #ifndef USE_COMPLEX
868  subroutine computematrixfreeproductfwd(xvdot,extradot,wdot,bcdatavaluesdot,usespatial,usestate,famlists,bcdatanames,bcdatavalues,bcdatafamlists,bcvarsempty,dwdot,funcsdot,fdot,costsize,fsize,ntime) ! in :test:adjointAPI.F90:adjointapi
869  real(kind=realtype) dimension(:),intent(in) :: xvdot
870  real(kind=realtype) dimension(:),intent(in) :: extradot
871  real(kind=realtype) dimension(:),intent(in) :: wdot
872  real(kind=realtype) dimension(:),intent(in) :: bcdatavaluesdot
873  logical intent(in) :: usespatial
874  logical intent(in) :: usestate
875  integer(kind=inttype) dimension(:,:) :: famlists
876  character dimension(:,:),intent(in) :: bcdatanames
877  real(kind=realtype) dimension(:),intent(in) :: bcdatavalues
878  integer(kind=inttype) dimension(:,:) :: bcdatafamlists
879  logical intent(in) :: bcvarsempty
880  real(kind=realtype) dimension(size(wdot)),intent(out),depend(wdot) :: dwdot
881  real(kind=realtype) dimension(costsize, size(famlists,1)),intent(out),depend(famlists,costsize) :: funcsdot
882  real(kind=realtype) dimension(3,fsize,ntime),intent(out),depend(fsize,ntime) :: fdot
883  integer(kind=inttype) :: costsize
884  integer(kind=inttype) :: fsize
885  integer(kind=inttype) :: ntime
886  end subroutine computematrixfreeproductfwd
887  subroutine computematrixfreeproductbwd(dwbar,funcsbar,fbar,usespatial,usestate,xvbar,extrabar,wbar,spatialsize,extrasize,statesize,famlists,bcdatanames,bcdatavalues,bcdatavaluesbar,bcdatafamlists,bcvarsempty) ! in :test:adjointAPI.F90:adjointapi
888  real(kind=realtype) dimension(:),intent(in) :: dwbar
889  real(kind=realtype) dimension(:,:),intent(in) :: funcsbar
890  real(kind=realtype) dimension(:,:,:) :: fbar
891  logical intent(in) :: usespatial
892  logical intent(in) :: usestate
893  real(kind=realtype) dimension(spatialsize),intent(out),depend(spatialsize) :: xvbar
894  real(kind=realtype) dimension(extrasize),intent(out),depend(extrasize) :: extrabar
895  real(kind=realtype) dimension(statesize),intent(out),depend(statesize) :: wbar
896  integer(kind=inttype) intent(in) :: spatialsize
897  integer(kind=inttype) intent(in) :: extrasize
898  integer(kind=inttype) intent(in) :: statesize
899  integer(kind=inttype) dimension(:,:),intent(in) :: famlists
900  character dimension(:,:),intent(in) :: bcdatanames
901  real(kind=realtype) dimension(:),intent(in) :: bcdatavalues
902  real(kind=realtype) dimension(size(bcdatavalues)),intent(out),depend(bcdatavalues) :: bcdatavaluesbar
903  integer(kind=inttype) dimension(:,:) :: bcdatafamlists
904  logical intent(in) :: bcvarsempty
905  end subroutine computematrixfreeproductbwd
906 
907 
908  subroutine computematrixfreeproductbwdfast(dwbar, wbar, statesize)! in :test:adjointapi.f90:adjointapi
909  real(kind=realtype) dimension(:),intent(in) :: dwbar
910  real(kind=realtype) dimension(statesize),intent(out),depend(statesize) :: wbar
911  integer(kind=inttype) intent(in) :: statesize
912  end subroutine computematrixfreeproductbwdfast
913 #endif
914  end module adjointapi
915  module adjointdebug
916 
917 #ifndef USE_COMPLEX
918  subroutine computematrixfreeproductfwdfd(xvdot,extradot,wdot,bcdatavaluesdot,usespatial,usestate,famlists,bcdatanames,bcdatavalues,bcdatafamlists,bcvarsempty,dwdot,funcsdot,fdot,costsize,fsize,ntime,h) ! in :test:adjointAPI.F90:adjointdebug
919  real(kind=realtype) dimension(:),intent(in) :: xvdot
920  real(kind=realtype) dimension(:),intent(in) :: extradot
921  real(kind=realtype) dimension(:),intent(in) :: wdot
922  real(kind=realtype) dimension(:),intent(in) :: bcdatavaluesdot
923  logical intent(in) :: usespatial
924  logical intent(in) :: usestate
925  integer(kind=inttype) dimension(:,:) :: famlists
926  character dimension(:,:),intent(in) :: bcdatanames
927  real(kind=realtype) dimension(:),intent(in) :: bcdatavalues
928  integer(kind=inttype) dimension(:,:) :: bcdatafamlists
929  logical intent(in) :: bcvarsempty
930  real(kind=realtype) dimension(size(wdot)),intent(out),depend(wdot) :: dwdot
931  real(kind=realtype) dimension(costsize, size(famlists,1)),intent(out),depend(famlists,costsize) :: funcsdot
932  real(kind=realtype) dimension(3,fsize,ntime),intent(out),depend(fsize,ntime) :: fdot
933  integer(kind=inttype) :: costsize
934  integer(kind=inttype) :: fsize
935  integer(kind=inttype) :: ntime
936  real(kind=realtype) :: h
937  end subroutine computematrixfreeproductfwdfd
938 #else
939  subroutine computematrixfreeproductfwdcs(xvdot,extradot,wdot,bcdatavaluesdot,usespatial,usestate,famlists,bcdatanames,bcdatavalues,bcdatafamlists,bcvarsempty,dwdot,funcsdot,fdot,costsize,fsize,ntime,h_mag) ! in :test:adjointAPI.F90:adjointdebug
940  real(kind=realtype) dimension(:),intent(in) :: xvdot
941  real(kind=realtype) dimension(:),intent(in) :: extradot
942  real(kind=realtype) dimension(:),intent(in) :: wdot
943  real(kind=realtype) dimension(:),intent(in) :: bcdatavaluesdot
944  logical intent(in) :: usespatial
945  logical intent(in) :: usestate
946  integer(kind=inttype) dimension(:,:) :: famlists
947  character dimension(:,:),intent(in) :: bcdatanames
948  real(kind=realtype) dimension(:),intent(in) :: bcdatavalues
949  integer(kind=inttype) dimension(:,:) :: bcdatafamlists
950  logical intent(in) :: bcvarsempty
951  real(kind=realtype) dimension(size(wdot)),intent(out),depend(wdot) :: dwdot
952  real(kind=realtype) dimension(costsize, size(famlists,1)),intent(out),depend(famlists,costsize) :: funcsdot
953  real(kind=realtype) dimension(3,fsize,ntime),intent(out),depend(fsize,ntime) :: fdot
954  integer(kind=inttype) :: costsize
955  integer(kind=inttype) :: fsize
956  integer(kind=inttype) :: ntime
957  real(kind=alwaysrealtype) :: h_mag
958 
959  end subroutine computematrixfreeproductfwdcs
960 #endif
961  endmodule adjointdebug
962  module adjointutils
963 
964  subroutine initializepetsc
965  end subroutine initializepetsc
966 
967  subroutine destroypetscvars
968  end subroutine destroypetscvars
969  end module adjointutils
970 
971  module zippermesh
972  subroutine createzippermesh(zipperfamlist,nzipfam) ! in :test:createZipperMesh.F90
973  integer(kind=inttype) dimension(nzipfam),intent(in) :: zipperfamlist
974  integer(kind=inttype), optional,intent(in),check(len(zipperfamlist)>=nzipfam),depend(zipperfamlist) :: nzipfam=len(zipperfamlist)
975  end subroutine createzippermesh
976  subroutine checkzipper(filename)
977  character*(*) intent(in) :: filename
978  end subroutine checkzipper
979  end module zippermesh
980 
981  module oversetdata
982  use constants
983  real(kind=realtype) dimension(16) :: oversettimes
984  end module oversetdata
985 
986  module communication ! in :adflow:../../modules/communication.f90
987  use precision
988  integer :: adflow_comm_world
989  integer :: myid
990  integer :: nproc
991  integer allocatable,dimension(:) :: sendrequests
992  integer allocatable,dimension(:) :: recvrequests
993  end module communication
994 
995  module inputdiscretization ! in :adflow:../../modules/inputParam.f90
996  use accuracy
997  integer(kind=inttype) :: spacediscr
998  integer(kind=inttype) :: spacediscrcoarse
999  integer(kind=inttype) :: orderturb
1000  integer(kind=inttype) :: limiter
1001  integer(kind=inttype) :: riemann
1002  integer(kind=inttype) :: riemanncoarse
1003  integer(kind=inttype) :: precond
1004  integer(kind=inttype) :: eulerwallbctreatment
1005  integer(kind=inttype) :: viscwallbctreatment
1006  integer(kind=inttype) :: outflowtreatment
1007  real(kind=realtype) :: vis2
1008  real(kind=realtype) :: vis4
1009  real(kind=realtype) :: vis2coarse
1010  real(kind=realtype) :: adis
1011  real(kind=realtype) :: acousticscalefactor
1012  real(kind=realtype) :: kappacoef
1013  logical :: vortexcorr
1014  logical :: dirscaling
1015  logical :: radiineededfine
1016  logical :: radiineededcoarse
1017  logical :: lumpeddiss
1018  real(kind=realtype) :: sigma
1019  logical :: useapproxwalldistance
1020  logical :: updatewallassociations
1021  logical :: lowspeedpreconditioner
1022  logical :: useblockettes
1023  end module inputdiscretization
1024 
1025  module cgnsgrid
1026  use constants
1027  integer(kind=inttype) :: cgnsndom
1028  end module cgnsgrid
1029 
1030  module inputio ! in :adflow:../../modules/inputParam.f90
1031  use constants
1032  character(len=maxstringlen) :: solfile
1033  character(len=maxstringlen) :: surfacesolfile
1034  character(len=maxstringlen) :: slicesolfile ! TEMPORARY
1035  character(len=maxstringlen) :: liftdistributionfile ! TEMPORARY
1036  character(len=maxstringlen) :: cpfile
1037  logical :: writecoormeter
1038  integer(kind=inttype) :: precisionsol
1039  integer(kind=inttype) :: precisiongrid
1040  integer(kind=inttype) :: precisionsurfsol
1041  integer(kind=inttype) :: precisionsurfgrid
1042  character(len=maxstringlen) :: newgridfile
1043  character(len=maxstringlen) :: gridfile
1044  logical :: storeconvinneriter
1045  logical :: storerindlayer
1046  logical :: checkrestartsol
1047  logical :: autoparameterupdate
1048  logical :: viscoussurfacevelocities
1049  logical optional :: firstwrite=.true.
1050  character(len=maxstringlen) :: paramfile
1051  character(len=maxstringlen) :: forcedvolumefile
1052  character(len=maxstringlen) :: forcedsurfacefile
1053  character(len=maxstringlen) :: forcedliftfile
1054  character(len=maxstringlen) :: forcedslicefile
1055  character(len=maxstringlen) :: convsolfilebasename
1056  end module inputio
1057 
1058  module inputiteration ! in :adflow:../../modules/inputParam.f90
1059  use constants
1060  logical :: rkreset
1061  character(len=maxstringlen) :: mgdescription
1062  integer(kind=inttype) :: ncycles
1063  real(kind=realtype) :: timelimit
1064  integer(kind=inttype) :: ncyclescoarse
1065  integer(kind=inttype) :: nsavevolume
1066  integer(kind=inttype) :: nsavesurface
1067  integer(kind=inttype) :: nsgstartup
1068  integer(kind=inttype) :: smoother
1069  integer(kind=inttype) :: nrkstages
1070  integer(kind=inttype) :: resaveraging
1071  real(kind=realtype) :: cfllimit
1072  integer(kind=inttype) :: turbtreatment
1073  integer(kind=inttype) :: nsubiterturb
1074  integer(kind=inttype) :: nsubiterations
1075  integer(kind=inttype) :: turbsmoother
1076  integer(kind=inttype) :: turbrelax
1077  integer(kind=inttype) :: mgboundcorr
1078  integer(kind=inttype) :: mgstartlevel
1079  integer(kind=inttype) :: nmgsteps
1080  integer(kind=inttype) :: nmglevels
1081  integer(kind=inttype) :: miniternum
1082  integer(kind=inttype) :: convcheckwindowsize
1083  integer(kind=inttype) allocatable,dimension(:) :: cyclestrategy
1084  real(kind=realtype) :: cfl
1085  real(kind=realtype) :: cflcoarse
1086  real(kind=realtype) :: fcoll
1087  real(kind=realtype) :: smoop
1088  real(kind=realtype) :: alfaturb
1089  real(kind=realtype) :: betaturb
1090  real(kind=realtype) :: l2conv
1091  real(kind=realtype) :: l2convcoarse
1092  real(kind=realtype) :: l2convrel
1093  real(kind=realtype) :: epscoefconv
1094  real(kind=realtype) allocatable,dimension(:) :: etark
1095  real(kind=realtype) allocatable,dimension(:) :: cdisrk
1096  real(kind=realtype), dimension(4) :: turbresscale
1097  real(kind=realtype) :: meshmaxskewness
1098  logical :: useskewnesscheck
1099  logical :: freezeturbsource
1100  logical :: printiterations
1101  logical :: printwarnings
1102  logical :: printnegativevolumes
1103  logical :: printbadlyskewedcells
1104  logical :: printbcwarnings
1105  real(kind=realtype) ::maxl2deviationfactor
1106  logical :: uselinresmonitor
1107  logical :: usedisscontinuation
1108  real(kind=realtype) :: disscontmagnitude
1109  real(kind=realtype) :: disscontmidpoint
1110  real(kind=realtype) :: disscontsharpness
1111  end module inputiteration
1112 
1113  module inputmotion ! in :adflow:../../modules/inputParam.f90
1114  use precision
1115  real(kind=realtype), dimension(3) :: rotpoint
1116  real(kind=realtype) allocatable,dimension(:) :: coscoeffouryrot
1117  real(kind=realtype) allocatable,dimension(:) :: coscoeffourxrot
1118  integer(kind=inttype) :: degreefourxrot
1119  real(kind=realtype) allocatable,dimension(:) :: sincoeffouralpha
1120  real(kind=realtype) :: omegafourbeta
1121  real(kind=realtype) allocatable,dimension(:) :: coscoeffourbeta
1122  real(kind=realtype) allocatable,dimension(:) :: sincoeffourbeta
1123  integer(kind=inttype) :: degreepolbeta
1124  real(kind=realtype) allocatable,dimension(:) :: sincoeffourmach
1125  integer(kind=inttype) :: degreepolmach
1126  real(kind=realtype) :: omegafourmach
1127  integer(kind=inttype) :: degreepolalpha
1128  real(kind=realtype) allocatable,dimension(:) :: coefpolmach
1129  real(kind=realtype) allocatable,dimension(:) :: coscoeffouralpha
1130  real(kind=realtype) allocatable,dimension(:) :: coscoeffourmach
1131  real(kind=realtype) allocatable,dimension(:) :: coefpolzrot
1132  logical :: gridmotionspecified
1133  real(kind=realtype) :: omegafourzrot
1134  integer(kind=inttype) :: degreefouryrot
1135  real(kind=realtype) allocatable,dimension(:) :: coefpolyrot
1136  integer(kind=inttype) :: degreefourbeta
1137  real(kind=realtype) :: omegafouralpha
1138  real(kind=realtype) allocatable,dimension(:) :: coscoeffourzrot
1139  integer(kind=inttype) :: degreepolzrot
1140  real(kind=realtype) allocatable,dimension(:) :: sincoeffourzrot
1141  real(kind=realtype) :: omegafouryrot
1142  integer(kind=inttype) :: degreefourzrot
1143  integer(kind=inttype) :: degreefourmach
1144  integer(kind=inttype) :: degreefouralpha
1145  real(kind=realtype) allocatable,dimension(:) :: coefpolalpha
1146  real(kind=realtype) :: omegafourxrot
1147  integer(kind=inttype) :: degreepolyrot
1148  real(kind=realtype) allocatable,dimension(:) :: sincoeffourxrot
1149  real(kind=realtype) allocatable,dimension(:) :: sincoeffouryrot
1150  integer(kind=inttype) :: degreepolxrot
1151  real(kind=realtype) allocatable,dimension(:) :: coefpolxrot
1152  real(kind=realtype) allocatable,dimension(:) :: coefpolbeta
1153  end module inputmotion
1154 
1155  module inputparallel ! in :adflow:../../modules/inputParam.f90
1156  real(kind=realtype) :: loadimbalance
1157  logical :: splitblocks
1158  integer(kind=inttype) :: loadbalanceiter
1159  integer(kind=inttype) :: partitionlikenproc
1160  end module inputparallel
1161 
1162  module inputphysics ! in :adflow:../../modules/inputParam.f90
1163  use precision
1164 
1165  integer(kind=inttype) :: equations
1166  integer(kind=inttype) :: equationmode
1167  integer(kind=inttype) :: flowtype
1168  integer(kind=inttype) :: turbmodel
1169  integer(kind=inttype) :: cpmodel
1170  integer(kind=inttype) :: turbprod
1171  integer(kind=inttype) :: rvfn
1172  logical :: rvfb
1173  logical :: useqcr
1174  logical :: userotationsa
1175  logical :: useft2sa
1176  logical :: wallfunctions
1177  real(kind=realtype) :: mach
1178  real(kind=realtype) :: machcoef
1179  real(kind=realtype) :: machgrid
1180  real(kind=realtype) :: reynolds
1181  real(kind=realtype) :: reynoldslength
1182  real(kind=realtype) :: gammaconstant
1183  real(kind=realtype) :: rgasdim
1184  real(kind=realtype) :: prandtl
1185  real(kind=realtype) :: prandtlturb
1186  real(kind=realtype) :: pklim
1187  real(kind=realtype) :: walloffset
1188  real(kind=realtype) :: eddyvisinfratio
1189  real(kind=realtype) :: turbintensityinf
1190  real(kind=realtype) :: surfaceref
1191  real(kind=realtype) :: lengthref
1192  real(kind=realtype) dimension(3) :: veldirfreestream
1193  real(kind=realtype) dimension(3) :: liftdirection
1194  real(kind=realtype) dimension(3) :: dragdirection
1195  real(kind=realtype) dimension(3) :: pointref
1196  real(kind=realtype) dimension(3) :: pointrefec
1197  real(kind=realtype) dimension(3,2) :: momentaxis
1198  logical :: forcesastractions
1199  real(kind=realtype) :: ssuthdim
1200  real(kind=realtype) :: musuthdim
1201  real(kind=realtype) :: tsuthdim
1202  real(kind=realtype) :: walldistcutoff
1203  real(kind=realtype) :: alpha
1204  real(kind=realtype) :: beta
1205  integer(kind=inttype) :: liftindex
1206  real(kind=realtype) :: cavitationnumber
1207  real(kind=realtype) :: cpmin_rho
1208  real(kind=realtype) :: sepsenmaxrho
1209  real(kind=realtype) :: sakappa
1210  real(kind=realtype) :: sacb1
1211  real(kind=realtype) :: sacb2
1212  real(kind=realtype) :: sasigma
1213  real(kind=realtype) :: sacv1
1214  real(kind=realtype) :: sacw2
1215  real(kind=realtype) :: sacw3
1216  real(kind=realtype) :: sact1
1217  real(kind=realtype) :: sact2
1218  real(kind=realtype) :: sact3
1219  real(kind=realtype) :: sact4
1220  real(kind=realtype) :: sacrot
1221  end module inputphysics
1222 
1223  module inputadjoint ! in :adflow:../modules/inputParam.f90
1224  use constants
1225  character(len=maxstringlen) :: adjointpcside
1226  character(len=maxstringlen) :: matrixordering
1227  character(len=maxstringlen) :: adjointsolvertype
1228  character(len=maxstringlen) :: gmresorthogtype
1229  character(len=maxstringlen) :: localpctype
1230  character(len=maxstringlen) :: precondtype
1231  real(kind=alwaysrealtype) :: adjabstol
1232  real(kind=alwaysrealtype) :: adjdivtol
1233  real(kind=alwaysrealtype) :: adjreltol
1234  real(kind=alwaysrealtype) :: adjreltolrel
1235  real(kind=realtype) :: adjmaxl2dev
1236  integer(kind=inttype) :: overlap
1237  integer(kind=inttype) :: adjmonstep
1238  integer(kind=inttype) :: filllevel
1239  integer(kind=inttype) :: adjmaxiter
1240  integer(kind=inttype) :: adjrestart
1241  integer(kind=inttype) :: innerpreconits
1242  integer(kind=inttype) :: outerpreconits
1243  integer(kind=inttype) :: adjamglevels
1244  integer(kind=inttype) :: adjamgnsmooth
1245  logical :: approxpc
1246  logical :: adpc
1247  logical :: viscpc
1248  logical :: frozenturbulence
1249  logical :: usediagtspc
1250  logical :: setmonitor
1251  logical :: printtiming
1252  logical :: firstrun
1253  logical :: verifystate
1254  logical :: verifyspatial
1255  logical :: verifyextra
1256  logical :: usematrixfreedrdw
1257  integer(kind=inttype) :: applyadjointpcsubspacesize
1258  end module inputadjoint
1259 
1260  module inputtimespectral ! in :adflow:../../modules/inputParam.f90
1261  use precision
1262  integer(kind=inttype) :: ntimeintervalsspectral
1263  real(kind=realtype) allocatable,dimension(:,:,:) :: dscalar
1264  real(kind=realtype) allocatable,dimension(:,:,:) :: dvector
1265  real(kind=realtype) :: dtunsteadyrestartspectral
1266  logical :: usetsinterpolatedgridvelocity
1267  logical :: writeunsteadyrestartspectral
1268  integer(kind=inttype) :: nunsteadysolspectral
1269  logical :: writeunsteadyvolspectral
1270  logical :: writeunsteadysurfspectral
1271  real(kind=realtype) allocatable,dimension(:,:,:) :: rotmatrixspectral
1272  real(kind=realtype) :: omegafourier
1273  end module inputtimespectral
1274  module inputoverset
1275  logical :: useoversetloadbalance
1276  real(kind=realtype) :: nearwalldist
1277  real(kind=realtype) :: backgroundvolscale
1278  real(kind=realtype) :: oversetprojtol
1279  real(kind=realtype) :: overlapfactor
1280  integer(kind=inttype) :: oversetupdatemode
1281  integer(kind=inttype)::nrefine
1282  integer(kind=inttype)::nflooditer
1283  logical :: debugzipper
1284  logical :: usezippermesh
1285  logical :: useoversetwallscaling
1286  logical :: recomputeoverlapmatrix
1287  logical :: oversetdebugprint
1288  real(kind=realtype) :: selfzipcutoff
1289  end module inputoverset
1290 
1291  module inputunsteady ! in :test:inputParam.f90
1292  use accuracy
1293  real(kind=realtype) :: deltat
1294  logical :: useale
1295  integer(kind=inttype) :: timeintegrationscheme
1296  logical :: updatewalldistanceunsteady
1297  integer(kind=inttype) :: timeaccuracy
1298  integer(kind=inttype) :: ntimestepsfine
1299  integer(kind=inttype) :: ntimestepscoarse
1300  end module inputunsteady
1301 
1302  module iteration ! in :adflow:../../modules/iteration.f90
1303  use precision
1304  integer(kind=inttype) :: groundlevel
1305  integer(kind=inttype) :: currentlevel
1306  integer(kind=inttype) :: rkstage
1307  integer(kind=inttype) :: nstepscycling
1308  integer(kind=inttype) allocatable,dimension(:) :: cycling
1309  integer(kind=inttype) :: itertot
1310  integer(kind=inttype) :: approxtotalits
1311  real(kind=realtype) :: rfil
1312  real(kind=realtype) :: t0solver
1313  logical :: converged
1314  logical :: exchangepressureearly
1315  logical :: standalonemode
1316  logical :: changing_grid
1317  logical :: deforming_grid
1318  logical :: changingoverset
1319  integer(kind=inttype) :: noldsolavail
1320  integer(kind=inttype) :: noldlevels
1321  real(kind=realtype) allocatable,dimension(:) :: coeftime
1322  logical :: timespectralgridsnotwritten
1323  logical, dimension(:), allocatable :: oldsolwritten
1324  real(kind=realtype) :: totalr0
1325  real(kind=realtype) :: totalrstart
1326  real(kind=realtype) :: totalrfinal
1327  end module iteration
1328 
1329  module monitor ! in :adflow:../../modules/monitor.f90
1330  use constants
1331  integer :: nmonsum
1332  integer :: nmonmax
1333  integer :: nmon
1334  real(kind=realtype) allocatable,dimension(:) :: monloc
1335  real(kind=realtype) allocatable,dimension(:) :: monglob
1336  real(kind=realtype) allocatable,dimension(:) :: monref
1337  character(len=32) allocatable,dimension(:) :: monnames
1338  logical :: monmachorhmax
1339  logical :: showcpu
1340  logical :: monmasssliding
1341  logical :: monmassfamilies
1342  real(kind=realtype) allocatable,dimension(:,:,:) :: convarray
1343  real(kind=realtype) allocatable,dimension(:,:,:) :: solverdataarray
1344  integer(kind=inttype) :: ntimestepsrestart
1345  integer(kind=inttype) :: timestepunsteady
1346  real(kind=realtype) :: timeunsteady
1347  real(kind=realtype) :: timeunsteadyrestart
1348  real(kind=realtype) allocatable,dimension(:) :: timearray
1349  real(kind=realtype) allocatable,dimension(:,:) :: timedataarray
1350  logical :: writegrid
1351  logical :: writevolume
1352  logical :: writesurface
1353  logical :: writesoleachiter
1354  end module monitor
1355 
1356  module block ! in :adflow:../../modules/block.f90
1357  use constants
1358  integer(kind=inttype) :: ndom
1359  integer(kind=inttype) allocatable,dimension(:) :: ncellglobal
1360  end module block
1361 
1362  module flowvarrefstate ! in :adflow:../../modules/flowVarRefState.f90
1363  use constants
1364  integer(kind=inttype) :: nw
1365  integer(kind=inttype) :: nwf
1366  integer(kind=inttype) :: nwt
1367  integer(kind=inttype) :: nt1
1368  integer(kind=inttype) :: nt2
1369  real(kind=realtype) :: pref
1370  real(kind=realtype) :: rhoref
1371  real(kind=realtype) :: tref
1372  real(kind=realtype) :: muref
1373  real(kind=realtype) :: timeref
1374  real(kind=realtype) :: lref
1375  logical :: lrefspecified
1376  real(kind=realtype) :: pinfdim
1377  real(kind=realtype) :: rhoinfdim
1378  real(kind=realtype) :: tinfdim
1379  real(kind=realtype) :: mudim
1380  real(kind=realtype) :: rhoinf
1381  real(kind=realtype) :: uinf
1382  real(kind=realtype) :: pinf
1383  real(kind=realtype) :: pinfcorr
1384  real(kind=realtype) :: rgas
1385  real(kind=realtype) :: muinf
1386  real(kind=realtype) :: gammainf
1387  real(kind=realtype) allocatable,dimension(:) :: winf
1388  logical :: kpresent
1389  logical :: eddymodel
1390  logical :: viscous
1391  end module flowvarrefstate
1392 
1393  module killsignals ! in :adflow:../../modules/killSignals.f90
1394  use precision
1395  logical :: frompython
1396  logical :: routinefailed
1397  logical :: fatalfail
1398  logical :: adjointfailed
1399  end module killsignals
1400 
1401  module inputcostfunctions ! in :test:costFunctions.F90
1402  use constants
1403  logical::computesepsensorks
1404  real(kind=realtype) sepsensoroffset
1405  real(kind=realtype) sepsensorksoffset
1406  real(kind=realtype) sepsensorsharpness
1407  real(kind=realtype) sepsensorkssharpness
1408  real(kind=realtype) sepsensorksphi
1409  real(kind=realtype) cavsensoroffset
1410  real(kind=realtype) cavsensorsharpness
1411  integer(kind=inttype) cavexponent
1412  logical::computecavitation
1413  end module inputcostfunctions
1414 
1415  module adjointvars ! in :test:ADjointVars.F90
1416  use constants
1417  integer(kind=inttype) dimension(20) :: ncellslocal
1418  integer(kind=inttype) dimension(20) :: ncellsglobal
1419  integer(kind=inttype) dimension(20) :: nnodeslocal
1420  integer(kind=inttype), parameter,optional :: ialpha=1
1421  integer(kind=inttype), parameter,optional :: ibeta=2
1422  integer(kind=inttype), parameter,optional :: imach=3
1423  integer(kind=inttype), parameter,optional :: imachgrid=4
1424  integer(kind=inttype), parameter,optional :: irotx=5
1425  integer(kind=inttype), parameter,optional :: iroty=6
1426  integer(kind=inttype), parameter,optional :: irotz=7
1427  integer(kind=inttype), parameter,optional :: irotcenx=8
1428  integer(kind=inttype), parameter,optional :: irotceny=9
1429  integer(kind=inttype), parameter,optional :: irotcenz=10
1430  integer(kind=inttype), parameter,optional :: ipointrefx=11
1431  integer(kind=inttype), parameter,optional :: ipointrefy=12
1432  integer(kind=inttype), parameter,optional :: ipointrefz=13
1433  integer(kind=inttype), parameter,optional :: ipressure=14
1434  integer(kind=inttype), parameter,optional :: itemperature=15
1435  integer(kind=inttype), parameter,optional :: idensity=16
1436  integer(kind=inttype), parameter,optional :: iaxisx1=17
1437  integer(kind=inttype), parameter,optional :: iaxisx2=18
1438  integer(kind=inttype), parameter,optional :: iaxisy1=19
1439  integer(kind=inttype), parameter,optional :: iaxisy2=20
1440  integer(kind=inttype), parameter,optional :: iaxisz1=21
1441  integer(kind=inttype), parameter,optional :: iaxisz2=22
1442  integer(kind=inttype), parameter,optional :: ndesignextra=22
1443  end module adjointvars
1444 
1445  module adjointpetsc
1446  real(kind=alwaysrealtype) :: adjresinit, adjresstart, adjresfinal
1447  end module adjointpetsc
1448 
1449  module inputtsstabderiv ! in :test:inputParam.f90
1450  logical :: usewindaxis
1451  logical :: tsrmode
1452  logical :: tsstability
1453  logical :: tsbetamode
1454  logical :: tsmachmode
1455  logical :: tsaltitudemode
1456  logical :: tspmode
1457  logical :: tsqmode
1458  logical :: tsalphamode
1459  logical :: tsalphafollowing
1460  end module inputtsstabderiv
1461 
1462  module surfacefamilies ! in :test:inputParam.F90
1463  subroutine getnfam(nfam) ! in :test:surfaceFamilies.F90:surfacefamilies
1464  integer(kind=inttype) intent(out) :: nfam
1465  end subroutine getnfam
1466  subroutine getfam(i,fam) ! in :test:surfaceFamilies.F90:surfacefamilies
1467  integer(kind=inttype) intent(in) :: i
1468  character(32) intent(out) :: fam
1469  end subroutine getfam
1470  end module surfacefamilies
1471 
1472 ! ================ bare subroutines =============
1473 
1474  subroutine writesol(famlist,nfamlist) ! in :test:writeSol.F90
1475  integer(kind=inttype) dimension(nfamlist),intent(in) :: famlist
1476  integer(kind=inttype), optional,intent(in),check(len(famlist)>=nfamlist),depend(famlist) :: nfamlist=len(famlist)
1477  end subroutine writesol
1478 
1479  subroutine getforces(forces,npts,sps) ! in :test:getForces.F90
1480  real(kind=realtype) dimension(3,npts),intent(inout) :: forces
1481  integer(kind=inttype), optional,intent(in),check(shape(forces,1)==npts),depend(forces) :: npts=shape(forces,1)
1482  integer(kind=inttype) intent(in) :: sps
1483  end subroutine getforces
1484 
1485  subroutine getheatflux(hflux,npts,sps_in) ! in :test:getForces.F90
1486  real(kind=realtype) dimension(npts),intent(inout) :: hflux
1487  integer(kind=inttype), optional,intent(in),depend(hflux) :: npts=len(hflux)
1488  integer(kind=inttype) intent(in) :: sps_in
1489  end subroutine getheatflux
1490 
1491  subroutine settnswall(tnsw,npts,sps_in) ! in :test:getForces.F90
1492  real(kind=realtype) dimension(npts),intent(in) :: tnsw
1493  integer(kind=inttype) optional,intent(in),check(len(tnsw)>=npts),depend(tnsw) :: npts=len(tnsw)
1494  integer(kind=inttype) intent(in) :: sps_in
1495  end subroutine settnswall
1496 
1497  subroutine gettnswall(tnsw,npts,sps) ! in :test:getForces.F90
1498  real(kind=realtype) dimension(npts),intent(out),depend(npts) :: tnsw
1499  integer(kind=inttype) intent(in) :: npts
1500  integer(kind=inttype) intent(in) :: sps
1501  end subroutine gettnswall
1502 
1503  subroutine setcptargets(cptarget,npts,sps_in) ! in :test:setCpTarget.f90
1504  real(kind=realtype) dimension(npts),intent(in) :: cptarget
1505  integer(kind=inttype) optional,intent(in),check(len(cptarget)>=npts),depend(cptarget) :: npts=len(cptarget)
1506  integer(kind=inttype) intent(in) :: sps_in
1507  end subroutine setcptargets
1508 
1509  subroutine getcptargets(cptarget,npts,sps) ! in :test:getForces.F90
1510  real(kind=realtype) dimension(npts),intent(out),depend(npts) :: cptarget
1511  integer(kind=inttype) intent(in) :: npts
1512  integer(kind=inttype) intent(in) :: sps
1513  end subroutine getcptargets
1514 
1515  subroutine getareas(areas,pts,npts,sps_in,axis) ! in :test:getAreas.f90
1516  real(kind=realtype) dimension(3,npts),intent(out),depend(npts) :: areas
1517  real(kind=realtype) dimension(3,npts),intent(in) :: pts
1518  integer(kind=inttype) optional,intent(in),check(shape(pts,1)==npts),depend(pts) :: npts=shape(pts,1)
1519  integer(kind=inttype) intent(in) :: sps_in
1520  real(kind=realtype) dimension(3),intent(in) :: axis
1521  end subroutine getareas
1522 
1523  subroutine getareasensitivity(darea,pts,npts,sps_in,axis) ! in :test:getAreas.f90
1524  real(kind=realtype) dimension(3,npts),intent(out),depend(npts) :: darea
1525  real(kind=realtype) dimension(3,npts),intent(in) :: pts
1526  integer(kind=inttype) optional,intent(in),check(shape(pts,1)==npts),depend(pts) :: npts=shape(pts,1)
1527  integer(kind=inttype) intent(in) :: sps_in
1528  real(kind=realtype) dimension(3),intent(in) :: axis
1529  end subroutine getareasensitivity
1530 
1531 
1532  end interface
1533 
1534 #ifdef USE_COMPLEX
1535 end python module libadflow_cs
1536 #else
1537 end python module libadflow
1538 #endif