Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TURB_StatFCollector.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: Collect variables of interest to be time averaged for verification
26 !
27 ! Description: As a generic routine, number and kind of collected variables
28 ! are not specified. The cell values are obtained by averaging
29 ! the face values, including dummy cells. Data is accumulated
30 ! in I, J and K direction, respectively, through three subsquent
31 ! calls.
32 !
33 ! Input: region = data of current region
34 ! ijk = averaging direction
35 ! iBegSv = begin index of averaged field sv
36 ! iEndSv = end index of averaged field sv
37 ! colVar = array of collected variables
38 !
39 ! Output: turb%st(iBegSv:iEndSv,:) at cell centers including dummy cells.
40 !
41 ! Notes: none.
42 !
43 !******************************************************************************
44 !
45 ! $Id: TURB_StatFCollector.F90,v 1.6 2008/12/06 08:44:42 mtcampbe Exp $
46 !
47 ! Copyright: (c) 2001 by the University of Illinois
48 !
49 !******************************************************************************
50 
51 #ifdef RFLO
52 SUBROUTINE turb_statfcollector( region,ijk,iBegSt,iEndSt,colVar )
53 #endif
54 #ifdef RFLU
55 SUBROUTINE turb_statfcollector( region,ijk,iBegSt,iEndSt,colVar,colBVar )
56 #endif
57 
58  USE moddatatypes
59  USE moddatastruct, ONLY : t_region
60  USE modglobal, ONLY : t_global
61 #ifdef RFLO
62  USE modinterfaces, ONLY : rflo_getdimensdummy, &
64 
65 #include "Indexing.h"
66 #endif
67  USE moderror
68  USE modparameters
70  IMPLICIT NONE
71 
72 ! ... parameters
73  TYPE(t_region) :: region
74  INTEGER :: ijk, ibegst, iendst
75  REAL(RFREAL), POINTER :: colvar(:,:)
76 #ifdef RFLU
77  REAL(RFREAL), POINTER :: colbvar(:,:) ! collected variables at boundaries
78 #endif
79 
80 ! ... loop variables
81  INTEGER :: i, j, k, l, m
82 
83 ! ... local variables
84  CHARACTER(CHRLEN) :: rcsidentstring
85  TYPE(t_global), POINTER :: global
86 
87  INTEGER :: ijkc, ijkn
88  REAL(RFREAL) :: factor
89  REAL(RFREAL), POINTER :: st(:,:)
90 
91 #ifdef RFLO
92  INTEGER :: idcbeg, idcend, jdcbeg, jdcend, kdcbeg, kdcend
93  INTEGER :: ilev,icoff,ijcoff,inoff,ijnoff,ijknp,iadd
94 #endif
95 #ifdef RFLU
96  INTEGER :: ict, icl, ipatch, nfacespercell
97  INTEGER, POINTER :: c2f(:,:,:)
98 #endif
99 
100 !******************************************************************************
101 
102  rcsidentstring = '$RCSfile: TURB_StatFCollector.F90,v $'
103 
104  global => region%global
105  CALL registerfunction( global,'Turb_StatFCollector',&
106  'TURB_StatFCollector.F90' )
107 
108 ! check some input arguments --------------------------------------------------
109 
110  IF (iendst > region%turbInput%nSt) THEN
111  CALL errorstop( global,err_turb_statsinput,__line__, &
112  'index of collected vars larger than nSt (allocated nmbr stats vars)' )
113  ENDIF
114  IF (ibegst > iendst) THEN
115  CALL errorstop( global,err_turb_statsinput,__line__, &
116  'begin index of collected vars larger than end index' )
117  ENDIF
118 
119 #ifdef RFLO
120 ! get parameters --------------------------------------------------------
121 
122  ilev = region%currLevel
123 
124 ! get dimensions and pointers
125 
126  CALL rflo_getdimensdummy( region,ilev,idcbeg,idcend, &
127  jdcbeg,jdcend,kdcbeg,kdcend )
128  CALL rflo_getcelloffset( region,ilev,icoff,ijcoff )
129  CALL rflo_getnodeoffset( region,ilev,inoff,ijnoff )
130 
131  st => region%levels(ilev)%turb%st
132 
133 ! interpolate from face to cell
134 
135  factor = 1._rfreal/6._rfreal
136  IF (ijk == diri) THEN
137  st = 0._rfreal
138  iadd = 1
139  ELSEIF (ijk == dirj) THEN
140  iadd = inoff
141  ELSEIF (ijk == dirk) THEN
142  iadd = ijnoff
143  ENDIF
144 
145  DO k=kdcbeg,kdcend
146  DO j=jdcbeg,jdcend
147  DO i=idcbeg,idcend
148 
149  ijkc = indijk(i ,j ,k ,icoff,ijcoff)
150  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
151  ijknp = ijkn + iadd
152 
153  DO l=ibegst,iendst
154  m = l - ibegst + 1
155  st(l,ijkc) = st(l,ijkc)+factor*(colvar(m,ijkn)+colvar(m,ijknp))
156  ENDDO
157 
158  ENDDO ! i
159  ENDDO ! j
160  ENDDO ! k
161 #endif
162 #ifdef RFLU
163 ! get dimensions and pointers ------------------------------------------
164 
165  st => region%turb%st
166  st = 0._rfreal
167 
168  DO ijkc=1,region%grid%nCells
169 
170 ! - region (here denoted as 'global') to local (type) mapping
171 
172  ict = region%grid%cellGlob2Loc(1,ijkc) ! cell type
173  icl = region%grid%cellGlob2Loc(2,ijkc) ! local (type) cell index
174  SELECT CASE ( ict )
175  CASE ( cell_type_tet )
176  nfacespercell = 4
177  c2f => region%grid%tet2f
178  CASE ( cell_type_hex )
179  nfacespercell = 6
180  c2f => region%grid%hex2f
181  CASE ( cell_type_pri )
182  nfacespercell = 5
183  c2f => region%grid%pri2f
184  CASE ( cell_type_pyr )
185  nfacespercell = 5
186  c2f => region%grid%pyr2f
187  CASE default
188  CALL errorstop(global,err_reached_default,__line__)
189  END SELECT ! ict
190 
191  DO l=ibegst,iendst
192  m = l - ibegst + 1
193  DO k=1,nfacespercell
194  ipatch = c2f(1,k,icl) ! patch #, ipatch=0 denotes interior faces
195  ijkn = c2f(2,k,icl) ! global face index
196 
197  IF ( ipatch == 0 ) THEN ! Interior face
198  st(l,ijkc) = st(l,ijkc)+colvar(m,ijkn)
199  ELSE ! Boundary face
200  st(l,ijkc) = st(l,ijkc)+colbvar(m,ijkn)
201  ENDIF
202  ENDDO
203  st(l,ijkc) = st(l,ijkc)/nfacespercell
204  ENDDO ! l
205  ENDDO ! ijkC
206 #endif
207 
208 ! finalize --------------------------------------------------------------------
209 
210  CALL deregisterfunction( global )
211 
212 END SUBROUTINE turb_statfcollector
213 
214 !******************************************************************************
215 !
216 ! RCS Revision history:
217 !
218 ! $Log: TURB_StatFCollector.F90,v $
219 ! Revision 1.6 2008/12/06 08:44:42 mtcampbe
220 ! Updated license.
221 !
222 ! Revision 1.5 2008/11/19 22:17:54 mtcampbe
223 ! Added Illinois Open Source License/Copyright
224 !
225 ! Revision 1.4 2004/10/22 23:19:34 wasistho
226 ! fixed devision by 6 faces
227 !
228 ! Revision 1.3 2004/05/28 02:01:48 wasistho
229 ! update unstructured grid LES
230 !
231 ! Revision 1.2 2004/03/23 03:35:00 wasistho
232 ! prepared for RFLU
233 !
234 ! Revision 1.1 2004/03/05 04:37:00 wasistho
235 ! changed nomenclature
236 !
237 ! Revision 1.1 2003/05/24 02:30:28 wasistho
238 ! turbulence statistics expanded
239 !
240 !
241 !******************************************************************************
242 
243 
244 
245 
246 
247 
248 
FT m(int i, int j) const
**********************************************************************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
j indices k indices k
Definition: Indexing.h:6
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine rflo_getnodeoffset(region, iLev, iNodeOffset, ijNodeOffset)
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 kdcbeg
blockLoc i
Definition: read.cpp:79
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
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 jdcbeg
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469