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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  Subroutine: ZERO_NORM_VEL                                           C
4     !  Purpose: Set the velocity component normal to a wall to zero        C
5     !                                                                      C
6     !  Author: M. Syamlal                                 Date: 14-MAY-92  C
7     !  Reviewer: S. Venkatesan                            Date: 11-DEC-92  C
8     !                                                                      C
9     !  Literature/Document References:                                     C
10     !                                                                      C
11     !  Variables referenced:                                               C
12     !  Variables modified:                                                 C
13     !  Local variables:                                                    C
14     !                                                                      C
15     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
16     
17           SUBROUTINE ZERO_NORM_VEL
18     
19     !-----------------------------------------------
20     ! Modules
21     !-----------------------------------------------
22           USE param
23           USE param1
24           USE parallel
25           USE geometry
26           USE physprop
27           USE fldvar
28           USE indices
29           USE is
30           USE compar
31           USE discretelement
32           USE mfix_pic
33           USE functions
34     
35           IMPLICIT NONE
36     !-----------------------------------------------
37     ! Local variables
38     !-----------------------------------------------
39     !
40           INTEGER :: ISV
41     ! Indicies
42           INTEGER :: IJK, IMJK, IJMK, IJKM
43           INTEGER :: M
44     
45     !!$omp  parallel do private( IMJK, IJMK, IJKM)
46     
47           DO IJK = ijkstart3, ijkend3
48     
49              IF (.NOT.WALL_AT(IJK)) THEN
50                 IF (IP_AT_E(IJK)) U_G(IJK) = ZERO
51                 IF (IP_AT_N(IJK)) V_G(IJK) = ZERO
52                 IF (IP_AT_T(IJK)) W_G(IJK) = ZERO
53              ELSE
54                 IMJK = IM_OF(IJK)
55                 IJMK = JM_OF(IJK)
56                 IJKM = KM_OF(IJK)
57                 U_G(IJK) = ZERO
58                 V_G(IJK) = ZERO
59                 W_G(IJK) = ZERO
60                 IF (.NOT.(CYCLIC_AT(IJK) .AND. (I_OF(IJK)==IMAX2 .OR. &
61                     I_OF(IJK)==IMAX3))) U_G(IMJK) = ZERO
62                 IF (.NOT.(CYCLIC_AT(IJK) .AND. (J_OF(IJK)==JMAX2 .OR. &
63                     J_OF(IJK)==JMAX3))) V_G(IJMK) = ZERO
64                 IF (.NOT.(CYCLIC_AT(IJK) .AND. (K_OF(IJK)==KMAX2 .OR. &
65                     K_OF(IJK)==KMAX3))) W_G(IJKM) = ZERO
66              ENDIF
67           ENDDO   ! end do (ijk=ijkstart3,ijkend3)
68     
69     
70           IF (.NOT.DISCRETE_ELEMENT .OR. DES_CONTINUUM_HYBRID .OR.MPPIC) THEN
71              DO M = 1, MMAX
72     !!$omp  parallel do private( ISV,  IMJK, IJMK, IJKM)
73                 DO IJK = ijkstart3, ijkend3
74     
75                    IF (.NOT.WALL_AT(IJK)) THEN
76                       IF (IP_AT_E(IJK)) THEN
77                          U_S(IJK,M) = ZERO
78                       ELSEIF (SIP_AT_E(IJK)) THEN
79                          ISV = FLAG_E(IJK) - 1000
80                          U_S(IJK,M) = IS_VEL_S(ISV,M)
81                       ENDIF
82                       IF (IP_AT_N(IJK)) THEN
83                          V_S(IJK,M) = ZERO
84                       ELSEIF (SIP_AT_N(IJK)) THEN
85                          ISV = FLAG_N(IJK) - 1000
86                          V_S(IJK,M) = IS_VEL_S(ISV,M)
87                       ENDIF
88                       IF (IP_AT_T(IJK)) THEN
89                          W_S(IJK,M) = ZERO
90                       ELSEIF (SIP_AT_T(IJK)) THEN
91                          ISV = FLAG_T(IJK) - 1000
92                          W_S(IJK,M) = IS_VEL_S(ISV,M)
93                       ENDIF
94                    ELSE
95                       IMJK = IM_OF(IJK)
96                       IJMK = JM_OF(IJK)
97                       IJKM = KM_OF(IJK)
98                       U_S(IJK,M) = ZERO
99                       V_S(IJK,M) = ZERO
100                       W_S(IJK,M) = ZERO
101                       IF (.NOT.(CYCLIC_AT(IJK) .AND. (I_OF(IJK)==IMAX2 .OR. &
102                           I_OF(IJK)==IMAX3))) U_S(IMJK,M) = ZERO
103                       IF (.NOT.(CYCLIC_AT(IJK) .AND. (J_OF(IJK)==JMAX2 .OR. &
104                           J_OF(IJK)==JMAX3))) V_S(IJMK,M) = ZERO
105                       IF (.NOT.(CYCLIC_AT(IJK) .AND. (K_OF(IJK)==KMAX2 .OR. &
106                           K_OF(IJK)==KMAX3))) W_S(IJKM,M) = ZERO
107                    ENDIF
108                 ENDDO   ! end do (ijk=ijkstart3,ijkend3)
109              ENDDO   ! end do (m=1,mmax)
110           ENDIF   ! endif (.not.discrete_element)
111     
112           RETURN
113     
114           END SUBROUTINE ZERO_NORM_VEL
115     
116     
117     
118