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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  Module name: VAVG_U_g                                               C
4     !  Purpose: Volume average U_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_U_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 U_g*EP_g for entire volume
57           DOUBLE PRECISION SUM_U_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_U_G = ZERO
67           SUM_VOL = ZERO
68     
69     
70     !!!!$omp   parallel do private(IJK) reduction(+:SUM_VOL,SUM_U_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_U(IJK)
75                 SUM_U_G = SUM_U_G + U_G(IJK)*EP_G(IJK)*VOL_U(IJK)
76              ENDIF
77           END DO
78     
79           CALL GLOBAL_ALL_SUM(SUM_VOL)
80           CALL GLOBAL_ALL_SUM(SUM_U_G)
81     
82           VAVG_U_G = SUM_U_G/SUM_VOL
83     !
84     ! uncomment the following lines to enable trapping NaN's.
85     !      IF( isNan(VAVG_U_G) ) THEN
86     !        write(*,*) VAVG_U_G,  ' NaN being caught in VAVG_U_G.f '
87     !        AUTOMATIC_RESTART = .TRUE.
88     !      ENDIF
89     !
90           RETURN
91           END FUNCTION VAVG_U_G
92     
93     
94     
95           DOUBLE PRECISION FUNCTION VAVG_Flux_U_G ()
96     !...Translated by Pacific-Sierra Research VAST-90 2.06G5  12:17:31  12/09/98
97     !...Switches: -xf
98     !
99     !-----------------------------------------------
100     !   M o d u l e s
101     !-----------------------------------------------
102           USE param
103           USE param1
104           USE parallel
105           USE run
106           USE fldvar
107           USE bc
108           USE geometry
109           USE physprop
110           USE indices
111           USE compar
112           USE mpi_utility
113           USE mflux
114           USE functions
115     
116           IMPLICIT NONE
117     !-----------------------------------------------
118     !   G l o b a l   P a r a m e t e r s
119     !-----------------------------------------------
120     !-----------------------------------------------
121     !   L o c a l   P a r a m e t e r s
122     !-----------------------------------------------
123     !-----------------------------------------------
124     !   L o c a l   V a r i a b l e s
125     !-----------------------------------------------
126     !
127     !                      Indices
128           INTEGER          IJK
129     !
130     !                      Integral of U_g*ROP_g*Area
131           DOUBLE PRECISION SUM_U_g
132     !
133     !                      Total area of computational cells
134           DOUBLE PRECISION SUM_AREA
135     
136     !  Integrate the velocity values for the whole domain,
137     !
138           SUM_U_G = ZERO
139           SUM_AREA = ZERO
140     
141     
142     !!!!$omp   parallel do private(IJK) reduction(+:SUM_AREA,SUM_U_G)
143           DO IJK = IJKSTART3, IJKEND3
144           IF(.NOT.IS_ON_myPE_wobnd(I_OF(IJK), J_OF(IJK), K_OF(IJK))) CYCLE
145              IF (FLUID_AT(IJK)) THEN
146                IF(.NOT.ADDED_MASS) THEN
147                   SUM_U_G = SUM_U_G + Flux_gE(IJK)
148                ELSE
149                   SUM_U_G = SUM_U_G + Flux_gSE(IJK)
150                ENDIF
151                SUM_AREA = SUM_AREA + AYZ(IJK)
152              ENDIF
153           END DO
154     
155           CALL GLOBAL_ALL_SUM(SUM_AREA)
156           CALL GLOBAL_ALL_SUM(SUM_U_G)
157     
158           VAVG_Flux_U_G = SUM_U_G/SUM_AREA
159     !
160           RETURN
161           END FUNCTION VAVG_Flux_U_G
162     
163