Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RADI_FlimRkUpdate.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: update FLD radiation solution for unsteady flow using RK scheme
26 !
27 ! Description: none.
28 !
29 ! Input: region = data of current region,
30 !
31 ! Output: region%levels%radi%cv = new solution after each stage.
32 !
33 ! Notes: none.
34 !
35 !******************************************************************************
36 !
37 ! $Id: RADI_FlimRkUpdate.F90,v 1.3 2008/12/06 08:44:37 mtcampbe Exp $
38 !
39 ! Copyright: (c) 2003 by the University of Illinois
40 !
41 !******************************************************************************
42 
43 SUBROUTINE radi_flimrkupdate( region )
44 
45  USE moddatatypes
46  USE moddatastruct, ONLY : t_region
47  USE modglobal, ONLY : t_global
48  USE moderror
49  USE modparameters
51 #ifdef RFLO
54 
55 #include "Indexing.h"
56 #endif
57 
58  IMPLICIT NONE
59 
60 ! ... parameters
61  TYPE(t_region) :: region
62 
63 ! ... loop variables
64  INTEGER :: ic, idx
65 
66 ! ... local variables
67 #ifdef RFLO
68  INTEGER :: idcbeg, idcend, jdcbeg, jdcend, kdcbeg, kdcend
69  INTEGER :: ilev, icoff, ijcoff
70 #endif
71  INTEGER :: istage, ibc, iec, idxb, idxe
72 
73  LOGICAL :: movegrid
74 
75  REAL(RFREAL), POINTER :: cv(:,:), cvold(:,:), rhs(:,:), rhssum(:,:)
76  REAL(RFREAL), POINTER :: vol(:), volold(:)
77  REAL(RFREAL) :: ark(5), grk(5), fac, adtv, volrat
78 
79  TYPE(t_global), POINTER :: global
80 
81 !******************************************************************************
82 
83  global => region%global
84 
85  CALL registerfunction( global,'RADI_FlimRkUpdate',&
86  'RADI_FlimRkUpdate.F90' )
87 
88 ! get stage number ------------------------------------------------------------
89 
90  istage = region%irkStep
91 
92 ! get dimensions and pointers -------------------------------------------------
93 
94  ark(:) = region%mixtInput%ark(:)
95  grk(:) = region%mixtInput%grk(:)
96 
97  movegrid = region%mixtInput%moveGrid
98 
99  IF (region%radiInput%radiModel == radi_model_fldtran) THEN
100  idxb = cv_radi_ener
101  idxe = cv_radi_ener
102  ENDIF
103 
104 #ifdef RFLO
105  ilev = region%currLevel
106 
107  CALL rflo_getdimensdummy( region,ilev,idcbeg,idcend, &
108  jdcbeg,jdcend,kdcbeg,kdcend )
109  CALL rflo_getcelloffset( region,ilev,icoff,ijcoff )
110  ibc = indijk(idcbeg,jdcbeg,kdcbeg,icoff,ijcoff)
111  iec = indijk(idcend,jdcend,kdcend,icoff,ijcoff)
112 
113  cv => region%levels(ilev)%radi%cv
114  cvold => region%levels(ilev)%radi%cvOld
115  rhs => region%levels(ilev)%radi%rhs
116  rhssum => region%levels(ilev)%radi%rhsSum
117  vol => region%levels(ilev)%grid%vol
118  IF (movegrid) volold => region%levels(ilev)%gridOld%vol
119 #endif
120 
121 #ifdef RFLU
122  ibc = 1
123  iec = region%grid%nCellsTot
124 
125  cv => region%radi%cv
126  cvold => region%radi%cvOld
127  rhs => region%radi%rhs
128  rhssum => region%radi%rhsSum
129  vol => region%grid%vol
130  IF (movegrid) volold => region%gridOld%vol
131 #endif
132 
133 ! update FLD radiation solution, sum up residuals -----------------------------
134 
135  fac = ark(istage)*global%dtMin
136 
137  IF (movegrid) THEN
138 
139 ! - grid is moving (but only at every time step, NOT stage)
140 
141  IF (istage == 1) THEN
142  DO ic=ibc,iec
143  adtv = fac/vol(ic)
144  volrat = volold(ic)/vol(ic)
145  DO idx = idxb,idxe
146  cv(idx,ic) = volrat*cvold(idx,ic) - adtv*rhs(idx,ic)
147  rhssum(idx,ic) = rhs(idx,ic)
148  ENDDO
149  ENDDO ! ic
150 
151  ELSE IF (istage == global%nrkSteps) THEN
152  DO ic=ibc,iec
153  adtv = fac/vol(ic)
154  volrat = volold(ic)/vol(ic)
155  DO idx = idxb,idxe
156  cv(idx,ic) = volrat*cvold(idx,ic) - adtv*(rhs(idx,ic)+ &
157  rhssum(idx,ic))
158  ENDDO
159  ENDDO ! ic
160 
161  ELSE
162  DO ic=ibc,iec
163  adtv = fac/vol(ic)
164  volrat = volold(ic)/vol(ic)
165  DO idx = idxb,idxe
166  cv(idx,ic) = volrat*cvold(idx,ic) - adtv*rhs(idx,ic)
167  rhssum(idx,ic) = rhssum(idx,ic) + grk(istage)*rhs(idx,ic)
168  ENDDO
169  ENDDO ! ic
170  ENDIF ! istage
171 
172  ELSE ! moveGrid
173 
174 ! - grid is fixed
175 
176  IF (istage == 1) THEN
177  DO ic=ibc,iec
178  adtv = fac/vol(ic)
179  DO idx = idxb,idxe
180  cv(idx,ic) = cvold(idx,ic) - adtv*rhs(idx,ic)
181  rhssum(idx,ic) = rhs(idx,ic)
182  ENDDO
183  ENDDO ! ic
184 
185  ELSE IF (istage == global%nrkSteps) THEN
186  DO ic=ibc,iec
187  adtv = fac/vol(ic)
188  DO idx = idxb,idxe
189  cv(idx,ic) = cvold(idx,ic) - adtv*(rhs(idx,ic)+ &
190  rhssum(idx,ic))
191  ENDDO
192  ENDDO !ic
193 
194  ELSE
195  DO ic=ibc,iec
196  adtv = fac/vol(ic)
197  DO idx = idxb,idxe
198  cv(idx,ic) = cvold(idx,ic) - adtv*rhs(idx,ic)
199  rhssum(idx,ic) = rhssum(idx,ic) + grk(istage)*rhs(idx,ic)
200  ENDDO
201  ENDDO !ic
202 
203  ENDIF ! istage
204  ENDIF ! moveGrid
205 
206 ! extrapolate solution to dummy cells
207 
208 #ifdef RFLO
209  CALL rflo_extrapintcellvec( region,idxb,idxe,cv )
210 #endif
211 #ifdef RFLU
212 ! CALL RFLU_ExtrapIntCellVec( region,idxb,idxe,cv )
213 #endif
214 
215 ! finalize --------------------------------------------------------------------
216 
217  CALL deregisterfunction( global )
218 
219 END SUBROUTINE radi_flimrkupdate
220 
221 !******************************************************************************
222 !
223 ! RCS Revision history:
224 !
225 ! $Log: RADI_FlimRkUpdate.F90,v $
226 ! Revision 1.3 2008/12/06 08:44:37 mtcampbe
227 ! Updated license.
228 !
229 ! Revision 1.2 2008/11/19 22:17:50 mtcampbe
230 ! Added Illinois Open Source License/Copyright
231 !
232 ! Revision 1.1 2004/09/30 17:49:10 wasistho
233 ! prepared for full FLD radiation model
234 !
235 !
236 !
237 !******************************************************************************
238 
239 
240 
241 
242 
243 
244 
**********************************************************************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
NT rhs
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 radi_flimrkupdate(region)
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
subroutine rflo_extrapintcellvec(region, idBeg, idEnd, fVec)
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
**********************************************************************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 deregisterfunction(global)
Definition: ModError.F90:469