38 LOGICAL,
parameter :: setDBG = .false.
41 INTEGER :: MAX_CELLS, BND1, BND2
43 INTEGER,
ALLOCATABLE :: LOC_DEM_BCMO_IJK(:)
46 INTEGER :: I_w, I_e, J_s, J_n, K_b, K_t
59 if(dflag)
write(*,
"(2/,2x,'DEM outlet count: ',I4)") dem_bcmo
64 DO bcv_i = 1, dem_bcmo
65 bcv = dem_bcmo_map(bcv_i)
68 if(dflag)
WRITE(*,
"(/2x,'Adding cells for BCV: ',I3)") bcv
69 SELECT CASE (bc_plane(bcv))
83 max_cells = max_cells + &
84 2*(bnd1+1)*(bnd2+1) + 2*(bnd1+2) + 2*(bnd2+2)
86 if(dflag)
WRITE(*,
"(4x,'Plane: ',A)") bc_plane(bcv)
87 if(dflag)
WRITE(*,
"(4x,'Cells: ', I8)") (bnd1+1)*(bnd2+1)
90 if(dflag)
write(*,
"(2x,'Max Cells: ',I8)") max_cells
94 allocate( loc_dem_bcmo_ijk(max_cells) )
99 DO bcv_i = 1, dem_bcmo
102 bcv = dem_bcmo_map(bcv_i)
104 if(dflag)
write(*,
"(/2x,'Searching for fluid cells:',I3)") bcv
116 SELECT CASE (bc_plane(bcv))
117 CASE(
'N'); j_s = j_s+1; j_n = j_s
118 CASE(
'S'); j_s = j_s-1; j_n = j_s
119 CASE(
'E'); i_w = i_w+1; i_e = i_w
120 CASE(
'W'); i_w = i_w-1; i_e = i_w
121 CASE(
'T'); k_b = k_b+1; k_t = k_b
122 CASE(
'B'); k_b = k_b-1; k_t = k_b
126 write(*,
"(4x,'Search bounds: ')")
127 write(*,
"(6x,'I_w/I_e:',2(2x,I6))") i_w, i_e
128 write(*,
"(6x,'J_s/J_n:',2(2x,I6))") j_s, j_n
129 write(*,
"(6x,'K_b/K_t:',2(2x,I6))") k_b, k_t
139 ijk = dg_funijk(i,j,k)
140 loc_dem_bcmo_ijk(lc) = ijk
146 if(dflag)
write(*,
"(/2x,'Adding boundary cells:',I3)") bcv
148 i_w = iofpos(
bc_x_w(bcv))-1; i_e = iofpos(
bc_x_e(bcv))+1
149 j_s = jofpos(
bc_y_s(bcv))-1; j_n = jofpos(
bc_y_n(bcv))+1
152 k_b = kofpos(
bc_z_b(bcv))-1; k_t = kofpos(
bc_z_t(bcv))+1
159 SELECT CASE (bc_plane(bcv))
160 CASE(
'N',
'S'); j_s = j_s+1; j_n = j_n-1
161 CASE(
'E',
'W'); i_w = i_w+1; i_e = i_e-1
162 CASE(
'T',
'B'); k_b = k_b+1; k_t = k_t-1
166 write(*,
"(4x,'Search bounds: ')")
167 write(*,
"(6x,'I_w/I_e:',2(2x,I6))") i_w, i_e
168 write(*,
"(6x,'J_s/J_n:',2(2x,I6))") j_s, j_n
169 write(*,
"(6x,'K_b/K_t:',2(2x,I6))") k_b, k_t
179 ijk = dg_funijk(i,j,k)
180 loc_dem_bcmo_ijk(lc) = ijk
188 if(dflag)
write(*,1111) bcv, bcv_i, &
193 1111
FORMAT(/2x,
'DEM Mass Outflow:',/4x,
'BC:',i4,3x,
'MAP:',i4,&
194 /4x,
'IJKSTART:',i6,/4x,
'IJKEND: ',i6)
198 allocate( dem_bcmo_ijk(lc-1) )
199 dem_bcmo_ijk(1:lc-1) = loc_dem_bcmo_ijk(1:lc-1)
201 allocate( dem_bcmo_ijk(1) )
202 dem_bcmo_ijk(1) = loc_dem_bcmo_ijk(1)
205 deallocate(loc_dem_bcmo_ijk)
234 IF (des_continuum_coupled)
THEN 235 WRITE(unit_log, 1064)
238 IF (des_neighbor_search .NE. 4)
THEN 239 WRITE(unit_log, 1060)
243 IF (dimn .EQ. 2)
THEN 244 IF(trim(des_le_shear_dir) .NE.
'DUDY' .AND. &
245 trim(des_le_shear_dir) .NE.
'DVDX')
THEN 246 WRITE(unit_log, 1061)
249 ELSEIF(dimn.EQ.3)
THEN 250 IF(trim(des_le_shear_dir) .NE.
'DUDY')
THEN 256 WRITE(unit_log, 1062)
260 IF (des_periodic_walls)
THEN 261 des_periodic_walls = .false.
262 des_periodic_walls_x = .false.
263 des_periodic_walls_y = .false.
264 des_periodic_walls_z = .false.
265 WRITE(unit_log, 1063)
272 1060
FORMAT(/1x,70(
'*')//
' From: CHECK_DES_DATA',/
' Message: ',&
273 'Only the grid based search option is allowed when using',&
274 'using',/10x,
'Lees & Edwards BC.',/1x,70(
'*')/)
276 1061
FORMAT(/1x,70(
'*')//
' From: CHECK_DES_DATA',/
' Message: ',&
277 'Invalid option for DES_LE_SHEAR_DIR in mfix.dat. When',/10x,&
278 'DIMN=2 shear options are DUDY or DVDX',/1x,70(
'*')/)
280 1062
FORMAT(/1x,70(
'*')//
' From: CHECK_DES_DATA',/
' Message: ',&
281 'Invalid option for DES_LE_SHEAR_DIR in mfix.dat. When',/10x,&
282 'DIMN=3 shear options are DUDY, DUDZ, DVDX, DVDZ, DWDX or',&
283 'DWDY.',/1x,70(
'*')/)
285 1063
FORMAT(/1x,70(
'*')//
' From: CHECK_DES_DATA',/
' Message: ',&
286 'WARNING: DES_PERIODIC_WALLS set to false when DES_LE_BC.',&
287 /10x,
'DES_LE_BC implies periodic walls, however, the ',&
288 'periodicity is handled',/10x,
'independently of ',&
289 'DES_PERIODIC_WALLS option and so it is shut off.',&
292 1064
FORMAT(/1x,70(
'*')//
' From: CHECK_DES_DATA',/
' Message: ',&
293 'DES_CONTINUUM_COUPLED cannot be true when using ',&
294 'DES_LE_BC.',/1x,70(
'*')/)
double precision, dimension(dimension_bc) bc_y_n
integer, dimension(:), allocatable dem_bcmo_ijkstart
integer, dimension(:), allocatable dem_bcmo_ijk
integer, dimension(:), allocatable dem_bcmo_ijkend
logical function dg_is_on_mype_plus1layers(lI, lJ, lK)
subroutine check_des_le_bc
double precision, dimension(dimension_bc) bc_x_e
double precision, dimension(dimension_bc) bc_y_s
character, dimension(dimension_bc) bc_plane
subroutine init_err_msg(CALLER)
subroutine mfix_exit(myID, normal_termination)
integer function iofpos(fpos)
integer function kofpos(fpos)
double precision, dimension(dimension_bc) bc_z_b
double precision, dimension(dimension_bc) bc_z_t
integer function dg_funijk(fi, fj, fk)
integer function jofpos(fpos)
integer, dimension(dimension_bc) dem_bcmo_map
double precision, dimension(dimension_bc) bc_x_w