Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
POST_WriteGeneric.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: write solution data at grid nodes to generic file.
26 !
27 ! Description: none.
28 !
29 ! Input: iReg = region number
30 ! region = region data (dimensions, flow variables)
31 !
32 ! Output: to plot file.
33 !
34 ! Notes: none.
35 !
36 !******************************************************************************
37 !
38 ! $Id: POST_WriteGeneric.F90,v 1.4 2008/12/06 08:44:49 mtcampbe Exp $
39 !
40 ! Copyright: (c) 2001 by the University of Illinois
41 !
42 !******************************************************************************
43 
44 SUBROUTINE writegeneric( iReg,region )
45 
46  USE moddatatypes
47  USE moderror
48  USE moddatastruct, ONLY : t_region
49  USE modglobal, ONLY : t_global
50  USE modmixture, ONLY : t_mixt
53  USE modmpi
54  USE modparameters
55 #ifdef TURB
56  USE modturbulence, ONLY : t_turb
58 #endif
59  IMPLICIT NONE
60 
61 #include "Indexing.h"
62 
63 ! ... parameters
64  INTEGER :: ireg
65 
66  TYPE(t_region) :: region
67 
68 ! ... loop variables
69  INTEGER :: i, j, k, id
70 
71 ! ... local variables
72  INTEGER :: ilev, ipnbeg, ipnend, jpnbeg, jpnend, kpnbeg, kpnend
73  INTEGER :: icoff, ijcoff, cell(8), errorflag
74 
75  REAL(RFREAL) :: rho, u, v, w, press, temp, c
76  REAL(RFREAL), POINTER :: cv(:,:), dv(:,:), tv(:,:), gv(:,:)
77 #ifdef TURB
78  REAL(RFREAL) :: mut, tvort, len
79  REAL(RFREAL), POINTER :: vort(:,:), lens(:)
80 #endif
81 #ifdef STATS
82  REAL(RFREAL) :: srho,su,sv,sw,spress,srr,suu,svv,sww,suv,spp
83  REAL(RFREAL) :: rtime
84 #endif
85 
86  TYPE(t_global), POINTER :: global
87  TYPE(t_mixt) , POINTER :: mixt
88 #ifdef TURB
89  TYPE(t_turb) , POINTER :: turb
90 #endif
91 
92 !******************************************************************************
93 
94  global => region%global
95 
96  CALL registerfunction( global,'WriteGeneric',&
97  'POST_WriteGeneric.F90' )
98 
99 ! get dimensions --------------------------------------------------------------
100 
101  ilev = global%startLevel
102  CALL rflo_getdimensphysnodes( region,ilev,ipnbeg,ipnend, &
103  jpnbeg,jpnend,kpnbeg,kpnend )
104  CALL rflo_getcelloffset( region,ilev,icoff,ijcoff )
105 
106 ! open file and write the header ----------------------------------------------
107 
108  IF (ireg == 1) THEN
109  OPEN(if_plot,file=trim(global%casename)//'.sol_node',status='unknown', &
110  form='unformatted',iostat=errorflag)
111  global%error = errorflag
112  IF (global%error /= 0) CALL errorstop( global,err_file_open,__line__ )
113  WRITE(if_plot,err=10) global%nRegions,global%postIter,global%postTime
114  ENDIF
115 
116 ! write zone header -----------------------------------------------------------
117 
118  WRITE(if_plot,err=10) ireg,ilev, &
119  region%levels(ilev)%grid%ipc+1, &
120  region%levels(ilev)%grid%jpc+1, &
121  region%levels(ilev)%grid%kpc+1
122 
123 ! write data ------------------------------------------------------------------
124 ! pointer to variables
125 
126  mixt => region%levels(ilev)%mixt
127  cv => mixt%cv
128  dv => mixt%dv
129  tv => mixt%tv
130  gv => mixt%gv
131 #ifdef TURB
132  turb => region%levels(ilev)%turb
133 
134  IF (global%postTurbFlag) THEN
135  IF (region%turbInput%nOutField > 1) vort => turb%vort
136 
137  IF (region%turbInput%modelClass == model_rans) &
138  lens => turb%lens
139  ENDIF
140 #endif
141 
142 #ifdef STATS
143 ! set 1/integrTime
144  rtime = 1._rfreal/global%integrTime
145 #endif
146 
147 ! write solution
148 
149  DO k=kpnbeg,kpnend
150  DO j=jpnbeg,jpnend
151  DO i=ipnbeg,ipnend
152  cell(1) = indijk(i ,j ,k ,icoff,ijcoff)
153  cell(2) = indijk(i-1,j ,k ,icoff,ijcoff)
154  cell(3) = indijk(i ,j-1,k ,icoff,ijcoff)
155  cell(4) = indijk(i-1,j-1,k ,icoff,ijcoff)
156  cell(5) = indijk(i ,j ,k-1,icoff,ijcoff)
157  cell(6) = indijk(i-1,j ,k-1,icoff,ijcoff)
158  cell(7) = indijk(i ,j-1,k-1,icoff,ijcoff)
159  cell(8) = indijk(i-1,j-1,k-1,icoff,ijcoff)
160 
161  rho = aver(cell,cv_mixt_dens,cv)
162  u = averdiv(cell,cv_mixt_xmom,cv,cv_mixt_dens,cv)
163  v = averdiv(cell,cv_mixt_ymom,cv,cv_mixt_dens,cv)
164  w = averdiv(cell,cv_mixt_zmom,cv,cv_mixt_dens,cv)
165  press = aver(cell,dv_mixt_pres,dv)
166  temp = aver(cell,dv_mixt_temp,dv)
167  c = aver(cell,dv_mixt_soun,dv)
168 #ifndef TURB
169  WRITE(if_plot,err=10) rho,u,v,w,press,temp,c
170 #endif
171 #ifdef TURB
172  IF (global%postTurbFlag .EQV. .false. .OR. &
173  region%turbInput%modelClass == model_none ) THEN
174  WRITE(if_plot,err=10) rho,u,v,w,press,temp,c
175  ENDIF
176  IF (global%postTurbFlag) THEN
177  mut = aver(cell,tv_mixt_muet,tv)
178  IF (region%turbInput%nOutField == 1) THEN
179  WRITE(if_plot,err=10) rho,u,v,w,press,temp,c,mut
180  ELSEIF (region%turbInput%nOutField == 2) THEN
181  tvort = aver(cell,xcoord,vort)
182  WRITE(if_plot,err=10) rho,u,v,w,press,temp,c,mut,tvort
183  ENDIF
184  IF ((region%turbInput%modelClass == model_rans ) .AND. &
185  (region%turbInput%nOutField == 3)) THEN
186  tvort = aver(cell,xcoord,vort)
187  len = aver1d(cell,lens)
188  WRITE(if_plot,err=10) rho,u,v,w,press,temp,c,mut,tvort,len
189  ENDIF
190  ENDIF ! postTurbFlag
191 #endif
192  ENDDO
193  ENDDO
194  ENDDO
195 
196 #ifdef STATS
197  IF (global%postStatsFlag) THEN
198  IF ((global%flowType == flow_unsteady) .AND. &
199  (global%doStat == active)) THEN
200  IF (global%mixtNStat > 0) THEN
201  DO k=kpnbeg,kpnend
202  DO j=jpnbeg,jpnend
203  DO i=ipnbeg,ipnend
204  cell(1) = indijk(i ,j ,k ,icoff,ijcoff)
205  cell(2) = indijk(i-1,j ,k ,icoff,ijcoff)
206  cell(3) = indijk(i ,j-1,k ,icoff,ijcoff)
207  cell(4) = indijk(i-1,j-1,k ,icoff,ijcoff)
208  cell(5) = indijk(i ,j ,k-1,icoff,ijcoff)
209  cell(6) = indijk(i-1,j ,k-1,icoff,ijcoff)
210  cell(7) = indijk(i ,j-1,k-1,icoff,ijcoff)
211  cell(8) = indijk(i-1,j-1,k-1,icoff,ijcoff)
212 
213  srho = aver(cell,1,mixt%tav)*rtime ! 01 mixtStatId
214  su = aver(cell,2,mixt%tav)*rtime ! 02
215  sv = aver(cell,3,mixt%tav)*rtime ! 03
216  sw = aver(cell,4,mixt%tav)*rtime ! 04
217  spress = aver(cell,5,mixt%tav)*rtime ! 06
218  srr = aver(cell,6,mixt%tav)*rtime ! 11
219  suu = aver(cell,7,mixt%tav)*rtime ! 22
220  svv = aver(cell,8,mixt%tav)*rtime ! 33
221  sww = aver(cell,9,mixt%tav)*rtime ! 44
222  suv = aver(cell,10,mixt%tav)*rtime ! 23
223  spp = aver(cell,11,mixt%tav)*rtime ! 66
224  srr = srr - srho*srho
225  suu = suu - su*su
226  svv = svv - sv*sv
227  sww = sww - sw*sw
228  suv = suv - su*sv
229  spp = spp - spress*spress
230 
231  WRITE(if_plot,err=10) &
232  srho,su,sv,sw,spress,srr,suu,svv,sww,suv,spp
233  ENDDO ! i
234  ENDDO ! j
235  ENDDO ! k
236  ENDIF ! mixtNStat >0
237 #ifdef TURB
238  IF (global%turbNStat > 0) THEN
239  DO k=kpnbeg,kpnend
240  DO j=jpnbeg,jpnend
241  DO i=ipnbeg,ipnend
242  cell(1) = indijk(i ,j ,k ,icoff,ijcoff)
243  cell(2) = indijk(i-1,j ,k ,icoff,ijcoff)
244  cell(3) = indijk(i ,j-1,k ,icoff,ijcoff)
245  cell(4) = indijk(i-1,j-1,k ,icoff,ijcoff)
246  cell(5) = indijk(i ,j ,k-1,icoff,ijcoff)
247  cell(6) = indijk(i-1,j ,k-1,icoff,ijcoff)
248  cell(7) = indijk(i ,j-1,k-1,icoff,ijcoff)
249  cell(8) = indijk(i-1,j-1,k-1,icoff,ijcoff)
250 
251  WRITE(if_plot,err=10) &
252  (aver(cell,id,turb%tav)*rtime, id=1,global%turbNStat)
253  ENDDO ! i
254  ENDDO ! j
255  ENDDO ! k
256  ENDIF ! turbNStat >0
257 #endif
258  ENDIF ! doStat
259  ENDIF ! postStatsFlag
260 #endif
261 
262 ! close file ------------------------------------------------------------------
263 
264  IF (ireg == global%nRegions) THEN
265  CLOSE(if_plot,iostat=errorflag)
266  global%error = errorflag
267  IF (global%error /= 0) CALL errorstop( global,err_file_close,__line__ )
268  ENDIF
269 
270 ! finalize --------------------------------------------------------------------
271 
272  CALL deregisterfunction( global )
273  goto 999
274 
275 10 CONTINUE
276  CALL errorstop( global,err_file_write,__line__ )
277 
278 999 CONTINUE
279 
280 END SUBROUTINE writegeneric
281 
282 !******************************************************************************
283 !
284 ! RCS Revision history:
285 !
286 ! $Log: POST_WriteGeneric.F90,v $
287 ! Revision 1.4 2008/12/06 08:44:49 mtcampbe
288 ! Updated license.
289 !
290 ! Revision 1.3 2008/11/19 22:17:59 mtcampbe
291 ! Added Illinois Open Source License/Copyright
292 !
293 ! Revision 1.2 2004/12/03 03:20:21 wasistho
294 ! rflo_modinterfacespost to post_modinterfaces
295 !
296 ! Revision 1.1 2004/12/03 02:03:16 wasistho
297 ! added prefix
298 !
299 ! Revision 1.1 2004/12/03 00:32:01 wasistho
300 ! lower to upper case
301 !
302 ! Revision 1.17 2004/11/10 18:29:47 wasistho
303 ! put rtime within ifdef STATS
304 !
305 ! Revision 1.16 2004/11/10 02:20:06 wasistho
306 ! devided accumulated tav by integrTime
307 !
308 ! Revision 1.15 2004/11/09 12:16:44 wasistho
309 ! compute <u> = <uu>-<u><u> inside routine
310 !
311 ! Revision 1.14 2004/11/09 10:50:10 wasistho
312 ! added statistics to rflopost
313 !
314 ! Revision 1.13 2004/07/24 03:48:15 wasistho
315 ! use postSection instead of command line input
316 !
317 ! Revision 1.12 2004/02/11 03:26:07 wasistho
318 ! added feature: variable number of turbulence output fields
319 !
320 ! Revision 1.11 2004/02/07 01:18:51 wasistho
321 ! added turbulence related results in rocflo post processing
322 !
323 ! Revision 1.10 2003/05/15 02:57:07 jblazek
324 ! Inlined index function.
325 !
326 ! Revision 1.9 2003/03/20 22:23:47 haselbac
327 ! Renamed ModInterfaces
328 !
329 ! Revision 1.8 2003/03/20 19:41:26 haselbac
330 ! Corrected mistake in phased check-in
331 !
332 ! Revision 1.7 2003/03/20 19:34:37 haselbac
333 ! Modified RegFun call to avoid probs with long 'POST_WriteGeneric.F90' names
334 !
335 ! Revision 1.6 2002/10/12 03:20:51 jblazek
336 ! Replaced [io]stat=global%error with local errorFlag for Rocflo.
337 !
338 ! Revision 1.5 2002/09/05 17:40:22 jblazek
339 ! Variable global moved into regions().
340 !
341 ! Revision 1.4 2002/06/22 01:13:38 jblazek
342 ! Modified interfaces to BC routines.
343 !
344 ! Revision 1.3 2002/02/22 20:30:39 jblazek
345 ! Changed generic format. Enhanced Tecplot title.
346 !
347 ! Revision 1.2 2002/02/21 23:25:06 jblazek
348 ! Blocks renamed as regions.
349 !
350 ! Revision 1.1 2002/02/16 07:17:58 jblazek
351 ! Added generic binary output format.
352 !
353 !******************************************************************************
354 
355 
356 
357 
358 
359 
360 
361 
**********************************************************************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 jpnbeg
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 kpnbeg
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
int status() const
Obtain the status of the attribute.
Definition: Attribute.h:240
RT c() const
Definition: Line_2.h:150
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS 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 v
Definition: roccomf90.h:20
subroutine writegeneric(iReg, 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 jpnend
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 ipnbeg
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 form
DOUBLE PRECISION function aver1d(cell, var)
subroutine rflo_getdimensphysnodes(region, iLev, ipnbeg, ipnend, jpnbeg, jpnend, kpnbeg, kpnend)
j indices j
Definition: Indexing.h:6
unsigned long id(const Leda_like_handle &x)
Definition: Handle.h:107
DOUBLE PRECISION function aver(cell, iEq, var)
DOUBLE PRECISION function averdiv(cell, iEq1, var1, iEq2, var2)
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
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 ipnend