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

1     !
2     !
3     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
4     !                                                                      C
5     !  Module name: DIF_U_IS(Dif, A_m, B_m, M, IER)                        C
6     !  Purpose: Remove diffusive fluxes across internal surfaces.          C
7     !                                                                      C
8     !  Author: M. Syamlal                                 Date: 30-APR-97  C
9     !  Reviewer:                                          Date:            C
10     !                                                                      C
11     !                                                                      C
12     !  Literature/Document References:                                     C
13     !                                                                      C
14     !  Variables referenced:                                               C
15     !  Variables modified:                                                 C
16     !                                                                      C
17     !  Local variables:                                                    C
18     !                                                                      C
19     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
20     !
21           SUBROUTINE DIF_U_IS(DIF, A_M, B_M, M)
22     !...Translated by Pacific-Sierra Research VAST-90 2.06G5  12:17:31  12/09/98
23     !...Switches: -xf
24     !
25     !  Include param.inc file to specify parameter values
26     !
27     !-----------------------------------------------
28     !   M o d u l e s
29     !-----------------------------------------------
30           USE param
31           USE param1
32           USE parallel
33           USE matrix
34           USE scales
35           USE constant
36           USE toleranc
37           USE run
38           USE physprop
39           USE fldvar
40           USE geometry
41           USE output
42           USE indices
43           USE is
44           USE compar
45           USE fun_avg
46           USE functions
47           IMPLICIT NONE
48     !-----------------------------------------------
49     !   G l o b a l   P a r a m e t e r s
50     !-----------------------------------------------
51     !-----------------------------------------------
52     !   D u m m y   A r g u m e n t s
53     !-----------------------------------------------
54     
55     !                      Internal surface
56           INTEGER          L
57     !
58     !                      Indices
59           INTEGER          I,  J, K, I1, I2, J1, J2, K1, K2, IJK,&
60                            IJKE, IJKN, IJKT, IJPK, IJKP, IJKNE, IJKTE
61     !
62     !                      Solids phase
63           INTEGER          M
64     !
65     !                      Gamma -- diffusion coefficient
66           DOUBLE PRECISION Dif(DIMENSION_3)
67     !
68     !                      Septadiagonal matrix A_m
69           DOUBLE PRECISION A_m(DIMENSION_3, -3:3, 0:DIMENSION_M)
70     !
71     !                      Vector b_m
72           DOUBLE PRECISION B_m(DIMENSION_3, 0:DIMENSION_M)
73     !
74     !                      Difusion parameter
75           DOUBLE PRECISION D_f
76     !-----------------------------------------------
77     !
78     ! Make user defined internal surfaces non-conducting
79     !
80           DO L = 1, DIMENSION_IS
81              IF (IS_DEFINED(L)) THEN
82                 I1 = IS_I_W(L)
83                 I2 = IS_I_E(L)
84                 J1 = IS_J_S(L)
85                 J2 = IS_J_N(L)
86                 K1 = IS_K_B(L)
87                 K2 = IS_K_T(L)
88     !
89                 IF(I1.LE.IEND2)   I1 = MAX(I1, ISTART2)
90                 IF(J1.LE.JEND2)   J1 = MAX(J1, JSTART2)
91                 IF(K1.LE.KEND2)   K1 = MAX(K1, KSTART2)
92                 IF(I2.GE.ISTART2) I2 = MIN(I2, IEND2)
93                 IF(J2.GE.JSTART2) J2 = MIN(J2, JEND2)
94                 IF(K2.GE.KSTART2) K2 = MIN(K2, KEND2)
95     
96                 IF (IS_PLANE(L) == 'N') THEN
97     !
98                    DO K = K1, K2
99                       DO J = J1, J2
100                          DO I = I1, I2
101                             IF (.NOT.IS_ON_myPE_plus2layers(I,J,K)) CYCLE
102                             IF (DEAD_CELL_AT(I,J,K)) CYCLE  ! skip dead cells
103                             IJK = FUNIJK(I,J,K)
104                             IJKE = EAST_OF(IJK)
105                             IJKN = NORTH_OF(IJK)
106                             IJKNE = EAST_OF(IJKN)
107                             IJPK = JP_OF(IJK)
108     !
109                             D_F = AVG_X_H(AVG_Y_H(DIF(IJK),DIF(IJKN),J),AVG_Y_H(DIF&
110                                (IJKE),DIF(IJKNE),J),I)*ODY_N(J)*AXZ_U(IJK)
111     !
112                             A_M(IJK,N,M) = A_M(IJK,N,M) - D_F
113                             A_M(IJPK,S,M) = A_M(IJPK,S,M) - D_F
114                          END DO
115                       END DO
116                    END DO
117                 ELSE IF (IS_PLANE(L) == 'T') THEN
118                    IF (DO_K) THEN
119                       DO K = K1, K2
120                          DO J = J1, J2
121                             DO I = I1, I2
122                             IF (.NOT.IS_ON_myPE_plus2layers(I,J,K)) CYCLE
123                             IF (DEAD_CELL_AT(I,J,K)) CYCLE  ! skip dead cells
124                                IJK = FUNIJK(I,J,K)
125                                IJKE = EAST_OF(IJK)
126                                IJKT = TOP_OF(IJK)
127                                IJKTE = EAST_OF(IJKT)
128                                IJKP = KP_OF(IJK)
129     !
130                                D_F = AVG_X_H(AVG_Z_H(DIF(IJK),DIF(IJKT),K),AVG_Z_H(&
131                                   DIF(IJKE),DIF(IJKTE),K),I)*OX_E(I)*ODZ_T(K)*AXY_U&
132                                   (IJK)
133     !
134                                A_M(IJK,T,M) = A_M(IJK,T,M) - D_F
135                                A_M(IJKP,B,M) = A_M(IJKP,B,M) - D_F
136                             END DO
137                          END DO
138                       END DO
139                    ENDIF
140                 ENDIF
141              ENDIF
142           END DO
143     !
144     
145           RETURN
146           END SUBROUTINE DIF_U_IS
147     
148     !// Comments on the modifications for DMP version implementation
149     !// 001 Include header file and common declarations for parallelization
150     !// 300 Limit I1, I2 and all to local processor first ghost layer
151