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

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