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

1     !
2     !
3     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
4     !                                                                      C
5     !  Module name: DIF_V_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_V_IS(DIF, A_M, B_M, M, IER)
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     !
56     !                      Error index
57           INTEGER          IER
58     !
59     !                      Internal surface
60           INTEGER          L
61     !
62     !                      Indices
63           INTEGER          I,  J, K, I1, I2, J1, J2, K1, K2, IJK,&
64                            IJKE, IJKN, IJKT, IPJK, IJKP, IJKNE, IJKTN
65     !
66     !                      Solids phase
67           INTEGER          M
68     !
69     !                      Gamma -- diffusion coefficient
70           DOUBLE PRECISION Dif(DIMENSION_3)
71     !
72     !                      Septadiagonal matrix A_m
73           DOUBLE PRECISION A_m(DIMENSION_3, -3:3, 0:DIMENSION_M)
74     !
75     !                      Vector b_m
76           DOUBLE PRECISION B_m(DIMENSION_3, 0:DIMENSION_M)
77     !
78     !                      Difusion parameter
79           DOUBLE PRECISION D_f
80     !
81     !-----------------------------------------------
82     !
83     !
84     ! Make user defined internal surfaces non-conducting
85     !
86           DO L = 1, DIMENSION_IS
87              IF (IS_DEFINED(L)) THEN
88                 I1 = IS_I_W(L)
89                 I2 = IS_I_E(L)
90                 J1 = IS_J_S(L)
91                 J2 = IS_J_N(L)
92                 K1 = IS_K_B(L)
93                 K2 = IS_K_T(L)
94     !
95                 IF (IS_PLANE(L) == 'E') THEN
96     !
97                    DO K = K1, K2
98                       DO J = J1, J2
99                          DO I = I1, I2
100                             IF (.NOT.IS_ON_myPE_plus2layers(I,J,K)) CYCLE
101                             IF (DEAD_CELL_AT(I,J,K)) CYCLE  ! skip dead cells
102                             IJK = FUNIJK(I,J,K)
103                             IJKE = EAST_OF(IJK)
104                             IJKN = NORTH_OF(IJK)
105                             IJKNE = EAST_OF(IJKN)
106                             IPJK = IP_OF(IJK)
107     !
108                             D_F = AVG_Y_H(AVG_X_H(DIF(IJK),DIF(IJKE),I),AVG_X_H(DIF&
109                                (IJKN),DIF(IJKNE),I),J)*ODX_E(I)*AYZ_V(IJK)
110     !
111                             A_M(IJK,E,M) = A_M(IJK,E,M) - D_F
112                             A_M(IPJK,W,M) = A_M(IPJK,W,M) - D_F
113                          END DO
114                       END DO
115                    END DO
116                 ELSE IF (IS_PLANE(L) == 'T') THEN
117                    IF (DO_K) THEN
118                       DO K = K1, K2
119                          DO J = J1, J2
120                             DO I = I1, I2
121                             IF (.NOT.IS_ON_myPE_plus2layers(I,J,K)) CYCLE
122                             IF (DEAD_CELL_AT(I,J,K)) CYCLE  ! skip dead cells
123                                IJK = FUNIJK(I,J,K)
124                                IJKN = NORTH_OF(IJK)
125                                IJKT = TOP_OF(IJK)
126                                IJKTN = NORTH_OF(IJKT)
127                                IJKP = KP_OF(IJK)
128     !
129                                D_F = AVG_Y_H(AVG_Z_H(DIF(IJK),DIF(IJKT),K),AVG_Z_H(&
130                                   DIF(IJKN),DIF(IJKTN),K),J)*OX(I)*ODZ_T(K)*AXY_V(&
131                                   IJK)
132     !
133                                A_M(IJK,T,M) = A_M(IJK,T,M) - D_F
134                                A_M(IJKP,B,M) = A_M(IJKP,B,M) - D_F
135                             END DO
136                          END DO
137                       END DO
138                    ENDIF
139                 ENDIF
140              ENDIF
141           END DO
142           RETURN
143           END SUBROUTINE DIF_V_IS
144     
145     !// Comments on the modifications for DMP version implementation
146     !// 001 Include header file and common declarations for parallelization
147