Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TURB_RansSAVisFluxPatch.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 SA viscous flux: nutot*d_j(tilde[nu])
26 ! through a patch
27 !
28 ! Description: this routine works in the same way as TURB_RansSAVisFlux
29 ! but applied on region patches
30 !
31 ! Input: region = data of current region.
32 ! patch = current patch.
33 !
34 ! Output: region%levels%turb%diss = viscous flux added to SA dissipation.
35 !
36 ! Notes: none.
37 !
38 !******************************************************************************
39 !
40 ! $Id: TURB_RansSAVisFluxPatch.F90,v 1.10 2008/12/06 08:44:42 mtcampbe Exp $
41 !
42 ! Copyright: (c) 2003 by the University of Illinois
43 !
44 !******************************************************************************
45 
46 SUBROUTINE turb_ranssavisfluxpatch( region,patch )
47 
48  USE moddatatypes
49  USE modbndpatch, ONLY : t_patch
50  USE moddatastruct, ONLY : t_region
51 #ifdef RFLO
54 
55 #include "Indexing.h"
56 #endif
57  USE moderror
58  USE modparameters
60  IMPLICIT NONE
61 
62 ! ... parameters
63  TYPE(t_region) :: region
64  TYPE(t_patch) :: patch
65 
66 ! ... loop variables
67  INTEGER :: i, j, k, ic
68 
69 ! ... local variables
70  INTEGER :: bctype, ijkcb0, ijkcd, ijknb
71  INTEGER :: ibeg, iend, jbeg, jend, kbeg, kend
72 
73  REAL(RFREAL) :: cb2, opcb2, rsigma, beta, rhoa, mua, rnua, nuf, nuc
74  REAL(RFREAL) :: nutilx, nutily, nutilz, fd, sf(3), ac0, ac1
75  REAL(RFREAL), POINTER :: cv(:,:), tv(:,:), tcv(:,:), tdiss(:,:)
76 
77 #ifdef RFLO
78  INTEGER :: inode, jnode, knode, idir, jdir, kdir
79  INTEGER :: ilev, lbound, icoff, ijcoff, inoff, ijnoff, acid0, acid1
80  REAL(RFREAL) :: sgn
81  REAL(RFREAL), POINTER :: avgco(:,:), sface(:,:), grad(:,:)
82 #endif
83 #ifdef RFLU
84  INTEGER :: ifgbeg, ijknbg
85  REAL(RFREAL), POINTER :: fn(:,:), grad(:,:,:)
86 #endif
87 
88 !******************************************************************************
89 
90  CALL registerfunction( region%global,'TURB_RansSAVisFluxPatch',&
91  'TURB_RansSAVisFluxPatch.F90' )
92 
93 ! get dimensions and pointers -------------------------------------------------
94 
95  bctype = patch%bcType
96 
97 #ifdef RFLO
98  ilev = region%currLevel
99  lbound = patch%lbound
100 
101  cv => region%levels(ilev)%mixt%cv
102  tv => region%levels(ilev)%mixt%tv
103  tcv => region%levels(ilev)%turb%cv
104  tdiss=> region%levels(ilev)%turb%diss
105 #endif
106 #ifdef RFLU
107  cv => region%mixt%cv
108  tv => region%mixt%tv
109  tcv => region%turb%cv
110  tdiss=> region%turb%diss
111 #endif
112 
113 ! get coefficients -----------------------------------------------------------
114 
115  cb2 = region%turbInput%const(mc_sa_cb2)
116  rsigma = region%turbInput%const(mc_sa_rsig)
117  beta = region%mixtInput%betrk(region%irkStep)*rsigma
118  opcb2 = 1._rfreal+cb2
119 
120 #ifdef RFLO
121 
122 ! take the right face vector and make it point outwards ----------------------
123 
124  CALL rflo_getpatchindices( region,patch,ilev,ibeg,iend,jbeg,jend,kbeg,kend )
126  CALL rflo_getcelloffset( region,ilev,icoff,ijcoff )
127  CALL rflo_getnodeoffset( region,ilev,inoff,ijnoff )
128 
129  sgn = +1._rfreal
130  inode = 0
131  jnode = 0
132  knode = 0
133  acid0 = 2
134  acid1 = 1
135  IF (lbound==2 .OR. lbound==4 .OR. lbound==6) THEN
136  sgn = -1._rfreal
137  inode = -idir
138  jnode = -jdir
139  knode = -kdir
140  acid0 = 1
141  acid1 = 2
142  ENDIF
143 
144 ! get the appropriate face vector --------------------------------------------
145 
146  IF (lbound==1 .OR. lbound==2) THEN
147  avgco => region%levels(ilev)%grid%c2fCoI
148  sface => region%levels(ilev)%grid%si
149  grad => region%levels(ilev)%turb%gradi
150  ELSE IF (lbound==3 .OR. lbound==4) THEN
151  avgco => region%levels(ilev)%grid%c2fCoJ
152  sface => region%levels(ilev)%grid%sj
153  grad => region%levels(ilev)%turb%gradj
154  ELSE
155  avgco => region%levels(ilev)%grid%c2fCoK
156  sface => region%levels(ilev)%grid%sk
157  grad => region%levels(ilev)%turb%gradk
158  ENDIF
159 
160 ! non-conforming region interface --------------------------------------------
161 
162  IF (bctype>=bc_regionint .AND. bctype<=bc_regionint+bc_range) THEN
163 
164  ELSE IF (bctype>=bc_regnonconf .AND. bctype<=bc_regnonconf+bc_range) THEN
165 
166 ! everything else
167 
168  ELSE
169 
170 ! flux in the direction normal to the patch ----------------------------------
171 
172  DO k=kbeg,kend
173  DO j=jbeg,jend
174  DO i=ibeg,iend
175 
176  ijkcb0 = indijk(i ,j ,k ,icoff,ijcoff) ! bnd cells
177  ijkcd = indijk(i-idir ,j-jdir ,k-kdir ,icoff,ijcoff) ! dummy
178  ijknb = indijk(i+inode,j+jnode,k+knode,inoff,ijnoff) ! bnd nodes
179  ac0 = avgco(acid0,ijknb)
180  ac1 = avgco(acid1,ijknb)
181  sf(1) = sgn*sface(xcoord,ijknb)
182  sf(2) = sgn*sface(ycoord,ijknb)
183  sf(3) = sgn*sface(zcoord,ijknb)
184 #endif
185 #ifdef RFLU
186  ibeg = 1
187  iend = patch%nBFaces
188 ! TEMPORARY : removing usage of bf2bg from everywhere
189 ! ifgBeg = patch%bf2bg(BF2BG_BEG)
190  ac0 = 0.5_rfreal
191  ac1 = 0.5_rfreal
192 
193  grad => region%turb%bGradi
194  fn => patch%fn
195 
196  DO ic=ibeg,iend
197  ijkcb0 = patch%bf2c(ic)
198  ijkcd = ijkcb0
199  ijknb = ic
200  ijknbg = ic + ifgbeg-1
201 
202  sf(1) = fn(xcoord,ijknb)*fn(xyzmag,ijknb)
203  sf(2) = fn(ycoord,ijknb)*fn(xyzmag,ijknb)
204  sf(3) = fn(zcoord,ijknb)*fn(xyzmag,ijknb)
205 #endif
206  rhoa = ac0*cv(cv_mixt_dens ,ijkcb0)+ac1*cv(cv_mixt_dens ,ijkcd)
207  mua = ac0*tv(tv_mixt_muel ,ijkcb0)+ac1*tv(tv_mixt_muel ,ijkcd)
208  rnua = ac0*tcv(cv_sa_nutil ,ijkcb0)+ac1*tcv(cv_sa_nutil ,ijkcd)
209  nuf = (rnua + mua)/rhoa
210  nuc = (tcv(cv_sa_nutil ,ijkcb0) + tv(tv_mixt_muel ,ijkcb0))/ &
211  cv(cv_mixt_dens ,ijkcb0)
212 
213 #ifdef RFLO
214  nutilx = grad(gr_sa_nutilx,ijknb)
215  nutily = grad(gr_sa_nutily,ijknb)
216  nutilz = grad(gr_sa_nutilz,ijknb)
217 #endif
218 #ifdef RFLU
219  nutilx = grad(xcoord,gr_sa_nutilx,ijknbg)
220  nutily = grad(ycoord,gr_sa_nutilx,ijknbg)
221  nutilz = grad(zcoord,gr_sa_nutilx,ijknbg)
222 #endif
223 
224  fd = beta*(nuf*opcb2-nuc*cb2)* &
225  (nutilx*sf(1)+nutily*sf(2)+nutilz*sf(3))
226 
227  tdiss(cv_sa_nutil,ijkcb0) = tdiss(cv_sa_nutil,ijkcb0)+fd
228 
229 #ifdef RFLO
230  ENDDO ! i
231  ENDDO ! j
232  ENDDO ! k
233  ENDIF
234 #endif
235 
236 #ifdef RFLU
237  ENDDO ! iC
238 #endif
239 
240 ! finalize --------------------------------------------------------------------
241 
242  CALL deregisterfunction( region%global )
243 
244 END SUBROUTINE turb_ranssavisfluxpatch
245 
246 !******************************************************************************
247 !
248 ! RCS Revision history:
249 !
250 ! $Log: TURB_RansSAVisFluxPatch.F90,v $
251 ! Revision 1.10 2008/12/06 08:44:42 mtcampbe
252 ! Updated license.
253 !
254 ! Revision 1.9 2008/11/19 22:17:54 mtcampbe
255 ! Added Illinois Open Source License/Copyright
256 !
257 ! Revision 1.8 2006/08/19 15:41:01 mparmar
258 ! Removed bf2bg
259 !
260 ! Revision 1.7 2004/08/04 22:07:46 wasistho
261 ! bugfixed: ac0 and ac1 are common to flo and flu
262 !
263 ! Revision 1.6 2004/08/02 23:08:35 wasistho
264 ! shift location of lines defining ac0 and ac1
265 !
266 ! Revision 1.5 2004/08/02 21:55:46 wasistho
267 ! replaced cell2face midpoint by linear averaging
268 !
269 ! Revision 1.4 2004/03/25 04:40:41 wasistho
270 ! prepared for RFLU
271 !
272 ! Revision 1.3 2004/03/24 03:37:02 wasistho
273 ! prepared for RFLU
274 !
275 ! Revision 1.2 2004/03/20 03:28:29 wasistho
276 ! prepared for RFLU
277 !
278 ! Revision 1.1 2004/03/05 04:37:00 wasistho
279 ! changed nomenclature
280 !
281 ! Revision 1.4 2003/10/25 22:07:34 wasistho
282 ! modified non-conservative diffusion term
283 !
284 ! Revision 1.3 2003/10/20 20:28:28 wasistho
285 ! made consistent with compressible SA formulation
286 !
287 ! Revision 1.2 2003/10/10 20:35:13 wasistho
288 ! multiplied SA viscous fluxes by 1/sigma through beta
289 !
290 ! Revision 1.1 2003/10/07 02:17:03 wasistho
291 ! initial installation of RaNS-SA and DES
292 !
293 !
294 !******************************************************************************
295 
296 
297 
298 
299 
300 
301 
**********************************************************************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
subroutine turb_ranssavisfluxpatch(region, patch)
subroutine rflo_getpatchdirection(patch, idir, jdir, kdir)
**********************************************************************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 inode
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 ic
subroutine rflo_getpatchindices(region, patch, iLev, ibeg, iend, jbeg, jend, kbeg, kend)
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 jdir
Definition: patch.h:74
**********************************************************************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
**********************************************************************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 idir
subroutine rflo_getcelloffset(region, iLev, iCellOffset, ijCellOffset)
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 kdir
**********************************************************************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
**********************************************************************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 jnode