File: /nfs/home/0/users/jenkins/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 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     
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 V_g*EP_g for entire volume
58           DOUBLE PRECISION SUM_V_g
59     !
60     !                      Total volume of computational cells
61           DOUBLE PRECISION SUM_VOL
62     
63           LOGICAL, EXTERNAL :: isNan
64     
65     !  Integrate the velocity values for the whole domain
66     !
67           SUM_V_G = ZERO
68           SUM_VOL = ZERO
69     
70     !!!!$omp   parallel do private(IJK) reduction(+:SUM_VOL,SUM_V_G)
71           DO IJK = IJKSTART3, IJKEND3
72           IF(.NOT.IS_ON_myPE_wobnd(I_OF(IJK), J_OF(IJK), K_OF(IJK))) CYCLE
73              IF (FLUID_AT(IJK)) THEN
74                 SUM_VOL = SUM_VOL + VOL_V(IJK)
75                 SUM_V_G = SUM_V_G + V_G(IJK)*EP_G(IJK)*VOL_V(IJK)
76              ENDIF
77           END DO
78     
79           CALL GLOBAL_ALL_SUM(SUM_VOL)
80           CALL GLOBAL_ALL_SUM(SUM_V_G)
81     
82           VAVG_V_G = SUM_V_G/SUM_VOL
83     !
84     ! uncomment the following lines to enable trapping NaN's.
85     !      IF(isNan(VAVG_V_G) ) THEN
86     !        write(*,*) VAVG_V_G,  ' NaN being caught in VAVG_V_G.f '
87     !        AUTOMATIC_RESTART = .TRUE.
88     !      ENDIF
89     
90           RETURN
91           END FUNCTION VAVG_V_G
92     
93           DOUBLE PRECISION FUNCTION VAVG_Flux_V_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     
114           IMPLICIT NONE
115     !-----------------------------------------------
116     !   G l o b a l   P a r a m e t e r s
117     !-----------------------------------------------
118     !-----------------------------------------------
119     !   L o c a l   P a r a m e t e r s
120     !-----------------------------------------------
121     !-----------------------------------------------
122     !   L o c a l   V a r i a b l e s
123     !-----------------------------------------------
124     !
125     !                      Indices
126           INTEGER          IJK
127     !
128     !                      Integral of V_g*EP_g for entire volume
129           DOUBLE PRECISION SUM_V_g
130     !
131     !                      Total volume of computational cells
132           DOUBLE PRECISION SUM_AREA
133     
134     !  Integrate the velocity values for the whole domain
135     !
136           SUM_V_G = ZERO
137           SUM_AREA = ZERO
138     
139     !!!!$omp   parallel do private(IJK) reduction(+:SUM_AREA,SUM_V_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_V_G = SUM_V_G + Flux_gN(IJK)
145                ELSE
146                   SUM_V_G = SUM_V_G + Flux_gSN(IJK)
147                ENDIF
148                SUM_AREA = SUM_AREA + AXZ(IJK)
149              ENDIF
150           END DO
151     
152           CALL GLOBAL_ALL_SUM(SUM_AREA)
153           CALL GLOBAL_ALL_SUM(SUM_V_G)
154     
155           VAVG_Flux_V_G = SUM_V_G/SUM_AREA
156     !
157           RETURN
158           END FUNCTION VAVG_Flux_V_G
159