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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  Module name: GET_BC_AREA                                            C
4     !  Purpose: Compute area of boundary surfaces                          C
5     !                                                                      C
6     !  Author: M. Syamlal                                 Date: 29-JUL-92  C
7     !  Reviewer: W. Rogers                                Date: 11-DEC-92  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           SUBROUTINE GET_BC_AREA
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 geometry
33           USE bc
34           USE compar
35           IMPLICIT NONE
36     !-----------------------------------------------
37     !   G l o b a l   P a r a m e t e r s
38     !-----------------------------------------------
39     !-----------------------------------------------
40     !   L o c a l   P a r a m e t e r s
41     !-----------------------------------------------
42     !-----------------------------------------------
43     !   L o c a l   V a r i a b l e s
44     !-----------------------------------------------
45     !
46     !                      BC number
47           INTEGER :: BCV
48     !
49     !                      I, J, and K
50           INTEGER ::  I, J, K
51     !-----------------------------------------------
52     !
53     
54           DO BCV = 1, DIMENSION_BC
55              IF (BC_DEFINED(BCV)) THEN
56                 BC_AREA(BCV) = ZERO
57                 IF (BC_PLANE(BCV) == 'W') THEN
58                    I = BC_I_W(BCV)
59                    DO K = BC_K_B(BCV), BC_K_T(BCV)
60                       J = BC_J_S(BCV)
61                       IF (BC_J_N(BCV) - BC_J_S(BCV) + 1 > 0) THEN
62                          BC_AREA(BCV) = BC_AREA(BCV) + SUM(DY(BC_J_S(BCV):BC_J_N(BCV))*&
63                             X_E(I-1)*DZ(K))
64                          J = BC_J_N(BCV) + 1
65                       ENDIF
66                    END DO
67                 ELSE IF (BC_PLANE(BCV) == 'E') THEN
68                    I = BC_I_W(BCV)
69                    DO K = BC_K_B(BCV), BC_K_T(BCV)
70                       J = BC_J_S(BCV)
71                       IF (BC_J_N(BCV) - BC_J_S(BCV) + 1 > 0) THEN
72                          BC_AREA(BCV) = BC_AREA(BCV) + SUM(DY(BC_J_S(BCV):BC_J_N(BCV))*&
73                             X_E(I)*DZ(K))
74                          J = BC_J_N(BCV) + 1
75                       ENDIF
76                    END DO
77                 ELSE IF (BC_PLANE(BCV)=='S' .OR. BC_PLANE(BCV)=='N') THEN
78                    J = BC_J_S(BCV)
79                    DO K = BC_K_B(BCV), BC_K_T(BCV)
80                       I = BC_I_W(BCV)
81                       IF (BC_I_E(BCV) - BC_I_W(BCV) + 1 > 0) THEN
82                          BC_AREA(BCV) = BC_AREA(BCV) + SUM(DX(BC_I_W(BCV):BC_I_E(BCV))*&
83                             X(BC_I_W(BCV):BC_I_E(BCV))*DZ(K))
84                          I = BC_I_E(BCV) + 1
85                       ENDIF
86                    END DO
87                 ELSE IF (BC_PLANE(BCV)=='B' .OR. BC_PLANE(BCV)=='T') THEN
88                    K = BC_K_B(BCV)
89                    DO J = BC_J_S(BCV), BC_J_N(BCV)
90                       I = BC_I_W(BCV)
91                       IF (BC_I_E(BCV) - BC_I_W(BCV) + 1 > 0) THEN
92                          BC_AREA(BCV) = BC_AREA(BCV) + SUM(DX(BC_I_W(BCV):BC_I_E(BCV))*&
93                             DY(J))
94                          I = BC_I_E(BCV) + 1
95                       ENDIF
96                    END DO
97                 ENDIF
98              ENDIF
99           END DO
100     
101     
102           RETURN
103           END SUBROUTINE GET_BC_AREA
104     
105     
106     
107     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
108     !                                                                      C
109     !  Module name: CG_GET_BC_AREA                                         C
110     !  Purpose: Compute area of cut-cell boundary surfaces                 C
111     !                                                                      C
112     !  Author: Jeff Dietiker                              Date: 15-MAR-13  C
113     !                                                                      C
114     !  Revision Number:                                                    C
115     !  Purpose:                                                            C
116     !  Author:                                            Date: dd-mmm-yy  C
117     !  Reviewer:                                          Date: dd-mmm-yy  C
118     !                                                                      C
119     !  Literature/Document References:                                     C
120     !                                                                      C
121     !  Variables referenced:                                               C
122     !  Variables modified:                                                 C
123     !                                                                      C
124     !  Local variables:                                                    C
125     !                                                                      C
126     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
127     !
128           SUBROUTINE CG_GET_BC_AREA
129     !...Translated by Pacific-Sierra Research VAST-90 2.06G5  12:17:31  12/09/98
130     !...Switches: -xf
131     !
132     !-----------------------------------------------
133     !   M o d u l e s
134     !-----------------------------------------------
135           USE param
136           USE param1
137           USE geometry
138           USE bc
139           USE compar
140     
141           USE parallel
142           USE indices
143           USE compar
144           USE sendrecv
145           USE mpi_utility
146           USE cutcell
147           USE functions
148     
149           IMPLICIT NONE
150     !-----------------------------------------------
151     !   G l o b a l   P a r a m e t e r s
152     !-----------------------------------------------
153     !-----------------------------------------------
154     !   L o c a l   P a r a m e t e r s
155     !-----------------------------------------------
156     !-----------------------------------------------
157     !   L o c a l   V a r i a b l e s
158     !-----------------------------------------------
159     !
160     !                      BC number
161           INTEGER :: BCV,BCID
162     !
163     !                      I, J, and K
164           INTEGER ::  I, J, K , IJK, IJK2
165     
166           CHARACTER(LEN=9) :: BCT
167     !-----------------------------------------------
168     
169           DO BCV = 1, DIMENSION_BC
170              IF (BC_DEFINED(BCV)) THEN
171     
172                 BC_AREA(BCV) = ZERO
173                 BC_VOL(BCV) = ZERO
174     
175                 IF(BC_TYPE(BCV)(1:2)=='CG') THEN
176     
177     ! For cut-cell boundaries, add the area of each cut face
178     
179     
180                    DO IJK = IJKSTART3, IJKEND3
181                       IF(CUT_CELL_AT(IJK)) THEN
182                          BCID = BC_ID(IJK)
183                          IF(BCID > 0 ) THEN
184                             BCT = BC_TYPE(BCID)
185                             IF(BCID==BCV) BC_AREA(BCV) = BC_AREA(BCV) + Area_CUT(IJK)
186                             IF(BCID==BCV) BC_VOL(BCV)  = BC_VOL(BCV)  + VOL(IJK)
187                          ENDIF
188                       ENDIF
189                    END DO
190     
191     
192                 ELSE
193     
194     
195     ! For regular boundaries, add the true area of the faces (they could be truncated,
196     ! for example AYZ(IJK) coulb be less than DY(J)*DZ(K)
197     
198                 DO K = BC_K_B(BCV), BC_K_T(BCV)
199                    DO J = BC_J_S(BCV), BC_J_N(BCV)
200                       DO I = BC_I_W(BCV), BC_I_E(BCV)
201     
202                          IF (.NOT.IS_ON_myPE_OWNS(I,J,K)) CYCLE
203                          IF (DEAD_CELL_AT(I,J,K)) CYCLE  ! skip dead cells
204     
205                          IJK = FUNIJK(I,J,K)
206                          SELECT CASE (TRIM(BC_PLANE(BCV)))
207                          CASE ('W')
208                             IJK2 = IM_OF(IJK)
209                             BC_AREA(BCV) = BC_AREA(BCV) + AYZ(IJK2)
210                          CASE ('E')
211                             BC_AREA(BCV) = BC_AREA(BCV) + AYZ(IJK)
212                          CASE ('S')
213                             IJK2 = JM_OF(IJK)
214                             BC_AREA(BCV) = BC_AREA(BCV) + AXZ(IJK2)
215                          CASE ('N')
216                             BC_AREA(BCV) = BC_AREA(BCV) + AXZ(IJK)
217                          CASE ('B')
218                             IJK2 = KM_OF(IJK)
219                             BC_AREA(BCV) = BC_AREA(BCV) + AXY(IJK2)
220                          CASE ('T')
221                             BC_AREA(BCV) = BC_AREA(BCV) + AXY(IJK)
222                          END SELECT
223                       END DO
224                    END DO
225                 END DO
226     
227     
228                 ENDIF
229     
230     
231               CALL GLOBAL_ALL_SUM(BC_AREA(BCV))
232               CALL GLOBAL_ALL_SUM(BC_VOL(BCV))
233     
234     
235              ENDIF
236           END DO
237     
238     
239           RETURN
240           END SUBROUTINE CG_GET_BC_AREA
241     
242     !// Comments on the modifications for DMP version implementation
243     !// 001 Include header file and common declarations for parallelization
244     
245     
246     !// Comments on the modifications for DMP version implementation
247     !// 001 Include header file and common declarations for parallelization
248