28 integer,
dimension (:),
allocatable :: &
33 integer,
dimension (:),
allocatable :: &
38 integer,
dimension (:),
allocatable :: &
87 integer function procijk(fi,fj,fk)
168 integer fi,fj,fk,fproc
333 integer function dg_ijkconv(fijk,fface,fto_proc)
335 integer fijk,fto_proc,fface
347 integer function iofpos(fpos)
349 double precision fpos
359 integer function jofpos(fpos)
361 double precision fpos
371 integer function kofpos(fpos)
373 double precision fpos
386 integer,
intent(in) :: lI, lJ, lK
404 integer,
intent(in) :: lI, lJ, lK
427 use discretelement
, only: des_periodic_walls_x
428 use discretelement
, only: des_periodic_walls_y
429 use discretelement
, only: des_periodic_walls_z
430 use discretelement
, only: dimn
431 use discretelement
, only: xe, yn, zt
438 use discretelement
, only: desgridsearch_imax
439 use discretelement
, only: desgridsearch_jmax
440 use discretelement
, only: desgridsearch_kmax
453 double precision :: ltempdx,ltempdy,ltempdz
454 integer :: lijkproc,liproc,ljproc,lkproc
489 ltempdx =
xlength/desgridsearch_imax
490 ltempdy =
ylength/desgridsearch_jmax
491 if(do_k) ltempdz =
zlength/desgridsearch_kmax
552 if (des_periodic_walls_x)
then 557 if(liproc.eq.
nodesi-1)
then 562 if (des_periodic_walls_y)
then 567 if(ljproc.eq.
nodesj-1)
then 572 if (des_periodic_walls_z)
then 577 if(lkproc.eq.
nodesk-1)
then 642 WRITE(
err_msg,1100)
'DG_IJKStart2' 647 WRITE(
err_msg,1100)
'DG_IJKEnd2' 651 1100
FORMAT(
'Error 1100: Invalid DG_IJKStart2. FATAL')
654 WRITE(
err_msg,1105)
'DG_IMIN1 > DG_IMAX1' 657 WRITE(
err_msg,1105)
'DG_JMIN1 > DG_JMAX1' 660 WRITE(
err_msg,1105)
'DG_KMIN1 > DG_KMAX1' 664 1105
FORMAT(
'Error 1105: Invalid DES grid indices: ',a,/
'This is ', &
665 'likely the result of automated grid calculations based',/ &
666 'on the maximum particle size. Specify the number of ', &
667 'partitions',/
'for the DES grid in the mfix.dat file ', &
668 '(e.g., DESGRIDSEARCH_IMAX)')
720 logical,
INTENT(IN) :: plocate
724 integer,
dimension(:),
allocatable :: lpic,lindx
725 integer li,lj,lk,lijk,lijk_count,lcurpar,lparcount,lcurpic
726 logical,
save :: first_pass = .true.
736 dg_pijkprv(:)= dg_pijk(:)
737 do lcurpar = 1,max_pip
738 if(lparcount.gt.pip)
exit 739 if(is_nonexistent(lcurpar)) cycle
741 lparcount = lparcount + 1
750 lijk = dg_pijk(lcurpar)
751 lpic(lijk) = lpic(lijk) + 1
754 do lcurpar = 1,max_pip
755 if(lparcount.gt.pip)
exit 756 if(is_nonexistent(lcurpar)) cycle
757 lparcount = lparcount + 1
758 lijk = dg_pijk(lcurpar)
759 lpic(lijk) = lpic(lijk) + 1
764 dg_pijkprv(:) = dg_pijk(:)
773 if(lcurpic >
size(
dg_pic(lijk)%p))
then 774 deallocate(
dg_pic(lijk)%p)
775 allocate(
dg_pic(lijk)%p(2*lcurpic))
777 dg_pic(lijk)%isize = lcurpic
778 max_isize = max(max_isize,
dg_pic(lijk)%isize)
786 #if ( defined(__GFORTRAN__) && ( __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 7 ) ) ) \ 787 || ( defined(__intel_compiler) && (__intel_compiler < 1400) )
789 do lcurpar = 1, max_pip
790 if(lparcount.gt.pip)
exit 791 if(is_nonexistent(lcurpar)) cycle
792 lparcount = lparcount + 1
793 lijk = dg_pijk(lcurpar)
794 dg_pic(lijk)%p(lindx(lijk)) = lcurpar
795 lindx(lijk) = lindx(lijk) + 1
801 do lcurpar = 1, max_pip
802 if(lparcount.gt.pip) cycle
803 if(is_nonexistent(lcurpar)) cycle
804 lijk = dg_pijk(lcurpar)
807 lijk_count = lindx(lijk)
808 lindx(lijk) = lindx(lijk) + 1
811 dg_pic(lijk)%p(lijk_count) = lcurpar
814 lparcount = lparcount + 1
830 include
'functions.inc' 859 integer lcurpar,lkoffset
860 integer lijk,lic,ljc,lkc,li,lj,lk,ltotpic,lpicloc,lneigh,cc
861 double precision lsearch_rad,ldistsquared
862 double precision :: ldistvec(3)
863 double precision :: lcurpar_pos(3)
864 double precision :: lcur_off
865 integer il_off,iu_off,jl_off,ju_off,kl_off,ku_off
866 integer,
dimension(:),
allocatable :: tmp_neigh
885 allocate(tmp_neigh(max_isize))
893 do lcurpar =1,max_pip
896 if (neighbor_index(lcurpar) .eq. 0)
then 897 if (lcurpar .eq. 1)
then 898 neighbor_index(lcurpar) = 1
900 neighbor_index(lcurpar) = neighbor_index(lcurpar-1)
905 if (is_nonexistent(lcurpar) .or.is_entering(lcurpar) .or. is_entering_ghost
922 if(lcur_off .ge. 0.5)
then 930 if(lcur_off .ge. 0.5)
then 942 if(lcur_off .ge. 0.5)
then 949 do lk = lkc-kl_off,lkc+ku_off
950 do lj = ljc-jl_off,ljc+ju_off
951 do li = lic-il_off,lic+iu_off
953 ltotpic =
dg_pic(lijk)%isize
954 do lpicloc = 1,ltotpic
955 lneigh =
dg_pic(lijk)%p(lpicloc)
957 tmp_neigh(lpicloc) = 0
960 if (lneigh .eq. lcurpar) cycle
961 if (lneigh < lcurpar .and.is_normal(lneigh)) cycle
962 if (is_nonexistent(lneigh))
THEN 966 lsearch_rad = factor_rlm*(des_radius(lcurpar)+des_radius(lneigh
971 if (ldistsquared.gt.lsearch_rad*lsearch_rad) cycle
972 tmp_neigh(lpicloc) = lneigh
975 do lpicloc = 1,ltotpic
976 lneigh = tmp_neigh(lpicloc)
977 if (lneigh .ne. 0)
then 1032 deallocate(tmp_neigh)
1038 include
'functions.inc' 1060 integer lproc,liproc,ljproc,lkproc
1061 character (255) filename
1064 write(filename,
'("dbg_desgridn",I4.4,".dat")')
mype 1065 open(44,file=filename,convert=
'big_endian')
1067 write(44,*)
"Information for Proc =", lproc
1072 write(44,*)
"i,j,k location of proc",liproc,ljproc,lkproc
1074 write(44,*)
"-------------------------------------------------" 1075 write(44,*)
"indices start end" 1076 write(44,*)
"-------------------------------------------------" 1085 write(44,*)
"-------------------------------------------------" 1086 write(44,*)
"Local Start and end" 1087 write(44,*)
"-------------------------------------------------" 1100 write(44,*)
"-------------------------------------------------" 1101 write(44,*)
"global Start and end" 1102 write(44,*)
"-------------------------------------------------" 1110 write(44,*)
"-------------------------------------------------" 1112 write(44,*)
"dg_xend: ",
dg_xend 1116 write(44,*)
"dg_yend: ",
dg_yend 1120 write(44,*)
"dg_zend: ",
dg_zend 1127 write(44,*)
"-------------------------------------------------" integer, dimension(:), allocatable istart1_all
integer, dimension(:), allocatable dg_kstart1_all
double precision dg_xstart
integer, dimension(:), allocatable kstart1_all
integer, dimension(:), allocatable dg_isize_all
integer, dimension(:), allocatable dg_c3_all
integer function dg_funijk_proc(fi, fj, fk, fproc)
integer function procijk(fi, fj, fk)
integer function dg_funkm(fijk)
integer function dg_iof_lo(fijk)
integer function dg_funjm(fijk)
subroutine desgrid_neigh_build()
logical function dg_is_on_mype_plus1layers(lI, lJ, lK)
integer function dg_iof_gl(fijk)
integer, dimension(:), allocatable kend1_all
integer, dimension(:), allocatable dg_jsize_all
integer, dimension(:), allocatable dg_iend1_all
integer function dg_ijkconv(fijk, fface, fto_proc)
double precision dg_dyinv
integer, dimension(:,:), allocatable icycoffset
subroutine desgrid_pic(plocate)
integer, dimension(:), allocatable dg_jend1_all
integer, dimension(:), allocatable dg_jstart1_all
integer, dimension(:), allocatable dg_jend2_all
integer, dimension(:,:), allocatable dg_cycoffset
integer function iofproc(fijk)
double precision dg_zstart
integer function dg_funip(fijk)
type(iap2), dimension(:), allocatable dg_pic
integer, dimension(:), allocatable dg_kstart2_all
subroutine init_err_msg(CALLER)
integer function dg_kof_lo(fijk)
integer function kofproc(fijk)
integer function iofpos(fpos)
double precision dg_dxinv
integer, dimension(:), allocatable dg_iend2_all
integer function dg_kof_gl(fijk)
integer, dimension(:), allocatable dg_kend1_all
double precision dg_dzinv
integer function dg_funijk_gl(fi, fj, fk)
integer function jofproc(fijk)
integer function kofpos(fpos)
integer function dg_jof_lo(fijk)
double precision dg_ystart
integer, dimension(:), allocatable dg_jstart2_all
integer, dimension(:), allocatable jstart1_all
integer function dg_funjp(fijk)
subroutine desgrid_init()
integer, dimension(:), allocatable dg_c1_all
integer, dimension(:), allocatable dg_istart1_all
integer, dimension(:), allocatable dg_ksize_all
integer, dimension(:), allocatable jend1_all
character(len=line_length), dimension(line_count) err_msg
integer function dg_funijk(fi, fj, fk)
logical function dg_is_on_mype_owns(lI, lJ, lK)
integer function jofpos(fpos)
integer function dg_funkp(fijk)
integer, dimension(:), allocatable dg_kend2_all
integer, dimension(:), allocatable dg_c2_all
integer, dimension(:), allocatable dg_istart2_all
integer function dg_jof_gl(fijk)
integer, dimension(:), allocatable iend1_all
subroutine flush_err_msg(DEBUG, HEADER, FOOTER, ABORT, LOG, CALL_TREE)
integer function dg_funim(fijk)
double precision function, public add_pair(ii, jj)