Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TURB_LesHij.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: Get the Leonard stress of the dynamic mixed model.
26 !
27 ! Description: In this subroutine we determine the H_{ij} components in the
28 ! dynamic mixed formulation, containing the scale similarity
29 ! contribution. We assume L_{ij} to be given already on the cell
30 ! face and we generate and subtract Hij from it. On exit, Hij
31 ! is stored in Lij.
32 !
33 ! Input: region = data of current region
34 ! ijk = ijk-face is being treated
35 !
36 ! Output: Hij term in dynamic mixed formulation.
37 !
38 ! Notes: Hij is stored in turb%lij.
39 !
40 !******************************************************************************
41 !
42 ! $Id: TURB_LesHij.F90,v 1.8 2008/12/06 08:44:41 mtcampbe Exp $
43 !
44 ! Copyright: (c) 2001 by the University of Illinois
45 !
46 !******************************************************************************
47 
48 SUBROUTINE turb_leshij( region,ijk )
49 
50  USE moddatatypes
51  USE moddatastruct, ONLY : t_region
52  USE modglobal, ONLY : t_global
54 #ifdef RFLO
58 
59 #include "Indexing.h"
60 #endif
61  USE moderror
63  IMPLICIT NONE
64 
65 ! ... parameters
66 #ifdef RFLO
67  TYPE(t_region) :: region
68 #endif
69 #ifdef RFLU
70  TYPE(t_region), POINTER :: region
71 #endif
72  INTEGER :: ijk
73 
74 ! ... loop variables
75  INTEGER :: i, j, k, ijkn
76 
77 ! ... local variables
78  CHARACTER(CHRLEN) :: rcsidentstring
79  TYPE(t_global), POINTER :: global
80 
81  INTEGER :: ibn,ien,idbeg,idend
82  INTEGER :: ndel(diri:dirk),tndel(diri:dirk)
83  REAL(RFREAL), POINTER :: fvar(:,:),ffvar(:,:),lij(:,:),field(:,:)
84  REAL(RFREAL), POINTER :: hij(:,:)
85 #ifdef RFLO
86  INTEGER :: idnbeg,idnend,jdnbeg,jdnend,kdnbeg,kdnend
87  INTEGER :: ilev,inoff,ijnoff
88 #endif
89 
90 !******************************************************************************
91 
92  rcsidentstring = '$RCSfile: TURB_LesHij.F90,v $'
93 
94  global => region%global
95  CALL registerfunction( global,'TURB_LesHij',&
96  'TURB_LesHij.F90' )
97 
98 ! get indices and pointers --------------------------------------------------
99 
100 #ifdef RFLO
101  ilev = region%currLevel
102  CALL rflo_getdimensdummynodes( region,ilev,idnbeg,idnend, &
103  jdnbeg,jdnend,kdnbeg,kdnend )
104  CALL rflo_getnodeoffset( region,ilev,inoff,ijnoff )
105  fvar => region%levels(ilev)%turb%fVar
106  ffvar => region%levels(ilev)%turb%ffVar
107  lij => region%levels(ilev)%turb%lij
108 
109  IF (ijk==diri) THEN
110  field => region%levels(ilev)%turb%fISij
111  ELSEIF (ijk==dirj) THEN
112  field => region%levels(ilev)%turb%fJSij
113  ELSEIF (ijk==dirk) THEN
114  field => region%levels(ilev)%turb%fKSij
115  ENDIF
116  ibn = indijk(idnbeg,jdnbeg,kdnbeg,inoff,ijnoff)
117  ien = indijk(idnend,jdnend,kdnend,inoff,ijnoff)
118 #endif
119 
120 ! allocate temporary arrays
121 
122  ALLOCATE( hij(e11:e33,ibn:ien) )
123 
124 ! test filter width is twice bar filter width
125 
126  ndel(diri) = region%turbInput%filterWidth(diri)
127 #ifdef RFLO
128  ndel(dirj) = region%turbInput%filterWidth(dirj)
129  ndel(dirk) = region%turbInput%filterWidth(dirk)
130 #endif
131 
132  tndel(diri)=2*ndel(diri)
133 #ifdef RFLO
134  tndel(dirj)=2*ndel(dirj)
135  tndel(dirk)=2*ndel(dirk)
136 #endif
137 
138 ! for efficiency we keep 1/tbRho in tbRho, leftover from lesLij;
139 ! with this information we can generate the first term in Hij
140 ! hij-component; store tbRhoUi*tbRhoUj/tbRho in hij:
141 
142  DO ijkn = ibn,ien
143  hij(e11,ijkn)=ffvar(cv_turb_xmom,ijkn)*ffvar(cv_turb_xmom,ijkn)* &
144  ffvar(cv_turb_dens,ijkn)
145  hij(e12,ijkn)=ffvar(cv_turb_xmom,ijkn)*ffvar(cv_turb_ymom,ijkn)* &
146  ffvar(cv_turb_dens,ijkn)
147  hij(e13,ijkn)=ffvar(cv_turb_xmom,ijkn)*ffvar(cv_turb_zmom,ijkn)* &
148  ffvar(cv_turb_dens,ijkn)
149  hij(e22,ijkn)=ffvar(cv_turb_ymom,ijkn)*ffvar(cv_turb_ymom,ijkn)* &
150  ffvar(cv_turb_dens,ijkn)
151  hij(e23,ijkn)=ffvar(cv_turb_ymom,ijkn)*ffvar(cv_turb_zmom,ijkn)* &
152  ffvar(cv_turb_dens,ijkn)
153  hij(e33,ijkn)=ffvar(cv_turb_zmom,ijkn)*ffvar(cv_turb_zmom,ijkn)* &
154  ffvar(cv_turb_dens,ijkn)
155  ENDDO
156 
157 ! and we double-filter this, first with bar filter
158 
159  idbeg = e11
160  idend = e33
161 #ifdef RFLO
162  IF (region%turbInput%filterType == filtype_uniform) then
163  CALL turb_flolesunifiltff( region,ijk,ndel,idbeg,idend,hij,field )
164  ELSE
165  CALL turb_flolesgenfiltff( region,ijk,ndel,idbeg,idend,hij,field )
166  ENDIF
167 #endif
168 
169 ! then with test-filter:
170 
171  idbeg = e11
172  idend = e33
173 #ifdef RFLO
174  IF (region%turbInput%filterType == filtype_uniform) then
175  CALL turb_flolesunifiltff( region,ijk,tndel,idbeg,idend,field,hij )
176  ELSE
177  CALL turb_flolesgenfiltff( region,ijk,tndel,idbeg,idend,field,hij )
178  ENDIF
179 #endif
180 
181 ! subtract this first term component of hij from lij
182 ! and we put 1/tbRho back to tbRho for the next treatment
183 
184  DO ijkn = ibn,ien
185  lij(e11,ijkn) = lij(e11,ijkn) - hij(e11,ijkn)
186  lij(e12,ijkn) = lij(e12,ijkn) - hij(e12,ijkn)
187  lij(e13,ijkn) = lij(e13,ijkn) - hij(e13,ijkn)
188  lij(e22,ijkn) = lij(e22,ijkn) - hij(e22,ijkn)
189  lij(e23,ijkn) = lij(e23,ijkn) - hij(e23,ijkn)
190  lij(e33,ijkn) = lij(e33,ijkn) - hij(e33,ijkn)
191  ffvar(cv_turb_dens,ijkn) = 1._rfreal/ffvar(cv_turb_dens,ijkn)
192  ENDDO
193 
194 ! next, we build second term of the first component in hij for which
195 ! we apply bar-filter and test-filter to test-bar filtered fields;
196 ! first we filter tbRho and tbRhoUi with bar-filter and store in fVar
197 
198  idbeg = cv_turb_dens
199  idend = cv_turb_zmom
200 #ifdef RFLO
201  IF (region%turbInput%filterType == filtype_uniform) then
202  CALL turb_flolesunifiltff( region,ijk,ndel,idbeg,idend,ffvar,fvar )
203  ELSE
204  CALL turb_flolesgenfiltff( region,ijk,ndel,idbeg,idend,ffvar,fvar )
205  ENDIF
206 #endif
207 
208 ! then apply test filter and store in ffVar again
209 
210 #ifdef RFLO
211  IF (region%turbInput%filterType == filtype_uniform) then
212  CALL turb_flolesunifiltff( region,ijk,tndel,idbeg,idend,fvar,ffvar )
213  ELSE
214  CALL turb_flolesgenfiltff( region,ijk,tndel,idbeg,idend,fvar,ffvar )
215  ENDIF
216 #endif
217 
218 ! we can now finish the first contribution in hij and subtract it from lij
219 ! for efficiency we store 1/tb(tbRho) in tb(tbRho)
220 
221  DO ijkn = ibn,ien
222  ffvar(cv_turb_dens,ijkn) = 1._rfreal/ffvar(cv_turb_dens,ijkn)
223  lij(e11,ijkn) = lij(e11,ijkn) + ffvar(cv_turb_dens,ijkn)* &
224  ffvar(cv_turb_xmom,ijkn)*ffvar(cv_turb_xmom,ijkn)
225 
226  lij(e12,ijkn) = lij(e12,ijkn) + ffvar(cv_turb_dens,ijkn)* &
227  ffvar(cv_turb_xmom,ijkn)*ffvar(cv_turb_ymom,ijkn)
228 
229  lij(e13,ijkn) = lij(e13,ijkn) + ffvar(cv_turb_dens,ijkn)* &
230  ffvar(cv_turb_xmom,ijkn)*ffvar(cv_turb_zmom,ijkn)
231 
232  lij(e22,ijkn) = lij(e22,ijkn) + ffvar(cv_turb_dens,ijkn)* &
233  ffvar(cv_turb_ymom,ijkn)*ffvar(cv_turb_ymom,ijkn)
234 
235  lij(e23,ijkn) = lij(e23,ijkn) + ffvar(cv_turb_dens,ijkn)* &
236  ffvar(cv_turb_ymom,ijkn)*ffvar(cv_turb_zmom,ijkn)
237 
238  lij(e33,ijkn) = lij(e33,ijkn) + ffvar(cv_turb_dens,ijkn)* &
239  ffvar(cv_turb_zmom,ijkn)*ffvar(cv_turb_zmom,ijkn)
240  ENDDO
241 
242 ! we now come to the second component which involves the test-filtered
243 ! Bardina term; first recompute density and velocities at faces and
244 ! generate the Bardina term and put the result in field
245 
246 #ifdef RFLO
247  CALL turb_flolesgenc2f( region,ijk )
248 #endif
249 
250  CALL turb_leslij( region,ijk,ndel,field )
251 
252 ! test-filter Bardina component stored in field and put in hij
253 
254  idbeg = e11
255  idend = e33
256 #ifdef RFLO
257  IF (region%turbInput%filterType == filtype_uniform) THEN
258  CALL turb_flolesunifiltff( region,ijk,tndel,idbeg,idend,field,hij )
259  ELSE
260  CALL turb_flolesgenfiltff( region,ijk,tndel,idbeg,idend,field,hij )
261  ENDIF
262 #endif
263 
264 ! complete hij and subtract it from lij
265 
266  DO ijkn = ibn,ien
267  lij(e11,ijkn) = lij(e11,ijkn) + hij(e11,ijkn)
268  lij(e12,ijkn) = lij(e12,ijkn) + hij(e12,ijkn)
269  lij(e13,ijkn) = lij(e13,ijkn) + hij(e13,ijkn)
270  lij(e22,ijkn) = lij(e22,ijkn) + hij(e22,ijkn)
271  lij(e23,ijkn) = lij(e23,ijkn) + hij(e23,ijkn)
272  lij(e33,ijkn) = lij(e33,ijkn) + hij(e33,ijkn)
273  ENDDO
274 
275 ! deallocate temporary arrays
276 
277  DEALLOCATE( hij )
278 
279 ! finalize --------------------------------------------------------------------
280 
281  CALL deregisterfunction( global )
282 
283 END SUBROUTINE turb_leshij
284 
285 !******************************************************************************
286 !
287 ! RCS Revision history:
288 !
289 ! $Log: TURB_LesHij.F90,v $
290 ! Revision 1.8 2008/12/06 08:44:41 mtcampbe
291 ! Updated license.
292 !
293 ! Revision 1.7 2008/11/19 22:17:54 mtcampbe
294 ! Added Illinois Open Source License/Copyright
295 !
296 ! Revision 1.6 2004/07/30 22:35:11 wasistho
297 ! replaced floLesUniC2F by floLesGenC2F
298 !
299 ! Revision 1.5 2004/05/28 02:01:06 wasistho
300 ! update unstructured grid LES
301 !
302 ! Revision 1.4 2004/03/27 02:16:42 wasistho
303 ! compiled with Rocflu
304 !
305 ! Revision 1.3 2004/03/19 02:50:25 wasistho
306 ! prepared for RFLU
307 !
308 ! Revision 1.2 2004/03/12 02:55:35 wasistho
309 ! changed rocturb routine names
310 !
311 ! Revision 1.1 2004/03/05 04:37:00 wasistho
312 ! changed nomenclature
313 !
314 ! Revision 1.2 2003/05/15 02:57:06 jblazek
315 ! Inlined index function.
316 !
317 ! Revision 1.1 2002/10/14 23:55:30 wasistho
318 ! Install Rocturb
319 !
320 !
321 !******************************************************************************
322 
323 
324 
325 
326 
327 
328 
j indices k indices k
Definition: Indexing.h:6
subroutine turb_leshij(region, ijk)
Definition: TURB_LesHij.F90:48
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
**********************************************************************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
subroutine turb_flolesunifiltff(region, ijk, nDel, idBeg, idEnd, fVar, fbVar)
blockLoc i
Definition: read.cpp:79
j indices j
Definition: Indexing.h:6
subroutine rflo_getdimensdummynodes(region, iLev, idnbeg, idnend, jdnbeg, jdnend, kdnbeg, kdnend)
subroutine turb_flolesgenfiltff(region, ijk, nDel, idBeg, idEnd, fVar, fbVar)
subroutine turb_leslij(region, ijk, nDel, lij)
Definition: TURB_LesLij.F90:57
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
subroutine turb_flolesgenc2f(region, ijk)