22 PUBLIC :: read_res_des
23 PUBLIC :: read_res_parray
24 PUBLIC :: read_res_carray
26 INTERFACE read_res_des
35 INTERFACE read_res_parray
42 INTERFACE read_res_carray
49 INTEGER,
PARAMETER :: rdes_unit = 901
55 INTEGER :: prootcnt, pproccnt
57 INTEGER,
allocatable :: pscatter(:)
58 INTEGER,
allocatable :: pdispls(:)
61 INTEGER,
ALLOCATABLE :: prestartmap(:)
62 INTEGER,
ALLOCATABLE :: crestartmap(:)
65 INTEGER :: crootcnt, cproccnt
67 INTEGER,
allocatable :: cscatter(:)
68 INTEGER,
allocatable :: cdispls(:)
70 INTEGER,
ALLOCATABLE :: ipar_col(:,:)
81 use discretelement
, only: max_pip, pip
82 use discretelement
, only: ighost_cnt
83 use discretelement
, only: neigh_num
93 CHARACTER(len=*),
INTENT(IN) :: BASE
94 DOUBLE PRECISION,
INTENT(OUT) :: lVERSION
95 INTEGER,
INTENT(OUT) :: lNEXT_REC
97 CHARACTER(len=32) :: lFNAME
103 allocate(pscatter(0:
numpes-1))
104 allocate(pdispls(0:
numpes-1))
106 allocate(cscatter(0:
numpes-1))
107 allocate(cdispls(0:
numpes-1))
112 WRITE(lfname,
'(A,I4.4,A)') base//
'_DES_',mype,
'.RES' 113 OPEN(convert=
'BIG_ENDIAN',unit=rdes_unit, file=lfname, &
114 form=
'UNFORMATTED', status=
'UNKNOWN', access=
'DIRECT', &
117 READ(rdes_unit, rec=1) lversion
118 READ(rdes_unit, rec=2) pin_count
119 READ(rdes_unit, rec=3) ighost_cnt
120 READ(rdes_unit, rec=4) cin_count
122 IF(pip > max_pip)
THEN 123 write(*,*)
"From des_read_restart:" 124 write(*,*)
"Error: The pip is grater than current max_pip" 125 write(*,*)
"pip=" ,pip,
"; max_pip =", max_pip
130 neigh_num = cin_count
136 IF(mype == pe_io)
THEN 137 WRITE(lfname,
'(A,A)') base//
'_DES.RES' 138 OPEN(convert=
'BIG_ENDIAN',unit=rdes_unit, file=lfname, &
139 form=
'UNFORMATTED', status=
'UNKNOWN', access=
'DIRECT', &
142 READ(rdes_unit, rec=1) pin_count
144 READ(rdes_unit, rec=1) lversion
145 READ(rdes_unit, rec=2) pin_count
147 READ(rdes_unit, rec=4) cin_count
157 allocate( prestartmap(pin_count), stat=ier)
159 WRITE(
err_msg, 1200)
'pRestartMap', trim(
ival(pin_count))
163 CALL bcast(lversion, pe_io)
167 CALL bcast(cin_count, pe_io)
168 allocate( crestartmap(cin_count), stat=ier)
170 WRITE(
err_msg, 1200)
'cRestartMap', trim(
ival(cin_count))
174 1200
FORMAT(
'Error 1200: Unable to allocate sufficient memory to ',&
175 'read in DES',/
'restart file. size(',a,
') = ',a)
178 IF(ier/=0)
CALL mfix_exit(mype)
203 IF(
allocated(prestartmap))
deallocate(prestartmap)
204 IF(
allocated(crestartmap))
deallocate(crestartmap)
206 IF(
allocated(pscatter))
deallocate(pscatter)
207 IF(
allocated(pdispls))
deallocate(pdispls)
209 IF(
allocated(cscatter))
deallocate(cscatter)
210 IF(
allocated(cdispls))
deallocate(cdispls)
228 use discretelement
, only: pip
229 use discretelement
, only: des_pos_new
238 INTEGER,
INTENT(INOUT) :: lNEXT_REC
241 INTEGER :: LC1, lPROC
242 INTEGER :: lScatterCNTS(0:
numpes-1)
244 INTEGER :: PAR_CNT(0:
numpes-1)
250 ldimn = merge(2,3,
no_k)
256 CALL read_res_des(lnext_rec, des_pos_new(:,lc1))
261 allocate(
dpar_pos(pin_count, ldimn))
264 IF(mype == pe_io)
THEN 265 DO lc1=1, merge(2,3,
no_k)
267 pin_count, lnext_rec)
287 lscattercnts(:) = 0; lscattercnts(mype) = pip
293 pdispls(lproc) = pdispls(lproc-1) + pscatter(lproc-1)
312 use discretelement
, only: pip
313 use discretelement
, only: xe, yn, zt
328 INTEGER,
INTENT(OUT) :: lPAR_CNT(0:numpes-1)
333 INTEGER :: LC1, lPROC
335 INTEGER :: IER(0:numpes-1)
337 DOUBLE PRECISION :: lxmin(0:numpes-1), lxmax(0:numpes-1)
338 DOUBLE PRECISION :: lymin(0:numpes-1), lymax(0:numpes-1)
339 DOUBLE PRECISION :: lzmin(0:numpes-1), lzmax(0:numpes-1)
347 ldimn = merge(2, 3,
no_k)
350 DO lproc= 0, numpes-1
351 lxmin(lproc) = xe(istart1_all(lproc)-1)
352 lxmax(lproc) = xe(iend1_all(lproc))
353 lymin(lproc) = yn(jstart1_all(lproc)-1)
354 lymax(lproc) = yn(jend1_all(lproc))
360 IF(istart1_all(lproc).eq.imin1) &
361 lxmin(lproc) = xe(istart1_all(lproc)-2)
362 IF(iend1_all(lproc).eq.imax1) &
363 lxmax(lproc) = xe(iend1_all(lproc)+1)
364 IF(jstart1_all(lproc).eq.jmin1) &
365 lymin(lproc) = yn(jstart1_all(lproc)-2)
366 IF(jend1_all(lproc).eq.jmax1) &
367 lymax(lproc) = yn(jend1_all(lproc)+1)
379 IF(mype == pe_io)
THEN 380 DO lc1 = 1, pin_count
382 IF(
dpar_pos(lc1,1) >= lxmin(lproc) .AND. &
383 dpar_pos(lc1,1) < lxmax(lproc) .AND. &
384 dpar_pos(lc1,2) >= lymin(lproc) .AND. &
385 dpar_pos(lc1,2) < lymax(lproc))
THEN 387 lpar_cnt(lproc) = lpar_cnt(lproc) + 1
388 prestartmap(lc1) = lproc
391 IF(
dpar_pos(lc1,3) >= lzmin(lproc) .AND. &
392 dpar_pos(lc1,3) < lzmax(lproc))
THEN 393 lpar_cnt(lproc) = lpar_cnt(lproc) + 1
394 prestartmap(lc1) = lproc
400 IF (prestartmap(lc1) == -1)
then 415 1000
FORMAT(
'Error 1000: Unable to locate particle inside domain:',/&
416 3x,
'Particle Number:',a)
417 1001
FORMAT(3x,
'X POS: ',g12.5,/3x,
'Y POS: ',g12.5)
418 1002
FORMAT(3x,
'X POS: ',g12.5,/3x,
'Y POS: ',g12.5,/3x,
'Z POS: ',g12.5)
421 CALL bcast(ier, pe_io)
422 IF(ier(pe_io) /= 0)
CALL mfix_exit(mype)
425 CALL bcast(lpar_cnt(0:numpes-1), pe_io)
434 IF(sum(ier) /= 0)
THEN 438 IF(ier(lc1) /= 0)
THEN 439 WRITE(
err_msg,
"(3(2x,I10))")lc1,ier(lc1)-1,lpar_cnt(lc1)
447 1100
FORMAT(
'Error 1100: Maximum number of particles exceeded.',2/ &
448 5x,
'Process',5x,
'Maximum',7x,
'Count')
468 use discretelement
, only: des_pos_new
469 use discretelement
, only: pip
476 INTEGER,
INTENT(INOUT) :: lPAR_CNT(0:
numpes-1)
480 INTEGER :: LC1, lPROC, lBuf
482 ldimn = merge(2,3,
no_k)
489 IF (mype == pe_io)
THEN 490 allocate (
drootbuf(pin_count*ldimn))
496 IF(mype == pe_io)
THEN 509 lproc = prestartmap(lc1)
510 lbuf =
idispls(lproc) + lpar_cnt(lproc)*ldimn+1
513 lpar_cnt(lproc) = lpar_cnt(lproc) + 1
520 lbuf = (lc1-1)*ldimn+1
521 des_pos_new(lc1,1:ldimn) =
dprocbuf(lbuf:lbuf+ldimn-1)
541 use discretelement
, only: neighbors, neigh_num
552 INTEGER,
INTENT(INOUT) :: lNEXT_REC
554 INTEGER :: LC1, lPROC
555 INTEGER :: lScatterCNTS(0:
numpes-1)
557 INTEGER :: COL_CNT(0:
numpes-1)
565 CALL read_res_des(lnext_rec, neighbors(:))
570 allocate(ipar_col(2, cin_count))
574 IF(mype == pe_io)
THEN 577 cin_count, lnext_rec)
601 lscattercnts(:) = 0; lscattercnts(mype) = neigh_num
607 cdispls(lproc) = cdispls(lproc-1) + cscatter(lproc-1)
625 use discretelement
, only: iglobal_id
626 use discretelement
, only: pip
627 use discretelement
, only: neigh_num
628 use functions, only: is_ghost, is_entering_ghost, is_exiting_ghost
635 INTEGER,
INTENT(OUT) :: lCOL_CNT(0:
numpes-1)
642 INTEGER :: MAX_ID, lSTAT
644 INTEGER,
ALLOCATABLE :: lGLOBAL_OWNER(:)
653 max_id = maxval(iglobal_id(1:pip))
656 allocate(lglobal_owner(max_id), stat=lstat)
663 WRITE(
err_msg,
"('Matching DES neighbor data by global owner.')" 668 IF(.NOT.is_ghost(lc1) .AND. .NOT.is_entering_ghost(lc1) &
669 .AND. .NOT.is_exiting_ghost(lc1)) &
670 lglobal_owner(iglobal_id(lc1)) =
mype + 1
678 IF(lglobal_owner(ipar_col(1,lc1)) ==
mype + 1)
THEN 679 crestartmap(lc1) =
mype + 1
687 WRITE(
err_msg,
"('Matching DES neighbor data by search.')")
694 lc1_lp:
DO lc1=1, cin_count
696 IF(ipar_col(1,lc1) == iglobal_id(lc2))
THEN 697 crestartmap(lc1) =
mype + 1
707 IF(
allocated(lglobal_owner))
deallocate(lglobal_owner)
712 IF(sum(lcol_cnt) /= cin_count)
THEN 713 WRITE(
err_msg,1000) cin_count, sum(lcol_cnt)
717 1000
FORMAT(
'Error 1000: Unable to establish the own of all read ', &
718 'collision data.',/3x,
'Number of Collisions: ',i10,/3x, &
719 'Matched Collisions: ',i10)
725 DO lc1 = 1, cin_count
727 IF (crestartmap(lc1) == 0)
THEN 730 ipar_col(1,lc1))), trim(
ival(ipar_col(2,lc1)))
733 1100
FORMAT(
'Error 1100: Unable to locate process neighbor owner:',/ &
734 3x,
'Neighbor Number:',a,/3x,
'Particles: ',a,
' and ',a)
736 ELSEIF(crestartmap(lc1) >
numpes)
THEN 740 ipar_col(1,lc1))), trim(
ival(ipar_col(2,lc1)))
743 1101
FORMAT(
'Error 1101: More than one process neighbor owner:',/ &
744 3x,
'Neighbor Number:',a,/3x,
'Particles: ',a,
' and ',a)
748 crestartmap(lc1) = crestartmap(lc1) - 1
754 IF(ier /= 0)
CALL mfix_exit(
mype)
758 neigh_num = lcol_cnt(
mype)
776 use discretelement
, only: iglobal_id
777 use discretelement
, only: pip
789 INTEGER :: LC1, LC2, LC3, IER
791 INTEGER,
ALLOCATABLE :: iLOCAL_ID(:)
794 INTEGER :: MAX_ID, lSTAT
797 LOGICAL,
parameter :: setDBG = .false.
807 max_id = maxval(iglobal_id(1:pip))
810 allocate(ilocal_id(max_id), stat=lstat)
820 1000
FORMAT(
'Error 1000: Unable to allocate sufficient memory to ',&
821 'generate the',/
'map from global to local particle IDs.')
825 ilocal_id(iglobal_id(lc1)) = lc1
861 IF(unmatched /= 0)
THEN 866 1101
FORMAT(
' Warning: 1101: ',a,
' particle neighbor datasets were ',&
867 'not matched',/
' during restart.')
869 IF(
allocated(ilocal_id))
deallocate(ilocal_id)
889 INTEGER,
INTENT(INOUT) :: lNEXT_REC
890 INTEGER,
INTENT(OUT) :: INPUT_I
893 READ(rdes_unit, rec=lnext_rec) input_i
895 IF(
mype == pe_io)
READ(rdes_unit, rec=lnext_rec) input_i
896 CALL bcast(input_i, pe_io)
899 lnext_rec = lnext_rec + 1
917 INTEGER,
INTENT(INOUT) :: lNEXT_REC
918 INTEGER,
INTENT(OUT) :: INPUT_I(:)
922 lsize =
size(input_i)
925 CALL in_bin_512i(rdes_unit, input_i, lsize, lnext_rec)
928 CALL in_bin_512i(rdes_unit, input_i, lsize, lnext_rec)
929 CALL bcast(input_i, pe_io)
946 INTEGER,
INTENT(INOUT) :: lNEXT_REC
947 DOUBLE PRECISION,
INTENT(OUT) :: INPUT_D
950 READ(rdes_unit, rec=lnext_rec) input_d
952 IF(
mype == pe_io)
READ(rdes_unit, rec=lnext_rec) input_d
953 CALL bcast(input_d, pe_io)
955 lnext_rec = lnext_rec + 1
973 INTEGER,
INTENT(INOUT) :: lNEXT_REC
974 DOUBLE PRECISION,
INTENT(OUT) :: INPUT_D(:)
978 lsize =
size(input_d)
981 CALL in_bin_512(rdes_unit, input_d, lsize, lnext_rec)
984 CALL in_bin_512(rdes_unit, input_d, lsize, lnext_rec)
985 CALL bcast(input_d, pe_io)
1002 INTEGER,
INTENT(INOUT) :: lNEXT_REC
1003 LOGICAL,
INTENT(OUT) :: OUTPUT_L
1010 READ(rdes_unit, rec=lnext_rec) output_i
1012 IF(
mype == pe_io)
READ(rdes_unit, rec=lnext_rec) output_i
1013 CALL bcast(output_i, pe_io)
1016 IF(output_i == 1) output_l = .true.
1017 lnext_rec = lnext_rec + 1
1035 INTEGER,
INTENT(INOUT) :: lNEXT_REC
1036 LOGICAL,
INTENT(OUT) :: INPUT_L(:)
1038 INTEGER,
ALLOCATABLE :: INPUT_I(:)
1040 INTEGER :: lSIZE, LC1
1042 lsize =
size(input_i)
1043 ALLOCATE( input_i(lsize))
1046 CALL in_bin_512i(rdes_unit, input_i, lsize, lnext_rec)
1049 CALL in_bin_512i(rdes_unit, input_i, lsize, lnext_rec)
1050 CALL bcast(input_i, pe_io)
1054 IF(input_i(lc1) == 1)
THEN 1055 input_l(lc1) = .true.
1057 input_l(lc1) = .false.
1061 IF(
allocated(input_i))
deallocate(input_i)
1073 use discretelement
, only: pip
1083 INTEGER,
INTENT(INOUT) :: lNEXT_REC
1084 INTEGER(KIND=1),
INTENT(OUT) :: OUTPUT_B(:)
1091 INTEGER,
ALLOCATABLE :: OUTPUT_I(:)
1092 INTEGER,
ALLOCATABLE :: lBUF_I(:)
1093 INTEGER,
ALLOCATABLE :: lCOUNT(:)
1096 allocate(irootbuf(prootcnt))
1100 iscr_recvcnt = precv
1101 iscattercnts = pscatter
1103 allocate(output_i(
size(output_b)))
1104 output_i(:) = output_b(:)
1107 CALL in_bin_512i(rdes_unit, output_i, pin_count, lnext_rec)
1108 output_b(:) = output_i(:)
1111 IF(mype == pe_io)
THEN 1112 allocate(lbuf_i(pin_count))
1113 allocate(lcount(0:
numpes-1))
1115 CALL in_bin_512i(rdes_unit, lbuf_i, pin_count, lnext_rec)
1119 lproc = prestartmap(lc1)
1120 lcount(lproc) = lcount(lproc) + 1
1121 irootbuf(idispls(lproc) + lcount(lproc)) = lbuf_i(lc1)
1135 deallocate(irootbuf)
1136 deallocate(output_i)
1148 use discretelement
, only: pip
1158 INTEGER,
INTENT(INOUT) :: lNEXT_REC
1159 INTEGER,
INTENT(OUT) :: OUTPUT_I(:)
1166 INTEGER,
ALLOCATABLE :: lBUF_I(:)
1167 INTEGER,
ALLOCATABLE :: lCOUNT(:)
1171 allocate(irootbuf(prootcnt))
1174 iscr_recvcnt = precv
1175 iscattercnts = pscatter
1178 CALL in_bin_512i(rdes_unit, output_i, pin_count, lnext_rec)
1181 IF(mype == pe_io)
THEN 1182 allocate(lbuf_i(pin_count))
1183 allocate(lcount(0:
numpes-1))
1185 CALL in_bin_512i(rdes_unit, lbuf_i, pin_count, lnext_rec)
1189 lproc = prestartmap(lc1)
1190 lcount(lproc) = lcount(lproc) + 1
1191 irootbuf(idispls(lproc) + lcount(lproc)) = lbuf_i(lc1)
1205 deallocate(irootbuf)
1219 use discretelement
, only: pip
1227 INTEGER,
INTENT(INOUT) :: lNEXT_REC
1228 DOUBLE PRECISION,
INTENT(OUT) :: OUTPUT_D(:)
1235 DOUBLE PRECISION,
ALLOCATABLE :: lBUF_D(:)
1236 INTEGER,
ALLOCATABLE :: lCOUNT(:)
1240 allocate(drootbuf(prootcnt))
1243 iscr_recvcnt = precv
1244 iscattercnts = pscatter
1247 CALL in_bin_512(rdes_unit, output_d, pin_count, lnext_rec)
1249 IF(mype == pe_io)
THEN 1250 allocate(lbuf_d(pin_count))
1251 allocate(lcount(0:
numpes-1))
1253 CALL in_bin_512(rdes_unit, lbuf_d, pin_count, lnext_rec)
1257 lproc = prestartmap(lc1)
1258 lcount(lproc) = lcount(lproc) + 1
1259 drootbuf(idispls(lproc) + lcount(lproc)) = lbuf_d(lc1)
1272 deallocate(drootbuf)
1285 use discretelement
, only: pip
1293 INTEGER,
INTENT(INOUT) :: lNEXT_REC
1294 LOGICAL,
INTENT(OUT) :: OUTPUT_L(:)
1301 INTEGER,
ALLOCATABLE :: lBUF_I(:)
1302 INTEGER,
ALLOCATABLE :: lCOUNT(:)
1305 allocate(irootbuf(prootcnt))
1308 iscr_recvcnt = precv
1309 iscattercnts = pscatter
1312 allocate(lbuf_i(pin_count))
1313 CALL in_bin_512i(rdes_unit, lbuf_i, pin_count, lnext_rec)
1315 IF(lbuf_i(lc1) == 1)
THEN 1316 output_l(lc1) = .true.
1318 output_l(lc1) = .false.
1323 IF(mype == pe_io)
THEN 1324 allocate(lbuf_i(pin_count))
1325 allocate(lcount(0:
numpes-1))
1327 CALL in_bin_512i(rdes_unit, lbuf_i, pin_count, lnext_rec)
1331 lproc = prestartmap(lc1)
1332 lcount(lproc) = lcount(lproc) + 1
1333 irootbuf(idispls(lproc) + lcount(lproc)) = lbuf_i(lc1)
1342 output_l(lc1) = .true.
1344 output_l(lc1) = .false.
1350 deallocate(irootbuf)
1366 use discretelement
, only: neigh_num
1371 INTEGER,
INTENT(INOUT) :: lNEXT_REC
1372 INTEGER,
INTENT(OUT) :: OUTPUT_I(:)
1379 INTEGER,
ALLOCATABLE :: lBUF_I(:)
1380 INTEGER,
ALLOCATABLE :: lCOUNT(:)
1384 allocate(irootbuf(crootcnt))
1387 iscr_recvcnt = crecv
1388 iscattercnts = cscatter
1391 CALL in_bin_512i(rdes_unit, output_i, cin_count, lnext_rec)
1393 IF(mype == pe_io)
THEN 1394 allocate(lbuf_i(cin_count))
1395 allocate(lcount(0:
numpes-1))
1397 CALL in_bin_512i(rdes_unit, lbuf_i, cin_count, lnext_rec)
1401 lproc = crestartmap(lc1)
1402 lcount(lproc) = lcount(lproc) + 1
1403 irootbuf(idispls(lproc) + lcount(lproc)) = lbuf_i(lc1)
1416 deallocate(irootbuf)
1430 use discretelement
, only: neigh_num
1437 INTEGER,
INTENT(INOUT) :: lNEXT_REC
1438 DOUBLE PRECISION,
INTENT(OUT) :: OUTPUT_D(:)
1445 DOUBLE PRECISION,
ALLOCATABLE :: lBUF_D(:)
1446 INTEGER,
ALLOCATABLE :: lCOUNT(:)
1450 allocate(drootbuf(crootcnt))
1453 iscr_recvcnt = crecv
1454 iscattercnts = cscatter
1458 CALL in_bin_512(rdes_unit, output_d, cin_count, lnext_rec)
1460 IF(mype == pe_io)
THEN 1461 allocate(lbuf_d(cin_count))
1462 allocate(lcount(0:
numpes-1))
1464 CALL in_bin_512(rdes_unit, lbuf_d, cin_count, lnext_rec)
1468 lproc = crestartmap(lc1)
1469 lcount(lproc) = lcount(lproc) + 1
1470 drootbuf(idispls(lproc) + lcount(lproc)) = lbuf_d(lc1)
1483 deallocate(drootbuf)
1497 use discretelement
, only: neigh_num
1504 INTEGER,
INTENT(INOUT) :: lNEXT_REC
1505 LOGICAL,
INTENT(OUT) :: OUTPUT_L(:)
1512 INTEGER,
ALLOCATABLE :: lBUF_I(:)
1513 INTEGER,
ALLOCATABLE :: lCOUNT(:)
1516 allocate(irootbuf(crootcnt))
1519 iscr_recvcnt = crecv
1520 iscattercnts = cscatter
1523 allocate(lbuf_i(cin_count))
1524 CALL in_bin_512i(rdes_unit, lbuf_i, cin_count, lnext_rec)
1526 IF(lbuf_i(lc1) == 1)
THEN 1527 output_l(lc1) = .true.
1529 output_l(lc1) = .false.
1534 IF(mype == pe_io)
THEN 1535 allocate(lbuf_i(cin_count))
1536 allocate(lcount(0:
numpes-1))
1538 CALL in_bin_512i(rdes_unit, lbuf_i, cin_count, lnext_rec)
1542 lproc = crestartmap(lc1)
1543 lcount(lproc) = lcount(lproc) + 1
1544 irootbuf(idispls(lproc) + lcount(lproc)) = lbuf_i(lc1)
1553 output_l(lc1) = .true.
1555 output_l(lc1) = .false.
1561 deallocate(irootbuf)
integer, dimension(:), allocatable istart1_all
integer, dimension(:), allocatable kstart1_all
subroutine desmpi_scatterv(ptype, pdebug)
integer, dimension(:), allocatable kend1_all
double precision, dimension(:), allocatable dprocbuf
subroutine read_res_des_0i(lNEXT_REC, INPUT_I)
subroutine in_bin_512(IUNIT, ARRAY, N, NEXT_REC)
subroutine desmpi_gatherv(ptype, pdebug)
integer, dimension(:), allocatable irootbuf
subroutine, public finl_read_res_des
subroutine, public read_par_col(lNEXT_REC)
subroutine neighbor_grow(new_neigh_max)
subroutine read_res_parray_1i(lNEXT_REC, OUTPUT_I)
subroutine read_res_des_1l(lNEXT_REC, INPUT_L)
subroutine init_err_msg(CALLER)
subroutine read_res_parray_1b(lNEXT_REC, OUTPUT_B)
subroutine read_res_parray_1d(lNEXT_REC, OUTPUT_D)
integer, dimension(:), allocatable iprocbuf
double precision, dimension(:,:), allocatable dpar_pos
subroutine, public read_par_pos(lNEXT_REC)
integer, dimension(:), allocatable jstart1_all
subroutine read_res_des_1i(lNEXT_REC, INPUT_I)
subroutine, public init_read_res_des(BASE, lVERSION, lNEXT_REC)
subroutine read_res_carray_1l(lNEXT_REC, OUTPUT_L)
integer, dimension(:), allocatable idispls
subroutine read_res_des_0d(lNEXT_REC, INPUT_D)
integer, dimension(:), allocatable jend1_all
subroutine in_bin_512i(IUNIT, ARRAY, NN, NEXT_REC)
subroutine map_carray_to_proc(lCOL_CNT)
subroutine map_parray_to_proc(lPAR_CNT)
character(len=line_length), dimension(line_count) err_msg
subroutine global_to_loc_col
subroutine read_res_carray_1i(lNEXT_REC, OUTPUT_I)
subroutine read_res_parray_1l(lNEXT_REC, OUTPUT_L)
subroutine scatter_par_pos(lPAR_CNT)
subroutine, public particle_grow(new_max_pip)
subroutine des_restart_ghost
subroutine read_res_des_0l(lNEXT_REC, OUTPUT_L)
double precision, dimension(:), allocatable drootbuf
subroutine read_res_des_1d(lNEXT_REC, INPUT_D)
integer, dimension(:), allocatable iend1_all
subroutine flush_err_msg(DEBUG, HEADER, FOOTER, ABORT, LOG, CALL_TREE)
integer, dimension(:), allocatable iscattercnts
subroutine read_res_carray_1d(lNEXT_REC, OUTPUT_D)