MFIX  2016-1
get_bc_area.f
Go to the documentation of this file.
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  INTEGER :: 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(is_cg(bc_type_enum(bcv))) 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_enum(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
integer, dimension(dimension_bc) bc_k_b
Definition: bc_mod.f:70
integer ijkend3
Definition: compar_mod.f:80
subroutine get_bc_area
Definition: get_bc_area.f:24
double precision, dimension(:), allocatable axy
Definition: geometry_mod.f:210
integer, dimension(dimension_bc) bc_i_w
Definition: bc_mod.f:54
double precision, dimension(:), allocatable x_e
Definition: geometry_mod.f:134
integer, dimension(dimension_bc) bc_j_n
Definition: bc_mod.f:66
double precision, dimension(dimension_bc) bc_vol
Definition: bc_mod.f:248
double precision, dimension(0:dim_j) dy
Definition: geometry_mod.f:70
integer, parameter dimension_bc
Definition: param_mod.f:61
integer, dimension(dimension_bc) bc_type_enum
Definition: bc_mod.f:146
double precision, dimension(0:dim_k) dz
Definition: geometry_mod.f:72
double precision, dimension(:), allocatable ayz
Definition: geometry_mod.f:206
character, dimension(dimension_bc) bc_plane
Definition: bc_mod.f:217
subroutine cg_get_bc_area
Definition: get_bc_area.f:129
integer, dimension(dimension_bc) bc_k_t
Definition: bc_mod.f:74
logical, dimension(:,:,:), allocatable dead_cell_at
Definition: compar_mod.f:127
integer, dimension(dimension_bc) bc_j_s
Definition: bc_mod.f:62
logical, dimension(dimension_bc) bc_defined
Definition: bc_mod.f:207
double precision, dimension(0:dim_i) dx
Definition: geometry_mod.f:68
double precision, dimension(:), allocatable axz
Definition: geometry_mod.f:208
Definition: param_mod.f:2
logical, dimension(:), allocatable cut_cell_at
Definition: cutcell_mod.f:355
integer ijkstart3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable area_cut
Definition: cutcell_mod.f:131
integer, dimension(:), allocatable bc_id
Definition: cutcell_mod.f:433
double precision, dimension(:), allocatable vol
Definition: geometry_mod.f:212
integer, dimension(dimension_bc) bc_i_e
Definition: bc_mod.f:58
double precision, dimension(:), allocatable x
Definition: geometry_mod.f:129
double precision, parameter zero
Definition: param1_mod.f:27
logical function is_cg(boundary_condition)
Definition: bc_mod.f:422
Definition: bc_mod.f:23
double precision, dimension(dimension_bc) bc_area
Definition: bc_mod.f:245