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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2     !
3     !  Subroutine: CFWALLPOSVEL
4     !  Purpose: Calculate the position and velocity of wall particle
5     !
6     !  Author: Jay Boyalakuntla                           Date: 12-Jun-04
7     !  Reviewer:                                          Date:
8     !
9     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
10     
11           SUBROUTINE CFWALLPOSVEL(L, IW, WALL_POS, WALL_VEL)
12     
13     !-----------------------------------------------
14     ! Modules
15     !-----------------------------------------------
16           USE discretelement
17           USE des_bc
18           USE param
19           USE param1
20           USE parallel
21           USE fldvar
22           USE run
23           USE geometry
24           USE matrix
25           USE indices
26           USE physprop
27           USE drag
28           USE constant
29           USE compar
30           IMPLICIT NONE
31     !-----------------------------------------------
32     ! Dummy arguments
33     !-----------------------------------------------
34     ! particle no. index
35           INTEGER, INTENT(IN) :: L
36     ! index of wall no. (1-6)
37           INTEGER, INTENT(IN) :: IW
38     ! wall position is returned, set based on particle position and radius
39           DOUBLE PRECISION, INTENT(INOUT) :: WALL_POS(3)
40     ! wall velocity is returned, set based on any wall bc settings
41           DOUBLE PRECISION, INTENT(INOUT) :: WALL_VEL(3)
42     !-----------------------------------------------
43     ! Local variables
44     !-----------------------------------------------
45     ! solids phase index of particle L
46           INTEGER M
47     ! local value for particle radius
48           DOUBLE PRECISION DES_R
49     !-----------------------------------------------
50     
51     ! initialize wall velocity
52           WALL_VEL = ZERO
53           WALL_POS = ZERO
54     
55           DES_R = DES_RADIUS(L)
56     
57     ! Assigning wall position and velocity
58     ! Find which solids phase the particle belongs to
59           M = PIJK(L,5)
60     
61     ! west wall; in 3D on yz plane (x=wx1->0)
62           IF(IW.EQ.1) THEN
63              WALL_POS(1) = WX1 - DES_R
64              WALL_POS(2) = DES_POS_NEW(2,L)
65              IF(DO_K) WALL_POS(3) = DES_POS_NEW(3,L)
66     
67              WALL_VEL(1) = ZERO
68              WALL_VEL(2) = DES_BC_Vw_s(IW,M)
69              IF(DO_K) WALL_VEL(3) = DES_BC_Ww_s(IW,M)
70     
71              WALL_NORMAL(1,1) = -ONE
72              WALL_NORMAL(1,2) = ZERO
73              WALL_NORMAL(1,3) = ZERO
74     
75     ! east wall; in 3D on yz plane (x=ex2->xlength)
76           ELSEIF(IW.EQ.2) THEN
77              WALL_POS(1) = EX2 + DES_R
78              WALL_POS(2) = DES_POS_NEW(2,L)
79              IF(DO_K) WALL_POS(3) = DES_POS_NEW(3,L)
80     
81              WALL_VEL(1) = ZERO
82              WALL_VEL(2) = DES_BC_Vw_s(IW,M)
83              IF(DO_K) WALL_VEL(3) = DES_BC_Ww_s(IW,M)
84     
85              WALL_NORMAL(2,1) = ONE
86              WALL_NORMAL(2,2) = ZERO
87              WALL_NORMAL(2,3) = ZERO
88     
89     ! bottom wall; in 3D on xz plane (y=by1->0)
90           ELSEIF(IW.EQ.3) THEN
91              WALL_POS(1) = DES_POS_NEW(1,L)
92              WALL_POS(2) = BY1 - DES_R
93              IF(DO_K) WALL_POS(3) = DES_POS_NEW(3,L)
94     
95              WALL_VEL(1) = DES_BC_Uw_s(IW,M)
96              WALL_VEL(2) = ZERO
97              IF(DO_K) WALL_VEL(3) = DES_BC_Ww_s(IW,M)
98     
99              WALL_NORMAL(3,1) = ZERO
100              WALL_NORMAL(3,2) = -ONE
101              WALL_NORMAL(3,3) = ZERO
102     
103     ! top wall; in 3D on xz plane (y=ty2->ylength)
104           ELSEIF(IW.EQ.4) THEN
105              WALL_POS(1) = DES_POS_NEW(1,L)
106              WALL_POS(2) = TY2 + DES_R
107              IF(DO_K) WALL_POS(3) = DES_POS_NEW(3,L)
108     
109              WALL_VEL(1) = DES_BC_Uw_s(IW,M)
110              WALL_VEL(2) = ZERO
111              IF(DO_K) WALL_VEL(3) = DES_BC_Ww_s(IW,M)
112     
113              WALL_NORMAL(4,1) = ZERO
114              WALL_NORMAL(4,2) = ONE
115              WALL_NORMAL(4,3) = ZERO
116     
117     ! south wall; in 3D on xy plane (z=sz1->0)
118           ELSEIF(IW.EQ.5) THEN
119              WALL_POS(1) = DES_POS_NEW(1,L)
120              WALL_POS(2) = DES_POS_NEW(2,L)
121              WALL_POS(3) = SZ1 - DES_R
122     
123              WALL_VEL(1) = DES_BC_Uw_s(IW,M)
124              WALL_VEL(2) = DES_BC_Vw_s(IW,M)
125              WALL_VEL(3) = ZERO
126     
127              WALL_NORMAL(5,1) = ZERO
128              WALL_NORMAL(5,2) = ZERO
129              WALL_NORMAL(5,3) = -ONE
130     
131     ! north wall; in 3D on xy plane (z=nz2->zlength)
132           ELSEIF(IW.EQ.6) THEN
133              WALL_POS(1) = DES_POS_NEW(1,L)
134              WALL_POS(2) = DES_POS_NEW(2,L)
135              WALL_POS(3) = NZ2 + DES_R
136     
137              WALL_VEL(1) = DES_BC_Uw_s(IW,M)
138              WALL_VEL(2) = DES_BC_Vw_s(IW,M)
139              WALL_VEL(3) = ZERO
140     
141              WALL_NORMAL(6,1) = ZERO
142              WALL_NORMAL(6,2) = ZERO
143              WALL_NORMAL(6,3) = ONE
144     
145           ENDIF
146     
147           RETURN
148           END SUBROUTINE CFWALLPOSVEL
149     
150     
151     
152