File: /nfs/home/0/users/jenkins/mfix.git/model/calc_outflow.f
1
2
3
4
5
6
7
8
9
10
11 SUBROUTINE CALC_OUTFLOW(L)
12
13
14
15 use bc, only: bc_plane
16 use bc, only: bc_k_b, bc_k_t
17 use bc, only: bc_j_s, bc_j_n
18 use bc, only: bc_i_w, bc_i_e
19 use bc, only: bc_out_n
20 use bc, only: bc_mout_g, bc_vout_g
21 use bc, only: bc_mout_s, bc_vout_s
22 use geometry, only: dx, dy, dz
23 use geometry, only: x_e, x
24 use physprop, only: smax
25 use fldvar, only: u_g, v_g, w_g, u_s, v_s, w_s
26 use fldvar, only: rop_g, ro_g, ep_g
27 use fldvar, only: rop_s, ep_s
28 use functions, only: im_of, ip_of, jm_of, jp_of, km_of, kp_of
29 use functions, only: fluid_at
30 use functions, only: is_on_mype_plus2layers
31 use functions, only: funijk
32 use compar, only: dead_cell_at
33 IMPLICIT NONE
34
35
36
37
38 INTEGER, INTENT(IN) :: L
39
40
41
42
43 INTEGER :: I, J, K, IJK
44
45 INTEGER :: M
46
47 INTEGER :: IJK2
48
49
50 (L) = BC_OUT_N(L) + 1
51 DO K = BC_K_B(L), BC_K_T(L)
52 DO J = BC_J_S(L), BC_J_N(L)
53 DO I = BC_I_W(L), BC_I_E(L)
54
55 IF (.NOT.IS_ON_myPE_plus2layers(I,J,K)) CYCLE
56 IF (DEAD_CELL_AT(I,J,K)) CYCLE
57 = FUNIJK(I,J,K)
58 SELECT CASE (TRIM(BC_PLANE(L)))
59 CASE ('W')
60 IJK2 = IM_OF(IJK)
61 BC_MOUT_G(L) = BC_MOUT_G(L) + DY(J)*X_E(I-1)*DZ(K)*&
62 U_G(IJK2)*ROP_G(IJK2)
63 BC_VOUT_G(L) = BC_VOUT_G(L) + DY(J)*X_E(I-1)*DZ(K)*&
64 U_G(IJK2)*EP_G(IJK2)
65 CASE ('E')
66 IJK2 = IP_OF(IJK)
67 BC_MOUT_G(L) = BC_MOUT_G(L) + DY(J)*X_E(I)*DZ(K)*&
68 U_G(IJK)*ROP_G(IJK2)
69 BC_VOUT_G(L) = BC_VOUT_G(L) + DY(J)*X_E(I)*DZ(K)*&
70 U_G(IJK)*EP_G(IJK2)
71 CASE ('S')
72 IJK2 = JM_OF(IJK)
73 BC_MOUT_G(L) = BC_MOUT_G(L) + DX(I)*X(I)*DZ(K)*&
74 V_G(IJK2)*ROP_G(IJK2)
75 BC_VOUT_G(L) = BC_VOUT_G(L) + DX(I)*X(I)*DZ(K)*&
76 V_G(IJK2)*EP_G(IJK2)
77 CASE ('N')
78 IJK2 = JP_OF(IJK)
79 BC_MOUT_G(L) = BC_MOUT_G(L) + DX(I)*X(I)*DZ(K)*&
80 V_G(IJK)*ROP_G(IJK2)
81 BC_VOUT_G(L) = BC_VOUT_G(L) + DX(I)*X(I)*DZ(K)*&
82 V_G(IJK)*EP_G(IJK2)
83 CASE ('B')
84 IJK2 = KM_OF(IJK)
85 BC_MOUT_G(L) = BC_MOUT_G(L) + DX(I)*DY(J)*&
86 W_G(IJK2)*ROP_G(IJK2)
87 BC_VOUT_G(L)=BC_VOUT_G(L)+DX(I)*DY(J)*&
88 W_G(IJK2)*EP_G(IJK2)
89 CASE ('T')
90 IJK2 = KP_OF(IJK)
91 BC_MOUT_G(L)=BC_MOUT_G(L)+DX(I)*DY(J)*&
92 W_G(IJK)*ROP_G(IJK2)
93 BC_VOUT_G(L) = BC_VOUT_G(L) + DX(I)*DY(J)*&
94 W_G(IJK)*EP_G(IJK2)
95 END SELECT
96
97 DO M = 1, SMAX
98 SELECT CASE (TRIM(BC_PLANE(L)))
99 CASE ('W')
100 IJK2 = IM_OF(IJK)
101 BC_MOUT_S(L,M) = BC_MOUT_S(L,M) + DY(J)*X_E(I-1)*&
102 DZ(K)*U_S(IJK2,M)*ROP_S(IJK2,M)
103 BC_VOUT_S(L,M) = BC_VOUT_S(L,M) + DY(J)*X_E(I-1)*&
104 DZ(K)*U_S(IJK2,M)*EP_S(IJK2,M)
105 CASE ('E')
106 IJK2 = IP_OF(IJK)
107 BC_MOUT_S(L,M) = BC_MOUT_S(L,M) + DY(J)*X_E(I)*&
108 DZ(K)*U_S(IJK,M)*ROP_S(IJK2,M)
109 BC_VOUT_S(L,M) = BC_VOUT_S(L,M) + DY(J)*X_E(I)*&
110 DZ(K)*U_S(IJK,M)*EP_S(IJK2,M)
111 CASE ('S')
112 IJK2 = JM_OF(IJK)
113 BC_MOUT_S(L,M) = BC_MOUT_S(L,M) + DX(I)*X(I)*&
114 DZ(K)*V_S(IJK2,M)*ROP_S(IJK2,M)
115 BC_VOUT_S(L,M) = BC_VOUT_S(L,M) + DX(I)*X(I)*&
116 DZ(K)*V_S(IJK2,M)*EP_S(IJK2,M)
117 CASE ('N')
118 IJK2 = JP_OF(IJK)
119 BC_MOUT_S(L,M) = BC_MOUT_S(L,M) + DX(I)*X(I)*&
120 DZ(K)*V_S(IJK,M)*ROP_S(IJK2,M)
121 BC_VOUT_S(L,M) = BC_VOUT_S(L,M) + DX(I)*X(I)*&
122 DZ(K)*V_S(IJK,M)*EP_S(IJK2,M)
123 CASE ('B')
124 IJK2 = KM_OF(IJK)
125 BC_MOUT_S(L,M) = BC_MOUT_S(L,M) + DX(I)*DY(J)*&
126 W_S(IJK2,M)*ROP_S(IJK2,M)
127 BC_VOUT_S(L,M) = BC_VOUT_S(L,M) + DX(I)*DY(J)*&
128 W_S(IJK2,M)*EP_S(IJK2,M)
129 CASE ('T')
130 IJK2 = KP_OF(IJK)
131 BC_MOUT_S(L,M) = BC_MOUT_S(L,M) + DX(I)*DY(J)*&
132 W_S(IJK,M)*ROP_S(IJK2,M)
133 BC_VOUT_S(L,M) = BC_VOUT_S(L,M) + DX(I)*DY(J)*&
134 W_S(IJK,M)*EP_S(IJK2,M)
135 END SELECT
136 ENDDO
137
138 ENDDO
139 ENDDO
140 ENDDO
141
142 RETURN
143 END SUBROUTINE CALC_OUTFLOW
144