File: N:\mfix\model\vavg_w_g.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  Module name: VAVG_W_g                                               C
4     !  Purpose: Calculate volume averaged W_g                              C
5     !                                                                      C
6     !  Author: M. Syamlal                                 Date: 28-APR-94  C
7     !  Reviewer:                                          Date: dd-mmm-yy  C
8     !                                                                      C
9     !  Revision Number:                                                    C
10     !  Purpose:                                                            C
11     !  Author:                                            Date: dd-mmm-yy  C
12     !  Reviewer:                                          Date: dd-mmm-yy  C
13     !                                                                      C
14     !  Literature/Document References:                                     C
15     !                                                                      C
16     !  Variables referenced:                                               C
17     !  Variables modified:                                                 C
18     !                                                                      C
19     !  Local variables:                                                    C
20     !                                                                      C
21     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
22     !
23           DOUBLE PRECISION FUNCTION VAVG_W_G ()
24     !...Translated by Pacific-Sierra Research VAST-90 2.06G5  12:17:31  12/09/98
25     !...Switches: -xf
26     !
27     !-----------------------------------------------
28     !   M o d u l e s
29     !-----------------------------------------------
30           USE bc
31           USE compar
32           USE fldvar
33           USE functions
34           USE geometry
35           USE indices
36           USE mpi_utility
37           USE parallel
38           USE param
39           USE param1
40           USE physprop
41           USE run
42           USE utilities, ONLY: mfix_isnan
43           IMPLICIT NONE
44     !-----------------------------------------------
45     !   G l o b a l   P a r a m e t e r s
46     !-----------------------------------------------
47     !-----------------------------------------------
48     !   L o c a l   P a r a m e t e r s
49     !-----------------------------------------------
50     !-----------------------------------------------
51     !   L o c a l   V a r i a b l e s
52     !-----------------------------------------------
53     !
54     !                      Indices
55           INTEGER          IJK
56     !
57     !                      Integral of W_g*EP_g for entire volume
58           DOUBLE PRECISION SUM_W_g
59     !
60     !                      Total volume of computational cells
61           DOUBLE PRECISION SUM_VOL
62     
63     !  Integrate the velocity values for the whole domain,
64     !
65           SUM_W_G = ZERO
66           SUM_VOL = ZERO
67     
68     !!!!$omp   parallel do private(IJK) reduction(+:SUM_VOL,SUM_W_G)
69           DO IJK = IJKSTART3, IJKEND3
70           IF(.NOT.IS_ON_myPE_wobnd(I_OF(IJK), J_OF(IJK), K_OF(IJK))) CYCLE
71              IF (FLUID_AT(IJK)) THEN
72                 SUM_VOL = SUM_VOL + VOL_W(IJK)
73                 SUM_W_G = SUM_W_G + W_G(IJK)*EP_G(IJK)*VOL_W(IJK)
74              ENDIF
75           END DO
76     
77           CALL GLOBAL_ALL_SUM(SUM_VOL)
78           CALL GLOBAL_ALL_SUM(SUM_W_G)
79           VAVG_W_G = SUM_W_G/SUM_VOL
80     !
81     ! uncomment the following lines to enable trapping NaN's.
82     !      IF( mfix_isnan(VAVG_W_G) ) THEN
83     !        write(*,*) VAVG_W_G,  ' NaN being caught in VAVG_W_G.f '
84     !        AUTOMATIC_RESTART = .TRUE.
85     !      ENDIF
86     !
87           RETURN
88           END FUNCTION VAVG_W_G
89     
90     
91     
92           DOUBLE PRECISION FUNCTION VAVG_Flux_W_G ()
93     !...Translated by Pacific-Sierra Research VAST-90 2.06G5  12:17:31  12/09/98
94     !...Switches: -xf
95     !
96     !-----------------------------------------------
97     !   M o d u l e s
98     !-----------------------------------------------
99           USE param
100           USE param1
101           USE parallel
102           USE run
103           USE fldvar
104           USE bc
105           USE geometry
106           USE physprop
107           USE indices
108           USE compar
109           USE mpi_utility
110           USE mflux
111           USE functions
112           IMPLICIT NONE
113     !-----------------------------------------------
114     !   G l o b a l   P a r a m e t e r s
115     !-----------------------------------------------
116     !-----------------------------------------------
117     !   L o c a l   P a r a m e t e r s
118     !-----------------------------------------------
119     !-----------------------------------------------
120     !   L o c a l   V a r i a b l e s
121     !-----------------------------------------------
122     !
123     !                      Indices
124           INTEGER          IJK
125     !
126     !                      Integral of W_g*EP_g for entire volume
127           DOUBLE PRECISION SUM_W_g
128     !
129     !                      Total volume of computational cells
130           DOUBLE PRECISION SUM_AREA
131     !
132     !-----------------------------------------------
133     !
134     !  Integrate the velocity values for the whole domain,
135     !
136           SUM_W_G = ZERO
137           SUM_AREA = ZERO
138     
139     !!!!$omp   parallel do private(IJK) reduction(+:SUM_AREA,SUM_W_G)
140           DO IJK = IJKSTART3, IJKEND3
141           IF(.NOT.IS_ON_myPE_wobnd(I_OF(IJK), J_OF(IJK), K_OF(IJK))) CYCLE
142              IF (FLUID_AT(IJK)) THEN
143                IF(.NOT.ADDED_MASS) THEN
144                   SUM_W_G = SUM_W_G + Flux_gT(IJK)
145                ELSE
146                   SUM_W_G = SUM_W_G + Flux_gST(IJK)
147                ENDIF
148                SUM_AREA = SUM_AREA + AXY(IJK)
149              ENDIF
150           END DO
151     
152           CALL GLOBAL_ALL_SUM(SUM_AREA)
153           CALL GLOBAL_ALL_SUM(SUM_W_G)
154           VAVG_Flux_W_G = SUM_W_G/SUM_AREA
155     !
156           RETURN
157           END FUNCTION VAVG_Flux_W_G
158