Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TURB_floLesGenCoCCUtil.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: Compute filter coefficients of cell-cell filtering.
26 !
27 ! Description: The coefficients are obtained in the ijk direction.
28 ! CCLo if for low delta (1 or 2 grid-spacing) and CCHi is for
29 ! high delta (2 or 4 grid-spacing).
30 !
31 ! Input: global = global data only used by the register function
32 ! ijk = ijk-face is being treated
33 ! i,j,kbeg,i,j,kend = cell index boundaries
34 ! minIdx, maxIdx = begin and end index of temporary 1D array
35 ! segId = face-width ID
36 ! ..COff,..NOff = cells and nodes offset
37 ! ds = 1D temporary array
38 ! segm = two components face-width
39 !
40 ! Output: ccCofA = filter coefficients for the smaller filter-width
41 ! ccCofB = filter coefficients for the larger filter-width
42 !
43 ! Notes: Mother routine = LesGenCoCC.
44 !
45 !******************************************************************************
46 !
47 ! $Id: TURB_floLesGenCoCCUtil.F90,v 1.4 2008/12/06 08:44:43 mtcampbe Exp $
48 !
49 ! Copyright: (c) 2001 by the University of Illinois
50 !
51 !******************************************************************************
52 
53 SUBROUTINE turb_flolesgencocclo( global,ijk,ibeg,iend,jbeg,jend,kbeg,kend, &
54  minidx,maxidx,segid,icoff,ijcoff,inoff,ijnoff, &
55  ds,segm,cccofa,cccofb )
56 
57  USE moddatatypes
58  USE modglobal, ONLY : t_global
59  USE moderror
61  IMPLICIT NONE
62 
63 #include "Indexing.h"
64 
65 ! ... parameters
66  TYPE(t_global), POINTER :: global
67  INTEGER :: ijk,ibeg,iend,jbeg,jend,kbeg,kend,minidx,maxidx
68  INTEGER :: segid,icoff,ijcoff,inoff,ijnoff
69  REAL(RFREAL) :: ds(minidx:maxidx)
70  REAL(RFREAL), POINTER :: segm(:,:),cccofa(:,:),cccofb(:,:)
71 
72 ! ... loop variables
73  INTEGER :: i, j, k, ijkc, ijkn, ijkn1
74 
75 ! ... local variables
76  CHARACTER(CHRLEN) :: rcsidentstring
77  REAL(RFREAL) :: rwidth1, rwidth2, fac1, fac2, fac3
78 
79 !******************************************************************************
80 
81  rcsidentstring = '$RCSfile: TURB_floLesGenCoCCUtil.F90,v $'
82 
83  CALL registerfunction( global,'TURB_FloLesGenCoCCLo',&
84  'TURB_floLesGenCoCCUtil.F90' )
85 
86 ! start computations --------------------------------------------------------
87 
88  IF (ijk==diri) THEN
89  DO k=kbeg,kend
90  DO j=jbeg,jend
91  DO i=ibeg,iend
92  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
93  ijkn1 = indijk(i ,j ,k+1 ,inoff,ijnoff)
94  ds(i) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
95  ENDDO
96  DO i=1,2
97  ds(ibeg-i) = ds(ibeg)
98  ds(iend+i) = ds(iend)
99  ENDDO
100  DO i=ibeg,iend
101  ijkc = indijk(i ,j ,k ,icoff,ijcoff)
102  rwidth1= 1._rfreal/(ds(i-1)+ds(i))
103  rwidth2= 1._rfreal/(ds(i+1)+ds(i))
104  fac1 = ds(i)*rwidth1
105  fac2 = ds(i-1)*rwidth1+ds(i+1)*rwidth2+2._rfreal
106  fac3 = ds(i)*rwidth2
107  cccofa(1,ijkc) = 0.25_rfreal*fac1
108  cccofa(2,ijkc) = 0.25_rfreal*fac2
109  cccofa(3,ijkc) = 0.25_rfreal*fac3
110 
111  rwidth1= 1._rfreal/(ds(i-1)+2._rfreal*ds(i)+ds(i+1))
112  fac1 = (ds(i-1)+ds(i))*rwidth1
113  fac3 = (ds(i+1)+ds(i))*rwidth1
114  cccofb(1,ijkc) = 0.5_rfreal*fac1
115  cccofb(2,ijkc) = 0.5_rfreal
116  cccofb(3,ijkc) = 0.5_rfreal*fac3
117  ENDDO
118  ENDDO
119  ENDDO
120 
121  ELSEIF (ijk==dirj) THEN
122  DO k=kbeg,kend
123  DO i=ibeg,iend
124  DO j=jbeg,jend
125  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
126  ijkn1 = indijk(i+1 ,j ,k ,inoff,ijnoff)
127  ds(j) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
128  ENDDO
129  DO j=1,2
130  ds(jbeg-j) = ds(jbeg)
131  ds(jend+j) = ds(jend)
132  ENDDO
133  DO j=jbeg,jend
134  ijkc = indijk(i ,j ,k ,icoff,ijcoff)
135  rwidth1= 1._rfreal/(ds(j-1)+ds(j))
136  rwidth2= 1._rfreal/(ds(j+1)+ds(j))
137  fac1 = ds(j)*rwidth1
138  fac2 = ds(j-1)*rwidth1+ds(j+1)*rwidth2+2._rfreal
139  fac3 = ds(j)*rwidth2
140  cccofa(1,ijkc) = 0.25_rfreal*fac1
141  cccofa(2,ijkc) = 0.25_rfreal*fac2
142  cccofa(3,ijkc) = 0.25_rfreal*fac3
143 
144  rwidth1= 1._rfreal/(ds(j-1)+2._rfreal*ds(j)+ds(j+1))
145  fac1 = (ds(j-1)+ds(j))*rwidth1
146  fac3 = (ds(j+1)+ds(j))*rwidth1
147  cccofb(1,ijkc) = 0.5_rfreal*fac1
148  cccofb(2,ijkc) = 0.5_rfreal
149  cccofb(3,ijkc) = 0.5_rfreal*fac3
150  ENDDO
151  ENDDO
152  ENDDO
153 
154  ELSEIF (ijk==dirk) THEN
155  DO j=jbeg,jend
156  DO i=ibeg,iend
157  DO k=kbeg,kend
158  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
159  ijkn1 = indijk(i ,j+1 ,k ,inoff,ijnoff)
160  ds(k) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
161  ENDDO
162  DO k=1,2
163  ds(kbeg-k) = ds(kbeg)
164  ds(kend+k) = ds(kend)
165  ENDDO
166  DO k=kbeg,kend
167  ijkc = indijk(i ,j ,k ,icoff,ijcoff)
168  rwidth1= 1._rfreal/(ds(k-1)+ds(k))
169  rwidth2= 1._rfreal/(ds(k+1)+ds(k))
170  fac1 = ds(k)*rwidth1
171  fac2 = ds(k-1)*rwidth1+ds(k+1)*rwidth2+2._rfreal
172  fac3 = ds(k)*rwidth2
173  cccofa(1,ijkc) = 0.25_rfreal*fac1
174  cccofa(2,ijkc) = 0.25_rfreal*fac2
175  cccofa(3,ijkc) = 0.25_rfreal*fac3
176 
177  rwidth1= 1._rfreal/(ds(k-1)+2._rfreal*ds(k)+ds(k+1))
178  fac1 = (ds(k-1)+ds(k))*rwidth1
179  fac3 = (ds(k+1)+ds(k))*rwidth1
180  cccofb(1,ijkc) = 0.5_rfreal*fac1
181  cccofb(2,ijkc) = 0.5_rfreal
182  cccofb(3,ijkc) = 0.5_rfreal*fac3
183  ENDDO
184  ENDDO
185  ENDDO
186  ENDIF
187 
188 ! finalize --------------------------------------------------------------------
189 
190  CALL deregisterfunction( global )
191 
192 END SUBROUTINE turb_flolesgencocclo
193 
194 !#############################################################################
195 
196 SUBROUTINE turb_flolesgencocchi( global,ijk,ibeg,iend,jbeg,jend,kbeg,kend, &
197  minidx,maxidx,segid,icoff,ijcoff,inoff,ijnoff, &
198  ds,segm,cccofa,cccofb )
199 
200  USE moddatatypes
201  USE modglobal, ONLY : t_global
202  USE moderror
204  IMPLICIT NONE
205 
206 #include "Indexing.h"
207 
208 ! ... parameters
209  TYPE(t_global), POINTER :: global
210  INTEGER :: ijk,ibeg,iend,jbeg,jend,kbeg,kend,minidx,maxidx
211  INTEGER :: segid,icoff,ijcoff,inoff,ijnoff
212  REAL(RFREAL) :: ds(minidx:maxidx)
213  REAL(RFREAL), POINTER :: segm(:,:),cccofa(:,:),cccofb(:,:)
214 
215 ! ... loop variables
216  INTEGER :: i, j, k, ijkc, ijkn, ijkn1
217 
218 ! ... local variables
219  CHARACTER(CHRLEN) :: rcsidentstring
220  REAL(RFREAL) :: rwidth1, rwidth2, fac1, fac2, fac3, fac4, fac5
221 
222 !******************************************************************************
223 
224  rcsidentstring = '$RCSfile: TURB_floLesGenCoCCUtil.F90,v $'
225 
226  CALL registerfunction( global,'TURB_FloLesGenCoCCHi',&
227  'TURB_floLesGenCoCCUtil.F90' )
228 
229 ! start computations --------------------------------------------------------
230 
231  IF (ijk==diri) THEN
232  DO k=kbeg,kend
233  DO j=jbeg,jend
234  DO i=ibeg,iend
235  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
236  ijkn1 = indijk(i ,j ,k+1 ,inoff,ijnoff)
237  ds(i) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
238  ENDDO
239  DO i=1,2
240  ds(ibeg-i) = ds(ibeg)
241  ds(iend+i) = ds(iend)
242  ENDDO
243  DO i=ibeg,iend
244  ijkc = indijk(i ,j ,k ,icoff,ijcoff)
245  rwidth1= 1._rfreal/(ds(i-1)+2._rfreal*ds(i)+ds(i+1))
246  fac1 = (ds(i-1)+ds(i))*rwidth1
247  fac3 = (ds(i+1)+ds(i))*rwidth1
248  cccofa(1,ijkc) = 0.5_rfreal*fac1
249  cccofa(2,ijkc) = 0.5_rfreal
250  cccofa(3,ijkc) = 0.5_rfreal*fac3
251 
252  rwidth1= 1._rfreal/ &
253  (ds(i-2)+ds(i+2)+2._rfreal*(ds(i-1)+ds(i)+ds(i+1)))
254  fac1 = (ds(i-2)+ds(i-1))*rwidth1
255  fac2 = (ds(i-2)+2._rfreal*ds(i-1)+ds(i))*rwidth1
256  fac3 = (ds(i-1)+2._rfreal*ds(i)+ds(i+1))*rwidth1
257  fac4 = (ds(i)+2._rfreal*ds(i+1)+ds(i+2))*rwidth1
258  fac5 = (ds(i+1)+ds(i+2))*rwidth1
259  cccofb(1,ijkc) = 0.5_rfreal*fac1
260  cccofb(2,ijkc) = 0.5_rfreal*fac2
261  cccofb(3,ijkc) = 0.5_rfreal*fac3
262  cccofb(4,ijkc) = 0.5_rfreal*fac4
263  cccofb(5,ijkc) = 0.5_rfreal*fac5
264  ENDDO
265  ENDDO
266  ENDDO
267 
268  ELSEIF (ijk==dirj) THEN
269  DO k=kbeg,kend
270  DO i=ibeg,iend
271  DO j=jbeg,jend
272  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
273  ijkn1 = indijk(i+1 ,j ,k ,inoff,ijnoff)
274  ds(j) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
275  ENDDO
276  DO j=1,2
277  ds(jbeg-j) = ds(jbeg)
278  ds(jend+j) = ds(jend)
279  ENDDO
280  DO j=jbeg,jend
281  ijkc = indijk(i ,j ,k ,icoff,ijcoff)
282  rwidth1= 1._rfreal/(ds(j-1)+2._rfreal*ds(j)+ds(j+1))
283  fac1 = (ds(j-1)+ds(j))*rwidth1
284  fac3 = (ds(j+1)+ds(j))*rwidth1
285  cccofa(1,ijkc) = 0.5_rfreal*fac1
286  cccofa(2,ijkc) = 0.5_rfreal
287  cccofa(3,ijkc) = 0.5_rfreal*fac3
288 
289  rwidth1= 1._rfreal/ &
290  (ds(j-2)+ds(j+2)+2._rfreal*(ds(j-1)+ds(j)+ds(j+1)))
291  fac1 = (ds(j-2)+ds(j-1))*rwidth1
292  fac2 = (ds(j-2)+2._rfreal*ds(j-1)+ds(j))*rwidth1
293  fac3 = (ds(j-1)+2._rfreal*ds(j)+ds(j+1))*rwidth1
294  fac4 = (ds(j)+2._rfreal*ds(j+1)+ds(j+2))*rwidth1
295  fac5 = (ds(j+1)+ds(j+2))*rwidth1
296  cccofb(1,ijkc) = 0.5_rfreal*fac1
297  cccofb(2,ijkc) = 0.5_rfreal*fac2
298  cccofb(3,ijkc) = 0.5_rfreal*fac3
299  cccofb(4,ijkc) = 0.5_rfreal*fac4
300  cccofb(5,ijkc) = 0.5_rfreal*fac5
301  ENDDO
302  ENDDO
303  ENDDO
304 
305  ELSEIF (ijk==dirk) THEN
306  DO j=jbeg,jend
307  DO i=ibeg,iend
308  DO k=kbeg,kend
309  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
310  ijkn1 = indijk(i ,j+1 ,k ,inoff,ijnoff)
311  ds(k) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
312  ENDDO
313  DO k=1,2
314  ds(kbeg-k) = ds(kbeg)
315  ds(kend+k) = ds(kend)
316  ENDDO
317  DO k=kbeg,kend
318  ijkc = indijk(i ,j ,k ,icoff,ijcoff)
319  rwidth1= 1._rfreal/(ds(k-1)+2._rfreal*ds(k)+ds(k+1))
320  fac1 = (ds(k-1)+ds(k))*rwidth1
321  fac3 = (ds(k+1)+ds(k))*rwidth1
322  cccofa(1,ijkc) = 0.5_rfreal*fac1
323  cccofa(2,ijkc) = 0.5_rfreal
324  cccofa(3,ijkc) = 0.5_rfreal*fac3
325 
326  rwidth1= 1._rfreal/ &
327  (ds(k-2)+ds(k+2)+2._rfreal*(ds(k-1)+ds(k)+ds(k+1)))
328  fac1 = (ds(k-2)+ds(k-1))*rwidth1
329  fac2 = (ds(k-2)+2._rfreal*ds(k-1)+ds(k))*rwidth1
330  fac3 = (ds(k-1)+2._rfreal*ds(k)+ds(k+1))*rwidth1
331  fac4 = (ds(k)+2._rfreal*ds(k+1)+ds(k+2))*rwidth1
332  fac5 = (ds(k+1)+ds(k+2))*rwidth1
333  cccofb(1,ijkc) = 0.5_rfreal*fac1
334  cccofb(2,ijkc) = 0.5_rfreal*fac2
335  cccofb(3,ijkc) = 0.5_rfreal*fac3
336  cccofb(4,ijkc) = 0.5_rfreal*fac4
337  cccofb(5,ijkc) = 0.5_rfreal*fac5
338  ENDDO
339  ENDDO
340  ENDDO
341  ENDIF
342 
343 ! finalize --------------------------------------------------------------------
344 
345  CALL deregisterfunction( global )
346 
347 END SUBROUTINE turb_flolesgencocchi
348 
349 !******************************************************************************
350 !
351 ! RCS Revision history:
352 !
353 ! $Log: TURB_floLesGenCoCCUtil.F90,v $
354 ! Revision 1.4 2008/12/06 08:44:43 mtcampbe
355 ! Updated license.
356 !
357 ! Revision 1.3 2008/11/19 22:17:55 mtcampbe
358 ! Added Illinois Open Source License/Copyright
359 !
360 ! Revision 1.2 2004/03/12 02:55:36 wasistho
361 ! changed rocturb routine names
362 !
363 ! Revision 1.1 2004/03/08 23:35:45 wasistho
364 ! changed turb nomenclature
365 !
366 ! Revision 1.2 2003/05/15 02:57:06 jblazek
367 ! Inlined index function.
368 !
369 ! Revision 1.1 2002/10/14 23:55:29 wasistho
370 ! Install Rocturb
371 !
372 !******************************************************************************
373 
374 
375 
376 
377 
378 
379 
380 
**********************************************************************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 ibeg
j indices k indices k
Definition: Indexing.h:6
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 knode iend
subroutine turb_flolesgencocclo(global, ijk, ibeg, iend, jbeg, jend, kbeg, kend, minIdx, maxIdx, segId, iCOff, ijCOff, iNOff, ijNOff, ds, segm, ccCofA, ccCofB)
blockLoc i
Definition: read.cpp:79
j indices j
Definition: Indexing.h:6
**********************************************************************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 knode jend
**********************************************************************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 knode jbeg
subroutine turb_flolesgencocchi(global, ijk, ibeg, iend, jbeg, jend, kbeg, kend, minIdx, maxIdx, segId, iCOff, ijCOff, iNOff, ijNOff, ds, segm, ccCofA, ccCofB)
**********************************************************************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 knode kbeg
subroutine deregisterfunction(global)
Definition: ModError.F90:469