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

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-Momentun 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
121                 ONEoDZ_T_U = ONE / ZLENGTH
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-Momentun 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
147     
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,IPJK,IJPK,IJKP
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     
253                 ONEoDZ_T_V = ONE / ZLENGTH
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-Momentun 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
282     
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
389