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