File: N:\mfix\model\calc_k_s.f

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     
142