Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TURB_floRansCentralDissipation.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 artificial numerical dissipation for turbulence RaNS
26 ! equation, if any.
27 !
28 ! Description: the dissipation is 4th-order only, with no 2nd-order part
29 !
30 ! Input: region = data of current region.
31 !
32 ! Output: region%levels%turb%diss = RaNS dissipative fluxes.
33 !
34 ! Notes: none.
35 !
36 !******************************************************************************
37 !
38 ! $Id: TURB_floRansCentralDissipation.F90,v 1.4 2008/12/06 08:44:44 mtcampbe Exp $
39 !
40 ! Copyright: (c) 2003 by the University of Illinois
41 !
42 !******************************************************************************
43 
44 SUBROUTINE turb_floranscentraldissipation( region )
45 
46  USE moddatatypes
47  USE moddatastruct, ONLY : t_region
48  USE modglobal, ONLY : t_global
50  USE moderror
51  USE modparameters
53  IMPLICIT NONE
54 
55 #include "Indexing.h"
56 
57 ! ... parameters
58  TYPE(t_region), INTENT(INOUT) :: region
59 
60 ! ... loop variables
61  INTEGER :: i, j, k, ii, jj, kk, icv
62 
63 ! ... local variables
64 
65  INTEGER :: ipcbeg, ipcend, jpcbeg, jpcend, kpcbeg, kpcend
66  INTEGER :: ncv, ilev, icoff, ijcoff, ijkc0, ijkcm1, ijkcp1, ijkcp2
67 
68  REAL(RFREAL) :: beta, eval, eps2, eps4, pmax, fd, vis2, vis4
69  REAL(RFREAL), POINTER :: cv(:,:), diss(:,:), srad(:,:), dp(:), dv(:,:)
70 
71  TYPE(t_global), POINTER :: global
72 
73 !******************************************************************************
74 
75  global => region%global
76 
77  CALL registerfunction( global,'TURB_FloRansCentralDissipation',&
78  'TURB_floRansCentralDissipation.F90' )
79 
80 ! get dimensions and pointers -------------------------------------------------
81 
82  ilev = region%currLevel
83 
84  CALL rflo_getdimensphys( region,ilev,ipcbeg,ipcend, &
85  jpcbeg,jpcend,kpcbeg,kpcend )
86  CALL rflo_getcelloffset( region,ilev,icoff,ijcoff )
87 
88  ncv = region%turbInput%nCv
89  cv => region%levels(ilev)%turb%cv
90  diss => region%levels(ilev)%turb%diss
91  srad => region%levels(ilev)%turb%srad
92  dp => region%work1D
93 
94  dv => region%levels(ilev)%mixt%dv
95 
96  beta = region%mixtInput%betrk(region%irkStep)
97  vis2 = beta*region%turbInput%vis2
98  vis4 = beta*region%turbInput%vis4
99 
100 ! dissipation in i-direction ------------------------------------------------
101 
102  DO k=kpcbeg,kpcend
103  DO j=jpcbeg,jpcend
104 
105 ! --- pressure switch
106 
107  ii = 0
108  DO i=ipcbeg-1,ipcend+1
109  ii = ii + 1
110  ijkc0 = indijk(i ,j,k,icoff,ijcoff)
111  ijkcm1 = indijk(i-1,j,k,icoff,ijcoff)
112  ijkcp1 = indijk(i+1,j,k,icoff,ijcoff)
113  dp(ii) = abs(( dv(dv_mixt_pres,ijkcp1)- &
114  2._rfreal*dv(dv_mixt_pres,ijkc0 )+ &
115  dv(dv_mixt_pres,ijkcm1))/ &
116  ( dv(dv_mixt_pres,ijkcp1)+ &
117  2._rfreal*dv(dv_mixt_pres,ijkc0 )+ &
118  dv(dv_mixt_pres,ijkcm1)))
119  ENDDO
120 
121 ! --- dissipative fluxes at I+1/2
122 
123  ii = 0
124  DO i=ipcbeg-1,ipcend
125  ii = ii + 1
126  ijkc0 = indijk(i ,j,k,icoff,ijcoff)
127  ijkcm1 = indijk(i-1,j,k,icoff,ijcoff)
128  ijkcp1 = indijk(i+1,j,k,icoff,ijcoff)
129  ijkcp2 = indijk(i+2,j,k,icoff,ijcoff)
130  eval = 0.5_rfreal*(srad(icoord,ijkc0)+srad(icoord,ijkcp1) + &
131  max(srad(jcoord,ijkc0)+srad(jcoord,ijkcp1), &
132  srad(kcoord,ijkc0)+srad(kcoord,ijkcp1)))
133  pmax = max(dp(ii),dp(ii+1))
134  eps2 = eval*vis2*pmax
135  eps4 = eval*vis4
136  DO icv = 1,ncv
137  fd = eps2*( cv(icv,ijkcp1) - cv(icv,ijkc0)) + &
138  eps4*( (cv(icv,ijkcm1) - cv(icv,ijkcp2)) + &
139  3._rfreal*(cv(icv,ijkcp1) - cv(icv,ijkc0 )) )
140 
141  diss(icv,ijkc0 ) = diss(icv,ijkc0 ) + fd
142  diss(icv,ijkcp1) = diss(icv,ijkcp1) - fd
143  ENDDO ! iCv
144 
145  ENDDO ! i
146  ENDDO ! j
147  ENDDO ! k
148 
149 ! dissipation in j-direction ------------------------------------------------
150 
151  DO k=kpcbeg,kpcend
152  DO i=ipcbeg,ipcend
153 
154 ! --- pressure switch
155 
156  jj = 0
157  DO j=jpcbeg-1,jpcend+1
158  jj = jj + 1
159  ijkc0 = indijk(i,j ,k,icoff,ijcoff)
160  ijkcm1 = indijk(i,j-1,k,icoff,ijcoff)
161  ijkcp1 = indijk(i,j+1,k,icoff,ijcoff)
162  dp(jj) = abs(( dv(dv_mixt_pres,ijkcp1)- &
163  2._rfreal*dv(dv_mixt_pres,ijkc0 )+ &
164  dv(dv_mixt_pres,ijkcm1))/ &
165  ( dv(dv_mixt_pres,ijkcp1)+ &
166  2._rfreal*dv(dv_mixt_pres,ijkc0 )+ &
167  dv(dv_mixt_pres,ijkcm1)))
168  ENDDO
169 
170 ! --- dissipative fluxes at J+1/2
171 
172  jj = 0
173  DO j=jpcbeg-1,jpcend
174  jj = jj + 1
175  ijkc0 = indijk(i,j ,k,icoff,ijcoff)
176  ijkcm1 = indijk(i,j-1,k,icoff,ijcoff)
177  ijkcp1 = indijk(i,j+1,k,icoff,ijcoff)
178  ijkcp2 = indijk(i,j+2,k,icoff,ijcoff)
179  eval = 0.5_rfreal*(srad(jcoord,ijkc0)+srad(jcoord,ijkcp1) + &
180  max(srad(icoord,ijkc0)+srad(icoord,ijkcp1), &
181  srad(kcoord,ijkc0)+srad(kcoord,ijkcp1)))
182  pmax = max(dp(jj),dp(jj+1))
183  eps2 = eval*vis2*pmax
184  eps4 = eval*vis4
185  DO icv = 1,ncv
186  fd = eps2*( cv(icv,ijkcp1) - cv(icv,ijkc0)) + &
187  eps4*( (cv(icv,ijkcm1) - cv(icv,ijkcp2)) + &
188  3._rfreal*(cv(icv,ijkcp1) - cv(icv,ijkc0 )) )
189 
190  diss(icv,ijkc0 ) = diss(icv,ijkc0 ) + fd
191  diss(icv,ijkcp1) = diss(icv,ijkcp1) - fd
192  ENDDO ! iCv
193 
194  ENDDO ! j
195  ENDDO ! i
196  ENDDO ! k
197 
198 ! dissipation in k-direction --------------------------------------------------
199 
200  DO j=jpcbeg,jpcend
201  DO i=ipcbeg,ipcend
202 
203 ! --- pressure switch
204 
205  kk = 0
206  DO k=kpcbeg-1,kpcend+1
207  kk = kk + 1
208  ijkc0 = indijk(i,j,k ,icoff,ijcoff)
209  ijkcm1 = indijk(i,j,k-1,icoff,ijcoff)
210  ijkcp1 = indijk(i,j,k+1,icoff,ijcoff)
211  dp(kk) = abs(( dv(dv_mixt_pres,ijkcp1)- &
212  2._rfreal*dv(dv_mixt_pres,ijkc0 )+ &
213  dv(dv_mixt_pres,ijkcm1))/ &
214  ( dv(dv_mixt_pres,ijkcp1)+ &
215  2._rfreal*dv(dv_mixt_pres,ijkc0 )+ &
216  dv(dv_mixt_pres,ijkcm1)))
217  ENDDO
218 
219 ! --- dissipative fluxes at K+1/2
220 
221  kk = 0
222  DO k=kpcbeg-1,kpcend
223  kk = kk + 1
224  ijkc0 = indijk(i,j,k ,icoff,ijcoff)
225  ijkcm1 = indijk(i,j,k-1,icoff,ijcoff)
226  ijkcp1 = indijk(i,j,k+1,icoff,ijcoff)
227  ijkcp2 = indijk(i,j,k+2,icoff,ijcoff)
228  eval = 0.5_rfreal*(srad(kcoord,ijkc0)+srad(kcoord,ijkcp1) + &
229  max(srad(icoord,ijkc0)+srad(icoord,ijkcp1), &
230  srad(jcoord,ijkc0)+srad(jcoord,ijkcp1)))
231  pmax = max(dp(kk),dp(kk+1))
232  eps2 = eval*vis2*pmax
233  eps4 = eval*vis4
234  DO icv = 1,ncv
235  fd = eps2*( cv(icv,ijkcp1) - cv(icv,ijkc0)) + &
236  eps4*( (cv(icv,ijkcm1) - cv(icv,ijkcp2)) + &
237  3._rfreal*(cv(icv,ijkcp1) - cv(icv,ijkc0 )) )
238 
239  diss(icv,ijkc0 ) = diss(icv,ijkc0 ) + fd
240  diss(icv,ijkcp1) = diss(icv,ijkcp1) - fd
241  ENDDO ! iCv
242 
243  ENDDO ! k
244  ENDDO ! i
245  ENDDO ! j
246 
247 ! finalize --------------------------------------------------------------------
248 
249  CALL deregisterfunction( global )
250 
251 END SUBROUTINE turb_floranscentraldissipation
252 
253 !******************************************************************************
254 !
255 ! RCS Revision history:
256 !
257 ! $Log: TURB_floRansCentralDissipation.F90,v $
258 ! Revision 1.4 2008/12/06 08:44:44 mtcampbe
259 ! Updated license.
260 !
261 ! Revision 1.3 2008/11/19 22:17:56 mtcampbe
262 ! Added Illinois Open Source License/Copyright
263 !
264 ! Revision 1.2 2004/03/12 02:55:36 wasistho
265 ! changed rocturb routine names
266 !
267 ! Revision 1.1 2004/03/08 23:35:45 wasistho
268 ! changed turb nomenclature
269 !
270 ! Revision 1.5 2003/10/27 04:51:37 wasistho
271 ! added RaNS upwind schemes
272 !
273 ! Revision 1.4 2003/10/15 22:06:07 wasistho
274 ! use turb srad instead of mixture
275 !
276 ! Revision 1.3 2003/10/15 03:41:21 wasistho
277 ! added 2nd order dissipation coeff. k2
278 !
279 ! Revision 1.1 2003/10/07 02:17:03 wasistho
280 ! initial installation of RaNS-SA and DES
281 !
282 !
283 !******************************************************************************
284 
285 
286 
287 
288 
289 
290 
j indices k indices k
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 kpcbeg
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
Definition: Vector_n.h:354
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 jpcbeg
**********************************************************************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 ipcend
**********************************************************************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 ipcbeg
blockLoc i
Definition: read.cpp:79
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 jpcend
subroutine deregisterfunction(global)
Definition: ModError.F90:469
subroutine turb_floranscentraldissipation(region)
subroutine rflo_getdimensphys(region, iLev, ipcbeg, ipcend, jpcbeg, jpcend, kpcbeg, kpcend)