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