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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  Module name: VAVG_V_g                                               C
4     !  Purpose: Volume average V_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_V_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     
44           IMPLICIT NONE
45     !-----------------------------------------------
46     !   G l o b a l   P a r a m e t e r s
47     !-----------------------------------------------
48     !-----------------------------------------------
49     !   L o c a l   P a r a m e t e r s
50     !-----------------------------------------------
51     !-----------------------------------------------
52     !   L o c a l   V a r i a b l e s
53     !-----------------------------------------------
54     !
55     !                      Indices
56           INTEGER          IJK
57     !
58     !                      Integral of V_g*EP_g for entire volume
59           DOUBLE PRECISION SUM_V_g
60     !
61     !                      Total volume of computational cells
62           DOUBLE PRECISION SUM_VOL
63     
64     !  Integrate the velocity values for the whole domain
65     !
66           SUM_V_G = ZERO
67           SUM_VOL = ZERO
68     
69     !!!!$omp   parallel do private(IJK) reduction(+:SUM_VOL,SUM_V_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_V(IJK)
74                 SUM_V_G = SUM_V_G + V_G(IJK)*EP_G(IJK)*VOL_V(IJK)
75              ENDIF
76           END DO
77     
78           CALL GLOBAL_ALL_SUM(SUM_VOL)
79           CALL GLOBAL_ALL_SUM(SUM_V_G)
80     
81           VAVG_V_G = SUM_V_G/SUM_VOL
82     !
83     ! uncomment the following lines to enable trapping NaN's.
84     !      IF(mfix_isnan(VAVG_V_G) ) THEN
85     !        write(*,*) VAVG_V_G,  ' NaN being caught in VAVG_V_G.f '
86     !        AUTOMATIC_RESTART = .TRUE.
87     !      ENDIF
88     
89           RETURN
90           END FUNCTION VAVG_V_G
91     
92           DOUBLE PRECISION FUNCTION VAVG_Flux_V_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     
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 V_g*EP_g for entire volume
128           DOUBLE PRECISION SUM_V_g
129     !
130     !                      Total volume of computational cells
131           DOUBLE PRECISION SUM_AREA
132     
133     !  Integrate the velocity values for the whole domain
134     !
135           SUM_V_G = ZERO
136           SUM_AREA = ZERO
137     
138     !!!!$omp   parallel do private(IJK) reduction(+:SUM_AREA,SUM_V_G)
139           DO IJK = IJKSTART3, IJKEND3
140           IF(.NOT.IS_ON_myPE_wobnd(I_OF(IJK), J_OF(IJK), K_OF(IJK))) CYCLE
141              IF (FLUID_AT(IJK)) THEN
142                IF(.NOT.ADDED_MASS) THEN
143                   SUM_V_G = SUM_V_G + Flux_gN(IJK)
144                ELSE
145                   SUM_V_G = SUM_V_G + Flux_gSN(IJK)
146                ENDIF
147                SUM_AREA = SUM_AREA + AXZ(IJK)
148              ENDIF
149           END DO
150     
151           CALL GLOBAL_ALL_SUM(SUM_AREA)
152           CALL GLOBAL_ALL_SUM(SUM_V_G)
153     
154           VAVG_Flux_V_G = SUM_V_G/SUM_AREA
155     !
156           RETURN
157           END FUNCTION VAVG_Flux_V_G
158