File: /nfs/home/0/users/jenkins/mfix.git/model/display_resid.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  Module name: DISPLAY_RESID(NIT, IER)                             C
4     !  Purpose: Display residuals                                          C
5     !                                                                      C
6     !                                                                      C
7     !  Author: M. Syamlal                                 Date: 8-JUL-96   C
8     !  Reviewer:                                          Date:            C
9     !                                                                      C
10     !                                                                      C
11     !  Literature/Document References:                                     C
12     !                                                                      C
13     !  Variables referenced:                                               C
14     !  Variables modified:                                                 C
15     !                                                                      C
16     !  Local variables:                                                    C
17     !                                                                      C
18     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
19     !
20           SUBROUTINE DISPLAY_RESID(NIT)
21     !...Translated by Pacific-Sierra Research VAST-90 2.06G5  12:17:31  12/09/98
22     !...Switches: -xf
23     !
24     !  Include param.inc file to specify parameter values
25     !
26     !-----------------------------------------------
27     !   M o d u l e s
28     !-----------------------------------------------
29           USE param
30           USE param1
31           USE physprop
32           USE residual
33           USE fldvar
34           USE compar
35           USE geometry
36           USE scalars, only : NScalar
37           USE run
38           IMPLICIT NONE
39     !-----------------------------------------------
40     !   G l o b a l   P a r a m e t e r s
41     !-----------------------------------------------
42     !-----------------------------------------------
43     !   D u m m y   A r g u m e n t s
44     !-----------------------------------------------
45     !
46     !
47     !                      iteration number
48           INTEGER          NIT
49     !
50     !                      residual number
51           INTEGER          L
52     !
53     !                      Print Location of Max_Resid
54           LOGICAL,PARAMETER:: Print_ijk=.FALSE.
55     !
56     
57     !
58           if (myPE.ne.PE_IO) return
59     !
60           IF(GROUP_RESID) THEN
61     
62              IF (NIT == 1) THEN
63                 WRITE (*, '(A)',ADVANCE="NO") '  Nit'
64                 WRITE (*, '(2X, A7)',ADVANCE="NO") RESID_GRP_STRING(HYDRO_GRP)
65                 IF(GRANULAR_ENERGY) WRITE (*, '(2X, A7)',ADVANCE="NO") RESID_GRP_STRING(THETA_GRP)
66                 IF(ENERGY_EQ) WRITE (*, '(2X, A7)',ADVANCE="NO") RESID_GRP_STRING(ENERGY_GRP)
67                 IF(ANY_SPECIES_EQ) WRITE (*, '(2X, A7)',ADVANCE="NO") RESID_GRP_STRING(SPECIES_GRP)
68                 IF(NScalar > 0) WRITE (*, '(2X, A7)',ADVANCE="NO") RESID_GRP_STRING(SCALAR_GRP)
69                 IF(K_EPSILON) WRITE (*, '(2X, A7)',ADVANCE="NO") RESID_GRP_STRING(KE_GRP)
70                 WRITE (*, '(2X, A)') 'Max res'
71              ENDIF
72     
73              WRITE (*, '(I5)',ADVANCE="NO") NIT
74              WRITE (*, '(2X, 1PG8.1)',ADVANCE="NO") RESID_GRP(HYDRO_GRP)
75              IF(GRANULAR_ENERGY) WRITE (*, '(2X, 1PG8.1)',ADVANCE="NO") RESID_GRP(THETA_GRP)
76              IF(ENERGY_EQ) WRITE (*, '(2X, 1PG8.1)',ADVANCE="NO") RESID_GRP(ENERGY_GRP)
77              IF(ANY_SPECIES_EQ) WRITE (*, '(2X, 1PG8.1)',ADVANCE="NO") RESID_GRP(SPECIES_GRP)
78              IF(NScalar > 0) WRITE (*, '(2X, 1PG8.1)',ADVANCE="NO") RESID_GRP(SCALAR_GRP)
79              IF(K_EPSILON) WRITE (*, '(2X, 1PG8.1)',ADVANCE="NO") RESID_GRP(KE_GRP)
80              WRITE (*, '(2X, A)') RESID_STRING(8)
81     
82     
83           ELSE
84     
85              IF (NIT == 1) THEN
86                 WRITE (*, '(A)',ADVANCE="NO") '  Nit'
87                 DO L = 1, 8
88                    IF (RESID_INDEX(L,1) /= UNDEFINED_I) WRITE (*, '(5X, A4)',ADVANCE="NO") &
89                       RESID_STRING(L)
90                 END DO
91                 IF (RESID_INDEX(8,1) == UNDEFINED_I) THEN
92                    WRITE (*, '(2X, A)') 'Max res'
93                 ELSE
94                    WRITE (*, *)
95                 ENDIF
96              ENDIF
97     !
98              WRITE (*, '(I5)',ADVANCE="NO") NIT
99              DO L = 1, 8
100                 IF (RESID_INDEX(L,1) /= UNDEFINED_I) WRITE (*, '(2X, 1PG8.1)',ADVANCE="NO") &
101                    RESID(RESID_INDEX(L,1),RESID_INDEX(L,2))
102              END DO
103              IF (RESID_INDEX(8,1) == UNDEFINED_I) THEN
104                 WRITE (*, '(2X, A)') RESID_STRING(8)
105              ELSE
106                 WRITE (*, *)
107              ENDIF
108     
109           ENDIF
110     
111     !
112     !
113     !
114     !     Display maximum values of residuals
115           IF(PRINT_IJK) WRITE(*,'(A, G12.3, 3I6, A, G12.3, 3I6, A, G12.3)') &
116           & " Max Res/IJK: P_g: ", MAX_RESID(RESID_P, 0), &
117           & I_OF_G(IJK_RESID(RESID_P, 0)), &
118           & J_OF_G(IJK_RESID(RESID_P, 0)), &
119           & K_OF_G(IJK_RESID(RESID_P, 0)), &
120           & " P_s: ", MAX_RESID(RESID_p, 1), &
121           & I_OF_G(IJK_RESID(RESID_p, 1)), &
122           & J_OF_G(IJK_RESID(RESID_p, 1)), &
123           & K_OF_G(IJK_RESID(RESID_p, 1)), &
124           & " P_star=",  P_star(IJK_RESID(RESID_p, 1))
125     !
126           RETURN
127     
128           contains
129     
130     !       ----------------------------------------------------------
131     !       functions for determining i, j, k for global ijk_resid
132     !       -----------------------------------------------------------
133     !        integer i_of_g,j_of_g,k_of_g, ijk
134     
135             integer function k_of_g(ijk)
136               integer ijk
137               k_of_g = int( (ijk-1)/( (imax3-imin3+1)*(jmax3-jmin3+1) ) ) + kmin3
138             end function
139     
140             integer function i_of_g(ijk)
141               integer ijk
142               i_of_g = int( ( (ijk-  (k_of_g(ijk)-kmin3)*((imax3-imin3+1)*(jmax3-jmin3+1))) &
143                           - 1)/(jmax3-jmin3+1)) + imin3
144             end function
145     
146             integer function j_of_g(ijk)
147               integer ijk
148               j_of_g = ijk - (i_of_g(ijk)-imin3)*(jmax3-jmin3+1) - &
149                    (k_of_g(ijk)-kmin3)*((imax3-imin3+1)*(jmax3-jmin3+1)) - 1 + jmin3
150             end function
151     
152     
153           END SUBROUTINE DISPLAY_RESID
154     
155     !// Comments on the modifications for DMP version implementation
156     !// 001 Include header file and common declarations for parallelization
157