MFIX  2016-1
kintheory_v_s.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Subroutine: CALC_IA_MOMSOURCE_V_S C
4 ! Purpose: Determine source terms for V_S momentum equation arising C
5 ! from IA kinetic theory constitutive relations for stress C
6 ! and solid-solid drag C
7 ! C
8 ! Literature/Document References: C
9 ! Idir, Y.H., "Modeling of the multiphase mixture of particles C
10 ! using the kinetic theory approach," PhD Thesis, Illinois C
11 ! Institute of Technology, Chicago, Illinois, 2004 C
12 ! Iddir, Y.H., & H. Arastoopour, "Modeling of multitype particle C
13 ! flow using the kinetic theory approach," AIChE J., Vol 51, C
14 ! No 6, June 2005 C
15 ! C
16 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
17 
18  SUBROUTINE calc_ia_momsource_v_s(M)
19 
20 !-----------------------------------------------
21 ! Modules
22 !-----------------------------------------------
23  USE param1, only: zero
24  USE constant, only: pi
25 
26 ! trace of D_s at i, j, k
27  USE visc_s, only: trd_s
28 
29 ! number of solids phases
30  USE physprop, only: mmax
31 
32 ! x,y,z-components of solids velocity
33  USE fldvar, only: u_s, v_s, w_s
34 ! particle diameter, bulk density, material density
35  USE fldvar, only: d_p, rop_s, ro_s
36 ! granular temperature
37  USE fldvar, only: theta_m, ep_s
38 ! dilute threshold
39  USE toleranc, only: dil_ep_s
40 
41  Use kintheory
42 
43  USE geometry
44  USE indices
45  USE compar
46  USE fun_avg
47  USE functions
48 
49  IMPLICIT NONE
50 !-----------------------------------------------
51 ! Dummy arguments
52 !-----------------------------------------------
53 ! solids phase index
54  INTEGER, INTENT(IN) :: M
55 !-----------------------------------------------
56 ! Local variables
57 !-----------------------------------------------
58 ! Temporary variable
59  DOUBLE PRECISION :: STRESS_TERMS, DRAG_TERMS
60 ! Indices
61  INTEGER :: I, J, K, IJK, IJKN, JP, IM, KM, IJPK, IJMK,&
62  IJKE, IJKNE, IJKW, IJKNW, IMJPK, IMJK, IJKT,&
63  IJKTN, IJKB, IJKBN, IJKM, IJPKM,&
64  IPJK, IJKP
65 ! Phase index
66  INTEGER :: L
67 ! Viscosity values
68  DOUBLE PRECISION :: MU_sL_pE, MU_sL_pW, MU_sL_pN, MU_sL_pS, MU_sL_pT,&
69  MU_sL_pB
70 ! Bulk viscosity values
71  DOUBLE PRECISION :: XI_sL_pN, XI_sL_pS, LAMBDA_sL_pN, LAMBDA_sL_pS
72 ! Variables for drag calculations
73  DOUBLE PRECISION :: M_PM, M_PL, D_PM, D_PL, NU_PM_pN, NU_PM_pS, NU_PM_p, &
74  NU_PL_pN, NU_PL_pS, NU_PL_p, T_PM_pN, T_PM_pS, &
75  T_PL_pN, T_PL_pS, Fnu_s_p, FT_sM_p, FT_sL_p
76 ! Average volume fraction
77  DOUBLE PRECISION :: EPSA
78 ! Source terms (Surface)
79  DOUBLE PRECISION :: ssvx, ssvy, ssvz, ssx, ssy, ssz, ssbv
80 ! Source terms (Volumetric)
81  DOUBLE PRECISION :: DS1, DS2, DS3, DS4, DS1plusDS2
82 !-----------------------------------------------
83 
84 ! section largely based on tau_v_g:
85 
86  DO ijk = ijkstart3, ijkend3
87 
88 ! Skip walls where some values are undefined.
89  IF(wall_at(ijk)) cycle
90 
91  d_pm = d_p(ijk,m)
92  m_pm = (pi/6d0) * d_pm**3 *ro_s(ijk,m)
93 
94  j = j_of(ijk)
95  ijkn = north_of(ijk)
96  epsa = avg_y(ep_s(ijk,m),ep_s(ijkn,m),j)
97  IF ( .NOT.sip_at_n(ijk) .AND. epsa>dil_ep_s) THEN
98 
99  jp = jp1(j)
100  i = i_of(ijk)
101  im = im1(i)
102  k = k_of(ijk)
103  km = km1(k)
104  ijpk = jp_of(ijk)
105  ijmk = jm_of(ijk)
106  imjk = im_of(ijk)
107  ijkm = km_of(ijk)
108  imjpk = im_of(ijpk)
109  ijpkm = jp_of(ijkm)
110 
111  ijkw = west_of(ijk)
112  ijke = east_of(ijk)
113  ijkne = east_of(ijkn)
114  ijknw = north_of(ijkw)
115 
116  ijkb = bottom_of(ijk)
117  ijkt = top_of(ijk)
118  ijktn = north_of(ijkt)
119  ijkbn = north_of(ijkb)
120 
121 ! additional required quantities:
122  ipjk = ip_of(ijk)
123  ijkp = kp_of(ijk)
124 
125 ! initialize variable
126  stress_terms = zero
127  drag_terms = zero
128 
129  DO l = 1, mmax
130  IF (m .ne. l) THEN
131 
132 !--------------------- Sources from Stress Terms ---------------------
133 ! Surface Forces
134 ! standard shear stress terms (i.e. ~diffusion)
135  mu_sl_pe = avg_y_h(avg_x_h(mu_sl_ip(ijk,m,l),mu_sl_ip(ijke,m,l),i),&
136  avg_x_h(mu_sl_ip(ijkn,m,l),mu_sl_ip(ijkne,m,l),i),j)
137  mu_sl_pw = avg_y_h(avg_x_h(mu_sl_ip(ijkw,m,l),mu_sl_ip(ijk,m,l),im),&
138  avg_x_h(mu_sl_ip(ijknw,m,l),mu_sl_ip(ijkn,m,l),im),j)
139  ssvx = mu_sl_pe*(v_s(ipjk,l)-v_s(ijk,l))*ayz_v(ijk)*odx_e(i)&
140  -mu_sl_pw*(v_s(ijk,l)-v_s(imjk,l))*ayz_v(imjk)*odx_e(im)
141 
142  mu_sl_pn = mu_sl_ip(ijkn,m,l)
143  mu_sl_ps = mu_sl_ip(ijk,m,l)
144  ssvy = mu_sl_pn*(v_s(ijpk,l)-v_s(ijk,l))*ody(jp)*axz_v(ijk)&
145  -mu_sl_ps*(v_s(ijk,l)-v_s(ijmk,l))*ody(j)*axz_v(ijmk)
146 
147  mu_sl_pt = avg_y_h(avg_z_h(mu_sl_ip(ijk,m,l),mu_sl_ip(ijkt,m,l),k),&
148  avg_z_h(mu_sl_ip(ijkn,m,l),mu_sl_ip(ijktn,m,l),k),j)
149  mu_sl_pb = avg_y_h(avg_z_h(mu_sl_ip(ijkb,m,l),mu_sl_ip(ijk,m,l),km),&
150  avg_z_h(mu_sl_ip(ijkbn,m,l),mu_sl_ip(ijkn,m,l),km),j)
151  ssvz = mu_sl_pt*(v_s(ijkp,l)-v_s(ijk,l))*axy_v(ijk)*odz_t(k)*ox(i)&
152  -mu_sl_pb*(v_s(ijk,l)-v_s(ijkm,l))*axy_v(ijkm)*odz_t(km)*ox(i)
153 
154 ! bulk viscosity term
155  xi_sl_pn = xi_sl_ip(ijkn,m,l)
156  xi_sl_ps = xi_sl_ip(ijk,m,l)
157  lambda_sl_pn = -(2.d0/3.d0)*mu_sl_pn + xi_sl_pn
158  lambda_sl_ps = -(2.d0/3.d0)*mu_sl_ps + xi_sl_ps
159  ssbv = (lambda_sl_pn*trd_s(ijkn,l)-lambda_sl_ps*trd_s(ijk,l))*axz(ijk)
160 
161 ! off diagonal shear stress terms
162  ssx = mu_sl_pe*(u_s(ijpk,l)-u_s(ijk,l))*ody_n(j)*ayz_v(ijk)&
163  -mu_sl_pw*(u_s(imjpk,l)-u_s(imjk,l))*ody_n(j)*ayz_v(imjk)
164  ssy = ssvy
165  ssz = mu_sl_pt*(w_s(ijpk,l)-w_s(ijk,l))*axy_v(ijk)*ody_n(j)&
166  -mu_sl_pb*(w_s(ijpkm,l)-w_s(ijkm,l))*axy_v(ijkm)*ody_n(j)
167 !--------------------- End Sources from Stress Term ---------------------
168 
169 
170 !--------------------- Sources from Momentum Source Term ---------------------
171 ! Momentum source associated with the difference in the gradients in
172 ! number density of solids phase m and all other solids phases
173  d_pl = d_p(ijk,l)
174  m_pl = (pi/6d0)* d_pl**3 *ro_s(ijk,l)
175 
176  nu_pm_pn = rop_s(ijkn,m)/m_pm
177  nu_pm_ps = rop_s(ijk,m)/m_pm
178  nu_pm_p = avg_y(nu_pm_ps,nu_pm_pn,j)
179 
180  nu_pl_pn = rop_s(ijkn,l)/m_pl
181  nu_pl_ps = rop_s(ijk,l)/m_pl
182  nu_pl_p = avg_y(nu_pl_ps,nu_pl_pn,j)
183 
184  fnu_s_p = avg_y(fnu_s_ip(ijk,m,l),fnu_s_ip(ijkn,m,l),j)
185  ds1 = fnu_s_p*nu_pl_p*(nu_pm_pn-nu_pm_ps)*ody_n(j)
186  ds2 = -fnu_s_p*nu_pm_p*(nu_pl_pn-nu_pl_ps)*ody_n(j)
187  ds1plusds2 = ds1 + ds2
188 
189 ! Momentum source associated with the gradient in granular
190 ! temperature of species M
191  t_pm_pn = theta_m(ijkn,m)
192  t_pm_ps = theta_m(ijk,m)
193 
194  ft_sm_p = avg_y(ft_sm_ip(ijk,m,l),ft_sm_ip(ijkn,m,l),j)
195  ds3 = ft_sm_p*(t_pm_pn-t_pm_ps)*ody_n(j)
196 
197 ! Momentum source associated with the gradient in granular
198 ! temperature of species L
199  t_pl_pn = theta_m(ijkn,l)
200  t_pl_ps = theta_m(ijk,l)
201 
202  ft_sl_p = avg_y(ft_sl_ip(ijk,m,l),ft_sl_ip(ijkn,m,l),j)
203  ds4 = ft_sl_p*(t_pl_pn-t_pl_ps)*ody_n(j)
204 !--------------------- End Sources from Momentum Source Term ---------------------
205 
206 
207 ! Add the terms
208  stress_terms = stress_terms + ssvx + ssvy + ssvz + &
209  ssbv + ssx + ssy + ssz
210  drag_terms = drag_terms + (ds1plusds2+ds3+ds4)*vol_v(ijk)
211 
212  ELSE ! if m .ne. L
213 ! for m = l all stress terms should already be handled in existing routines
214 ! for m = l all drag terms should become zero
215  stress_terms = stress_terms + zero
216  drag_terms = drag_terms + zero
217 
218  ENDIF ! if m .ne. L
219  ENDDO ! over L
220 
221  ktmom_v_s(ijk,m) = stress_terms + drag_terms
222  ELSE
223  ktmom_v_s(ijk,m) = zero
224  ENDIF ! dilute
225  ENDDO ! over ijk
226 
227  RETURN
228  END SUBROUTINE calc_ia_momsource_v_s
double precision, dimension(:,:), allocatable trd_s
Definition: visc_s_mod.f:63
double precision, dimension(:,:), allocatable v_s
Definition: fldvar_mod.f:105
double precision, dimension(:,:,:), allocatable fnu_s_ip
Definition: kintheory_mod.f:38
integer, dimension(:), allocatable i_of
Definition: indices_mod.f:45
integer ijkend3
Definition: compar_mod.f:80
double precision, dimension(:,:,:), allocatable mu_sl_ip
Definition: kintheory_mod.f:27
double precision, dimension(:), allocatable ody
Definition: geometry_mod.f:116
double precision, dimension(:,:,:), allocatable ft_sl_ip
Definition: kintheory_mod.f:43
double precision, dimension(:,:,:), allocatable ft_sm_ip
Definition: kintheory_mod.f:41
double precision, dimension(:,:), allocatable w_s
Definition: fldvar_mod.f:117
integer, dimension(:), allocatable im1
Definition: indices_mod.f:50
double precision, dimension(:,:), allocatable u_s
Definition: fldvar_mod.f:93
double precision, dimension(:), allocatable ayz_v
Definition: geometry_mod.f:227
integer, dimension(:), allocatable k_of
Definition: indices_mod.f:47
double precision, dimension(:), allocatable ody_n
Definition: geometry_mod.f:123
double precision, dimension(:,:), allocatable d_p
Definition: fldvar_mod.f:57
subroutine calc_ia_momsource_v_s(M)
Definition: kintheory_v_s.f:19
integer mmax
Definition: physprop_mod.f:19
integer, dimension(:), allocatable j_of
Definition: indices_mod.f:46
double precision, dimension(:), allocatable odx_e
Definition: geometry_mod.f:121
double precision, dimension(:), allocatable axy_v
Definition: geometry_mod.f:231
double precision, dimension(:,:,:), allocatable xi_sl_ip
Definition: kintheory_mod.f:31
double precision, dimension(:,:), allocatable ktmom_v_s
Definition: kintheory_mod.f:76
double precision, dimension(:), allocatable ox
Definition: geometry_mod.f:140
integer, dimension(:), allocatable jp1
Definition: indices_mod.f:51
double precision, dimension(:,:), allocatable theta_m
Definition: fldvar_mod.f:149
double precision, dimension(:), allocatable axz
Definition: geometry_mod.f:208
double precision, parameter dil_ep_s
Definition: toleranc_mod.f:24
double precision, dimension(:,:), allocatable ro_s
Definition: fldvar_mod.f:45
integer, dimension(:), allocatable km1
Definition: indices_mod.f:52
integer ijkstart3
Definition: compar_mod.f:80
double precision function ep_s(IJK, xxM)
Definition: fldvar_mod.f:178
double precision, dimension(:,:), allocatable rop_s
Definition: fldvar_mod.f:51
double precision, parameter pi
Definition: constant_mod.f:158
double precision, dimension(:), allocatable odz_t
Definition: geometry_mod.f:125
double precision, dimension(:), allocatable axz_v
Definition: geometry_mod.f:229
double precision, parameter zero
Definition: param1_mod.f:27
double precision, dimension(:), allocatable vol_v
Definition: geometry_mod.f:233