1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC 2 ! C 3 ! Subroutine: CALC_DIF_S C 4 ! Purpose: Calculate the effective diffusivity of solids phases C 5 ! C 6 ! C 7 ! Comments: C 8 ! This routine will not be called if dif_s0(M) is defined C 9 ! C 10 ! C 11 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C 12 SUBROUTINE CALC_DIF_S(M) 13 14 ! Modules 15 !---------------------------------------------------------------------// 16 USE param1, only: undefined 17 USE physprop, only: dif_s0, dif_s 18 USE sendrecv, only: send_recv 19 ! invoke user defined quantity 20 USE usr_prop, only: usr_difs, calc_usr_prop 21 USE usr_prop, only: solids_diffusivity 22 IMPLICIT NONE 23 24 ! Dummy arguments 25 !---------------------------------------------------------------------// 26 ! Solids phase index 27 INTEGER, INTENT(IN) :: M 28 29 !---------------------------------------------------------------------// 30 31 IF (USR_Difs(M)) THEN 32 CALL CALC_USR_PROP(Solids_Diffusivity,lm=M) 33 ELSEIF (Dif_s0(M) == UNDEFINED) THEN 34 CALL CALC_DEFAULT_DIF_SOLIDS(M) 35 ENDIF 36 37 CALL SEND_RECV(DIF_S, 2) 38 39 RETURN 40 END SUBROUTINE CALC_DIF_S 41 42 43 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC 44 ! C 45 ! Subroutine: CALC_DEFAULT_DIF_SOLIDS C 46 ! Purpose: Compute the default value of each solids phases effective C 47 ! diffusivity. Because species are not considered to diffuse in a C 48 ! solids the default diffusivsity is zero. C 49 ! C 50 ! Author:M. Syamlal Date: 13-EFB-98 C 51 ! C 52 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C 53 SUBROUTINE CALC_DEFAULT_DIF_SOLIDS(M) 54 55 ! Modules 56 !---------------------------------------------------------------------// 57 USE compar, only: ijkstart3, ijkend3 58 USE functions, only: fluid_at 59 USE fldvar, only: rop_s 60 USE param1, only: zero 61 USE physprop, only: nmax, dif_s 62 USE run, only: units 63 IMPLICIT NONE 64 65 ! Dummy arguments 66 !---------------------------------------------------------------------// 67 ! Solids phase index 68 INTEGER, INTENT(IN) :: M 69 70 ! Local variables 71 !---------------------------------------------------------------------// 72 ! Indices 73 INTEGER :: IJK 74 INTEGER :: N 75 ! binary diffusivity coefficient 76 DOUBLE PRECISION :: Dab 77 !---------------------------------------------------------------------// 78 79 Dab = ZERO !cm^2/s 80 IF(UNITS == 'SI') Dab = Dab*0.0001D0 !m^2/s 81 82 !!$omp parallel do private(n,ijk) & 83 !!$omp& schedule(dynamic,chunk_size) 84 DO N = 1, NMAX(M) 85 DO IJK = IJKSTART3, IJKEND3 86 IF (FLUID_AT(IJK)) THEN 87 DIF_S(IJK,M,N) = ROP_S(IJK,M)*Dab 88 ELSE 89 DIF_S(IJK,M,N) = ZERO 90 ENDIF 91 ENDDO 92 ENDDO 93 94 RETURN 95 END SUBROUTINE CALC_DEFAULT_DIF_SOLIDS 96 97 98 99