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