MFIX  2016-1
set_Odxyz.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Module name: SET_ODXYZ_U_CUT_CELL C
4 ! Purpose: Set 1/dx, 1/dy, and 1/dz for U-Momentum cell C
5 ! (only when cartesian grid is used) C
6 ! C
7 ! Author: Jeff Dietiker Date: 21-Feb-08 C
8 ! Reviewer: Date: C
9 ! C
10 ! Revision Number # Date: ##-###-## C
11 ! Author: # C
12 ! Purpose: # C
13 ! C
14 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
15  SUBROUTINE set_odxyz_u_cut_cell
16 
17  USE param
18  USE param1
19  USE parallel
20  USE constant
21  USE run
22  USE toleranc
23  USE geometry
24  USE indices
25  USE compar
26  USE mpi_utility
27  USE sendrecv
28  USE quadric
29  USE cutcell
30  USE vtk
31  USE functions
32 
33  IMPLICIT NONE
34  INTEGER :: IJK,I,J,K
35  INTEGER :: IP,JP,KP
36  INTEGER :: IJK1,IJK2
37 
38  IF(mype == pe_io) THEN
39  IF(no_k) THEN
40  WRITE(*,10)'COMPUTING 1/DX, 1/DY FOR U-MOMENTUM CELLS...'
41  ELSE
42  WRITE(*,10)'COMPUTING 1/DX, 1/DY, 1/DZ FOR U-MOMENTUM CELLS...'
43  ENDIF
44  ENDIF
45 10 FORMAT(1x,a)
46 
47  DO ijk = ijkstart3, ijkend3
48 
49  i = i_of(ijk)
50  j = j_of(ijk)
51  k = k_of(ijk)
52 
53 !======================================================================
54 ! 1/dx at East face of U-Momentume cell
55 !======================================================================
56 
57  IF(i == istart3) THEN
58  ijk2 = funijk(istart1,j,k)
59  ijk1 = funijk(istart1-1,j,k)
60  ELSEIF(i == iend3) THEN
61  ijk2 = funijk(iend3,j,k)
62  ijk1 = funijk(iend3-1,j,k)
63  ELSE
64  ip = i + 1
65  ijk2 = funijk(ip,j,k)
66  ijk1 = ijk
67  ENDIF
68 
69  IF(x_u(ijk2)/=x_u(ijk1)) THEN
70  oneodx_e_u(ijk) = one / (x_u(ijk2)-x_u(ijk1))
71  ELSE
72  oneodx_e_u(ijk) = zero
73  ENDIF
74 
75 !======================================================================
76 ! 1/dy at North face of U_Momentum cell
77 !======================================================================
78 
79  IF(j == jstart3) THEN
80  ijk2 = funijk(i,jstart1,k)
81  ijk1 = funijk(i,jstart1-1,k)
82  ELSEIF(j == jend3) THEN
83  ijk2 = funijk(i,jend3,k)
84  ijk1 = funijk(i,jend3-1,k)
85  ELSE
86  jp = j + 1
87  ijk2 = funijk(i,jp,k)
88  ijk1 = ijk
89  ENDIF
90 
91  IF(y_u(ijk2)/=y_u(ijk1)) THEN
92  oneody_n_u(ijk) = one / (y_u(ijk2)-y_u(ijk1))
93  ELSE
94  oneody_n_u(ijk) = zero
95  ENDIF
96 
97 !======================================================================
98 ! 1/dz at Top face of U_Momentum cell
99 !======================================================================
100 
101  IF(do_k) THEN
102  IF(k == kstart3) THEN
103  ijk2 = funijk(i,j,kstart1)
104  ijk1 = funijk(i,j,kstart1-1)
105  ELSEIF(k == kend3) THEN
106  ijk2 = funijk(i,j,kend3)
107  ijk1 = funijk(i,j,kend3-1)
108  ELSE
109  kp = k + 1
110  ijk2 = funijk(i,j,kp)
111  ijk1 = ijk
112  ENDIF
113 
114  IF(z_u(ijk2)/=z_u(ijk1)) THEN
115  oneodz_t_u(ijk) = one / (z_u(ijk2)-z_u(ijk1))
116  ELSE
117  oneodz_t_u(ijk) = zero
118  ENDIF
119 
120  ELSE
122  ENDIF
123 
124  END DO
125 
126 
127  RETURN
128 
129 
130  END SUBROUTINE set_odxyz_u_cut_cell
131 
132 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
133 ! C
134 ! Module name: SET_ODXYZ_V_CUT_CELL C
135 ! Purpose: Set 1/dx, 1/dy, and 1/dz for V-Momentum cell C
136 ! (only when cartesian grid is used) C
137 ! C
138 ! Author: Jeff Dietiker Date: 21-Feb-08 C
139 ! Reviewer: Date: C
140 ! C
141 ! Revision Number # Date: ##-###-## C
142 ! Author: # C
143 ! Purpose: # C
144 ! C
145 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
146  SUBROUTINE set_odxyz_v_cut_cell
148  USE param
149  USE param1
150  USE parallel
151  USE constant
152  USE run
153  USE toleranc
154  USE geometry
155  USE indices
156  USE compar
157  USE mpi_utility
158  USE sendrecv
159  USE quadric
160  USE cutcell
161  USE vtk
162  USE functions
163 
164  IMPLICIT NONE
165  INTEGER :: IJK,I,J,K
166  INTEGER :: IP,JP,KP
167  INTEGER :: IJK1,IJK2
168 
169  IF(mype == pe_io) THEN
170  IF(no_k) THEN
171  WRITE(*,10)'COMPUTING 1/DX, 1/DY FOR V-MOMENTUM CELLS...'
172  ELSE
173  WRITE(*,10)'COMPUTING 1/DX, 1/DY, 1/DZ FOR V-MOMENTUM CELLS...'
174  ENDIF
175  ENDIF
176 10 FORMAT(1x,a)
177 
178  DO ijk = ijkstart3, ijkend3
179 
180  i = i_of(ijk)
181  j = j_of(ijk)
182  k = k_of(ijk)
183 
184 !======================================================================
185 ! 1/dx at East face of V-Momentume cell
186 !======================================================================
187 
188  IF(i == istart3) THEN
189  ijk2 = funijk(istart1,j,k)
190  ijk1 = funijk(istart1-1,j,k)
191  ELSEIF(i == iend3) THEN
192  ijk2 = funijk(iend3,j,k)
193  ijk1 = funijk(iend3-1,j,k)
194  ELSE
195  ip = i + 1
196  ijk2 = funijk(ip,j,k)
197  ijk1 = ijk
198  ENDIF
199 
200  IF(x_v(ijk2)/=x_v(ijk1)) THEN
201  oneodx_e_v(ijk) = one / (x_v(ijk2)-x_v(ijk1))
202  ELSE
203  oneodx_e_v(ijk) = zero
204  ENDIF
205 
206 !======================================================================
207 ! 1/dy at North face of V_Momentum cell
208 !======================================================================
209 
210  IF(j == jstart3) THEN
211  ijk2 = funijk(i,jstart1,k)
212  ijk1 = funijk(i,jstart1-1,k)
213  ELSEIF(j == jend3) THEN
214  ijk2 = funijk(i,jend3,k)
215  ijk1 = funijk(i,jend3-1,k)
216  ELSE
217  jp = j + 1
218  ijk2 = funijk(i,jp,k)
219  ijk1 = ijk
220  ENDIF
221 
222  IF(y_v(ijk2)/=y_v(ijk1)) THEN
223  oneody_n_v(ijk) = one / (y_v(ijk2)-y_v(ijk1))
224  ELSE
225  oneody_n_v(ijk) = zero
226  ENDIF
227 
228 !======================================================================
229 ! 1/dz at Top face of V_Momentum cell
230 !======================================================================
231 
232  IF(do_k) THEN
233  IF(k == kstart3) THEN
234  ijk2 = funijk(i,j,kstart1)
235  ijk1 = funijk(i,j,kstart1-1)
236  ELSEIF(k == kend3) THEN
237  ijk2 = funijk(i,j,kend3)
238  ijk1 = funijk(i,j,kend3-1)
239  ELSE
240  kp = k + 1
241  ijk2 = funijk(i,j,kp)
242  ijk1 = ijk
243  ENDIF
244 
245  IF(z_v(ijk2)/=z_v(ijk1)) THEN
246  oneodz_t_v(ijk) = one / (z_v(ijk2)-z_v(ijk1))
247  ELSE
248  oneodz_t_v(ijk) = zero
249  ENDIF
250 
251  ELSE
252 
254 
255  ENDIF
256 
257  END DO
258 
259 
260 
261  RETURN
262 
263 
264  END SUBROUTINE set_odxyz_v_cut_cell
265 
266 
267 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
268 ! C
269 ! Module name: SET_ODXYZ_W_CUT_CELL C
270 ! Purpose: Set 1/dx, 1/dy, and 1/dz for W-Momentum cell C
271 ! (only when cartesian grid is used) C
272 ! C
273 ! Author: Jeff Dietiker Date: 21-Feb-08 C
274 ! Reviewer: Date: C
275 ! C
276 ! Revision Number # Date: ##-###-## C
277 ! Author: # C
278 ! Purpose: # C
279 ! C
280 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
281  SUBROUTINE set_odxyz_w_cut_cell
283  USE param
284  USE param1
285  USE parallel
286  USE constant
287  USE run
288  USE toleranc
289  USE geometry
290  USE indices
291  USE compar
292  USE mpi_utility
293  USE sendrecv
294  USE quadric
295  USE cutcell
296  USE vtk
297  USE functions
298 
299  IMPLICIT NONE
300  INTEGER :: IJK,I,J,K
301  INTEGER :: IP,JP,KP
302  INTEGER :: IJK1,IJK2
303 
304  IF(mype == pe_io) THEN
305  WRITE(*,10)'COMPUTING 1/DX, 1/DY, 1/DZ FOR W-MOMENTUM CELLS...'
306  ENDIF
307 10 FORMAT(1x,a)
308 
309  DO ijk = ijkstart3, ijkend3
310 
311  i = i_of(ijk)
312  j = j_of(ijk)
313  k = k_of(ijk)
314 
315 !======================================================================
316 ! 1/dx at East face of V-Momentume cell
317 !======================================================================
318 
319  IF(i == istart3) THEN
320  ijk2 = funijk(istart1,j,k)
321  ijk1 = funijk(istart1-1,j,k)
322  ELSEIF(i == iend3) THEN
323  ijk2 = funijk(iend3,j,k)
324  ijk1 = funijk(iend3-1,j,k)
325  ELSE
326  ip = i + 1
327  ijk2 = funijk(ip,j,k)
328  ijk1 =ijk
329  ENDIF
330 
331  IF(x_w(ijk2)/=x_w(ijk1)) THEN
332  oneodx_e_w(ijk) = one / (x_w(ijk2)-x_w(ijk1))
333  ELSE
334  oneodx_e_w(ijk) = zero
335  ENDIF
336 !======================================================================
337 ! 1/dy at North face of V_Momentum cell
338 !======================================================================
339 
340  IF(j == jstart3) THEN
341  ijk2 = funijk(i,jstart1,k)
342  ijk1 = funijk(i,jstart1-1,k)
343  ELSEIF(j == jend3) THEN
344  ijk2 = funijk(i,jend3,k)
345  ijk1 = funijk(i,jend3-1,k)
346  ELSE
347  jp = j + 1
348  ijk2 = funijk(i,jp,k)
349  ijk1 = ijk
350  ENDIF
351 
352  IF(y_w(ijk2)/=y_w(ijk1)) THEN
353  oneody_n_w(ijk) = one / (y_w(ijk2)-y_w(ijk1))
354  ELSE
355  oneody_n_w(ijk) = zero
356  ENDIF
357 ! print*,'myPE,IJK,ONEoDY_N_W(IJK)=',myPE,IJK,ONEoDY_N_W(IJK)
358 
359 !======================================================================
360 ! 1/dz at Top face of V_Momentum cell
361 !======================================================================
362 
363  IF(k == kstart3) THEN
364  ijk2 = funijk(i,j,kstart1)
365  ijk1 = funijk(i,j,kstart1-1)
366  ELSEIF(k == kend3) THEN
367  ijk2 = funijk(i,j,kend3)
368  ijk1 = funijk(i,j,kend3-1)
369  ELSE
370  kp = k + 1
371  ijk2 = funijk(i,j,kp)
372  ijk1 = ijk
373  ENDIF
374 
375  IF(z_w(ijk2)/=z_w(ijk1)) THEN
376  oneodz_t_w(ijk) = one / (z_w(ijk2)-z_w(ijk1))
377  ELSE
378  oneodz_t_w(ijk) = zero
379  ENDIF
380 
381  END DO
382 
383 
384 
385  RETURN
386 
387 
388  END SUBROUTINE set_odxyz_w_cut_cell
integer iend3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable y_v
Definition: cutcell_mod.f:55
double precision, dimension(:), allocatable z_u
Definition: cutcell_mod.f:51
integer, dimension(:), allocatable i_of
Definition: indices_mod.f:45
double precision, dimension(:), allocatable oneodx_e_w
Definition: cutcell_mod.f:324
integer jstart3
Definition: compar_mod.f:80
integer ijkend3
Definition: compar_mod.f:80
integer istart1
Definition: compar_mod.f:80
double precision, dimension(:), allocatable oneodx_e_v
Definition: cutcell_mod.f:320
double precision, parameter one
Definition: param1_mod.f:29
double precision, dimension(:), allocatable oneodz_t_w
Definition: cutcell_mod.f:326
double precision, dimension(:), allocatable x_u
Definition: cutcell_mod.f:49
subroutine set_odxyz_v_cut_cell
Definition: set_Odxyz.f:147
integer kstart3
Definition: compar_mod.f:80
Definition: vtk_mod.f:1
double precision, dimension(:), allocatable y_w
Definition: cutcell_mod.f:60
double precision, dimension(:), allocatable z_v
Definition: cutcell_mod.f:56
double precision, dimension(:), allocatable oneody_n_u
Definition: cutcell_mod.f:316
integer kstart1
Definition: compar_mod.f:80
integer kend3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable oneodx_e_u
Definition: cutcell_mod.f:315
integer, dimension(:), allocatable k_of
Definition: indices_mod.f:47
integer pe_io
Definition: compar_mod.f:30
double precision, dimension(:), allocatable x_w
Definition: cutcell_mod.f:59
integer, dimension(:), allocatable j_of
Definition: indices_mod.f:46
integer jend3
Definition: compar_mod.f:80
subroutine set_odxyz_w_cut_cell
Definition: set_Odxyz.f:282
double precision, dimension(:), allocatable oneody_n_v
Definition: cutcell_mod.f:321
double precision, dimension(:), allocatable x_v
Definition: cutcell_mod.f:54
Definition: run_mod.f:13
double precision, dimension(:), allocatable oneodz_t_u
Definition: cutcell_mod.f:317
Definition: param_mod.f:2
logical no_k
Definition: geometry_mod.f:28
logical do_k
Definition: geometry_mod.f:30
integer mype
Definition: compar_mod.f:24
integer ijkstart3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable oneodz_t_v
Definition: cutcell_mod.f:322
double precision, dimension(:), allocatable z_w
Definition: cutcell_mod.f:61
subroutine set_odxyz_u_cut_cell
Definition: set_Odxyz.f:16
double precision, dimension(:), allocatable oneody_n_w
Definition: cutcell_mod.f:325
integer istart3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable x
Definition: geometry_mod.f:129
double precision, dimension(:), allocatable y_u
Definition: cutcell_mod.f:50
double precision, parameter zero
Definition: param1_mod.f:27
double precision zlength
Definition: geometry_mod.f:37
integer jstart1
Definition: compar_mod.f:80