59 DOUBLE PRECISION :: DX_E
61 DOUBLE PRECISION :: DY_N
63 DOUBLE PRECISION :: DZ_T
65 integer i_cyl_min, i_cyl_max
66 double precision l_ver, l_ab, rrr, ddy
81 IF (cyclic_x_pd) cyclic_x = .true.
82 IF (cyclic_y_pd) cyclic_y = .true.
83 IF (cyclic_z_pd) cyclic_z = .true.
84 cyclic = cyclic_x .OR. cyclic_y .OR. cyclic_z
86 IF(cylindrical .AND.
compare(zlength,8.d0*atan(
one)) .AND. do_k) &
93 dx(imin3) = dx(imax1-1)
94 dx(imax3) = dx(imin1+1)
100 dy(jmax2) = dy(jmin1)
102 dy(jmin3) = dy(jmax1-1)
103 dy(jmax3) = dy(jmin1+1)
109 dz(kmax2) = dz(kmin1)
111 dz(kmin3) = dz(kmax1-1)
112 dz(kmax3) = dz(kmin1+1)
125 IF(xmin ==
zero)
THEN 139 x(1) = xmin -
half*dx(1)
141 x_e(1) = xmin + dx(1)
142 x(1) = xmin +
half*dx(1)
151 x(i) = x(i-1) + (dx(i-1)+dx(i))/2.
152 x_e(i) = x_e(i-1) + dx(i)
163 x_e(imin3:imax3) =
one 164 ox(imin3:imax3) =
one 165 ox_e(imin3:imax3) =
one 166 odx(imin3:imax3) =
one/dx(imin3:imax3)
175 IF(cylindrical_2d)
THEN 177 IF (xmin ==
zero)
THEN 208 if(mod(imax,2).eq.1)
then 209 i_cyl_min = (imax+1)/2 + 1 - i_cyl_num
210 i_cyl_max = (imax+1)/2 + 1 + i_cyl_num
212 do i=i_cyl_min, i_cyl_max
213 cyl_x(i)=dx(i)*(i_cyl_num +
half) *2.d0*sin(dz(1)/2
215 do i=i_cyl_min ,i_cyl_max -1
216 cyl_x_e(i)=dx(i)*(i_cyl_num +
half) *2.d0*sin(dz(1)
219 i_cyl_min = (imax)/2 + 2 - i_cyl_num
220 i_cyl_max = (imax)/2 + 1 + i_cyl_num
222 do i=i_cyl_min, i_cyl_max
223 cyl_x(i)=dx(i)* i_cyl_num *2.d0*sin(dz(1)/2.d0)
225 do i=i_cyl_min, i_cyl_max -1
226 cyl_x_e(i)=dx(i)* i_cyl_num *2.d0*sin(dz(1)/2.d0)
233 if(i_cyl_transition .eq. 1)
then 234 l_ver=dx(i_cyl_min)*tan(dz(1)/2.0)
235 l_ab = sqrt(l_ver*l_ver + (dx(i_cyl_min-1)+dx(i_cyl_min
241 elseif(i_cyl_transition .eq. 2)
then 242 l_ver=2.d0*dx(i_cyl_min)*tan(dz(1)/2.0)
243 l_ab = sqrt(l_ver*l_ver + (4.d0*dx(i_cyl_min))**2)
244 rrr =
half*l_ab/sin(dz(1)/4.0)
245 ddy = rrr - sqrt(rrr**2 - dx(i_cyl_min)**2)
250 ddy = rrr - sqrt(rrr**2 - (2.d0*dx(i_cyl_min))**2)
254 ddy = rrr - sqrt(rrr**2 - (3.d0*dx(i_cyl_min))**2)
261 do i=i_cyl_min - i_cyl_transition, i_cyl_max + i_cyl_transition
277 ody(jmin3:jmax3) =
one/dy(jmin3:jmax3)
286 z(k-1) =z_t(k) -
half*dz(k-1)
287 z_t(k-1) = z_t(k) - dz(k-1)
290 z(k) = z_t(k-1) +
half*dz(k)
291 z_t(k) = z_t(k-1) + dz(k)
295 IF(
nodesk.NE.1 .AND. k==1) odz(k-1) =
one/dz(k-1)
299 dx_e =
half*(dx(1)+dx(imin1))
300 dy_n =
half*(dy(1)+dy(jmin1))
301 dz_t =
half*(dz(1)+dz(kmin1))
324 fx_e_bar(imin3) =
half 329 fy_n_bar(jmin3) =
half 334 fz_t_bar(kmin3) =
half 341 dx_e =
half*(dx(i+1)+dx(i))
344 fx_bar(i) =
one - fx(i)
345 fx_e(i) = dx(i+1)/(dx(i+1)+dx(i))
346 fx_e_bar(i) =
one - fx_e(i)
353 dy_n =
half*(dy(j+1)+dy(j))
355 fy_n(j) = dy(j+1)/(dy(j+1)+dy(j))
356 fy_n_bar(j) =
one - fy_n(j)
363 dz_t =
half*(dz(k+1)+dz(k))
365 fz_t(k) = dz(k+1)/(dz(k+1)+dz(k))
366 fz_t_bar(k) =
one - fz_t(k)
374 odx_e(imax2) =
one/dx_e
375 ody_n(jmax2) =
one/dy_n
376 odz_t(kmax2) =
one/dz_t
380 fx_e_bar(imax2) =
half 383 fy_n_bar(jmax2) =
half 386 fz_t_bar(kmax2) =
half 388 fz_t_bar(kmax3) =
half 390 odx_e(imax3) =
one/dx_e
391 ody_n(jmax3) =
one/dy_n
392 odz_t(kmax3) =
one/dz_t
396 fx_e_bar(imax3) =
half 399 fy_n_bar(jmax3) =
half 403 fx_e(1) = fx_e(imax1)
404 fx_e_bar(1) = fx_e_bar(imax1)
406 fx_e(imin3) = fx_e(imax1-1)
407 fx_e_bar(imin3) = fx_e_bar(imax1-1)
411 fy_n(1) = fy_n(jmax1)
412 fy_n_bar(1) = fy_n_bar(jmax1)
414 fy_n(jmin3) = fy_n(jmax1-1)
415 fy_n_bar(jmin3) = fy_n_bar(jmax1-1)
419 fz_t(1) = fz_t(kmax1)
420 fz_t_bar(1) = fz_t_bar(kmax1)
422 fz_t(kmin3) = fz_t(kmax1-1)
423 fz_t_bar(kmin3) = fz_t_bar(kmax1-1)
subroutine allocate_arrays_geometry
double precision, dimension(:), allocatable fx
logical function compare(V1, V2)
double precision, dimension(:), allocatable ox_e
double precision, dimension(:), allocatable ody
double precision, dimension(:), allocatable odx
double precision, parameter one
double precision, dimension(:), allocatable cyl_x
double precision, dimension(:), allocatable cyl_x_e
double precision, dimension(:), allocatable x_e
double precision, dimension(0:dim_j) dy
double precision, dimension(:), allocatable z_t
double precision, parameter undefined
double precision, dimension(0:dim_k) dz
subroutine init_err_msg(CALLER)
double precision, dimension(:), allocatable ody_n
double precision, dimension(:), allocatable fz_t
double precision, dimension(:), allocatable fx_e_bar
double precision, dimension(:), allocatable fx_e
double precision, dimension(:), allocatable odx_e
double precision, dimension(:), allocatable ox
double precision, dimension(0:dim_i) dx
double precision, parameter half
double precision, dimension(:), allocatable odz
double precision, dimension(:), allocatable fy_n
double precision, dimension(:), allocatable z
double precision, dimension(:), allocatable fx_bar
double precision, dimension(:), allocatable odz_t
double precision, dimension(:), allocatable fz_t_bar
double precision, dimension(:), allocatable x
double precision, parameter zero
double precision, dimension(:), allocatable fy_n_bar