Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TURB_floLesGenCoFFUtil.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 the same as the face direction
27 ! being treated.
28 !
29 ! Description: The coefficients are obtained in the ijk direction.
30 ! FFLo if for low delta (1 or 2 grid-spacing) and FFHi 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_floLesGenCoFFUtil.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_flolesgencofflo( global,ijk,ibeg,iend,jbeg,jend,kbeg,kend, &
56  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
57 
58  USE moddatatypes
59  USE modglobal, ONLY : t_global
60  USE moderror
62  IMPLICIT NONE
63 
64 #include "Indexing.h"
65 
66 ! ... parameters
67  TYPE(t_global), POINTER :: global
68  INTEGER :: ijk,ibeg,iend,jbeg,jend,kbeg,kend,minidx,maxidx
69  INTEGER :: segid,inoff,ijnoff
70  REAL(RFREAL) :: ds(minidx:maxidx)
71  REAL(RFREAL), POINTER :: segm(:,:),ffcofa(:,:),ffcofb(:,:)
72 
73 ! ... loop variables
74  INTEGER :: i, j, k, ijkn, ijkn1
75 
76 ! ... local variables
77  CHARACTER(CHRLEN) :: rcsidentstring
78  INTEGER :: indi(ibeg:iend+1),indj(jbeg:jend+1),indk(kbeg:kend+1)
79  REAL(RFREAL) :: rwidth1, fac1, fac3
80 
81 !******************************************************************************
82 
83  rcsidentstring = '$RCSfile: TURB_floLesGenCoFFUtil.F90,v $'
84 
85  CALL registerfunction( global,'TURB_FloLesGenCoFFLo',&
86  'TURB_floLesGenCoFFUtil.F90' )
87 
88 ! get indices ---------------------------------------------------------------
89 
90  DO i = ibeg,iend
91  indi(i)=i
92  ENDDO
93  DO j = jbeg,jend
94  indj(j)=j
95  ENDDO
96  DO k = kbeg,kend
97  indk(k)=k
98  ENDDO
99  indi(iend+1)=iend
100  indj(jend+1)=jend
101  indk(kend+1)=kend
102 
103 ! start computations
104 
105  IF (ijk==diri) THEN
106  DO k=kbeg,kend
107  DO j=jbeg,jend
108  DO i=ibeg,iend
109  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
110  ijkn1 = indijk(i ,j ,indk(k+1),inoff,ijnoff)
111  ds(i) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
112  ENDDO
113  DO i=1,2
114  ds(ibeg-i) = ds(ibeg)
115  ds(iend+i) = ds(iend)
116  ENDDO
117  DO i=ibeg,iend
118  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
119  rwidth1= 1._rfreal/(ds(i-1)+ds(i))
120  fac1 = ds(i-1)*rwidth1
121  fac3 = ds(i)*rwidth1
122  ffcofa(1,ijkn) = 0.25_rfreal*fac1
123  ffcofa(2,ijkn) = 0.75_rfreal
124  ffcofa(3,ijkn) = 0.25_rfreal*fac3
125  ffcofb(1,ijkn) = 0.5_rfreal*fac1
126  ffcofb(2,ijkn) = 0.5_rfreal
127  ffcofb(3,ijkn) = 0.5_rfreal*fac3
128  ENDDO
129  ENDDO
130  ENDDO
131 
132  ELSEIF (ijk==dirj) THEN
133  DO k=kbeg,kend
134  DO i=ibeg,iend
135  DO j=jbeg,jend
136  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
137  ijkn1 = indijk(indi(i+1),j ,k ,inoff,ijnoff)
138  ds(j) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
139  ENDDO
140  DO j=1,2
141  ds(jbeg-j) = ds(jbeg)
142  ds(jend+j) = ds(jend)
143  ENDDO
144  DO j=jbeg,jend
145  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
146  rwidth1= 1._rfreal/(ds(j-1)+ds(j))
147  fac1 = ds(j-1)*rwidth1
148  fac3 = ds(j)*rwidth1
149  ffcofa(1,ijkn) = 0.25_rfreal*fac1
150  ffcofa(2,ijkn) = 0.75_rfreal
151  ffcofa(3,ijkn) = 0.25_rfreal*fac3
152  ffcofb(1,ijkn) = 0.5_rfreal*fac1
153  ffcofb(2,ijkn) = 0.5_rfreal
154  ffcofb(3,ijkn) = 0.5_rfreal*fac3
155  ENDDO
156  ENDDO
157  ENDDO
158 
159  ELSEIF (ijk==dirk) THEN
160  DO j=jbeg,jend
161  DO i=ibeg,iend
162  DO k=kbeg,kend
163  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
164  ijkn1 = indijk(i ,indj(j+1),k ,inoff,ijnoff)
165  ds(k) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
166  ENDDO
167  DO k=1,2
168  ds(kbeg-k) = ds(kbeg)
169  ds(kend+k) = ds(kend)
170  ENDDO
171  DO k=kbeg,kend
172  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
173  rwidth1= 1._rfreal/(ds(k-1)+ds(k))
174  fac1 = ds(k-1)*rwidth1
175  fac3 = ds(k)*rwidth1
176  ffcofa(1,ijkn) = 0.25_rfreal*fac1
177  ffcofa(2,ijkn) = 0.75_rfreal
178  ffcofa(3,ijkn) = 0.25_rfreal*fac3
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_flolesgencofflo
192 
193 !#############################################################################
194 
195 SUBROUTINE turb_flolesgencoffhi( global,ijk,ibeg,iend,jbeg,jend,kbeg,kend, &
196  minidx,maxidx,segid,inoff,ijnoff,ds,segm,ffcofa,ffcofb )
197 
198  USE moddatatypes
199  USE modglobal, ONLY : t_global
200  USE moderror
202  IMPLICIT NONE
203 
204 #include "Indexing.h"
205 
206 ! ... parameters
207  TYPE(t_global), POINTER :: global
208  INTEGER :: ijk,ibeg,iend,jbeg,jend,kbeg,kend,minidx,maxidx
209  INTEGER :: segid,inoff,ijnoff
210  REAL(RFREAL) :: ds(minidx:maxidx)
211  REAL(RFREAL), POINTER :: segm(:,:),ffcofa(:,:),ffcofb(:,:)
212 
213 ! ... loop variables
214  INTEGER :: i, j, k, ijkn, ijkn1
215 
216 ! ... local variables
217  CHARACTER(CHRLEN) :: rcsidentstring
218  INTEGER :: indi(ibeg:iend+1),indj(jbeg:jend+1),indk(kbeg:kend+1)
219  REAL(RFREAL) :: rwidth1, fac1, fac2, fac3, fac4, fac5
220 
221 !******************************************************************************
222 
223  rcsidentstring = '$RCSfile: TURB_floLesGenCoFFUtil.F90,v $'
224 
225  CALL registerfunction( global,'TURB_FloLesGenCoFFHi',&
226  'TURB_floLesGenCoFFUtil.F90' )
227 
228 ! get indices ---------------------------------------------------------------
229 
230  DO i = ibeg,iend
231  indi(i)=i
232  ENDDO
233  DO j = jbeg,jend
234  indj(j)=j
235  ENDDO
236  DO k = kbeg,kend
237  indk(k)=k
238  ENDDO
239  indi(iend+1)=iend
240  indj(jend+1)=jend
241  indk(kend+1)=kend
242 
243 ! start computations
244 
245  IF (ijk==diri) THEN
246  DO k=kbeg,kend
247  DO j=jbeg,jend
248  DO i=ibeg,iend
249  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
250  ijkn1 = indijk(i ,j ,indk(k+1),inoff,ijnoff)
251  ds(i) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
252  ENDDO
253  DO i=1,2
254  ds(ibeg-i) = ds(ibeg)
255  ds(iend+i) = ds(iend)
256  ENDDO
257  DO i=ibeg,iend
258  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
259  rwidth1= 1._rfreal/(ds(i-1)+ds(i))
260  fac1 = ds(i-1)*rwidth1
261  fac3 = ds(i)*rwidth1
262  ffcofa(1,ijkn) = 0.5_rfreal*fac1
263  ffcofa(2,ijkn) = 0.5_rfreal
264  ffcofa(3,ijkn) = 0.5_rfreal*fac3
265 
266  rwidth1= 1._rfreal/(ds(i-2)+ds(i-1)+ds(i)+ds(i+1))
267  fac1 = ds(i-2)*rwidth1
268  fac2 = (ds(i-2)+ds(i-1))*rwidth1
269  fac3 = (ds(i-1)+ds(i))*rwidth1
270  fac4 = (ds(i)+ds(i+1))*rwidth1
271  fac5 = ds(i+1)*rwidth1
272  ffcofb(1,ijkn) = 0.5_rfreal*fac1
273  ffcofb(2,ijkn) = 0.5_rfreal*fac2
274  ffcofb(3,ijkn) = 0.5_rfreal*fac3
275  ffcofb(4,ijkn) = 0.5_rfreal*fac4
276  ffcofb(5,ijkn) = 0.5_rfreal*fac5
277  ENDDO
278  ENDDO
279  ENDDO
280 
281  ELSEIF (ijk==dirj) THEN
282  DO k=kbeg,kend
283  DO i=ibeg,iend
284  DO j=jbeg,jend
285  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
286  ijkn1 = indijk(indi(i+1),j ,k ,inoff,ijnoff)
287  ds(j) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
288  ENDDO
289  DO j=1,2
290  ds(jbeg-j) = ds(jbeg)
291  ds(jend+j) = ds(jend)
292  ENDDO
293  DO j=jbeg,jend
294  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
295  rwidth1= 1._rfreal/(ds(j-1)+ds(j))
296  fac1 = ds(j-1)*rwidth1
297  fac3 = ds(j)*rwidth1
298  ffcofa(1,ijkn) = 0.5_rfreal*fac1
299  ffcofa(2,ijkn) = 0.5_rfreal
300  ffcofa(3,ijkn) = 0.5_rfreal*fac3
301 
302  rwidth1= 1._rfreal/(ds(j-2)+ds(j-1)+ds(j)+ds(j+1))
303  fac1 = ds(j-2)*rwidth1
304  fac2 = (ds(j-2)+ds(j-1))*rwidth1
305  fac3 = (ds(j-1)+ds(j))*rwidth1
306  fac4 = (ds(j)+ds(j+1))*rwidth1
307  fac5 = ds(j+1)*rwidth1
308  ffcofb(1,ijkn) = 0.5_rfreal*fac1
309  ffcofb(2,ijkn) = 0.5_rfreal*fac2
310  ffcofb(3,ijkn) = 0.5_rfreal*fac3
311  ffcofb(4,ijkn) = 0.5_rfreal*fac4
312  ffcofb(5,ijkn) = 0.5_rfreal*fac5
313  ENDDO
314  ENDDO
315  ENDDO
316 
317  ELSEIF (ijk==dirk) THEN
318  DO j=jbeg,jend
319  DO i=ibeg,iend
320  DO k=kbeg,kend
321  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
322  ijkn1 = indijk(i ,indj(j+1),k ,inoff,ijnoff)
323  ds(k) = 0.5_rfreal*(segm(segid,ijkn)+segm(segid,ijkn1))
324  ENDDO
325  DO k=1,2
326  ds(kbeg-k) = ds(kbeg)
327  ds(kend+k) = ds(kend)
328  ENDDO
329  DO k=kbeg,kend
330  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
331  rwidth1= 1._rfreal/(ds(k-1)+ds(k))
332  fac1 = ds(k-1)*rwidth1
333  fac3 = ds(k)*rwidth1
334  ffcofa(1,ijkn) = 0.5_rfreal*fac1
335  ffcofa(2,ijkn) = 0.5_rfreal
336  ffcofa(3,ijkn) = 0.5_rfreal*fac3
337 
338  rwidth1= 1._rfreal/(ds(k-2)+ds(k-1)+ds(k)+ds(k+1))
339  fac1 = ds(k-2)*rwidth1
340  fac2 = (ds(k-2)+ds(k-1))*rwidth1
341  fac3 = (ds(k-1)+ds(k))*rwidth1
342  fac4 = (ds(k)+ds(k+1))*rwidth1
343  fac5 = ds(k+1)*rwidth1
344  ffcofb(1,ijkn) = 0.5_rfreal*fac1
345  ffcofb(2,ijkn) = 0.5_rfreal*fac2
346  ffcofb(3,ijkn) = 0.5_rfreal*fac3
347  ffcofb(4,ijkn) = 0.5_rfreal*fac4
348  ffcofb(5,ijkn) = 0.5_rfreal*fac5
349  ENDDO
350  ENDDO
351  ENDDO
352  ENDIF
353 
354 ! finalize --------------------------------------------------------------------
355 
356  CALL deregisterfunction( global )
357 
358 END SUBROUTINE turb_flolesgencoffhi
359 
360 !******************************************************************************
361 !
362 ! RCS Revision history:
363 !
364 ! $Log: TURB_floLesGenCoFFUtil.F90,v $
365 ! Revision 1.4 2008/12/06 08:44:43 mtcampbe
366 ! Updated license.
367 !
368 ! Revision 1.3 2008/11/19 22:17:55 mtcampbe
369 ! Added Illinois Open Source License/Copyright
370 !
371 ! Revision 1.2 2004/03/12 02:55:36 wasistho
372 ! changed rocturb routine names
373 !
374 ! Revision 1.1 2004/03/08 23:35:45 wasistho
375 ! changed turb nomenclature
376 !
377 ! Revision 1.2 2003/05/15 02:57:06 jblazek
378 ! Inlined index function.
379 !
380 ! Revision 1.1 2002/10/14 23:55:29 wasistho
381 ! Install Rocturb
382 !
383 !******************************************************************************
384 
385 
386 
387 
388 
389 
390 
391 
**********************************************************************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 turb_flolesgencofflo(global, ijk, ibeg, iend, jbeg, jend, kbeg, kend, minIdx, maxIdx, segId, iNOff, ijNOff, ds, segm, ffCofA, ffCofB)
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine turb_flolesgencoffhi(global, ijk, ibeg, iend, jbeg, jend, kbeg, kend, minIdx, maxIdx, segId, iNOff, ijNOff, ds, segm, ffCofA, ffCofB)
**********************************************************************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
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