File: RELATIVE:/../../../mfix.git/model/display_resid.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  Module name: DISPLAY_RESID(NIT, IER)                                !
4     !  Author: M. Syamlal                                 Date: 8-JUL-96   !
5     !                                                                      !
6     !  Purpose: Display residuals                                          !
7     !                                                                      !
8     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
9           SUBROUTINE DISPLAY_RESID(NIT)
10     
11           USE residual, only: GROUP_RESID
12     
13           IMPLICIT NONE
14     
15     ! iteration number
16           INTEGER, INTENT(IN) :: NIT
17     
18     ! Print Location of Max_Resid
19     !      LOGICAL,PARAMETER:: Print_ijk=.FALSE.
20     
21     
22           IF(GROUP_RESID) THEN
23              CALL DISPLAY_GROUP_RESID
24           ELSE
25              CALL DISPLAY_FIELD_RESID
26           ENDIF
27     
28     !     IF(PRINT_IJK) 
29     
30     
31     
32     
33     
34     !
35     !
36     !     Display maximum values of residuals
37     !     IF(PRINT_IJK) WRITE(*,'(A, G12.3, 3I6, A, G12.3, 3I6, A, G12.3)') &
38     !     & " Max Res/IJK: P_g: ", MAX_RESID(RESID_P, 0), &
39     !     & I_OF_G(IJK_RESID(RESID_P, 0)), &
40     !     & J_OF_G(IJK_RESID(RESID_P, 0)), &
41     !     & K_OF_G(IJK_RESID(RESID_P, 0)), &
42     !     & " P_s: ", MAX_RESID(RESID_p, 1), &
43     !     & I_OF_G(IJK_RESID(RESID_p, 1)), &
44     !     & J_OF_G(IJK_RESID(RESID_p, 1)), &
45     !     & K_OF_G(IJK_RESID(RESID_p, 1)), &
46     !     & " P_star=",  P_star(IJK_RESID(RESID_p, 1))
47     !
48           RETURN
49     
50           contains
51     
52     
53     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
54     !                                                                      !
55     !  Module name: DISPLAY_FIELD_RESID(NIT, IER)                          !
56     !  Author: M. Syamlal                                 Date: 8-JUL-96   !
57     !                                                                      !
58     !  Purpose: Display residuals for each field variable.                 !
59     !                                                                      !
60     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
61           SUBROUTINE DISPLAY_FIELD_RESID
62     
63           use param1, only: UNDEFINED_I
64           use residual, only: RESID_STRING, RESID_INDEX, RESID
65     
66           use error_manager
67     
68           IMPLICIT NONE
69     
70           INTEGER :: LL, LC, LS, LE
71     
72           IF(NIT == 1) THEN
73              WRITE(ERR_MSG(1)(1:5),'("  Nit")')
74              LC=1
75              DO LL = 1, 8
76                 IF (RESID_INDEX(LL,1) /= UNDEFINED_I) THEN
77                    LS= 6+10*(LC-1)
78                    LE= 5+10*(LC)
79                    WRITE(ERR_MSG(1)(LS:LE),'(5X,A4)') RESID_STRING(LL)
80                    LC=LC+1
81                 ENDIF
82              END DO
83              IF(RESID_INDEX(8,1) == UNDEFINED_I) THEN
84                 LS= 6+10*(LC-1)
85                 LE= 5+10*(LC)
86                 WRITE(ERR_MSG(1)(LS:LE),'(2X,A7)') 'Max res'
87              ENDIF
88              CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE., LOG=.FALSE.)
89           ENDIF
90     
91     
92           WRITE(ERR_MSG(1)(1:5),'(I5)') NIT
93           LC=1
94           DO LL = 1, 8
95              IF(RESID_INDEX(LL,1) /= UNDEFINED_I) THEN
96                 LS= 6+10*(LC-1)
97                 LE= 5+10*(LC)
98                 WRITE(ERR_MSG(1)(LS:LE),'(2X,1PG8.1)') &
99                    RESID(RESID_INDEX(LL,1),RESID_INDEX(LL,2))
100                 LC=LC+1
101              ENDIF
102           ENDDO
103           IF(RESID_INDEX(8,1) == UNDEFINED_I) THEN
104              LS= 6+10*(LC-1)
105              LE= 3+10*(LC)
106              WRITE(ERR_MSG(1)(LS:LE),'(4X,A4)') RESID_STRING(8)
107           ENDIF
108           CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE., LOG=.FALSE.)
109     
110           RETURN
111     
112           END SUBROUTINE DISPLAY_FIELD_RESID
113     
114     
115     
116     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
117     !                                                                      !
118     !  Module name: DISPLAY_GROUP_RESID(NIT, IER)                          !
119     !  Author: M. Syamlal                                 Date: 8-JUL-96   !
120     !                                                                      !
121     !  Purpose: Display residuals grouped by equation type.                !
122     !                                                                      !
123     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
124           SUBROUTINE DISPLAY_GROUP_RESID
125     
126           use residual, only: RESID_STRING
127           use residual, only: RESID_GRP, RESID_GRP_STRING
128           use residual, only: HYDRO_GRP, THETA_GRP, ENERGY_GRP
129           use residual, only: SPECIES_GRP, SCALAR_GRP, KE_GRP
130           use run, only: GRANULAR_ENERGY, ENERGY_EQ
131           use run, only: ANY_SPECIES_EQ, K_EPSILON
132           use scalars, only : NScalar
133     
134           use error_manager
135     
136           IMPLICIT NONE
137     
138     
139           INTEGER :: LC, LS, LE
140     
141           IF (NIT == 1) THEN
142              WRITE(ERR_MSG(1)(1:5),'("  Nit")')
143              LC=1
144     
145              LS= 6+10*(LC-1)
146              LE= 5+10*(LC)
147              WRITE(ERR_MSG(1)(LS:LE),1000) RESID_GRP_STRING(HYDRO_GRP)
148              LC=LC+1
149     
150              IF(GRANULAR_ENERGY) THEN
151                 LS= 6+10*(LC-1)
152                 LE= 5+10*(LC)
153                 WRITE(ERR_MSG(1)(LS:LE),1000) RESID_GRP_STRING(THETA_GRP)
154                 LC=LC+1
155              ENDIF
156     
157              IF(ENERGY_EQ) THEN
158                 LS= 6+10*(LC-1)
159                 LE= 5+10*(LC)
160                 WRITE(ERR_MSG(1)(LS:LE),1000) RESID_GRP_STRING(ENERGY_GRP)
161                 LC=LC+1
162              ENDIF
163     
164              IF(ANY_SPECIES_EQ) THEN
165                 LS= 6+10*(LC-1)
166                 LE= 5+10*(LC)
167                 WRITE(ERR_MSG(1)(LS:LE),1000) RESID_GRP_STRING(SPECIES_GRP)
168                 LC=LC+1
169              ENDIF
170     
171              IF(NScalar > 0) THEN
172                 LS= 6+10*(LC-1)
173                 LE= 5+10*(LC)
174                 WRITE(ERR_MSG(1)(LS:LE),1000) RESID_GRP_STRING(SCALAR_GRP)
175                 LC=LC+1
176              ENDIF
177     
178              IF(K_EPSILON) THEN
179                 LS= 6+10*(LC-1)
180                 LE= 5+10*(LC)
181                 WRITE(ERR_MSG(1)(LS:LE),1000) RESID_GRP_STRING(KE_GRP)
182                 LC=LC+1
183              ENDIF
184     
185              LS= 6+10*(LC-1)
186              LE= 5+10*(LC)
187              WRITE(ERR_MSG(1)(LS:LE),1000) 'Max res '
188     
189              CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE., LOG=.FALSE.)
190           ENDIF
191     
192      1000 FORMAT(3X,A7)
193     
194     
195     
196          WRITE(ERR_MSG(1)(1:5),'(I5)') NIT
197           LC=1
198     
199           LS= 6+10*(LC-1)
200           LE= 5+10*(LC)
201           WRITE(ERR_MSG(1)(LS:LE),1100) RESID_GRP(HYDRO_GRP)
202           LC=LC+1
203     
204           IF(GRANULAR_ENERGY) THEN
205              LS= 6+10*(LC-1)
206              LE= 5+10*(LC)
207              WRITE(ERR_MSG(1)(LS:LE),1100) RESID_GRP(THETA_GRP)
208              LC=LC+1
209           ENDIF
210     
211           IF(ENERGY_EQ) THEN
212              LS= 6+10*(LC-1)
213              LE= 5+10*(LC)
214              WRITE(ERR_MSG(1)(LS:LE),1100) RESID_GRP(ENERGY_GRP)
215              LC=LC+1
216           ENDIF
217     
218           IF(ANY_SPECIES_EQ) THEN
219              LS= 6+10*(LC-1)
220              LE= 5+10*(LC)
221              WRITE(ERR_MSG(1)(LS:LE),1100) RESID_GRP(SPECIES_GRP)
222              LC=LC+1
223           ENDIF
224     
225           IF(NScalar > 0) THEN
226              LS= 6+10*(LC-1)
227              LE= 5+10*(LC)
228              WRITE(ERR_MSG(1)(LS:LE),1100) RESID_GRP(SCALAR_GRP)
229              LC=LC+1
230           ENDIF
231     
232           IF(K_EPSILON) THEN
233              LS= 6+10*(LC-1)
234              LE= 5+10*(LC)
235              WRITE(ERR_MSG(1)(LS:LE),1100) RESID_GRP(KE_GRP)
236              LC=LC+1
237           ENDIF
238     
239           LS= 6+10*(LC-1)
240           LE= 3+10*(LC)
241           WRITE(ERR_MSG(1)(LS:LE),'(4X,A4)') RESID_STRING(8)
242     
243      1100 FORMAT(2x,1PG8.1)
244     
245           CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE., LOG=.FALSE.)
246     
247           RETURN
248           END SUBROUTINE DISPLAY_GROUP_RESID
249     
250           END SUBROUTINE DISPLAY_RESID
251