MFIX  2016-1
cfwallposvel.f
Go to the documentation of this file.
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 
double precision, parameter one
Definition: param1_mod.f:29
double precision, dimension(dimension_bc, dim_m) des_bc_vw_s
Definition: des_bc_mod.f:119
double precision, dimension(dimension_bc, dim_m) des_bc_uw_s
Definition: des_bc_mod.f:118
Definition: drag_mod.f:11
subroutine cfwallposvel(L, IW, WALL_POS, WALL_VEL)
Definition: cfwallposvel.f:12
Definition: run_mod.f:13
Definition: param_mod.f:2
logical do_k
Definition: geometry_mod.f:30
double precision, dimension(dimension_bc, dim_m) des_bc_ww_s
Definition: des_bc_mod.f:120
double precision, parameter zero
Definition: param1_mod.f:27