Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TURB_AllocateMemory.F90
Go to the documentation of this file.
1 ! *********************************************************************
2 ! * Rocstar Simulation Suite *
3 ! * Copyright@2015, Illinois Rocstar LLC. All rights reserved. *
4 ! * *
5 ! * Illinois Rocstar LLC *
6 ! * Champaign, IL *
7 ! * www.illinoisrocstar.com *
8 ! * sales@illinoisrocstar.com *
9 ! * *
10 ! * License: See LICENSE file in top level of distribution package or *
11 ! * http://opensource.org/licenses/NCSA *
12 ! *********************************************************************
13 ! *********************************************************************
14 ! * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
15 ! * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *
16 ! * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
17 ! * NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR *
18 ! * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
19 ! * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
20 ! * Arising FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
21 ! * USE OR OTHER DEALINGS WITH THE SOFTWARE. *
22 ! *********************************************************************
23 !******************************************************************************
24 !
25 ! Purpose: Allocate memory for all variables associated with turbulence
26 ! for all active regions on current processor.
27 !
28 ! Description: none.
29 !
30 ! Input: region = info of current region data
31 !
32 ! Output: region%turb = info of current turbulence data
33 !
34 ! Notes: The total size of memory depends on the input selected by user.
35 !
36 !******************************************************************************
37 !
38 ! $Id: TURB_AllocateMemory.F90,v 1.17 2009/08/31 05:17:35 mtcampbe Exp $
39 !
40 ! Copyright: (c) 2001 by the University of Illinois
41 !
42 !******************************************************************************
43 
44 SUBROUTINE turb_allocatememory( region ) ! PUBLIC
45 
46  USE moddatatypes
47  USE modbndpatch, ONLY : t_patch
48  USE moddatastruct, ONLY : t_region
49  USE modglobal, ONLY : t_global
50  USE modturbulence, ONLY : t_turb
51  USE moderror
52  USE modparameters
54 #ifdef RFLO
57 #include "Indexing.h"
58 #endif
59  IMPLICIT NONE
60 
61 ! ... parameters
62  TYPE(t_region), TARGET :: region
63 
64 ! ... loop variables
65  INTEGER :: ipatch, ijbeg, ijend, ibc, iec, ibn, ien
66 #ifdef RFLO
67  INTEGER :: ilev
68 #endif
69 
70 ! ... local variables
71  CHARACTER(CHRLEN) :: rcsidentstring
72  TYPE(t_global), POINTER :: global
73  TYPE(t_turb), POINTER :: turb
74  TYPE(t_patch), POINTER :: patch1, patch
75 
76  INTEGER :: turbmodel, modelclass, filtertype, errfl
77  INTEGER :: ncv, ndv, nsv, nst, ngrad, nzof, filterwidth(diri:dirk)
78 #ifdef RFLO
79  INTEGER :: idcbeg, idcend, jdcbeg, jdcend, kdcbeg, kdcend
80  INTEGER :: idnbeg, idnend, jdnbeg, jdnend, kdnbeg, kdnend
81  INTEGER :: n1, n2, ioff, icoff, ijcoff, inoff, ijnoff
82  INTEGER :: homdir(diri:dirk)
83 #endif
84 #ifdef RFLU
85  INTEGER :: npatches, ncellstot, nfaces, nfacestot, nbfaces, nbfacestot
86 #endif
87 
88 !******************************************************************************
89 
90  rcsidentstring = '$RCSfile: TURB_AllocateMemory.F90,v $ $Revision: 1.17 $'
91 
92  global => region%global
93  CALL registerfunction( global,'TURB_AllocateMemory',&
94  'TURB_AllocateMemory.F90' )
95 
96 ! get variables ---------------------------------------------------------------
97 
98  turbmodel = region%mixtInput%turbModel
99  modelclass = region%turbInput%modelClass
100  ncv = region%turbInput%nCv
101  ndv = region%turbInput%nDv
102  nsv = region%turbInput%nSv
103  nst = region%turbInput%nSt
104  ngrad = region%turbInput%nGrad
105  nzof = region%turbInput%nZof
106  filterwidth(:) = region%turbInput%filterWidth(:) ! RFLU only uses 1st comp.
107 
108 #ifdef RFLO
109  filtertype = region%turbInput%filterType
110  homdir(:) = region%turbInput%homDir(:)
111 
112 ! loop over all grid levels
113 
114  DO ilev=1,region%nGridLevels
115 
116  turb => region%levels(ilev)%turb
117 
118 ! - get cell and node dimensions ----------------------------------------------
119 
120  CALL rflo_getdimensdummy( region,ilev,idcbeg,idcend, &
121  jdcbeg,jdcend,kdcbeg,kdcend )
122  CALL rflo_getcelloffset( region,ilev,icoff,ijcoff )
123  ibc = indijk(idcbeg,jdcbeg,kdcbeg,icoff,ijcoff)
124  iec = indijk(idcend,jdcend,kdcend,icoff,ijcoff)
125 
126  CALL rflo_getdimensdummynodes( region,ilev,idnbeg,idnend, &
127  jdnbeg,jdnend,kdnbeg,kdnend )
128  CALL rflo_getnodeoffset( region,ilev,inoff,ijnoff )
129  ibn = indijk(idnbeg,jdnbeg,kdnbeg,inoff,ijnoff)
130  ien = indijk(idnend,jdnend,kdnend,inoff,ijnoff)
131 #endif
132 #ifdef RFLU
133 ! - get variables and pointers ------------------------------------------------
134  turb => region%turb
135 
136 ! - get cell and node dimensions
137  ncellstot = region%grid%nCellsTot
138  nfaces = region%grid%nFaces
139  nfacestot = region%grid%nFacesTot
140  ibc = 1
141  iec = ncellstot
142  ibn = 1
143  ien = nfaces
144  npatches = region%grid%nPatches
145 
146  nbfaces = 0
147  nbfacestot = 0
148 
149  DO ipatch = 1,npatches
150  patch => region%patches(ipatch)
151 
152  nbfaces = nbfaces + patch%nBTris + patch%nBQuads
153  nbfacestot = nbfacestot + patch%nBTrisTot + patch%nBQuadsTot
154  END DO ! iPatch
155 #endif
156 
157 ! - RANS/DES -----------------------------------------------------------------
158 ! - RANS transport equations variables: cv, cvOld, rhs, rhsSum, diss, lens,
159 ! srad, epsIrs (only RFLO)
160 
161  IF ((modelclass==model_rans) .AND. (ncv > 0)) THEN
162  ALLOCATE( turb%cv( ncv,ibc:iec),stat=errfl )
163  IF (errfl>0) goto 88
164  ALLOCATE( turb%cvOld( ncv,ibc:iec),stat=errfl )
165  IF (errfl>0) goto 88
166  ALLOCATE( turb%rhs( ncv,ibc:iec),stat=errfl )
167  IF (errfl>0) goto 88
168  ALLOCATE( turb%rhsSum(ncv,ibc:iec),stat=errfl )
169  IF (errfl>0) goto 88
170  ALLOCATE( turb%diss( ncv,ibc:iec),stat=errfl )
171  IF (errfl>0) goto 88
172  ALLOCATE( turb%dsterm(ncv,ibc:iec),stat=errfl )
173  IF (errfl>0) goto 88
174  ALLOCATE( turb%lens( ibc:iec),stat=errfl )
175  IF (errfl>0) goto 88
176  IF (global%solverType==solv_implicit) THEN ! Dual Tst
177  ALLOCATE( turb%cvn( ncv,ibc:iec),stat=errfl )
178  IF (errfl>0) goto 88
179  ALLOCATE( turb%cvn1( ncv,ibc:iec),stat=errfl )
180  IF (errfl>0) goto 88
181  ALLOCATE( turb%cvn2( ncv,ibc:iec),stat=errfl )
182  IF (errfl>0) goto 88
183  ALLOCATE( turb%sDual(ncv,ibc:iec),stat=errfl );
184  IF (errfl>0) goto 88
185  ELSE
186  nullify( turb%cvn,turb%cvn1,turb%cvn2,turb%sDual )
187 ! NULLIFY( turb%cv,turb%cvOld,turb%rhs,turb%rhsSum,turb%diss)
188  ENDIF ! implicit
189  ELSE
190  nullify( turb%cvn,turb%cvn1,turb%cvn2,turb%sDual )
191  nullify( turb%cv,turb%cvOld,turb%rhs,turb%rhsSum,turb%diss)
192  ENDIF ! rans
193 
194 #ifdef RFLO
195  IF ((modelclass==model_rans) .AND. (ncv > 0)) THEN
196  ALLOCATE( turb%srad(diri:dirk,ibc:iec),stat=errfl )
197  IF (errfl>0) goto 88
198  IF ((global%flowType==flow_steady) .AND. &
199  (region%turbInput%smoocf > 0._rfreal)) THEN
200  ALLOCATE( turb%epsIrs(diri:dirk,ibc:iec), stat=errfl )
201  IF (errfl>0) goto 88
202  ELSE
203  nullify( turb%epsIrs )
204  ENDIF
205  ELSE
206  nullify( turb%srad,turb%epsIrs )
207  ENDIF
208 #endif
209 
210 ! - RANS gradient variables
211 ! - note: put within MODEL_RANS for not allocated twice by LES as they may be
212 ! allocated somewhere as LES work variables to save memory
213 
214  IF (modelclass==model_rans) THEN
215  IF (ngrad > 0) THEN
216 #ifdef RFLO
217  ALLOCATE( turb%gradi(ngrad,ibn:ien),stat=errfl )
218  IF (errfl>0) goto 88
219  ALLOCATE( turb%gradj(ngrad,ibn:ien),stat=errfl )
220  IF (errfl>0) goto 88
221  ALLOCATE( turb%gradk(ngrad,ibn:ien),stat=errfl )
222  IF (errfl>0) goto 88
223  ELSE
224  nullify( turb%gradi,turb%gradj,turb%gradk )
225 #endif
226 #ifdef RFLU
227  ALLOCATE( turb%gradi( xcoord:zcoord,ngrad, nfaces),stat=errfl )
228  IF (errfl>0) goto 88
229  ALLOCATE( turb%bGradi(xcoord:zcoord,ngrad,nbfaces),stat=errfl )
230  IF (errfl>0) goto 88
231  ELSE
232  nullify( turb%gradi, turb%bGradi )
233 #endif
234  ENDIF
235  ENDIF
236 
237 ! - total number of no-slip faces for wall dist., only on finest grid
238 
239 #ifdef RFLO
240  IF (ilev == 1) THEN
241  DO ipatch=1,region%nPatches
242  patch => region%levels(ilev)%patches(ipatch)
243 
244  IF ((patch%bcType>=bc_noslipwall .AND. &
245  patch%bcType<=bc_noslipwall+bc_range) .OR. &
246  (patch%bcType>=bc_injection .AND. &
247  patch%bcType<=bc_injection+bc_range)) THEN
248 
249  n1 = abs(patch%l1end-patch%l1beg)
250  n2 = abs(patch%l2end-patch%l2beg)
251  ioff = n1 + 1
252  ijbeg = indij( 0, 0,ioff)
253  ijend = indij(n1,n2,ioff)
254  global%turbWallDim = global%turbWallDim + ijend-ijbeg+1
255  ENDIF ! bcType
256  ENDDO ! iPatch
257  ENDIF ! iLev
258 #endif
259 #ifdef RFLU
260  DO ipatch=1,region%grid%nPatches
261  patch => region%patches(ipatch)
262 
263  IF ((patch%bcType>=bc_noslipwall .AND. &
264  patch%bcType<=bc_noslipwall+bc_range) .OR. &
265  (patch%bcType>=bc_injection .AND. &
266  patch%bcType<=bc_injection+bc_range)) THEN
267 
268  global%turbWallDim = global%turbWallDim + patch%nBFaces
269  ENDIF ! bcType
270  ENDDO ! iPatch
271 #endif
272 
273 ! - GENERAL -------------------------------------------------------------------
274 ! - TURB derived variables
275 
276  IF (ndv > 0) THEN
277  ALLOCATE( turb%dv(ndv,ibc:iec),stat=errfl )
278  IF (errfl>0) goto 88
279  ELSE
280  nullify( turb%dv )
281  ENDIF
282 
283 ! - turbulent stress components
284 
285  IF (nsv > 0) THEN
286  ALLOCATE( turb%sv(nsv,ibc:iec),stat=errfl )
287  IF (errfl>0) goto 88
288  ELSE
289  nullify( turb%sv )
290  ENDIF
291 
292 ! - vorticity components
293 
294  IF ((region%turbInput%calcVort /= calcvort_no) .OR. &
295  (modelclass == model_rans)) THEN
296  ALLOCATE( turb%vort(xcoord:zcoord,ibc:iec),stat=errfl )
297  IF (errfl>0) goto 88
298  ELSE
299  nullify( turb%vort )
300  ENDIF
301 
302 ! - zero-one switch field
303 
304  IF (nzof > 0) THEN
305 #ifdef RFLO
306  ALLOCATE( turb%zofi(xcoord:zcoord,nzof,ibn:ien),stat=errfl )
307  IF (errfl>0) goto 88
308  ALLOCATE( turb%zofj(xcoord:zcoord,nzof,ibn:ien),stat=errfl )
309  IF (errfl>0) goto 88
310  ALLOCATE( turb%zofk(xcoord:zcoord,nzof,ibn:ien),stat=errfl )
311  IF (errfl>0) goto 88
312 #endif
313 #ifdef RFLU
314  ALLOCATE( turb%zofi(xcoord:zcoord,nzof,nfaces),stat=errfl )
315  IF (errfl>0) goto 88
316  ALLOCATE( turb%bZofi(xcoord:zcoord,nzof,nbfaces),stat=errfl )
317  IF (errfl>0) goto 88
318 #endif
319  ENDIF
320 
321 ! - statistics of TURB pertinent variables (s.u. dynamic model coefficient)
322 
323 #ifdef STATS
324  IF ((global%flowType == flow_unsteady) .AND. &
325  (global%doStat == active) .AND. &
326  (global%turbNStat > 0)) THEN
327  ALLOCATE( turb%tav(global%turbNStat,ibc:iec),stat=errfl )
328  IF (errfl>0) goto 88
329  ELSE
330  nullify( turb%tav )
331  ENDIF
332 
333  IF (nst > 0) THEN
334  ALLOCATE( turb%st(nst,ibc:iec),stat=errfl )
335  IF (errfl>0) goto 88
336  ELSE
337  nullify( turb%st )
338  ENDIF
339 #endif
340 
341 ! - LES -----------------------------------------------------------------------
342 ! - LES filter coefficients, fix arrays
343 
344 #ifdef RFLO
345  IF ((turbmodel==turb_model_fixsmag) .OR. & ! involve eddy vis.type
346  (turbmodel==turb_model_dynsmag) .OR. &
347  (turbmodel==turb_model_dynmixd)) THEN
348  ALLOCATE( turb%fvolI(ibn:ien),stat=errfl )
349  IF (errfl>0) goto 88
350  ALLOCATE( turb%fvolJ(ibn:ien),stat=errfl )
351  IF (errfl>0) goto 88
352  ALLOCATE( turb%fvolK(ibn:ien),stat=errfl )
353  IF (errfl>0) goto 88
354  ELSE
355  nullify( turb%fvolI, turb%fvolJ, turb%fvolK )
356  ENDIF
357 
358  IF (((turbmodel==turb_model_scalsim) .OR. & ! involve filtering
359  (turbmodel==turb_model_dynsmag) .OR. &
360  (turbmodel==turb_model_dynmixd)) .AND. &
361  (filtertype == filtype_nonunif)) THEN
362 
363  IF (homdir(diri) == off) THEN
364  IF (filterwidth(diri) == filwidth_one) THEN
365  ALLOCATE( turb%ccCofi1( 3,ibc:iec),stat=errfl )
366  IF (errfl>0) goto 88
367  ALLOCATE( turb%ccCofi2( 3,ibc:iec),stat=errfl )
368  IF (errfl>0) goto 88
369  ALLOCATE( turb%ffCofi1I(3,ibn:ien),stat=errfl )
370  IF (errfl>0) goto 88
371  ALLOCATE( turb%ffCofi1J(3,ibn:ien),stat=errfl )
372  IF (errfl>0) goto 88
373  ALLOCATE( turb%ffCofi1K(3,ibn:ien),stat=errfl )
374  IF (errfl>0) goto 88
375  ALLOCATE( turb%ffCofi2I(3,ibn:ien),stat=errfl )
376  IF (errfl>0) goto 88
377  ALLOCATE( turb%ffCofi2J(3,ibn:ien),stat=errfl )
378  IF (errfl>0) goto 88
379  ALLOCATE( turb%ffCofi2K(3,ibn:ien),stat=errfl )
380  IF (errfl>0) goto 88
381  ELSEIF ((filterwidth(diri) == filwidth_two) .OR. &
382  (filterwidth(diri) == filwidth_zero)) THEN
383  ALLOCATE( turb%ccCofi2( 3,ibc:iec),stat=errfl ); IF (errfl>0) goto 88
384  ALLOCATE( turb%ccCofi4( 5,ibc:iec),stat=errfl ); IF (errfl>0) goto 88
385  ALLOCATE( turb%ffCofi2I(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
386  ALLOCATE( turb%ffCofi2J(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
387  ALLOCATE( turb%ffCofi2K(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
388  ALLOCATE( turb%ffCofi4I(5,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
389  ALLOCATE( turb%ffCofi4J(5,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
390  ALLOCATE( turb%ffCofi4K(5,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
391  ENDIF
392  ENDIF
393  IF (homdir(dirj) == off) THEN
394  IF (filterwidth(dirj) == filwidth_one) THEN
395  ALLOCATE( turb%ccCofj1( 3,ibc:iec),stat=errfl ); IF (errfl>0) goto 88
396  ALLOCATE( turb%ccCofj2( 3,ibc:iec),stat=errfl ); IF (errfl>0) goto 88
397  ALLOCATE( turb%ffCofj1I(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
398  ALLOCATE( turb%ffCofj1J(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
399  ALLOCATE( turb%ffCofj1K(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
400  ALLOCATE( turb%ffCofj2I(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
401  ALLOCATE( turb%ffCofj2J(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
402  ALLOCATE( turb%ffCofj2K(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
403  ELSEIF ((filterwidth(dirj) == filwidth_two) .OR. &
404  (filterwidth(dirj) == filwidth_zero)) THEN
405  ALLOCATE( turb%ccCofj2( 3,ibc:iec),stat=errfl ); IF (errfl>0) goto 88
406  ALLOCATE( turb%ccCofj4( 5,ibc:iec),stat=errfl ); IF (errfl>0) goto 88
407  ALLOCATE( turb%ffCofj2I(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
408  ALLOCATE( turb%ffCofj2J(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
409  ALLOCATE( turb%ffCofj2K(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
410  ALLOCATE( turb%ffCofj4I(5,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
411  ALLOCATE( turb%ffCofj4J(5,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
412  ALLOCATE( turb%ffCofj4K(5,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
413  ENDIF
414  ENDIF
415  IF (homdir(dirk) == off) THEN
416  IF (filterwidth(dirk) == filwidth_one) THEN
417  ALLOCATE( turb%ccCofk1( 3,ibc:iec),stat=errfl ); IF (errfl>0) goto 88
418  ALLOCATE( turb%ccCofk2( 3,ibc:iec),stat=errfl ); IF (errfl>0) goto 88
419  ALLOCATE( turb%ffCofk1I(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
420  ALLOCATE( turb%ffCofk1J(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
421  ALLOCATE( turb%ffCofk1K(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
422  ALLOCATE( turb%ffCofk2I(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
423  ALLOCATE( turb%ffCofk2J(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
424  ALLOCATE( turb%ffCofk2K(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
425  ELSEIF ((filterwidth(dirk) == filwidth_two) .OR. &
426  (filterwidth(dirk) == filwidth_zero)) THEN
427  ALLOCATE( turb%ccCofk2( 3,ibc:iec),stat=errfl ); IF (errfl>0) goto 88
428  ALLOCATE( turb%ccCofk4( 5,ibc:iec),stat=errfl ); IF (errfl>0) goto 88
429  ALLOCATE( turb%ffCofk2I(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
430  ALLOCATE( turb%ffCofk2J(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
431  ALLOCATE( turb%ffCofk2K(3,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
432  ALLOCATE( turb%ffCofk4I(5,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
433  ALLOCATE( turb%ffCofk4J(5,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
434  ALLOCATE( turb%ffCofk4K(5,ibn:ien),stat=errfl ); IF (errfl>0) goto 88
435  ENDIF
436  ENDIF
437  ELSE
438  nullify( turb%ccCofi1 ,turb%ccCofi2 ,turb%ccCofi4 )
439  nullify( turb%ccCofj1 ,turb%ccCofj2 ,turb%ccCofj4 )
440  nullify( turb%ccCofk1 ,turb%ccCofk2 ,turb%ccCofk4 )
441  nullify( turb%ffCofi1I,turb%ffCofi2I,turb%ffCofi4I )
442  nullify( turb%ffCofi1J,turb%ffCofi2J,turb%ffCofi4J )
443  nullify( turb%ffCofi1K,turb%ffCofi2K,turb%ffCofi4K )
444  nullify( turb%ffCofj1I,turb%ffCofj2I,turb%ffCofj4I )
445  nullify( turb%ffCofj1J,turb%ffCofj2J,turb%ffCofj4J )
446  nullify( turb%ffCofj1K,turb%ffCofj2K,turb%ffCofj4K )
447  nullify( turb%ffCofk1I,turb%ffCofk2I,turb%ffCofk4I )
448  nullify( turb%ffCofk1J,turb%ffCofk2J,turb%ffCofk4J )
449  nullify( turb%ffCofk1K,turb%ffCofk2K,turb%ffCofk4K )
450  ENDIF
451 #endif
452 #ifdef RFLU
453  IF ((turbmodel==turb_model_fixsmag) .OR. & ! involve eddy vis.type
454  (turbmodel==turb_model_dynsmag) .OR. &
455  (turbmodel==turb_model_dynmixd)) THEN
456  ALLOCATE( turb%fvolI( nfaces),stat=errfl ); IF (errfl>0) goto 88
457  ALLOCATE( turb%bfVolI(nbfaces),stat=errfl ); IF (errfl>0) goto 88
458  ELSE
459  nullify( turb%fvolI, turb%bfVolI )
460  ENDIF
461 
462  IF (modelclass == model_les) THEN
463  ALLOCATE( turb%avgCoI( 2, nfaces),stat=errfl ); IF (errfl>0) goto 88
464  ALLOCATE( turb%bAvgCoI(2,nbfaces),stat=errfl ); IF (errfl>0) goto 88
465  ELSE
466  nullify( turb%avgCoI, turb%bAvgCoI )
467  ENDIF
468 #endif
469 
470 ! - nullify unused arrays
471 
472  IF (modelclass == model_rans) THEN
473  nullify( turb%trace, turb%lij, turb%mij )
474  nullify( turb%fVar, turb%ffVar, turb%ccVar, turb%coef, turb%mueT )
475 #ifdef RFLO
476  nullify( turb%fISij, turb%fJSij, turb%fKSij )
477 #endif
478 #ifdef RFLU
479  nullify( turb%bLij, turb%bMij )
480  nullify( turb%bfVar, turb%bffVar, turb%bCoef, turb%bMueT )
481  nullify( turb%fISij, turb%bfISij )
482 #endif
483  ENDIF
484 
485 ! - WLM (wall layer model)-----------------------------------------------------
486 ! - allocate arrays pertinent to WLM on coarser grid level (RFLO only)
487 
488 #ifdef RFLO
489  IF (ilev > 1) THEN
490  DO ipatch=1,region%nPatches
491  patch1 => region%levels(1)%patches(ipatch)
492  patch => region%levels(ilev)%patches(ipatch)
493 
494  IF (patch%bcType>=bc_noslipwall .AND. &
495  patch%bcType<=bc_noslipwall+bc_range .AND. &
496  patch1%valBola%switches(wlm_input_model) /= wlm_model_nomodel) THEN
497  patch%valBola%nData = patch1%valBola%nData
498  patch%valBola%nSwitches = patch1%valBola%nSwitches
499  patch%valBola%distrib = patch1%valBola%distrib
500 
501  ALLOCATE( patch%valBola%switches(patch%valBola%nSwitches), &
502  stat=errfl ); IF (errfl>0) goto 88
503  patch%valBola%switches = patch1%valBola%switches
504 
505  IF (patch%valBola%nData > 0) THEN ! vals at level 1 are defined
506  n1 = abs(patch%l1end-patch%l1beg)
507  n2 = abs(patch%l2end-patch%l2beg)
508  ioff = n1 + 1
509  ijbeg = indij( 0, 0,ioff)
510  ijend = indij(n1,n2,ioff)
511 
512  ALLOCATE( patch%valBola%vals(ijbeg:ijend,patch%valBola%nData), &
513  stat=errfl ); IF (errfl>0) goto 88
514 
515  ENDIF ! nData
516  ENDIF ! bcType
517  ENDDO ! iPatch
518  ENDIF ! iLev
519 
520  ENDDO !iLev
521 #endif
522 
523  goto 999
524 
525 ! finalize ----------------------------------------------------------
526 
527 88 CONTINUE
528 
529  global%error = errfl
530  CALL errorstop( global,err_allocate,__line__ )
531 
532 999 CONTINUE
533 
534  CALL deregisterfunction( global )
535 
536 END SUBROUTINE turb_allocatememory
537 
538 !******************************************************************************
539 !
540 ! RCS Revision history:
541 !
542 ! $Log: TURB_AllocateMemory.F90,v $
543 ! Revision 1.17 2009/08/31 05:17:35 mtcampbe
544 ! Fix DES allocation bug
545 !
546 ! Revision 1.16 2009/04/07 18:51:50 mtcampbe
547 ! Fixed intel compiler complaint about line continuations
548 !
549 ! Revision 1.15 2008/12/06 08:44:41 mtcampbe
550 ! Updated license.
551 !
552 ! Revision 1.14 2008/11/19 22:17:53 mtcampbe
553 ! Added Illinois Open Source License/Copyright
554 !
555 ! Revision 1.13 2006/01/12 09:49:44 wasistho
556 ! enabled tripping fixed Smagorinsky
557 !
558 ! Revision 1.12 2004/12/09 22:18:05 wasistho
559 ! allocated added data structures
560 !
561 ! Revision 1.11 2004/10/25 02:11:45 wasistho
562 ! shift allocation of turb%st within ifdef STATS
563 !
564 ! Revision 1.10 2004/09/23 22:22:58 wasistho
565 ! added nullify turb%dsterm
566 !
567 ! Revision 1.9 2004/08/04 02:49:06 wasistho
568 ! removed turb%avgCoI,J,K as it is defined as grid%c2fCoI,J,K
569 !
570 ! Revision 1.8 2004/06/03 02:10:25 wasistho
571 ! enabled non-uniform fix-Smagorinsky
572 !
573 ! Revision 1.7 2004/05/28 01:57:21 wasistho
574 ! update unstructured grid LES
575 !
576 ! Revision 1.6 2004/03/27 02:16:42 wasistho
577 ! compiled with Rocflu
578 !
579 ! Revision 1.5 2004/03/25 04:40:41 wasistho
580 ! prepared for RFLU
581 !
582 ! Revision 1.4 2004/03/20 03:28:29 wasistho
583 ! prepared for RFLU
584 !
585 ! Revision 1.3 2004/03/19 02:42:19 wasistho
586 ! prepared for RFLU
587 !
588 ! Revision 1.2 2004/03/13 03:10:45 wasistho
589 ! prepared for RFLU
590 !
591 ! Revision 1.1 2004/03/05 04:36:59 wasistho
592 ! changed nomenclature
593 !
594 ! Revision 1.15 2004/02/04 22:30:53 wasistho
595 ! move MPIsum of global%turbWallDim from allocateMemory to calcMetrics
596 !
597 ! Revision 1.14 2004/01/21 03:51:08 wasistho
598 ! add injection wall condition for counting number of wall faces
599 !
600 ! Revision 1.13 2003/10/21 20:31:23 wasistho
601 ! added dt relaxation in steady flow due to RANS source term
602 !
603 ! Revision 1.12 2003/10/07 20:31:24 wasistho
604 ! allocate vorticities also for RaNS/DES
605 !
606 ! Revision 1.10 2003/08/29 01:40:25 wasistho
607 ! Added TARGET attribute to region variable, since pointers are cached into it
608 !
609 ! Revision 1.9 2003/08/06 15:55:58 wasistho
610 ! added vorticities computation
611 !
612 ! Revision 1.8 2003/06/09 23:19:09 wasistho
613 ! extra condition for wlm data allocation
614 !
615 ! Revision 1.7 2003/05/31 01:46:14 wasistho
616 ! installed turb. wall layer model
617 !
618 ! Revision 1.6 2003/05/24 02:08:00 wasistho
619 ! turbulence statistics expanded
620 !
621 ! Revision 1.5 2003/05/15 02:57:05 jblazek
622 ! Inlined index function.
623 !
624 ! Revision 1.4 2002/11/02 02:05:37 wasistho
625 ! Added TURB statistics
626 !
627 ! Revision 1.3 2002/10/16 07:48:53 wasistho
628 ! Enable Fix Smagorinsky
629 !
630 ! Revision 1.2 2002/10/16 01:58:44 wasistho
631 ! Changed global%error flag
632 !
633 ! Revision 1.1 2002/10/14 23:55:29 wasistho
634 ! Install Rocturb
635 !
636 !
637 !******************************************************************************
638 
639 
640 
641 
642 
643 
644 
645 
646 
647 
648 
649 
subroutine turb_allocatememory(region)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE idcend
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jdnbeg
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE idnend
subroutine rflo_getnodeoffset(region, iLev, iNodeOffset, ijNodeOffset)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jdnend
subroutine rflo_getdimensdummy(region, iLev, idcbeg, idcend, jdcbeg, jdcend, kdcbeg, kdcend)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE idnbeg
Definition: patch.h:74
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE kdcbeg
IndexType nfaces() const
Definition: Mesh.H:641
subroutine rflo_getcelloffset(region, iLev, iCellOffset, ijCellOffset)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE idcbeg
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jdcend
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jdcbeg
subroutine rflo_getdimensdummynodes(region, iLev, idnbeg, idnend, jdnbeg, jdnend, kdnbeg, kdnend)
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE kdnbeg