40 INTEGER PHASE_LIST(
dim_m)
43 DOUBLE PRECISION MAX_DIA
45 LOGICAL,
parameter :: setDBG = .false.
53 if(dflag)
write(*,
"(2/,2x,'PIC inlet count: ',I4)")
pic_bcmi 83 if(dflag)
write(*,
"(2/,'Setting PIC_MI:',I3)") bcv_i
98 phase_cnt = phase_cnt + 1
99 phase_list(phase_cnt) = m
100 max_dia = max(max_dia,
d_p0(m))
132 USE discretelement
, only : des_mmax
147 INTEGER,
ALLOCATABLE :: LOC_PIC_BCMI_IJK(:)
148 INTEGER :: BCV, BCV_I
151 INTEGER :: BND1, BND2
152 LOGICAL,
parameter :: setDBG = .false.
155 INTEGER :: I_w, I_e, J_s, J_n, K_b, K_t
163 if(dflag)
write(*,
"(2/,2x,'From: SET_PIC_BCMI_IJK')")
168 DO bcv_i = 1, pic_bcmi
169 bcv = pic_bcmi_map(bcv_i)
172 if(dflag)
WRITE(*,
"(/2x,'Adding cells for BCV: ',I3)") bcv
173 SELECT CASE (bc_plane(bcv))
175 bnd1 = min(
bc_i_e(bcv)+1,imax1) - max(
bc_i_w(bcv)-1,imin1)
176 bnd2 = min(
bc_k_t(bcv)+1,kmax1) - max(
bc_k_b(bcv)-1,kmin1)
179 bnd1 = min(
bc_j_n(bcv)+1,jmax1) - max(
bc_j_s(bcv)-1,jmin1)
180 bnd2 = min(
bc_k_t(bcv)+1,kmax1) - max(
bc_k_b(bcv)-1,kmin1)
183 bnd1 = min(
bc_i_e(bcv)+1,imax1) - max(
bc_i_w(bcv)-1,imin1)
184 bnd2 = min(
bc_j_n(bcv)+1,jmax1) - max(
bc_j_s(bcv)-1,jmin1)
187 max_cells = max_cells + (bnd1 + 1)*(bnd2 + 1)
188 if(dflag)
WRITE(*,
"(4x,'Plane: ',A)") bc_plane(bcv)
189 if(dflag)
WRITE(*,
"(4x,'Cells: ', I8)") (bnd1+1)*(bnd2+1)
192 if(dflag)
write(*,
"(2x,'Max Cells: ',I8)") max_cells
196 allocate( loc_pic_bcmi_ijk(max_cells) )
202 DO bcv_i = 1, pic_bcmi
204 pic_bcmi_ijkstart(bcv_i) = lc
205 bcv = pic_bcmi_map(bcv_i)
207 if(dflag)
write(*,
"(/2x,'Searching for fluid cells:',I3)") bcv
209 i_w = max(
bc_i_w(bcv),imin1); i_e = min(
bc_i_e(bcv),imax1)
210 j_s = max(
bc_j_s(bcv),jmin1); j_n = min(
bc_j_n(bcv),jmax1)
211 k_b = max(
bc_k_b(bcv),kmin1); k_t = min(
bc_k_t(bcv),kmax1)
215 SELECT CASE (bc_plane(bcv))
225 write(*,
"(4x,'Search bounds: ')")
226 write(*,
"(6x,'I_w/I_e:',2(2x,I6))") i_w, i_e
227 write(*,
"(6x,'J_s/J_n:',2(2x,I6))") j_s, j_n
228 write(*,
"(6x,'K_b/K_t:',2(2x,I6))") k_b, k_t
237 IF(.NOT.is_on_mype_wobnd(i,j,k)) cycle
240 IF(.NOT.fluid_at(ijk)) cycle
251 pic_bcmi_ijkend(bcv_i) = lc-1
253 IF(dflag)
write(*,1111) bcv, bcv_i, &
254 pic_bcmi_ijkstart(bcv_i), pic_bcmi_ijkend(bcv_i)
258 1111
FORMAT(/2x,
'PIC Mass Inflow:',/4x,
'BC:',i4,3x,
'MAP:',i4, &
259 /4x,
'IJKSTART:',i6,/4x,
'IJKEND: ',i6)
264 allocate( pic_bcmi_ijk(lc-1) )
265 allocate(pic_bcmi_cnp(lc-1,
dim_m))
266 allocate(pic_bcmi_rnp(lc-1,
dim_m))
268 pic_bcmi_ijk(1:lc-1) = loc_pic_bcmi_ijk(1:lc-1)
270 pic_bcmi_cnp(1:lc-1,:) = 0.d0
271 pic_bcmi_rnp(1:lc-1,:) = 0.d0
273 allocate( pic_bcmi_ijk(1) )
274 allocate(pic_bcmi_cnp(1,1))
275 allocate(pic_bcmi_rnp(1,1))
277 pic_bcmi_ijk(1) = loc_pic_bcmi_ijk(1)
280 deallocate(loc_pic_bcmi_ijk)
integer, dimension(dimension_bc) bc_k_b
double precision, dimension(dim_m) d_p0
logical function compare(V1, V2)
integer, dimension(dimension_bc) bc_i_w
integer, dimension(:), allocatable pic_bcmi_ijkstart
integer, dimension(dimension_bc) bc_j_n
double precision, dimension(:,:), allocatable pic_bcmi_cnp
logical, dimension(:), allocatable pic_bcmi_incl_cutcell
integer, dimension(:), allocatable pic_bcmi_ijk
character(len=3), dimension(dim_m) solids_model
double precision, parameter undefined
character, dimension(dimension_bc) bc_plane
subroutine init_err_msg(CALLER)
integer, dimension(dimension_bc) bc_k_t
integer, dimension(:,:), allocatable pic_bcmi_normdir
integer, dimension(dimension_bc) bc_j_s
logical, dimension(:), allocatable cut_cell_at
integer, dimension(:), allocatable pic_bcmi_ijkend
integer, dimension(:,:), allocatable pic_bcmi_offset
double precision, dimension(:,:), allocatable pic_bcmi_rnp
integer, dimension(dimension_bc) bc_i_e
double precision, parameter zero
double precision, dimension(dimension_bc, dim_m) bc_rop_s
subroutine set_pic_bcmi_ijk
integer, dimension(dimension_bc) pic_bcmi_map