MFIX  2016-1
set_geometry1.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Module name: SET_GEOMETRY1 C
4 ! Purpose: Calculate cell volumes and face areas C
5 ! C
6 ! Author: M. Syamlal Date: 1-MAY-96 C
7 ! Reviewer: C
8 ! Literature/Document References: C
9 ! C
10 ! Variables referenced: COORDINATES, IMAX2, DT, DX, JMAX2, DY, KMAX2, C
11 ! DZ, C
12 ! C
13 ! Variables modified: C
14 ! Local variables: C
15 ! C
16 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
17 !
18  SUBROUTINE set_geometry1
19 !...Translated by Pacific-Sierra Research VAST-90 2.06G5 12:17:31 12/09/98
20 !...Switches: -xf
21 !
22 ! Include param.inc file to specify parameter values
23 !
24 !-----------------------------------------------
25 ! M o d u l e s
26 !-----------------------------------------------
27  USE param
28  USE param1
29  USE parallel
30  USE run
31  USE geometry
32  USE indices
33  USE compar
34  USE functions
35 
36  IMPLICIT NONE
37 !-----------------------------------------------
38 ! G l o b a l P a r a m e t e r s
39 !-----------------------------------------------
40 !-----------------------------------------------
41 ! L o c a l P a r a m e t e r s
42 !-----------------------------------------------
43 !-----------------------------------------------
44 ! L o c a l V a r i a b l e s
45 !-----------------------------------------------
46 !
47 ! Indices
48  INTEGER I, J, K, IP, JP, KP, IJK
49  INTEGER i_cyl_min, i_cyl_max
50 !
51 !-----------------------------------------------
52 !
53 ! Indices
54 !
55 !!!!$omp parallel do private( I, J, K, IP, JP, KP, IJK) &
56 !!!!$omp schedule(dynamic,chunk_size)
57 ! For cylindrical_2D simulations
58  IF(cylindrical_2d)THEN
59  if(mod(imax,2).eq.1)then ! odd
60  i_cyl_min = (imax+1)/2 + 1 - i_cyl_num
61  i_cyl_max = (imax+1)/2 + 1 + i_cyl_num
62  else
63  i_cyl_min = (imax)/2 + 2 - i_cyl_num
64  i_cyl_max = (imax)/2 + 1 + i_cyl_num
65  endif
66  ENDIF
67 
68  DO ijk = ijkstart3, ijkend3
69 
70 !
71  i = i_of(ijk)
72  ip = ip1(i)
73  j = j_of(ijk)
74  jp = jp1(j)
75  k = k_of(ijk)
76  kp = kp1(k)
77 
78  IF(.NOT.is_on_mype_plus2layers(i,j,k)) cycle
79  IF (dead_cell_at(i,j,k)) cycle ! skip dead cells
80 
81 !
82  vol(ijk) = dx(i)*dy(j)*(x(i)*dz(k))
83  vol_u(ijk) = half*(dx(i)+dx(ip))*dy(j)*(half*(x(i)+x(ip))*dz(k))
84  vol_v(ijk) = dx(i)*half*(dy(j)+dy(jp))*(x(i)*dz(k))
85  vol_w(ijk) = dx(i)*dy(j)*(x(i)*half*(dz(k)+dz(kp)))
86 !
87  ayz(ijk) = dy(j)*(x_e(i)*dz(k))
88  ayz_u(ijk) = dy(j)*(x(ip)*dz(k))
89  ayz_v(ijk) = half*(dy(j)+dy(jp))*(x_e(i)*dz(k))
90  ayz_w(ijk) = dy(j)*(x_e(i)*half*(dz(k)+dz(kp)))
91 !
92  axy(ijk) = dx(i)*dy(j)
93  axy_u(ijk) = half*(dx(i)+dx(ip))*dy(j)
94  axy_v(ijk) = dx(i)*half*(dy(j)+dy(jp))
95  axy_w(ijk) = axy(ijk)
96 !
97  axz(ijk) = dx(i)*(x(i)*dz(k))
98  axz_u(ijk) = half*(dx(i)+dx(ip))*(half*(x(i)+x(ip))*dz(k))
99  axz_v(ijk) = axz(ijk)
100  axz_w(ijk) = dx(i)*(x(i)*half*(dz(k)+dz(kp)))
101 
102 
103  if(cylindrical_2d)then
104  vol(ijk) = dx(i)*dy(j)*(cyl_x(i))
105  vol_u(ijk) = half*(dx(i)+dx(ip))*dy(j)*(half*(cyl_x(i)+cyl_x(ip)))
106  vol_v(ijk) = dx(i)*half*(dy(j)+dy(jp))*(cyl_x(i))
107  vol_w(ijk) = dx(i)*dy(j)*(cyl_x(i))
108 !
109  ayz(ijk) = dy(j)*(cyl_x_e(i))
110  ayz_u(ijk) = dy(j)*(cyl_x(ip))
111  ayz_v(ijk) = half*(dy(j)+dy(jp))*(cyl_x_e(i))
112  ayz_w(ijk) = dy(j)*(cyl_x_e(i))
113 !
114  axy(ijk) = dx(i)*dy(j)
115  axy_u(ijk) = half*(dx(i)+dx(ip))*dy(j)
116  axy_v(ijk) = dx(i)*half*(dy(j)+dy(jp))
117  axy_w(ijk) = axy(ijk)
118 !
119  axz(ijk) = dx(i)*(cyl_x(i))
120  axz_u(ijk) = half*(dx(i)+dx(ip))*(half*(cyl_x(i)+cyl_x(ip)))
121  axz_v(ijk) = axz(ijk)
122  axz_w(ijk) = dx(i)*(cyl_x(i))
123 
124  if(i.ge.i_cyl_min -i_cyl_transition .and. i.le.i_cyl_max +i_cyl_transition)then
125  vol_u(ijk) = half*dx(i)*dy(j)*half*(half*(cyl_x_e(i-1) + cyl_x_e(i))+cyl_x_e(i)) + &
126  half*dx(i+1)*dy(j)*half*(half*(cyl_x_e(i) + cyl_x_e(i+1))+cyl_x_e(i))
127  axz_u(ijk) = half*dx(i)*half*(half*(cyl_x_e(i-1) + cyl_x_e(i))+cyl_x_e(i)) + &
128  half*dx(i+1)*half*(half*(cyl_x_e(i) + cyl_x_e(i+1))+cyl_x_e(i))
129  endif
130  endif
131 
132  END DO
133  RETURN
134  END SUBROUTINE set_geometry1
135 
136 !// Comments on the modifications for DMP version implementation
137 !// 350 1025 change do loop limits: 1,ijkmax2-> ijkstart3, ijkend3
138 !// 360 Check if i,j,k resides on current processor
integer, dimension(:), allocatable ip1
Definition: indices_mod.f:50
double precision, dimension(:), allocatable vol_w
Definition: geometry_mod.f:242
integer, dimension(:), allocatable i_of
Definition: indices_mod.f:45
integer ijkend3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable cyl_x
Definition: geometry_mod.f:181
double precision, dimension(:), allocatable axy
Definition: geometry_mod.f:210
double precision, dimension(:), allocatable cyl_x_e
Definition: geometry_mod.f:183
double precision, dimension(:), allocatable x_e
Definition: geometry_mod.f:134
subroutine set_geometry1
Definition: set_geometry1.f:19
double precision, dimension(0:dim_j) dy
Definition: geometry_mod.f:70
double precision, dimension(:), allocatable ayz_u
Definition: geometry_mod.f:218
double precision, dimension(0:dim_k) dz
Definition: geometry_mod.f:72
double precision, dimension(:), allocatable ayz
Definition: geometry_mod.f:206
double precision, dimension(:), allocatable ayz_v
Definition: geometry_mod.f:227
integer imax
Definition: geometry_mod.f:47
double precision, dimension(:), allocatable axz_u
Definition: geometry_mod.f:220
integer, dimension(:), allocatable k_of
Definition: indices_mod.f:47
integer i_cyl_num
Definition: geometry_mod.f:176
logical, dimension(:,:,:), allocatable dead_cell_at
Definition: compar_mod.f:127
integer, dimension(:), allocatable j_of
Definition: indices_mod.f:46
double precision, dimension(:), allocatable axy_v
Definition: geometry_mod.f:231
integer, dimension(:), allocatable jp1
Definition: indices_mod.f:51
double precision, dimension(0:dim_i) dx
Definition: geometry_mod.f:68
integer, dimension(:), allocatable kp1
Definition: indices_mod.f:52
double precision, parameter half
Definition: param1_mod.f:28
Definition: run_mod.f:13
double precision, dimension(:), allocatable axz
Definition: geometry_mod.f:208
double precision, dimension(:), allocatable ayz_w
Definition: geometry_mod.f:236
Definition: param_mod.f:2
double precision, dimension(:), allocatable axz_w
Definition: geometry_mod.f:238
integer ijkstart3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable axy_w
Definition: geometry_mod.f:240
double precision, dimension(:), allocatable vol_u
Definition: geometry_mod.f:224
integer i_cyl_transition
Definition: geometry_mod.f:179
double precision, dimension(:), allocatable vol
Definition: geometry_mod.f:212
double precision, dimension(:), allocatable axy_u
Definition: geometry_mod.f:222
logical cylindrical_2d
Definition: geometry_mod.f:173
double precision, dimension(:), allocatable axz_v
Definition: geometry_mod.f:229
double precision, dimension(:), allocatable x
Definition: geometry_mod.f:129
double precision, dimension(:), allocatable vol_v
Definition: geometry_mod.f:233