Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RFLU_PrintChangeInfo.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: Display minimum and maximum values of change vector for given
26 ! local domain.
27 !
28 ! Description: None.
29 !
30 ! Input:
31 ! pRegion Pointer to region
32 !
33 ! Output: N/A.
34 !
35 ! Notes: None.
36 !
37 !******************************************************************************
38 !
39 ! $Id: RFLU_PrintChangeInfo.F90,v 1.12 2008/12/06 08:44:30 mtcampbe Exp $
40 !
41 ! Copyright: (c) 2000, 2001, 2002 by the University of Illinois
42 !
43 !******************************************************************************
44 
45 SUBROUTINE rflu_printchangeinfo(pRegion)
46 
47  USE modglobal, ONLY: t_global
48  USE moddatatypes
49  USE modparameters
50  USE moderror
51  USE modtools, ONLY: makenonzero
52 
53  USE modgrid, ONLY: t_grid
54  USE moddatastruct, ONLY: t_region
55 
57 
58  IMPLICIT NONE
59 
60 ! ******************************************************************************
61 ! Declarations and definitions
62 ! ******************************************************************************
63 
64 ! ==============================================================================
65 ! Parameters
66 ! ==============================================================================
67 
68  TYPE(t_region), POINTER :: pregion
69 
70 ! ==============================================================================
71 ! Local variables
72 ! ==============================================================================
73 
74  CHARACTER(CHRLEN) :: rcsidentstring
75  INTEGER :: errorflag,ic,iv
76  INTEGER :: dummy(1)
77  INTEGER :: loc(cv_mixt_dens:cv_mixt_ener,min_val:max_val)
78  REAL(RFREAL), DIMENSION(:,:), POINTER :: pcv,prhs
79  REAL(RFREAL), DIMENSION(:,:), ALLOCATABLE :: rhsn
80  TYPE(t_grid), POINTER :: pgrid
81  TYPE(t_global), POINTER :: global
82 
83 ! ******************************************************************************
84 ! Start
85 ! ******************************************************************************
86 
87  rcsidentstring = '$RCSfile: RFLU_PrintChangeInfo.F90,v $ $Revision: 1.12 $'
88 
89  global => pregion%global
90 
91  CALL registerfunction(global,'RFLU_PrintChangeInfo',&
92  'RFLU_PrintChangeInfo.F90')
93 
94  IF ( global%verbLevel > verbose_none ) THEN
95  WRITE(stdout,'(A,1X,A)') solver_name,'Printing relative change '// &
96  'information...'
97  WRITE(stdout,'(A,3X,A,1X,I5.5)') solver_name,'Global region:', &
98  pregion%iRegionGlobal
99  END IF ! global%verbLevel
100 
101 ! ==============================================================================
102 ! Set pointers and allocate memory
103 ! ==============================================================================
104 
105  pcv => pregion%mixt%cv
106  prhs => pregion%mixt%rhs
107  pgrid => pregion%grid
108 
109  ALLOCATE(rhsn(cv_mixt_dens:cv_mixt_ener,1:pgrid%nCells),stat=errorflag)
110  global%error = errorflag
111  IF ( global%error /= 0 ) THEN
112  CALL errorstop(global,err_allocate,__line__,'rhsn')
113  END IF ! global
114 
115 ! ==============================================================================
116 ! Compute relative change
117 ! ==============================================================================
118 
119  DO ic = 1,pgrid%nCells
120  DO iv = cv_mixt_dens,cv_mixt_ener
121  rhsn(iv,ic) = prhs(iv,ic)/makenonzero(pcv(iv,ic))
122  END DO ! iv
123  END DO ! ic
124 
125 ! ==============================================================================
126 ! Find locations of extrema and print information on extrema: NOTE Asinine
127 ! coding needed because of poor FORTRAN interface for MINLOC and MAXLOC
128 ! functions...
129 ! ==============================================================================
130 
131  dummy = minloc(rhsn(cv_mixt_dens,1:pgrid%nCells))
132  loc(cv_mixt_dens,min_val) = dummy(1)
133 
134  dummy = minloc(rhsn(cv_mixt_xmom,1:pgrid%nCells))
135  loc(cv_mixt_xmom,min_val) = dummy(1)
136 
137  dummy = minloc(rhsn(cv_mixt_ymom,1:pgrid%nCells))
138  loc(cv_mixt_ymom,min_val) = dummy(1)
139 
140  dummy = minloc(rhsn(cv_mixt_zmom,1:pgrid%nCells))
141  loc(cv_mixt_zmom,min_val) = dummy(1)
142 
143  dummy = minloc(rhsn(cv_mixt_ener,1:pgrid%nCells))
144  loc(cv_mixt_ener,min_val) = dummy(1)
145 
146 
147  dummy = maxloc(rhsn(cv_mixt_dens,1:pgrid%nCells))
148  loc(cv_mixt_dens,max_val) = dummy(1)
149 
150  dummy = maxloc(rhsn(cv_mixt_xmom,1:pgrid%nCells))
151  loc(cv_mixt_xmom,max_val) = dummy(1)
152 
153  dummy = maxloc(rhsn(cv_mixt_ymom,1:pgrid%nCells))
154  loc(cv_mixt_ymom,max_val) = dummy(1)
155 
156  dummy = maxloc(rhsn(cv_mixt_zmom,1:pgrid%nCells))
157  loc(cv_mixt_zmom,max_val) = dummy(1)
158 
159  dummy = maxloc(rhsn(cv_mixt_ener,1:pgrid%nCells))
160  loc(cv_mixt_ener,max_val) = dummy(1)
161 
162 
163  WRITE(stdout,'(A,3X,A,2(1X,E15.8),2(1X,I9))') solver_name,'Mass: ', &
164  minval(rhsn(cv_mixt_dens,1:pgrid%nCells)), &
165  maxval(rhsn(cv_mixt_dens,1:pgrid%nCells)), &
166  loc(cv_mixt_dens,min_val),loc(cv_mixt_dens,max_val)
167  WRITE(stdout,'(A,3X,A,2(1X,E15.8),2(1X,I9))') solver_name,'X-momentum:', &
168  minval(rhsn(cv_mixt_xvel,1:pgrid%nCells)), &
169  maxval(rhsn(cv_mixt_xvel,1:pgrid%nCells)), &
170  loc(cv_mixt_xvel,min_val),loc(cv_mixt_xvel,max_val)
171  WRITE(stdout,'(A,3X,A,2(1X,E15.8),2(1X,I9))') solver_name,'Y-momentum:', &
172  minval(rhsn(cv_mixt_yvel,1:pgrid%nCells)), &
173  maxval(rhsn(cv_mixt_yvel,1:pgrid%nCells)), &
174  loc(cv_mixt_yvel,min_val),loc(cv_mixt_yvel,max_val)
175  WRITE(stdout,'(A,3X,A,2(1X,E15.8),2(1X,I9))') solver_name,'Z-momentum:', &
176  minval(rhsn(cv_mixt_zvel,1:pgrid%nCells)), &
177  maxval(rhsn(cv_mixt_zvel,1:pgrid%nCells)), &
178  loc(cv_mixt_zvel,min_val),loc(cv_mixt_zvel,max_val)
179  WRITE(stdout,'(A,3X,A,2(1X,E15.8),2(1X,I9))') solver_name,'Energy: ', &
180  minval(rhsn(cv_mixt_ener,1:pgrid%nCells)), &
181  maxval(rhsn(cv_mixt_ener,1:pgrid%nCells)), &
182  loc(cv_mixt_ener,min_val),loc(cv_mixt_ener,max_val)
183 
184 ! ==============================================================================
185 ! Print out locations of cells at which extrema occur
186 ! ==============================================================================
187 
188  IF ( global%verbLevel /= verbose_none ) THEN
189  CALL rflu_printlocinfo(pregion,loc,cv_mixt_ener-cv_mixt_dens+1, &
190  locinfo_mode_silent,output_mode_master_only)
191  END IF ! global%verbLevel
192 
193 ! ==============================================================================
194 ! Deallocate memory
195 ! ==============================================================================
196 
197  DEALLOCATE(rhsn,stat=errorflag)
198  global%error = errorflag
199  IF ( global%error /= 0 ) THEN
200  CALL errorstop(global,err_allocate,__line__,'rhsn')
201  END IF ! global
202 
203  IF ( global%verbLevel > verbose_none ) THEN
204  WRITE(stdout,'(A,1X,A)') solver_name,'Printing relative change '// &
205  'information done.'
206  END IF ! global%verbLevel
207 
208  CALL deregisterfunction(global)
209 
210 ! ******************************************************************************
211 ! End
212 ! ******************************************************************************
213 
214 END SUBROUTINE rflu_printchangeinfo
215 
216 
217 ! ******************************************************************************
218 !
219 ! RCS Revision history:
220 !
221 ! $Log: RFLU_PrintChangeInfo.F90,v $
222 ! Revision 1.12 2008/12/06 08:44:30 mtcampbe
223 ! Updated license.
224 !
225 ! Revision 1.11 2008/11/19 22:17:43 mtcampbe
226 ! Added Illinois Open Source License/Copyright
227 !
228 ! Revision 1.10 2004/01/22 16:04:33 haselbac
229 ! Changed declaration to eliminate warning on ALC
230 !
231 ! Revision 1.9 2003/06/04 22:43:01 haselbac
232 ! Adapted call to RFLU_PrintLocInfo
233 !
234 ! Revision 1.8 2003/03/15 18:51:54 haselbac
235 ! Adapted call to function
236 !
237 ! Revision 1.7 2003/01/28 14:46:30 haselbac
238 ! Cosmetics only
239 !
240 ! Revision 1.6 2002/10/08 15:49:29 haselbac
241 ! {IO}STAT=global%error replaced by {IO}STAT=errorFlag - SGI problem
242 !
243 ! Revision 1.5 2002/09/09 15:51:56 haselbac
244 ! global now under region
245 !
246 ! Revision 1.4 2002/07/25 14:29:34 haselbac
247 ! Cosmetic changes to output
248 !
249 ! Revision 1.3 2002/06/17 13:34:12 haselbac
250 ! Prefixed SOLVER_NAME to all screen output
251 !
252 ! Revision 1.2 2002/06/10 21:31:59 haselbac
253 ! Now printing relative changes
254 !
255 ! Revision 1.1 2002/06/05 18:56:48 haselbac
256 ! Initial revision
257 !
258 ! ******************************************************************************
259 
260 
261 
262 
263 
264 
265 
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 rflu_printlocinfo(pRegion, locUnsorted, nLocUnsorted, locInfoMode, outputMode)
subroutine rflu_printchangeinfo(pRegion)
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469
real(rfreal) function makenonzero(x)
Definition: ModTools.F90:85