MFIX  2016-1
dif_phi_des.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2 ! !
3 ! Subroutine: DIFFUSE_MEAN_FIELDS !
4 ! Author: J.Musser Date: 11-NOV-14 !
5 ! !
6 ! Purpose: !
7 ! !
8 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
9  SUBROUTINE dif_phi_des(M, DIF, A_M, B_M)
10 
11 !-----------------------------------------------
12 ! M o d u l e s
13 !-----------------------------------------------
14  USE param
15  USE param1
16  USE parallel
17  USE toleranc
18  USE run
19  USE geometry
20  USE compar
21  USE sendrecv
22  USE indices
23  USE fun_avg
24  USE functions
25  USE cutcell
26 
27  IMPLICIT NONE
28 
29 ! Phase index
30  INTEGER, INTENT(IN) :: M
31 
32 ! Septadiagonal matrix A_m
33  DOUBLE PRECISION, INTENT(INOUT) :: A_m(dimension_3, -3:3, 0:dimension_m)
34 
35 ! Vector b_m
36  DOUBLE PRECISION, INTENT(INOUT) :: B_m(dimension_3, 0:dimension_m)
37 
38  DOUBLE PRECISION, INTENT(IN) :: DIF(dimension_3)
39 
40 ! Fluid Cell indices
41  INTEGER :: I, J, K, IJK
42  INTEGER :: IMJK, IM, IJKW, IPJK, IJKE
43  INTEGER :: IJMK, JM, IJKS, IJPK, IJKN
44  INTEGER :: IJKM, KM, IJKB, IJKP, IJKT
45 !
46 ! Diffusion parameter
47  DOUBLE PRECISION :: D_f
48 
49 
50 ! Calculate convection-diffusion fluxes through each of the faces
51  DO ijk = ijkstart3, ijkend3
52 
53  i = i_of(ijk)
54  j = j_of(ijk)
55  k = k_of(ijk)
56 
57  IF(.NOT.fluid_at(ijk)) cycle
58 
59  ipjk = ip_of(ijk)
60  ijpk = jp_of(ijk)
61 
62  ijke = east_of(ijk)
63  ijkn = north_of(ijk)
64 
65 ! East face (i+1/2, j, k)
66  d_f = avg_x_h(dif(ijk),dif(ijke),i)*odx_e(i)*ayz(ijk)
67  IF(cut_treatment_at(ijk)) THEN
68  IF(cut_cell_at(ijk).AND.(.NOT.fluid_at(ipjk))) THEN
69  d_f = avg_x_h(dif(ijk),dif(ijke),i)*odx_e(i)*dy(j)*dz(k)
70  ENDIF
71  ENDIF
72 
73  a_m(ijk,east,m) = d_f
74  a_m(ipjk,west,m) = d_f
75 
76 ! West face (i-1/2, j, k)
77  imjk = im_of(ijk)
78  IF (.NOT.fluid_at(imjk)) THEN
79  im = im1(i)
80  ijkw = west_of(ijk)
81  d_f = avg_x_h(dif(ijkw),dif(ijk),im)*odx_e(im)*ayz(imjk)
82  IF(cut_treatment_at(ijk)) THEN
83  IF(cut_cell_at(ijk).AND.(.NOT.fluid_at(imjk))) THEN
84  d_f = avg_x_h(dif(ijkw),dif(ijk),im)*odx_e(im)*dy(j)*dz(k)
85  ENDIF
86  ENDIF
87  a_m(ijk,west,m) = d_f
88  ENDIF
89 
90 
91 ! North face (i, j+1/2, k)
92  d_f = avg_y_h(dif(ijk),dif(ijkn),j)*ody_n(j)*axz(ijk)
93  IF(cut_treatment_at(ijk)) THEN
94  IF(cut_cell_at(ijk).AND.(.NOT.fluid_at(ijpk))) THEN
95  d_f = avg_y_h(dif(ijk),dif(ijkn),j)*ody_n(j)*dx(i)*dz(k)
96  ENDIF
97  ENDIF
98  a_m(ijk,north,m) = d_f
99  a_m(ijpk,south,m) = d_f
100 
101 ! South face (i, j-1/2, k)
102  ijmk = jm_of(ijk)
103  IF (.NOT.fluid_at(ijmk)) THEN
104  jm = jm1(j)
105  ijks = south_of(ijk)
106  d_f = avg_y_h(dif(ijks),dif(ijk),jm)*ody_n(jm)*axz(ijmk)
107  IF(cut_treatment_at(ijk)) THEN
108  IF(cut_cell_at(ijk).AND.(.NOT.fluid_at(ijmk))) THEN
109  d_f = avg_y_h(dif(ijks),dif(ijk),jm)*ody_n(jm)*dx(i)*dz(k)
110  ENDIF
111  ENDIF
112  a_m(ijk,south,m) = d_f
113  ENDIF
114 
115 
116 ! Top face (i, j, k+1/2)
117  IF (do_k) THEN
118  ijkp = kp_of(ijk)
119  ijkt = top_of(ijk)
120  d_f = avg_z_h(dif(ijk),dif(ijkt),k)*ox(i)*odz_t(k)*axy(ijk)
121  IF(cut_treatment_at(ijk)) THEN
122  IF(cut_cell_at(ijk).AND.(.NOT.fluid_at(ijkp))) THEN
123  d_f = avg_z_h(dif(ijk),dif(ijkt),k)*ox(i)*odz_t(k)*dx(i)*dy(j)
124  ENDIF
125  ENDIF
126  a_m(ijk,top,m) = d_f
127  a_m(ijkp,bottom,m) = d_f
128 
129 
130 ! Bottom face (i, j, k-1/2)
131  ijkm = km_of(ijk)
132  IF (.NOT.fluid_at(ijkm)) THEN
133  km = km1(k)
134  ijkb = bottom_of(ijk)
135  d_f = avg_z_h(dif(ijkb),dif(ijk),km)*ox(i)*odz_t(km)*axy(ijkm)
136  IF(cut_treatment_at(ijk)) THEN
137  IF(cut_cell_at(ijk).AND.(.NOT.fluid_at(ijkm))) THEN
138  d_f = avg_z_h(dif(ijkb),dif(ijk),km)*ox(i)*odz_t(km)*dx(i)*dy(j)
139  ENDIF
140  ENDIF
141  a_m(ijk,bottom,m) = d_f
142  ENDIF
143  ENDIF
144  END DO
145 
146  CALL dif_phi_is(dif, a_m, m)
147 
148 
149  RETURN
150  END SUBROUTINE dif_phi_des
subroutine dif_phi_des(M, DIF, A_M, B_M)
Definition: dif_phi_des.f:10
integer, dimension(:), allocatable i_of
Definition: indices_mod.f:45
integer ijkend3
Definition: compar_mod.f:80
integer dimension_3
Definition: param_mod.f:11
double precision, dimension(:), allocatable axy
Definition: geometry_mod.f:210
integer, dimension(:), allocatable im1
Definition: indices_mod.f:50
double precision, dimension(0:dim_j) dy
Definition: geometry_mod.f:70
integer east
Definition: param_mod.f:29
double precision, dimension(0:dim_k) dz
Definition: geometry_mod.f:72
double precision, dimension(:), allocatable ayz
Definition: geometry_mod.f:206
subroutine dif_phi_is(DIF, A_M, M)
Definition: conv_dif_phi.f:723
integer, dimension(:), allocatable k_of
Definition: indices_mod.f:47
double precision, dimension(:), allocatable ody_n
Definition: geometry_mod.f:123
integer, dimension(:), allocatable j_of
Definition: indices_mod.f:46
double precision, dimension(:), allocatable odx_e
Definition: geometry_mod.f:121
integer, dimension(:), allocatable jm1
Definition: indices_mod.f:51
double precision, dimension(:), allocatable ox
Definition: geometry_mod.f:140
integer north
Definition: param_mod.f:37
double precision, dimension(0:dim_i) dx
Definition: geometry_mod.f:68
integer south
Definition: param_mod.f:41
logical, dimension(:), allocatable cut_treatment_at
Definition: cutcell_mod.f:349
Definition: run_mod.f:13
double precision, dimension(:), allocatable axz
Definition: geometry_mod.f:208
Definition: param_mod.f:2
logical do_k
Definition: geometry_mod.f:30
logical, dimension(:), allocatable cut_cell_at
Definition: cutcell_mod.f:355
integer, dimension(:), allocatable km1
Definition: indices_mod.f:52
integer ijkstart3
Definition: compar_mod.f:80
integer west
Definition: param_mod.f:33
integer top
Definition: param_mod.f:45
integer dimension_m
Definition: param_mod.f:18
double precision, dimension(:), allocatable odz_t
Definition: geometry_mod.f:125
integer bottom
Definition: param_mod.f:49