MFIX  2016-1
calc_k_s.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Subroutine: CALC_K_s C
4 ! Purpose: Calculate the effective conductivity of solids phases C
5 ! C
6 ! C
7 ! Comments: C
8 ! This routine will not be called if k_s0(M) is defined C
9 ! C
10 ! C
11 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
12  SUBROUTINE calc_k_s(M)
13 
14 ! Modules
15 !---------------------------------------------------------------------//
16  USE param1, only: undefined
17  USE physprop, only: k_s0, k_s
18  USE sendrecv, only: send_recv
19 ! invoke user defined quantity
20  USE usr_prop, only: usr_ks, calc_usr_prop
21  USE usr_prop, only: solids_conductivity
22  IMPLICIT NONE
23 
24 ! Dummy arguments
25 !---------------------------------------------------------------------//
26 ! solids phase index
27  INTEGER, INTENT(IN) :: M
28 
29 !---------------------------------------------------------------------//
30 
31 
32  IF (usr_ks(m)) THEN
33  CALL calc_usr_prop(solids_conductivity,lm=m)
34  ELSEIF (k_s0(m) == undefined) THEN
35 ! unncessary check but included for clarity
36  CALL calc_default_ks(m)
37  ENDIF
38 
39  CALL send_recv(k_s, 2)
40 
41  RETURN
42  END SUBROUTINE calc_k_s
43 
44 
45 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
46 ! C
47 ! Subroutine: CALC_DEFAULT_Ks C
48 ! Purpose: Compute the default value for each solids phases C
49 ! conductivity where a solids phase is considered to be comprised of C
50 ! discrete ash particles C
51 ! C
52 ! Author:M. Syamlal Date: 24-APR-96 C
53 ! C
54 ! Literature/Document References: C
55 ! Bauer & Schlunder's (1978) theory C
56 ! C
57 ! C
58 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
59  SUBROUTINE calc_default_ks(M)
60 
61 ! Modules
62 !---------------------------------------------------------------------//
63  USE compar, only: ijkstart3, ijkend3
64  USE functions, only: fluid_at
65  USE fldvar, only: ep_g, ep_s
66  USE param1, only: one, zero
67  USE physprop, only: k_g, k_s
68  USE toleranc, only: dil_ep_s
69  USE run, only: units
70  IMPLICIT NONE
71 
72 ! Dummy arguments
73 !---------------------------------------------------------------------//
74 ! solids index
75  INTEGER, INTENT(IN) :: M
76 
77 ! Local parameters
78 !---------------------------------------------------------------------//
79 ! microscopic conductivity of ash in cal/s.cm.K
80 ! (not modified by the gas phase)
81  DOUBLE PRECISION :: Ks_micro
82  parameter(ks_micro = 0.5258d-2) !(2.2 J/s.m.K)
83 ! constant in conductivity equation
84  DOUBLE PRECISION :: PHI_k
85  parameter(phi_k = 7.26d-3)
86 
87 ! Local variables
88 !---------------------------------------------------------------------//
89 ! Indices
90  INTEGER :: IJK
91 ! Quantities in solids conductivity formula
92  DOUBLE PRECISION :: BB, R_km, BoR, L_rm
93 ! Transform K_g(IJK) into the CGS if we work with SI
94  DOUBLE PRECISION :: Kg_micro
95 !---------------------------------------------------------------------//
96 
97 !!$omp parallel do private(IJK,B,R_km,BoR,L_rm,Kg_micro) &
98 !!$omp& schedule(dynamic,chunk_size)
99  DO ijk = ijkstart3, ijkend3
100  IF (fluid_at(ijk)) THEN
101 
102 ! All calculations are in CGS (1 cal = 4.183925J) and then converted
103 ! to SI if needed
104  IF (units == 'SI') THEN
105 !convert k_g to CGS units (cal/s.cm.K)
106  kg_micro = k_g(ijk)/418.3925d0
107  ELSE
108 ! k_g already in CGS units (cal/s.cm.K)
109  kg_micro = k_g(ijk)
110  ENDIF
111 
112  IF( ep_s(ijk,m) > dil_ep_s) THEN
113  bb = 1.25d0 * ((one - ep_g(ijk))/ep_g(ijk))**(10.d0/9.d0)
114  r_km = ks_micro/kg_micro
115  bor = bb/r_km
116  l_rm = -(2.d0/(one-bor)) * &
117  ( ((r_km-one)/(one-bor)**2)*bor*log(bor) + &
118  (bb-one)/(one-bor) + (bb+one)/2.d0 )
119 ! K_s is the macroscopic conductivity that has been modified by the
120 ! presence of the gas phase (cal/s.cm.K)
121  k_s(ijk,m) = (phi_k*r_km + (one-phi_k)*l_rm)*&
122  kg_micro/sqrt(one - ep_g(ijk))
123  ELSE
124  k_s(ijk, m) = zero
125  ENDIF
126 
127 ! An approximate average value for the solids conductivity is 2.5*K_g
128 ! K_S(IJK,M) = 2.5*Kg_micro !in CGS system
129 
130  ELSE ! else branch if(fluid_at(ijk))
131  k_s(ijk,m) = zero
132  ENDIF ! end if/else (fluid_at(ijk))
133 
134  IF (units == 'SI') k_s(ijk, m) = 418.3925d0*k_s(ijk, m) !J/s.m.K
135 
136  ENDDO ! end do (ijk=ijkstart3,ijkend3)
137 
138  RETURN
139  END SUBROUTINE calc_default_ks
140 
141 
integer ijkend3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable ep_g
Definition: fldvar_mod.f:15
double precision, parameter one
Definition: param1_mod.f:29
subroutine calc_k_s(M)
Definition: calc_k_s.f:13
double precision, parameter undefined
Definition: param1_mod.f:18
subroutine calc_usr_prop(lprop, lM, lL, lerr)
Definition: usr_prop_mod.f:49
double precision, dimension(dim_m) k_s0
Definition: physprop_mod.f:95
subroutine calc_default_ks(M)
Definition: calc_k_s.f:60
Definition: run_mod.f:13
double precision, parameter dil_ep_s
Definition: toleranc_mod.f:24
character(len=16) units
Definition: run_mod.f:30
integer ijkstart3
Definition: compar_mod.f:80
logical, dimension(dim_m) usr_ks
Definition: usr_prop_mod.f:17
double precision function ep_s(IJK, xxM)
Definition: fldvar_mod.f:178
double precision, dimension(:), allocatable k_g
Definition: physprop_mod.f:92
double precision, dimension(:,:), allocatable k_s
Definition: physprop_mod.f:98
double precision, parameter zero
Definition: param1_mod.f:27