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  end module inputphysics
1210 
1211  module inputadjoint ! in :adflow:../modules/inputParam.f90
1212  use constants
1213  character(len=maxstringlen) :: adjointpcside
1214  character(len=maxstringlen) :: matrixordering
1215  character(len=maxstringlen) :: adjointsolvertype
1216  character(len=maxstringlen) :: gmresorthogtype
1217  character(len=maxstringlen) :: localpctype
1218  character(len=maxstringlen) :: precondtype
1219  real(kind=alwaysrealtype) :: adjabstol
1220  real(kind=alwaysrealtype) :: adjdivtol
1221  real(kind=alwaysrealtype) :: adjreltol
1222  real(kind=alwaysrealtype) :: adjreltolrel
1223  real(kind=realtype) :: adjmaxl2dev
1224  integer(kind=inttype) :: overlap
1225  integer(kind=inttype) :: adjmonstep
1226  integer(kind=inttype) :: filllevel
1227  integer(kind=inttype) :: adjmaxiter
1228  integer(kind=inttype) :: adjrestart
1229  integer(kind=inttype) :: innerpreconits
1230  integer(kind=inttype) :: outerpreconits
1231  integer(kind=inttype) :: adjamglevels
1232  integer(kind=inttype) :: adjamgnsmooth
1233  logical :: approxpc
1234  logical :: adpc
1235  logical :: viscpc
1236  logical :: frozenturbulence
1237  logical :: usediagtspc
1238  logical :: setmonitor
1239  logical :: printtiming
1240  logical :: firstrun
1241  logical :: verifystate
1242  logical :: verifyspatial
1243  logical :: verifyextra
1244  logical :: usematrixfreedrdw
1245  integer(kind=inttype) :: applyadjointpcsubspacesize
1246  end module inputadjoint
1247 
1248  module inputtimespectral ! in :adflow:../../modules/inputParam.f90
1249  use precision
1250  integer(kind=inttype) :: ntimeintervalsspectral
1251  real(kind=realtype) allocatable,dimension(:,:,:) :: dscalar
1252  real(kind=realtype) allocatable,dimension(:,:,:) :: dvector
1253  real(kind=realtype) :: dtunsteadyrestartspectral
1254  logical :: usetsinterpolatedgridvelocity
1255  logical :: writeunsteadyrestartspectral
1256  integer(kind=inttype) :: nunsteadysolspectral
1257  logical :: writeunsteadyvolspectral
1258  logical :: writeunsteadysurfspectral
1259  real(kind=realtype) allocatable,dimension(:,:,:) :: rotmatrixspectral
1260  real(kind=realtype) :: omegafourier
1261  end module inputtimespectral
1262  module inputoverset
1263  logical :: useoversetloadbalance
1264  real(kind=realtype) :: nearwalldist
1265  real(kind=realtype) :: backgroundvolscale
1266  real(kind=realtype) :: oversetprojtol
1267  real(kind=realtype) :: overlapfactor
1268  integer(kind=inttype) :: oversetupdatemode
1269  integer(kind=inttype)::nrefine
1270  integer(kind=inttype)::nflooditer
1271  logical :: debugzipper
1272  logical :: usezippermesh
1273  logical :: useoversetwallscaling
1274  logical :: recomputeoverlapmatrix
1275  logical :: oversetdebugprint
1276  real(kind=realtype) :: selfzipcutoff
1277  end module inputoverset
1278 
1279  module inputunsteady ! in :test:inputParam.f90
1280  use accuracy
1281  real(kind=realtype) :: deltat
1282  logical :: useale
1283  integer(kind=inttype) :: timeintegrationscheme
1284  logical :: updatewalldistanceunsteady
1285  integer(kind=inttype) :: timeaccuracy
1286  integer(kind=inttype) :: ntimestepsfine
1287  integer(kind=inttype) :: ntimestepscoarse
1288  end module inputunsteady
1289 
1290  module iteration ! in :adflow:../../modules/iteration.f90
1291  use precision
1292  integer(kind=inttype) :: groundlevel
1293  integer(kind=inttype) :: currentlevel
1294  integer(kind=inttype) :: rkstage
1295  integer(kind=inttype) :: nstepscycling
1296  integer(kind=inttype) allocatable,dimension(:) :: cycling
1297  integer(kind=inttype) :: itertot
1298  integer(kind=inttype) :: approxtotalits
1299  real(kind=realtype) :: rfil
1300  real(kind=realtype) :: t0solver
1301  logical :: converged
1302  logical :: exchangepressureearly
1303  logical :: standalonemode
1304  logical :: changing_grid
1305  logical :: deforming_grid
1306  logical :: changingoverset
1307  integer(kind=inttype) :: noldsolavail
1308  integer(kind=inttype) :: noldlevels
1309  real(kind=realtype) allocatable,dimension(:) :: coeftime
1310  logical :: timespectralgridsnotwritten
1311  logical, dimension(:), allocatable :: oldsolwritten
1312  real(kind=realtype) :: totalr0
1313  real(kind=realtype) :: totalrstart
1314  real(kind=realtype) :: totalrfinal
1315  end module iteration
1316 
1317  module monitor ! in :adflow:../../modules/monitor.f90
1318  use constants
1319  integer :: nmonsum
1320  integer :: nmonmax
1321  integer :: nmon
1322  real(kind=realtype) allocatable,dimension(:) :: monloc
1323  real(kind=realtype) allocatable,dimension(:) :: monglob
1324  real(kind=realtype) allocatable,dimension(:) :: monref
1325  character(len=32) allocatable,dimension(:) :: monnames
1326  logical :: monmachorhmax
1327  logical :: showcpu
1328  logical :: monmasssliding
1329  logical :: monmassfamilies
1330  real(kind=realtype) allocatable,dimension(:,:,:) :: convarray
1331  real(kind=realtype) allocatable,dimension(:,:,:) :: solverdataarray
1332  integer(kind=inttype) :: ntimestepsrestart
1333  integer(kind=inttype) :: timestepunsteady
1334  real(kind=realtype) :: timeunsteady
1335  real(kind=realtype) :: timeunsteadyrestart
1336  real(kind=realtype) allocatable,dimension(:) :: timearray
1337  real(kind=realtype) allocatable,dimension(:,:) :: timedataarray
1338  logical :: writegrid
1339  logical :: writevolume
1340  logical :: writesurface
1341  logical :: writesoleachiter
1342  end module monitor
1343 
1344  module block ! in :adflow:../../modules/block.f90
1345  use constants
1346  integer(kind=inttype) :: ndom
1347  integer(kind=inttype) allocatable,dimension(:) :: ncellglobal
1348  end module block
1349 
1350  module flowvarrefstate ! in :adflow:../../modules/flowVarRefState.f90
1351  use constants
1352  integer(kind=inttype) :: nw
1353  integer(kind=inttype) :: nwf
1354  integer(kind=inttype) :: nwt
1355  integer(kind=inttype) :: nt1
1356  integer(kind=inttype) :: nt2
1357  real(kind=realtype) :: pref
1358  real(kind=realtype) :: rhoref
1359  real(kind=realtype) :: tref
1360  real(kind=realtype) :: muref
1361  real(kind=realtype) :: timeref
1362  real(kind=realtype) :: lref
1363  logical :: lrefspecified
1364  real(kind=realtype) :: pinfdim
1365  real(kind=realtype) :: rhoinfdim
1366  real(kind=realtype) :: tinfdim
1367  real(kind=realtype) :: mudim
1368  real(kind=realtype) :: rhoinf
1369  real(kind=realtype) :: uinf
1370  real(kind=realtype) :: pinf
1371  real(kind=realtype) :: pinfcorr
1372  real(kind=realtype) :: rgas
1373  real(kind=realtype) :: muinf
1374  real(kind=realtype) :: gammainf
1375  real(kind=realtype) allocatable,dimension(:) :: winf
1376  logical :: kpresent
1377  logical :: eddymodel
1378  logical :: viscous
1379  end module flowvarrefstate
1380 
1381  module killsignals ! in :adflow:../../modules/killSignals.f90
1382  use precision
1383  logical :: frompython
1384  logical :: routinefailed
1385  logical :: fatalfail
1386  logical :: adjointfailed
1387  end module killsignals
1388 
1389  module inputcostfunctions ! in :test:costFunctions.F90
1390  use constants
1391  logical::computesepsensorks
1392  real(kind=realtype) sepsensoroffset
1393  real(kind=realtype) sepsensorksoffset
1394  real(kind=realtype) sepsensorsharpness
1395  real(kind=realtype) sepsensorkssharpness
1396  real(kind=realtype) sepsensorksphi
1397  real(kind=realtype) cavsensoroffset
1398  real(kind=realtype) cavsensorsharpness
1399  integer(kind=inttype) cavexponent
1400  logical::computecavitation
1401  end module inputcostfunctions
1402 
1403  module adjointvars ! in :test:ADjointVars.F90
1404  use constants
1405  integer(kind=inttype) dimension(20) :: ncellslocal
1406  integer(kind=inttype) dimension(20) :: ncellsglobal
1407  integer(kind=inttype) dimension(20) :: nnodeslocal
1408  integer(kind=inttype), parameter,optional :: ialpha=1
1409  integer(kind=inttype), parameter,optional :: ibeta=2
1410  integer(kind=inttype), parameter,optional :: imach=3
1411  integer(kind=inttype), parameter,optional :: imachgrid=4
1412  integer(kind=inttype), parameter,optional :: irotx=5
1413  integer(kind=inttype), parameter,optional :: iroty=6
1414  integer(kind=inttype), parameter,optional :: irotz=7
1415  integer(kind=inttype), parameter,optional :: irotcenx=8
1416  integer(kind=inttype), parameter,optional :: irotceny=9
1417  integer(kind=inttype), parameter,optional :: irotcenz=10
1418  integer(kind=inttype), parameter,optional :: ipointrefx=11
1419  integer(kind=inttype), parameter,optional :: ipointrefy=12
1420  integer(kind=inttype), parameter,optional :: ipointrefz=13
1421  integer(kind=inttype), parameter,optional :: ipressure=14
1422  integer(kind=inttype), parameter,optional :: itemperature=15
1423  integer(kind=inttype), parameter,optional :: idensity=16
1424  integer(kind=inttype), parameter,optional :: iaxisx1=17
1425  integer(kind=inttype), parameter,optional :: iaxisx2=18
1426  integer(kind=inttype), parameter,optional :: iaxisy1=19
1427  integer(kind=inttype), parameter,optional :: iaxisy2=20
1428  integer(kind=inttype), parameter,optional :: iaxisz1=21
1429  integer(kind=inttype), parameter,optional :: iaxisz2=22
1430  integer(kind=inttype), parameter,optional :: ndesignextra=22
1431  end module adjointvars
1432 
1433  module adjointpetsc
1434  real(kind=alwaysrealtype) :: adjresinit, adjresstart, adjresfinal
1435  end module adjointpetsc
1436 
1437  module inputtsstabderiv ! in :test:inputParam.f90
1438  logical :: usewindaxis
1439  logical :: tsrmode
1440  logical :: tsstability
1441  logical :: tsbetamode
1442  logical :: tsmachmode
1443  logical :: tsaltitudemode
1444  logical :: tspmode
1445  logical :: tsqmode
1446  logical :: tsalphamode
1447  logical :: tsalphafollowing
1448  end module inputtsstabderiv
1449 
1450  module surfacefamilies ! in :test:inputParam.F90
1451  subroutine getnfam(nfam) ! in :test:surfaceFamilies.F90:surfacefamilies
1452  integer(kind=inttype) intent(out) :: nfam
1453  end subroutine getnfam
1454  subroutine getfam(i,fam) ! in :test:surfaceFamilies.F90:surfacefamilies
1455  integer(kind=inttype) intent(in) :: i
1456  character(32) intent(out) :: fam
1457  end subroutine getfam
1458  end module surfacefamilies
1459 
1460 ! ================ bare subroutines =============
1461 
1462  subroutine writesol(famlist,nfamlist) ! in :test:writeSol.F90
1463  integer(kind=inttype) dimension(nfamlist),intent(in) :: famlist
1464  integer(kind=inttype), optional,intent(in),check(len(famlist)>=nfamlist),depend(famlist) :: nfamlist=len(famlist)
1465  end subroutine writesol
1466 
1467  subroutine getforces(forces,npts,sps) ! in :test:getForces.F90
1468  real(kind=realtype) dimension(3,npts),intent(inout) :: forces
1469  integer(kind=inttype), optional,intent(in),check(shape(forces,1)==npts),depend(forces) :: npts=shape(forces,1)
1470  integer(kind=inttype) intent(in) :: sps
1471  end subroutine getforces
1472 
1473  subroutine getheatflux(hflux,npts,sps_in) ! in :test:getForces.F90
1474  real(kind=realtype) dimension(npts),intent(inout) :: hflux
1475  integer(kind=inttype), optional,intent(in),depend(hflux) :: npts=len(hflux)
1476  integer(kind=inttype) intent(in) :: sps_in
1477  end subroutine getheatflux
1478 
1479  subroutine settnswall(tnsw,npts,sps_in) ! in :test:getForces.F90
1480  real(kind=realtype) dimension(npts),intent(in) :: tnsw
1481  integer(kind=inttype) optional,intent(in),check(len(tnsw)>=npts),depend(tnsw) :: npts=len(tnsw)
1482  integer(kind=inttype) intent(in) :: sps_in
1483  end subroutine settnswall
1484 
1485  subroutine gettnswall(tnsw,npts,sps) ! in :test:getForces.F90
1486  real(kind=realtype) dimension(npts),intent(out),depend(npts) :: tnsw
1487  integer(kind=inttype) intent(in) :: npts
1488  integer(kind=inttype) intent(in) :: sps
1489  end subroutine gettnswall
1490 
1491  subroutine setcptargets(cptarget,npts,sps_in) ! in :test:setCpTarget.f90
1492  real(kind=realtype) dimension(npts),intent(in) :: cptarget
1493  integer(kind=inttype) optional,intent(in),check(len(cptarget)>=npts),depend(cptarget) :: npts=len(cptarget)
1494  integer(kind=inttype) intent(in) :: sps_in
1495  end subroutine setcptargets
1496 
1497  subroutine getcptargets(cptarget,npts,sps) ! in :test:getForces.F90
1498  real(kind=realtype) dimension(npts),intent(out),depend(npts) :: cptarget
1499  integer(kind=inttype) intent(in) :: npts
1500  integer(kind=inttype) intent(in) :: sps
1501  end subroutine getcptargets
1502 
1503  subroutine getareas(areas,pts,npts,sps_in,axis) ! in :test:getAreas.f90
1504  real(kind=realtype) dimension(3,npts),intent(out),depend(npts) :: areas
1505  real(kind=realtype) dimension(3,npts),intent(in) :: pts
1506  integer(kind=inttype) optional,intent(in),check(shape(pts,1)==npts),depend(pts) :: npts=shape(pts,1)
1507  integer(kind=inttype) intent(in) :: sps_in
1508  real(kind=realtype) dimension(3),intent(in) :: axis
1509  end subroutine getareas
1510 
1511  subroutine getareasensitivity(darea,pts,npts,sps_in,axis) ! in :test:getAreas.f90
1512  real(kind=realtype) dimension(3,npts),intent(out),depend(npts) :: darea
1513  real(kind=realtype) dimension(3,npts),intent(in) :: pts
1514  integer(kind=inttype) optional,intent(in),check(shape(pts,1)==npts),depend(pts) :: npts=shape(pts,1)
1515  integer(kind=inttype) intent(in) :: sps_in
1516  real(kind=realtype) dimension(3),intent(in) :: axis
1517  end subroutine getareasensitivity
1518 
1519 
1520  end interface
1521 
1522 #ifdef USE_COMPLEX
1523 end python module libadflow_cs
1524 #else
1525 end python module libadflow
1526 #endif