File: /nfs/home/0/users/jenkins/mfix.git/model/set_constprop.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  Subroutine: set_constprop                                           C
4     !  Purpose: This routine sets various constant physical properties     C
5     !                                                                      C
6     !  Author: M. Syamlal                                 Date: 12-MAY-97  C
7     !                                                                      C
8     !  Local variables:                                                    C
9     !                                                                      C
10     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
11     
12           SUBROUTINE SET_CONSTPROP
13     
14     !-----------------------------------------------
15     ! Modules
16     !-----------------------------------------------
17           USE param
18           USE param1, only: zero, half, one, undefined
19           USE fldvar
20           USE visc_s
21           USE visc_g
22           USE energy
23           USE geometry
24           USE indices
25           USE physprop
26           USE constant, only: ep_s_max_ratio, d_p_ratio, ep_s_max, m_max
27           use constant, only: ep_star, l_scale0
28           USE run
29           USE drag, only: f_gs, f_ss
30           USE compar
31           use kintheory
32           use mms, only: use_mms
33           use functions
34     
35           IMPLICIT NONE
36     !-----------------------------------------------
37     ! Local variables
38     !-----------------------------------------------
39     ! indices
40           INTEGER :: IJK, M, I, J
41           DOUBLE PRECISION :: old_value, DP_TMP(SMAX)
42     !-----------------------------------------------
43     
44     ! Initialize transport coefficients to zero everywhere
45           MU_gt = ZERO
46           LAMBDA_GT = ZERO
47           MU_s = ZERO
48           LAMBDA_s_c = ZERO
49           LAMBDA_s = ZERO
50           K_g = ZERO
51           K_s = ZERO
52           DIF_g = ZERO
53           DIF_S = ZERO
54           F_GS = ZERO
55           F_SS = ZERO
56     
57     ! Set the flag for recalculating gas viscosity.
58           RECALC_VISC_G = (ENERGY_EQ .OR. L_SCALE0/=ZERO .OR. K_EPSILON)
59     
60     ! Set default value for virtual mass coefficient
61           Cv = HALF
62     
63     ! Variables specific to various kinetic theory models
64           IF (KT_TYPE_ENUM == IA_2005) THEN
65              MU_sM_ip = ZERO
66              MU_sL_ip = ZERO
67              XI_sM_ip = ZERO
68              XI_sL_ip = ZERO
69              Fnu_s_ip = ZERO
70              FT_sM_ip = ZERO
71              FT_sL_ip = ZERO
72              Kth_sL_ip = ZERO
73              Knu_sM_ip = ZERO
74              Knu_sL_ip = ZERO
75              Kvel_s_ip = ZERO
76              ED_ss_ip = ZERO
77              EDvel_sL_ip = ZERO
78           ENDIF
79           IF (KT_TYPE_ENUM == IA_2005 .OR. KT_TYPE_ENUM == GD_1999 .OR.  &
80               KT_TYPE_ENUM == GTSH_2012) THEN
81              EDT_s_ip = ZERO
82              EDvel_sM_ip = ZERO
83           ENDIF
84           IF(KT_TYPE_ENUM == GTSH_2012) THEN
85              A2_gtsh = ZERO
86              xsi_gtsh = zero
87           ENDIF
88     
89     ! Set specified constant physical properties values
90           DO IJK = ijkstart3, ijkend3
91     
92     ! All wall cells: FLAG >= 100
93              IF (WALL_AT(IJK) .AND. .NOT.USE_MMS) THEN
94                 RO_G(IJK) = ZERO
95                 MU_G(IJK) = ZERO
96                 K_G(IJK) = ZERO
97                 C_PG(IJK) = ZERO
98                 MW_MIX_G(IJK) = ZERO
99              ELSE
100     ! Fluid and inflow/outflow cells: FLAG < 100
101                 IF (RO_G0 /= UNDEFINED) RO_G(IJK) = RO_G0
102                 IF (C_PG0 /= UNDEFINED) C_PG(IJK) = C_PG0
103                 IF (MW_AVG /= UNDEFINED) MW_MIX_G(IJK) = MW_AVG
104     
105     ! Strictly fluid cells: FLAG = 1
106                 IF(FLUID_AT(IJK) .OR. USE_MMS) THEN
107                    IF (MU_G0 /= UNDEFINED) THEN
108                       MU_G(IJK) = MU_G0
109                       MU_GT(IJK) = MU_G0
110                       LAMBDA_GT(IJK) = -(2.0d0/3.0d0)*MU_G0
111                    ENDIF
112                    IF (K_G0 /= UNDEFINED) K_G(IJK) = K_G0
113                    IF (DIF_G0 /= UNDEFINED) DIF_G(IJK,:NMAX(0)) = DIF_G0
114                 ELSE
115     ! ONLY inflow/outflow cells: FLAG .NE. 1 and FLAG < 100
116     ! initialize transport coefficients to zero in inflow/outflow cells
117                    IF (MU_G0 /= UNDEFINED) THEN
118                       MU_G(IJK) = ZERO
119                       MU_GT(IJK) = ZERO
120                       LAMBDA_GT(IJK) = ZERO
121                    ENDIF
122                    IF (K_G0 /= UNDEFINED) K_G(IJK) = ZERO
123                    IF (DIF_G0 /= UNDEFINED) DIF_G(IJK,:NMAX(0)) = ZERO
124                 ENDIF
125              ENDIF
126     
127           ENDDO
128     
129     
130           DO M = 1, MMAX
131              DO IJK = ijkstart3, ijkend3
132     ! All wall cells: FLAG >= 100
133                 IF (WALL_AT(IJK) .AND. .NOT.USE_MMS) THEN
134                    P_S(IJK,M) = ZERO
135                    MU_S(IJK,M) = ZERO
136                    LAMBDA_S(IJK,M) = ZERO
137                    ALPHA_S(IJK,M) = ZERO
138                    K_S(IJK,M) = ZERO
139                    C_PS(IJK,M) = ZERO
140                    D_p(IJK,M) = ZERO
141                    RO_S(IJK,M) = ZERO
142                 ELSE
143     ! Fluid and inflow/outflow cells: FLAG < 100
144                    IF (RO_S0(M) /= UNDEFINED) RO_S(IJK,M) = RO_S0(M)
145                    IF (C_PS0(M) /= UNDEFINED) C_PS(IJK,M) = C_PS0(M)
146                    IF (D_P0(M) /= UNDEFINED) D_P(IJK,M) = D_P0(M)
147     
148     ! Strictly fluid cells: FLAG = 1
149                    IF(FLUID_AT(IJK) .OR. USE_MMS) THEN
150                       IF (MU_S0 /= UNDEFINED) THEN
151                          P_S(IJK,M) = ZERO
152                          MU_S(IJK,M) = MU_S0
153                          LAMBDA_S(IJK,M) = (-2./3.)*MU_S(IJK,M)
154                          ALPHA_S(IJK,M) = ZERO
155                       ENDIF
156                       IF (K_S0(M) /= UNDEFINED) K_S(IJK,M) = K_S0(M)
157                       IF (DIF_S0 /= UNDEFINED) DIF_S(IJK,M,:NMAX(M)) = DIF_S0
158                    ELSE
159     ! ONLY inflow/outflow cells: FLAG .NE. 1 and FLAG < 100
160     ! initialize transport coefficients to zero in inflow/outflow cells
161                       IF (MU_S0 /= UNDEFINED) THEN
162                          P_S(IJK,M) = ZERO
163                          MU_S(IJK,M) = ZERO
164                          LAMBDA_S(IJK,M) = ZERO
165                          ALPHA_S(IJK,M) = ZERO
166                       ENDIF
167                       IF (K_S0(M) /= UNDEFINED) K_S(IJK,M) = ZERO
168                       IF (DIF_S0 /= UNDEFINED) DIF_S(IJK,M,:NMAX(M)) = ZERO
169                    ENDIF
170                 ENDIF
171     
172     
173     ! set ep_star_array to user input ep_star in all cells.
174                 EP_star_array(ijk) = ep_star
175     ! initializing blending stress parameters
176                 IF(BLENDING_STRESS.AND.TANH_BLEND) THEN
177                    ep_g_blend_start(ijk) = ep_star_array(ijk) * 0.99d0
178                    ep_g_blend_end(ijk)   = ep_star_array(ijk) * 1.01d0
179                 ELSE IF(BLENDING_STRESS.AND.SIGM_BLEND) THEN
180                    ep_g_blend_start(ijk) = ep_star * 0.97d0
181                    ep_g_blend_end(ijk) = ep_star * 1.01d0
182                 ELSE
183                    ep_g_blend_start(ijk) = ep_star_array(ijk)
184                    ep_g_blend_end(ijk)   = ep_star_array(ijk)
185                 ENDIF
186     
187              ENDDO   ! end loop over ijk
188           ENDDO   ! end loop over MMAX
189     
190     
191           IF (RO_G0 == ZERO .AND. MMAX > 0) THEN
192              IF(allocated(F_GS)) F_GS = ZERO
193           ENDIF
194     
195     
196     ! Initializing parameters needed if a correlation is used to compute
197     ! ep_star: initializing the indexing system.
198           IF(YU_STANDISH .OR. FEDORS_LANDEL) THEN
199              DO M = 1, SMAX
200                 IF(EP_S_MAX(M) == UNDEFINED) EP_S_MAX(M) = ONE-EP_STAR
201              ENDDO
202     
203              IF (.NOT.CALL_DQMOM) THEN
204     
205     ! refer to Syam's dissertation
206                 IF (SMAX == 2) THEN
207                    ep_s_max_ratio(1,2) = ep_s_max(1)/ &
208                       (ep_s_max(1)+(1.-ep_s_max(1))*ep_s_max(2))
209                 ENDIF
210     
211     ! initialize local variables
212                 DO I = 1, SMAX
213                    DP_TMP(I) = D_P0(I)
214                    M_MAX(I) = I
215                 ENDDO
216     
217     ! Rearrange the indices from coarsest particles to finest to be
218     ! used in CALC_ep_star. Done here because it may need to be done
219     ! for auto_restart
220                 DO I = 1, SMAX
221                    DO J = I, SMAX
222                       IF(DP_TMP(I) < DP_TMP(J)) THEN
223                          old_value = DP_TMP(I)
224                          DP_TMP(I) = DP_TMP(J)
225                          DP_TMP(J) = old_value
226                       ENDIF
227                    ENDDO
228                 ENDDO
229     
230                 DO I = 1, SMAX
231                    DO J = 1, SMAX
232                       IF(DP_TMP(I) == D_P0(J) .AND. D_P0(I) .NE. D_P0(J)) THEN
233                          M_MAX(I) = J
234                       ENDIF
235                    ENDDO
236                 ENDDO
237              ENDIF    ! if .not. call_dqmom
238           ELSE   ! if .not. Yu-standish or Fedors-Landel
239              EP_S_MAX(:) = ZERO
240              EP_S_MAX_RATIO(:,:) = ZERO
241              D_P_RATIO(:,:) = ZERO
242              M_MAX(:) = ZERO
243           ENDIF
244     
245           RETURN
246           END SUBROUTINE SET_CONSTPROP
247