File: /nfs/home/0/users/jenkins/mfix.git/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 param
31           USE param1
32           USE run
33           USE parallel
34           USE fldvar
35           USE bc
36           USE geometry
37           USE physprop
38           USE indices
39           USE compar
40           USE mpi_utility
41           USE functions
42           IMPLICIT NONE
43     !-----------------------------------------------
44     !   G l o b a l   P a r a m e t e r s
45     !-----------------------------------------------
46     !-----------------------------------------------
47     !   L o c a l   P a r a m e t e r s
48     !-----------------------------------------------
49     !-----------------------------------------------
50     !   L o c a l   V a r i a b l e s
51     !-----------------------------------------------
52     !
53     !                      Indices
54           INTEGER          IJK
55     !
56     !                      Integral of W_g*EP_g for entire volume
57           DOUBLE PRECISION SUM_W_g
58     !
59     !                      Total volume of computational cells
60           DOUBLE PRECISION SUM_VOL
61     
62           LOGICAL, EXTERNAL :: isNan
63     
64     !  Integrate the velocity values for the whole domain,
65     !
66           SUM_W_G = ZERO
67           SUM_VOL = ZERO
68     
69     !!!!$omp   parallel do private(IJK) reduction(+:SUM_VOL,SUM_W_G)
70           DO IJK = IJKSTART3, IJKEND3
71           IF(.NOT.IS_ON_myPE_wobnd(I_OF(IJK), J_OF(IJK), K_OF(IJK))) CYCLE
72              IF (FLUID_AT(IJK)) THEN
73                 SUM_VOL = SUM_VOL + VOL_W(IJK)
74                 SUM_W_G = SUM_W_G + W_G(IJK)*EP_G(IJK)*VOL_W(IJK)
75              ENDIF
76           END DO
77     
78           CALL GLOBAL_ALL_SUM(SUM_VOL)
79           CALL GLOBAL_ALL_SUM(SUM_W_G)
80           VAVG_W_G = SUM_W_G/SUM_VOL
81     !
82     ! uncomment the following lines to enable trapping NaN's.
83     !      IF( isNan(VAVG_W_G) ) THEN
84     !        write(*,*) VAVG_W_G,  ' NaN being caught in VAVG_W_G.f '
85     !        AUTOMATIC_RESTART = .TRUE.
86     !      ENDIF
87     !
88           RETURN
89           END FUNCTION VAVG_W_G
90     
91     
92     
93           DOUBLE PRECISION FUNCTION VAVG_Flux_W_G ()
94     !...Translated by Pacific-Sierra Research VAST-90 2.06G5  12:17:31  12/09/98
95     !...Switches: -xf
96     !
97     !-----------------------------------------------
98     !   M o d u l e s
99     !-----------------------------------------------
100           USE param
101           USE param1
102           USE parallel
103           USE run
104           USE fldvar
105           USE bc
106           USE geometry
107           USE physprop
108           USE indices
109           USE compar
110           USE mpi_utility
111           USE mflux
112           USE functions
113           IMPLICIT NONE
114     !-----------------------------------------------
115     !   G l o b a l   P a r a m e t e r s
116     !-----------------------------------------------
117     !-----------------------------------------------
118     !   L o c a l   P a r a m e t e r s
119     !-----------------------------------------------
120     !-----------------------------------------------
121     !   L o c a l   V a r i a b l e s
122     !-----------------------------------------------
123     !
124     !                      Indices
125           INTEGER          IJK
126     !
127     !                      Integral of W_g*EP_g for entire volume
128           DOUBLE PRECISION SUM_W_g
129     !
130     !                      Total volume of computational cells
131           DOUBLE PRECISION SUM_AREA
132     !
133     !-----------------------------------------------
134     !
135     !  Integrate the velocity values for the whole domain,
136     !
137           SUM_W_G = ZERO
138           SUM_AREA = ZERO
139     
140     !!!!$omp   parallel do private(IJK) reduction(+:SUM_AREA,SUM_W_G)
141           DO IJK = IJKSTART3, IJKEND3
142           IF(.NOT.IS_ON_myPE_wobnd(I_OF(IJK), J_OF(IJK), K_OF(IJK))) CYCLE
143              IF (FLUID_AT(IJK)) THEN
144                IF(.NOT.ADDED_MASS) THEN
145                   SUM_W_G = SUM_W_G + Flux_gT(IJK)
146                ELSE
147                   SUM_W_G = SUM_W_G + Flux_gST(IJK)
148                ENDIF
149                SUM_AREA = SUM_AREA + AXY(IJK)
150              ENDIF
151           END DO
152     
153           CALL GLOBAL_ALL_SUM(SUM_AREA)
154           CALL GLOBAL_ALL_SUM(SUM_W_G)
155           VAVG_Flux_W_G = SUM_W_G/SUM_AREA
156     !
157           RETURN
158           END FUNCTION VAVG_Flux_W_G
159