Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PEUL_CentralFlux.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 central convective fluxes for smoke by average of variables.
26 !
27 ! Description: none.
28 !
29 ! Input: region = data of current region.
30 !
31 ! Output: region%levels%peul%rhs = convective fluxes added to the residual.
32 !
33 ! Notes: none.
34 !
35 !******************************************************************************
36 !
37 ! $Id: PEUL_CentralFlux.F90,v 1.3 2008/12/06 08:44:39 mtcampbe Exp $
38 !
39 ! Copyright: (c) 2002 by the University of Illinois
40 !
41 !******************************************************************************
42 
43 SUBROUTINE peul_centralflux( region )
44 
45  USE moddatatypes
46  USE moddatastruct, ONLY : t_region
47  USE modglobal, ONLY : t_global
48  USE moderror
49  USE modparameters
51 
55  IMPLICIT NONE
56 
57 #include "Indexing.h"
58 
59 ! ... parameters
60  TYPE(t_region), INTENT(INOUT) :: region
61 
62 ! ... loop variables
63  INTEGER :: i,j,k,ipatch,ipt
64 
65 ! ... local variables
66  CHARACTER(CHRLEN) :: rcsidentstring
67 
68  INTEGER :: ipcbeg,ipcend,jpcbeg,jpcend,kpcbeg,kpcend,nptypes
69  INTEGER :: ilev,icoff,ijcoff,inoff,ijnoff,ijkc0,ijkc1,ijkn,indsvel
70 
71  REAL(RFREAL) :: srhoa,grhoa,grhoua,grhova,grhowa,vcont,ds,svel,fc
72  REAL(RFREAL), POINTER :: scv(:,:),gcv(:,:),srhs(:,:)
73  REAL(RFREAL), POINTER :: si(:,:),sj(:,:),sk(:,:)
74  REAL(RFREAL), POINTER :: sivel(:),sjvel(:),skvel(:)
75 
76  TYPE(t_global), POINTER :: global
77 
78 !******************************************************************************
79 
80  rcsidentstring = '$RCSfile: PEUL_CentralFlux.F90,v $ $Revision: 1.3 $'
81 
82  global => region%global
83 
84  CALL registerfunction( global,'PEUL_CentralFlux',&
85  'PEUL_CentralFlux.F90' )
86 
87 ! begin -----------------------------------------------------------------------
88 
89 ! get dimensions and pointers -------------------------------------------------
90 
91  ilev = region%currLevel
92 
93  CALL rflo_getdimensphys( region,ilev,ipcbeg,ipcend, &
94  jpcbeg,jpcend,kpcbeg,kpcend )
95  CALL rflo_getcelloffset( region,ilev,icoff,ijcoff )
96  CALL rflo_getnodeoffset( region,ilev,inoff,ijnoff )
97 
98  gcv => region%levels(ilev)%mixt%cv
99  scv => region%levels(ilev)%peul%cv
100  srhs => region%levels(ilev)%peul%rhs
101  si => region%levels(ilev)%grid%si
102  sj => region%levels(ilev)%grid%sj
103  sk => region%levels(ilev)%grid%sk
104  sivel => region%levels(ilev)%grid%siVel
105  sjvel => region%levels(ilev)%grid%sjVel
106  skvel => region%levels(ilev)%grid%skVel
107  indsvel = region%levels(ilev)%grid%indSvel
108 
109  nptypes = region%peulInput%nPtypes
110  IF (nptypes /= region%levels(ilev)%peul%nCv) &
111  CALL errorstop( global,err_peul_npmismatch,__line__ )
112 
113 ! flux in i-direction (except through boundary) -------------------------------
114 
115  DO k=kpcbeg,kpcend
116  DO j=jpcbeg,jpcend
117  DO i=ipcbeg+1,ipcend
118  ijkc0 = indijk(i ,j,k,icoff,ijcoff)
119  ijkc1 = indijk(i-1,j,k,icoff,ijcoff)
120  ijkn = indijk(i ,j,k,inoff,ijnoff)
121 
122  ds = sqrt(si(xcoord,ijkn)*si(xcoord,ijkn)+ &
123  si(ycoord,ijkn)*si(ycoord,ijkn)+ &
124  si(zcoord,ijkn)*si(zcoord,ijkn))
125  svel = sivel(ijkn*indsvel)*ds
126 
127  grhoa = 0.5_rfreal*(gcv(cv_mixt_dens,ijkc0)+gcv(cv_mixt_dens,ijkc1))
128  grhoua = 0.5_rfreal*(gcv(cv_mixt_xmom,ijkc0)+gcv(cv_mixt_xmom,ijkc1))
129  grhova = 0.5_rfreal*(gcv(cv_mixt_ymom,ijkc0)+gcv(cv_mixt_ymom,ijkc1))
130  grhowa = 0.5_rfreal*(gcv(cv_mixt_zmom,ijkc0)+gcv(cv_mixt_zmom,ijkc1))
131 
132  vcont = (grhoua*si(xcoord,ijkn)+grhova*si(ycoord,ijkn)+&
133  grhowa*si(zcoord,ijkn))/grhoa - svel
134 
135  DO ipt=1,nptypes
136  srhoa = 0.5_rfreal*(scv(ipt,ijkc0)+scv(ipt,ijkc1))
137  fc = vcont*srhoa
138  srhs(ipt,ijkc0) = srhs(ipt,ijkc0) + fc
139  srhs(ipt,ijkc1) = srhs(ipt,ijkc1) - fc
140  ENDDO ! ipt
141 
142  ENDDO ! i
143  ENDDO ! j
144  ENDDO ! k
145 
146 ! flux in j-direction (except through boundary) -------------------------------
147 
148  DO k=kpcbeg,kpcend
149  DO j=jpcbeg+1,jpcend
150  DO i=ipcbeg,ipcend
151  ijkc0 = indijk(i,j ,k,icoff,ijcoff)
152  ijkc1 = indijk(i,j-1,k,icoff,ijcoff)
153  ijkn = indijk(i,j ,k,inoff,ijnoff)
154 
155  ds = sqrt(sj(xcoord,ijkn)*sj(xcoord,ijkn)+ &
156  sj(ycoord,ijkn)*sj(ycoord,ijkn)+ &
157  sj(zcoord,ijkn)*sj(zcoord,ijkn))
158  svel = sjvel(ijkn*indsvel)*ds
159 
160  grhoa = 0.5_rfreal*(gcv(cv_mixt_dens,ijkc0)+gcv(cv_mixt_dens,ijkc1))
161  grhoua = 0.5_rfreal*(gcv(cv_mixt_xmom,ijkc0)+gcv(cv_mixt_xmom,ijkc1))
162  grhova = 0.5_rfreal*(gcv(cv_mixt_ymom,ijkc0)+gcv(cv_mixt_ymom,ijkc1))
163  grhowa = 0.5_rfreal*(gcv(cv_mixt_zmom,ijkc0)+gcv(cv_mixt_zmom,ijkc1))
164 
165  vcont = (grhoua*sj(xcoord,ijkn)+grhova*sj(ycoord,ijkn)+&
166  grhowa*sj(zcoord,ijkn))/grhoa - svel
167 
168  DO ipt=1,nptypes
169  srhoa = 0.5_rfreal*(scv(ipt,ijkc0)+scv(ipt,ijkc1))
170  fc = vcont*srhoa
171  srhs(ipt,ijkc0) = srhs(ipt,ijkc0) + fc
172  srhs(ipt,ijkc1) = srhs(ipt,ijkc1) - fc
173  ENDDO ! ipt
174 
175  ENDDO ! i
176  ENDDO ! j
177  ENDDO ! k
178 
179 ! flux in k-direction (except through boundary) -------------------------------
180 
181  DO k=kpcbeg+1,kpcend
182  DO j=jpcbeg,jpcend
183  DO i=ipcbeg,ipcend
184  ijkc0 = indijk(i,j,k ,icoff,ijcoff)
185  ijkc1 = indijk(i,j,k-1,icoff,ijcoff)
186  ijkn = indijk(i,j,k ,inoff,ijnoff)
187 
188  ds = sqrt(sk(xcoord,ijkn)*sk(xcoord,ijkn)+ &
189  sk(ycoord,ijkn)*sk(ycoord,ijkn)+ &
190  sk(zcoord,ijkn)*sk(zcoord,ijkn))
191  svel = skvel(ijkn*indsvel)*ds
192 
193  grhoa = 0.5_rfreal*(gcv(cv_mixt_dens,ijkc0)+gcv(cv_mixt_dens,ijkc1))
194  grhoua = 0.5_rfreal*(gcv(cv_mixt_xmom,ijkc0)+gcv(cv_mixt_xmom,ijkc1))
195  grhova = 0.5_rfreal*(gcv(cv_mixt_ymom,ijkc0)+gcv(cv_mixt_ymom,ijkc1))
196  grhowa = 0.5_rfreal*(gcv(cv_mixt_zmom,ijkc0)+gcv(cv_mixt_zmom,ijkc1))
197 
198  vcont = (grhoua*sk(xcoord,ijkn)+grhova*sk(ycoord,ijkn)+&
199  grhowa*sk(zcoord,ijkn))/grhoa - svel
200 
201  DO ipt=1,nptypes
202  srhoa = 0.5_rfreal*(scv(ipt,ijkc0)+scv(ipt,ijkc1))
203  fc = vcont*srhoa
204  srhs(ipt,ijkc0) = srhs(ipt,ijkc0) + fc
205  srhs(ipt,ijkc1) = srhs(ipt,ijkc1) - fc
206  ENDDO ! ipt
207 
208  ENDDO ! i
209  ENDDO ! j
210  ENDDO ! k
211 
212 ! fluxes through boundaries ---------------------------------------------------
213 
214  DO ipatch=1,region%nPatches
215  CALL peul_centralfluxpatch( region,region%levels(ilev)%patches(ipatch) )
216  ENDDO
217 
218 ! finalize --------------------------------------------------------------------
219 
220  CALL deregisterfunction( global )
221 
222 END SUBROUTINE peul_centralflux
223 
224 !******************************************************************************
225 !
226 ! RCS Revision history:
227 !
228 ! $Log: PEUL_CentralFlux.F90,v $
229 ! Revision 1.3 2008/12/06 08:44:39 mtcampbe
230 ! Updated license.
231 !
232 ! Revision 1.2 2008/11/19 22:17:51 mtcampbe
233 ! Added Illinois Open Source License/Copyright
234 !
235 ! Revision 1.1 2004/12/01 21:09:26 haselbac
236 ! Initial revision after changing case
237 !
238 ! Revision 1.7 2004/07/28 15:42:13 jferry
239 ! deleted defunct constructs: useDetangle, useSmokeDrag, useSmokeHeatTransfer
240 !
241 ! Revision 1.6 2004/03/05 22:09:04 jferry
242 ! created global variables for peul, plag, and inrt use
243 !
244 ! Revision 1.5 2003/09/25 15:42:57 jferry
245 ! Added mixture source terms due to active smoke (for Detangle interaction)
246 !
247 ! Revision 1.4 2003/05/15 02:57:05 jblazek
248 ! Inlined index function.
249 !
250 ! Revision 1.3 2003/05/01 22:57:24 jferry
251 ! substituted macro for IndIJK
252 !
253 ! Revision 1.2 2003/04/07 18:29:01 jferry
254 ! added inflow boundary condition and initialization to a constant
255 !
256 ! Revision 1.1 2003/02/11 22:52:50 jferry
257 ! Initial import of Rocsmoke
258 !
259 !******************************************************************************
260 
261 
262 
263 
264 
265 
266 
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
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
double sqrt(double d)
Definition: double.h:73
**********************************************************************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
subroutine peul_centralflux(region)
**********************************************************************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
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 ipcbeg
blockLoc i
Definition: read.cpp:79
subroutine rflo_getcelloffset(region, iLev, iCellOffset, ijCellOffset)
subroutine peul_centralfluxpatch(region, patch)
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 errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469
subroutine rflo_getdimensphys(region, iLev, ipcbeg, ipcend, jpcbeg, jpcend, kpcbeg, kpcend)