72 CHARACTER(CHRLEN) :: &
73 RCSIdentString =
'$RCSfile: RFLU_ModCommLists.F90,v $ $Revision: 1.14 $'
75 INTEGER,
PARAMETER,
PUBLIC :: CREATE_BORDERS_MODE_DIM_KNOWN = 1, &
76 CREATE_BORDERS_MODE_DIM_UNKNOWN = 2
122 TYPE(t_region
),
DIMENSION(:),
POINTER :: regions
131 TYPE(t_region
),
POINTER :: pregionserial
138 global => regions(0)%global
141 'RFLU_ModCommLists.F90')
155 pregionserial => regions(0)
208 TYPE(t_region
),
DIMENSION(:),
POINTER :: regions
214 CHARACTER(CHRLEN) :: errorstring
215 INTEGER :: errorflag,iborder,iborder2, &
216 icg,icgs,icgs2,icg2,icl,ict,ict2,iloc,ireg,ireg2,ireg3,nborders
217 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: borderinfo
218 TYPE(t_border),
POINTER :: pborder,pborder2
219 TYPE(t_grid),
POINTER :: pgrid,pgrid2,pgridserial
221 TYPE(t_region
),
POINTER :: pregion,pregion2,pregionserial
227 global => regions(0)%global
230 'RFLU_ModCommLists.F90')
232 IF ( global%verbLevel >= verbose_high )
THEN
233 WRITE(stdout,
'(A,1X,A)') solver_name, &
234 'Building cell communication lists...'
241 pregionserial => regions(0)
242 pgridserial => pregionserial%grid
248 IF ( global%verbLevel >= verbose_high )
THEN
249 WRITE(stdout,
'(A,3X,A)') solver_name, &
250 'Determining cells to be received...'
253 DO ireg = 1,global%nRegions
254 pregion => regions(ireg)
255 pgrid => pregion%grid
257 IF ( global%verbLevel >= verbose_high )
THEN
258 WRITE(stdout,
'(A,5X,A,1X,I5.5)') solver_name,
'Global region:', &
259 pregion%iRegionGlobal
266 ALLOCATE(borderinfo(2,pgrid%nBorders),stat=errorflag)
267 global%error = errorflag
268 IF ( global%error /= err_none )
THEN
269 CALL
errorstop(global,err_allocate,__line__,
'borderInfo')
272 DO iborder = 1,pgrid%nBorders
273 borderinfo(1,iborder) = pgrid%borderCntr(iborder)
274 borderinfo(2,iborder) = 0
282 DO icg = pgrid%nCells+1,pgrid%nCellsTot
283 icgs = pgrid%pc2sc(icg)
291 IF ( icgs <= pgridserial%nCells )
THEN
292 ireg2 = pgridserial%sc2r(icgs)
299 ireg2 = pgridserial%sc2r(icgs2)
307 pgrid%nBorders,ireg2,iloc)
309 IF ( iloc /= element_not_found )
THEN
310 borderinfo(2,iloc) = borderinfo(2,iloc) + 1
312 CALL
errorstop(global,err_region_id_not_found,__line__)
321 DO iborder = 1,pgrid%nBorders
322 pgrid%borders(iborder)%iRegionGlobal = borderinfo(1,iborder)
323 pgrid%borders(iborder)%nCellsRecv = borderinfo(2,iborder)
325 ALLOCATE(pgrid%borders(iborder)%icgRecv(borderinfo(2,iborder)), &
327 global%error = errorflag
328 IF ( global%error /= err_none )
THEN
329 CALL
errorstop(global,err_allocate,__line__,
'pGrid%borders%icgRecv')
337 DO ireg2 = 1,pgrid%nBorders
338 borderinfo(2,ireg2) = 0
341 DO icg = pgrid%nCells+1,pgrid%nCellsTot
342 icgs = pgrid%pc2sc(icg)
346 IF ( icgs <= pgridserial%nCells )
THEN
347 ireg2 = pgridserial%sc2r(icgs)
354 ireg2 = pgridserial%sc2r(icgs2)
362 pgrid%nBorders,ireg2,iloc)
368 IF ( iloc /= element_not_found )
THEN
369 borderinfo(2,iloc) = borderinfo(2,iloc) + 1
371 pgrid%borders(iloc)%icgRecv(borderinfo(2,iloc)) = icg
373 CALL
errorstop(global,err_cell_not_found,__line__)
381 DEALLOCATE(borderinfo,stat=errorflag)
382 global%error = errorflag
383 IF ( global%error /= err_none )
THEN
384 CALL
errorstop(global,err_deallocate,__line__,
'borderInfo')
388 IF ( global%verbLevel >= verbose_high )
THEN
389 WRITE(stdout,
'(A,3X,A)') solver_name, &
390 'Determining cells to be received done.'
397 IF ( global%verbLevel >= verbose_high )
THEN
398 WRITE(stdout,
'(A,3X,A)') solver_name,
'Determining cells to be sent...'
401 DO ireg = 1,global%nRegions
402 pregion => regions(ireg)
403 pgrid => pregion%grid
405 IF ( global%verbLevel >= verbose_high )
THEN
406 WRITE(stdout,
'(A,5X,A,1X,I5.5)') solver_name,
'Global region:', &
407 pregion%iRegionGlobal
414 DO iborder = 1,pgrid%nBorders
415 pborder => pgrid%borders(iborder)
417 ireg2 = pborder%iRegionGlobal
419 pregion2 => regions(ireg2)
420 pgrid2 => pregion2%grid
427 innerloop:
DO iborder2 = 1,pgrid2%nBorders
428 IF ( pgrid2%borders(iborder2)%iRegionGlobal == ireg )
THEN
429 pborder2 => pgrid2%borders(iborder2)
433 pborder2%iBorder = iborder
434 pborder2%nCellsSend = pgrid%borders(iborder)%nCellsRecv
438 ALLOCATE(pborder2%icgSend(pborder2%nCellsSend),stat=errorflag)
439 global%error = errorflag
440 IF ( global%error /= err_none )
THEN
441 CALL
errorstop(global,err_allocate,__line__,
'pBorder%icgSend')
446 DO icl = 1,pborder2%nCellsSend
447 icg = pborder%icgRecv(icl)
448 ict = pgrid%cellGlob2Loc(1,icg)
449 icgs = pgrid%pc2sc(icg)
451 IF ( icgs > pgridserial%nCells )
THEN
459 ireg3 = pgridserial%sc2r(icgs)
461 IF ( ireg3 /= ireg2 )
THEN
462 WRITE(errorstring,
'(2(1X,I7.7))') ireg3,ireg2
463 CALL
errorstop(global,err_region_ids_invalid,__line__, &
470 pgrid2%nCellsTot,icgs,iloc)
474 IF ( iloc /= element_not_found )
THEN
475 icg2 = pgrid2%sc2pc(2,iloc)
476 ict2 = pgrid2%cellGlob2Loc(1,icg2)
478 IF ( icg2 > pgrid2%nCells )
THEN
479 CALL
errorstop(global,err_cell_kind_invalid,__line__)
482 IF ( ict /= ict2 )
THEN
483 WRITE(errorstring,
'(2(1X,I2))') ict,ict2
484 CALL
errorstop(global,err_cell_type_invalid,__line__, &
488 pborder2%icgSend(icl) = icg2
490 CALL
errorstop(global,err_cell_not_found,__line__)
500 IF ( global%verbLevel >= verbose_high )
THEN
501 WRITE(stdout,
'(A,3X,A)') solver_name,
'Determining cells to be sent done.'
508 IF ( global%verbLevel >= verbose_high )
THEN
509 WRITE(stdout,
'(A,1X,A)') solver_name, &
510 'Building cell communication lists done.'
558 TYPE(t_region
),
DIMENSION(:),
POINTER :: regions
564 CHARACTER(CHRLEN) :: errorstring
565 LOGICAL :: foundflag,sypeflag
566 INTEGER :: errorflag,iborder,iborderserial,iborderserial2,iborder2,iloc, &
567 ireg,ireg2,ivg,ivgs,ivgs2,ivg2,ivl,ivl2,ivls2,nvertrecv, &
568 nvertrecvtemp,nvertrecvtempmax,nvertsend,nvertsendtemp, &
569 nvertsendtempmax,nvertshared,nvertsharedtempmax,vlistdim, &
571 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ivgrecvtemp,ivgsendtemp, &
572 ivgsharedsorted,ivgsharedtemp, &
574 TYPE(t_border),
POINTER :: pborder,pborderserial,pborderserial2,pborder2
575 TYPE(t_grid),
POINTER :: pgrid,pgrid2,pgridserial
577 TYPE(t_region
),
POINTER :: pregion,pregion2,pregionserial
583 global => regions(0)%global
586 'RFLU_ModCommLists.F90')
588 IF ( global%verbLevel >= verbose_high )
THEN
589 WRITE(stdout,
'(A,1X,A)') solver_name, &
590 'Building vertex communication lists...'
593 pregionserial => regions(0)
594 pgridserial => pregionserial%grid
606 IF ( global%verbLevel >= verbose_high )
THEN
607 WRITE(stdout,
'(A,3X,A)') solver_name,
'Determining vertices to be '// &
608 'received and shared...'
611 DO ireg = 1,global%nRegions
612 pregion => regions(ireg)
613 pgrid => pregion%grid
615 IF ( global%verbLevel >= verbose_high )
THEN
616 WRITE(stdout,
'(A,5X,A,1X,I5.5)') solver_name,
'Global region:', &
617 pregion%iRegionGlobal
624 DO iborder = 1,pgrid%nBorders
625 pborder => pgrid%borders(iborder)
627 IF ( global%verbLevel >= verbose_high )
THEN
628 WRITE(stdout,
'(A,7X,A,1X,I3)') solver_name,
'Border:',iborder
642 nvertsendtempmax = 8*pborder%nCellsSend
643 nvertrecvtempmax = 8*pborder%nCellsRecv
644 nvertsharedtempmax =
max(nvertsendtempmax,nvertrecvtempmax)
646 ALLOCATE(ivgsendtemp(nvertsendtempmax),stat=errorflag)
647 global%error = errorflag
648 IF ( global%error /= err_none )
THEN
649 CALL
errorstop(global,err_allocate,__line__,
'ivgSendTemp')
652 ALLOCATE(ivgrecvtemp(nvertrecvtempmax),stat=errorflag)
653 global%error = errorflag
654 IF ( global%error /= err_none )
THEN
655 CALL
errorstop(global,err_allocate,__line__,
'ivgRecvTemp')
658 ALLOCATE(ivgsharedtemp(nvertsharedtempmax),stat=errorflag)
659 global%error = errorflag
660 IF ( global%error /= err_none )
THEN
661 CALL
errorstop(global,err_allocate,__line__,
'ivgSharedTemp')
670 IF ( pborder%nCellsSend > 0 )
THEN
672 pborder%nCellsSend,ivgsendtemp, &
673 nvertsendtempmax,nvertsendtemp)
679 IF ( pborder%nCellsRecv > 0 )
THEN
681 pborder%nCellsRecv,ivgrecvtemp, &
682 nvertrecvtempmax,nvertrecvtemp)
695 IF ( nvertsendtemp > 0 .AND. nvertrecvtemp > 0 )
THEN
697 nvertsendtemp,nvertsend, &
698 ivgrecvtemp(1:nvertrecvtemp), &
699 nvertrecvtemp,nvertrecv, &
701 nvertsharedtempmax, &
702 nvertshared,errorflag)
704 IF ( errorflag /= err_none )
THEN
705 WRITE(*,*)
'RemoveCommonSortedIntegersFancy returned error!'
712 IF ( nvertsendtemp > 0 )
THEN
713 nvertsend = nvertsendtemp
718 IF ( nvertrecvtemp > 0 )
THEN
719 nvertrecv = nvertrecvtemp
729 DEALLOCATE(ivgsendtemp,stat=errorflag)
730 global%error = errorflag
731 IF ( global%error /= err_none )
THEN
732 CALL
errorstop(global,err_deallocate,__line__,
'ivgSendTemp')
735 pborder%nVertRecv = nvertrecv
736 pborder%nVertShared = nvertshared
738 IF ( pborder%nVertRecv > 0 )
THEN
739 ALLOCATE(pborder%ivgRecv(pborder%nVertRecv),stat=errorflag)
740 global%error = errorflag
741 IF ( global%error /= err_none )
THEN
742 CALL
errorstop(global,err_allocate,__line__,
'pBorder%ivgRecv')
745 nullify(pborder%ivgRecv)
748 IF ( pborder%nVertShared > 0 )
THEN
749 ALLOCATE(pborder%ivgShared(pborder%nVertShared),stat=errorflag)
750 global%error = errorflag
751 IF ( global%error /= err_none )
THEN
752 CALL
errorstop(global,err_allocate,__line__,
'pBorder%ivgShared')
755 nullify(pborder%ivgShared)
758 DO ivl = 1,pborder%nVertRecv
759 pborder%ivgRecv(ivl) = ivgrecvtemp(ivl)
762 DO ivl = 1,pborder%nVertShared
763 pborder%ivgShared(ivl) = ivgsharedtemp(ivl)
766 DEALLOCATE(ivgrecvtemp,stat=errorflag)
767 global%error = errorflag
768 IF ( global%error /= err_none )
THEN
769 CALL
errorstop(global,err_deallocate,__line__,
'ivgRecvTemp')
772 DEALLOCATE(ivgsharedtemp,stat=errorflag)
773 global%error = errorflag
774 IF ( global%error /= err_none )
THEN
775 CALL
errorstop(global,err_deallocate,__line__,
'ivgSharedTemp')
780 IF ( global%verbLevel >= verbose_high )
THEN
781 WRITE(stdout,
'(A,3X,A)') solver_name,
'Determining vertices to be '// &
782 'received and shared done.'
789 IF ( global%verbLevel >= verbose_high )
THEN
790 WRITE(stdout,
'(A,3X,A)') solver_name, &
791 'Ensuring consistency of shared-vertex lists...'
794 DO ireg = 1,global%nRegions
795 pregion => regions(ireg)
796 pgrid => pregion%grid
798 IF ( global%verbLevel >= verbose_high)
THEN
799 WRITE(stdout,
'(A,5X,A,1X,I5.5)') solver_name,
'Global region:', &
800 pregion%iRegionGlobal
803 DO iborder = 1,pgrid%nBorders
804 pborder => pgrid%borders(iborder)
806 ireg2 = pborder%iRegionGlobal
807 iborder2 = pborder%iBorder
809 pregion2 => regions(ireg2)
810 pgrid2 => pregion2%grid
811 pborder2 => pgrid2%borders(iborder2)
813 IF ( pborder%nVertShared /= pborder2%nVertShared )
THEN
814 CALL
errorstop(global,err_nvertshared_mismatch,__line__)
817 IF ( (ireg2 < ireg) .OR. &
818 ((ireg2 == ireg) .AND. (iborder2 < iborder)) )
THEN
819 DO ivl = 1,pborder%nVertShared
820 ivg = pborder%ivgShared(ivl)
821 ivgs = pgrid%pv2sv(ivg)
824 pgrid2%nVertTot,ivgs,iloc)
826 IF ( iloc /= element_not_found )
THEN
827 ivg2 = pgrid2%sv2pv(2,iloc)
829 IF ( ivg2 > pgrid2%nVert )
THEN
830 CALL
errorstop(global,err_vertex_kind_invalid,__line__)
833 pborder2%ivgShared(ivl) = ivg2
835 IF ( sypeflag .EQV. .true. )
THEN
838 pborder2%ivgShared(ivl) = ivg2
840 CALL
errorstop(global,err_vertex_not_found,__line__)
848 IF ( global%verbLevel >= verbose_high )
THEN
849 WRITE(stdout,
'(A,3X,A)') solver_name,
'Ensuring consistency of '// &
850 'shared-vertex lists done.'
857 IF ( global%verbLevel >= verbose_high )
THEN
858 WRITE(stdout,
'(A,3X,A)') solver_name, &
859 'Determining vertices to be sent...'
862 DO ireg = 1,global%nRegions
863 pregion => regions(ireg)
864 pgrid => pregion%grid
866 IF ( global%verbLevel >= verbose_high)
THEN
867 WRITE(stdout,
'(A,5X,A,1X,I5.5)') solver_name,
'Global region:', &
868 pregion%iRegionGlobal
875 DO iborder = 1,pgrid%nBorders
876 pborder => pgrid%borders(iborder)
883 ireg2 = pborder%iRegionGlobal
884 iborder2 = pborder%iBorder
886 pregion2 => regions(ireg2)
887 pgrid2 => pregion2%grid
888 pborder2 => pgrid2%borders(iborder2)
892 pborder2%nVertSend = pborder%nVertRecv
896 IF ( pborder2%nVertSend > 0 )
THEN
897 ALLOCATE(pborder2%ivgSend(pborder2%nVertSend),stat=errorflag)
898 global%error = errorflag
899 IF ( global%error /= err_none )
THEN
900 CALL
errorstop(global,err_allocate,__line__,
'pBorder%ivgSend')
903 nullify(pborder2%ivgSend)
908 DO ivl = 1,pborder2%nVertSend
909 ivg = pborder%ivgRecv(ivl)
910 ivgs = pgrid%pv2sv(ivg)
915 pgrid2%nVertTot,ivgs,iloc)
919 IF ( iloc /= element_not_found )
THEN
920 ivg2 = pgrid2%sv2pv(2,iloc)
922 IF ( ivg2 > pgrid2%nVert )
THEN
923 CALL
errorstop(global,err_vertex_kind_invalid,__line__)
926 pborder2%ivgSend(ivl) = ivg2
928 IF ( sypeflag .EQV. .true. )
THEN
931 pborder2%ivgSend(ivl) = ivg2
933 CALL
errorstop(global,err_vertex_not_found,__line__)
940 IF ( global%verbLevel >= verbose_high )
THEN
941 WRITE(stdout,
'(A,3X,A)') solver_name, &
942 'Determining vertices to be sent done.'
949 IF ( global%verbLevel >= verbose_high )
THEN
950 WRITE(stdout,
'(A,1X,A)') solver_name, &
951 'Building vertex communication lists done.'
1008 TYPE(t_region
),
DIMENSION(:),
POINTER :: regions
1014 INTEGER :: errorflag,iborder,iborder2,iloc,ireg,ireg2
1015 INTEGER,
DIMENSION(:),
ALLOCATABLE :: bordercntr
1017 TYPE(t_grid),
POINTER :: pgrid,pgrid2
1018 TYPE(t_region
),
POINTER :: pregion,pregion2
1024 global => regions(1)%global
1027 'RFLU_ModCommLists.F90')
1029 IF ( global%verbLevel >= verbose_high )
THEN
1030 WRITE(stdout,
'(A,1X,A)') solver_name,
'Checking counting of borders...'
1037 DO ireg = 1,global%nRegionsLocal
1038 pregion => regions(ireg)
1039 pgrid => pregion%grid
1041 IF ( global%verbLevel >= verbose_high)
THEN
1042 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
1043 pregion%iRegionGlobal
1046 DO iborder = 1,pgrid%nBorders
1047 ireg2 = pgrid%borderCntr(iborder)
1049 pregion2 => regions(ireg2)
1050 pgrid2 => pregion2%grid
1053 pgrid2%nBorders,ireg,iloc)
1055 IF ( iloc == element_not_found )
THEN
1056 global%warnCounter = global%warnCounter + 1
1058 IF ( global%verbLevel >= verbose_none )
THEN
1059 WRITE(stdout,
'(A,3X,A,2(1X,A,1X,I5),A)') solver_name, &
1060 '*** WARNING ***',
'Border asymmetry between regions', &
1061 ireg,
'and',ireg2,
'.'
1062 WRITE(stdout,
'(A,19X,A,1X,I5,A)') solver_name, &
1063 'Correcting border data structure for region',ireg2,
'.'
1066 IF ( pgrid2%nBorders ==
SIZE(pgrid2%borderCntr) )
THEN
1067 ALLOCATE(bordercntr(pgrid2%nBorders),stat=errorflag)
1068 global%error = errorflag
1069 IF ( global%error /= err_none )
THEN
1070 CALL
errorstop(global,err_allocate,__line__,
'borderCntr')
1073 DO iborder2 = 1,pgrid2%nBorders
1074 bordercntr(iborder2) = pgrid2%borderCntr(iborder2)
1080 DO iborder2 = 1,pgrid2%nBorders
1081 pgrid2%borderCntr(iborder2) = bordercntr(iborder2)
1084 DO iborder2 = pgrid2%nBorders+1,
SIZE(pgrid2%borderCntr)
1085 pgrid2%borderCntr(iborder2) = 0
1088 DEALLOCATE(bordercntr,stat=errorflag)
1089 global%error = errorflag
1090 IF ( global%error /= err_none )
THEN
1091 CALL
errorstop(global,err_deallocate,__line__,
'borderCntr')
1095 pgrid2%nBorders = pgrid2%nBorders + 1
1097 pgrid2%borderCntr(pgrid2%nBorders) = ireg
1109 IF ( global%verbLevel >= verbose_high )
THEN
1110 WRITE(stdout,
'(A,1X,A)') solver_name,
'Checking counting of borders done.'
1159 TYPE(t_region
),
POINTER :: pregion,pregionserial
1166 INTEGER :: errorflag,iborder,icg,icgs,icgs2,iloc,ireg,ireg2,nbordersmax
1167 INTEGER,
DIMENSION(:),
ALLOCATABLE :: bordercntr
1169 TYPE(t_grid),
POINTER :: pgrid,pgridserial
1175 global => pregion%global
1178 'RFLU_ModCommLists.F90')
1180 IF ( global%verbLevel >= verbose_high )
THEN
1181 WRITE(stdout,
'(A,1X,A)') solver_name,
'Counting borders...'
1184 IF ( global%verbLevel >= verbose_high )
THEN
1185 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
1186 pregion%iRegionGlobal
1193 pgrid => pregion%grid
1194 pgridserial => pregionserial%grid
1208 DO icg = pgrid%nCells+1,pgrid%nCellsTot
1209 icgs = pgrid%pc2sc(icg)
1210 ireg = pgridserial%sc2r(icgs)
1212 IF ( ireg /= pregion%iRegionGlobal )
THEN
1213 IF ( pgrid%nBorders > 0 )
THEN
1215 pgrid%nBorders,ireg,iloc)
1217 iloc = element_not_found
1220 IF ( sypeflag .EQV. .true. )
THEN
1221 IF ( icgs > pgridserial%nCells )
THEN
1224 ireg = pgridserial%sc2r(icgs2)
1226 IF ( pgrid%nBorders > 0 )
THEN
1228 pgrid%nBorders,ireg,iloc)
1230 iloc = element_not_found
1246 IF ( iloc == element_not_found )
THEN
1247 IF ( pgrid%nBorders ==
SIZE(pgrid%borderCntr) )
THEN
1248 ALLOCATE(bordercntr(pgrid%nBorders),stat=errorflag)
1249 global%error = errorflag
1250 IF ( global%error /= err_none )
THEN
1251 CALL
errorstop(global,err_allocate,__line__,
'borderCntr')
1254 DO iborder = 1,pgrid%nBorders
1255 bordercntr(iborder) = pgrid%borderCntr(iborder)
1261 DO iborder = 1,pgrid%nBorders
1262 pgrid%borderCntr(iborder) = bordercntr(iborder)
1265 DO iborder = pgrid%nBorders+1,
SIZE(pgrid%borderCntr)
1266 pgrid%borderCntr(iborder) = 0
1269 DEALLOCATE(bordercntr,stat=errorflag)
1270 global%error = errorflag
1271 IF ( global%error /= err_none )
THEN
1272 CALL
errorstop(global,err_deallocate,__line__,
'borderCntr')
1276 pgrid%nBorders = pgrid%nBorders + 1
1278 pgrid%borderCntr(pgrid%nBorders) = ireg
1290 IF ( sypeflag .EQV. .false. )
THEN
1292 pgrid%nBorders,pregion%iRegionGlobal,iloc)
1293 IF ( iloc /= element_not_found )
THEN
1294 CALL
errorstop(global,err_partition_invalid,__line__)
1302 IF ( global%verbLevel >= verbose_high )
THEN
1303 WRITE(stdout,
'(A,3X,A,1X,I3)') solver_name,
'Number of borders:', &
1311 IF ( global%verbLevel >= verbose_high )
THEN
1312 WRITE(stdout,
'(A,1X,A)') solver_name,
'Counting borders done.'
1355 TYPE(t_region
),
POINTER :: pregion
1361 INTEGER :: errorflag,ipatch
1363 TYPE(t_grid),
POINTER :: pgrid
1364 TYPE(t_patch),
POINTER :: ppatch
1370 global => pregion%global
1373 'RFLU_ModCommLists.F90')
1375 IF ( global%verbLevel >= verbose_high )
THEN
1376 WRITE(stdout,
'(A,1X,A)') solver_name,
'Counting serial borders...'
1379 IF ( pregion%iRegionGlobal /= 0 )
THEN
1380 CALL
errorstop(global,err_region_id_invalid,__line__)
1387 pgrid => pregion%grid
1395 DO ipatch = 1,pgrid%nPatches
1396 ppatch => pregion%patches(ipatch)
1398 IF ( (ppatch%bcType == bc_symmetry) .OR. &
1399 (ppatch%bcType == bc_periodic) )
THEN
1400 pgrid%nBorders = pgrid%nBorders + 1
1402 ppatch%iBorder = pgrid%nBorders
1404 ppatch%iBorder = patch_iborder_default
1408 IF ( global%verbLevel >= verbose_high )
THEN
1409 WRITE(stdout,
'(A,3X,A,1X,I3)') solver_name,
'Number of borders:', &
1417 IF ( global%verbLevel >= verbose_high )
THEN
1418 WRITE(stdout,
'(A,1X,A)') solver_name,
'Counting serial borders done.'
1458 INTEGER,
INTENT(IN),
OPTIONAL :: nbordersmaxopt
1459 TYPE(t_region
),
POINTER :: pregion
1465 INTEGER :: errorflag,iborder,nborders,nbordersmax
1467 TYPE(t_grid),
POINTER :: pgrid
1473 global => pregion%global
1476 'RFLU_ModCommLists.F90')
1482 pgrid => pregion%grid
1490 IF ( present(nbordersmaxopt) )
THEN
1491 nborders = nbordersmaxopt
1493 nborders = nbordersmax
1496 ALLOCATE(pgrid%borderCntr(nborders),stat=errorflag)
1497 global%error = errorflag
1498 IF ( global%error /= err_none )
THEN
1499 CALL
errorstop(global,err_allocate,__line__,
'pGrid%borderCntr')
1502 DO iborder = 1,nborders
1503 pgrid%borderCntr(iborder) = 0
1549 INTEGER,
INTENT(IN),
OPTIONAL :: createmode
1550 TYPE(t_region
),
POINTER :: pregion
1556 INTEGER :: errorflag,iborder
1559 TYPE(t_grid),
POINTER :: pgrid
1565 global => pregion%global
1568 'RFLU_ModCommLists.F90')
1570 IF ( global%myProcid == masterproc .AND. &
1571 global%verbLevel >= verbose_high )
THEN
1572 WRITE(stdout,
'(A,1X,A)') solver_name,
'Creating borders...'
1575 IF ( global%myProcid == masterproc .AND. &
1576 global%verbLevel >= verbose_high )
THEN
1577 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
1578 pregion%iRegionGlobal
1585 pgrid => pregion%grid
1591 IF ( pgrid%nBorders > 0 )
THEN
1592 ALLOCATE(pgrid%borders(pgrid%nBorders),stat=errorflag)
1593 global%error = errorflag
1594 IF ( global%error /= err_none )
THEN
1595 CALL
errorstop(global,err_allocate,__line__,
'pGrid%borders')
1598 nullify(pgrid%borders)
1608 IF ( present(createmode) )
THEN
1609 IF ( createmode == create_borders_mode_dim_known )
THEN
1610 DO iborder = 1,pgrid%nBorders
1611 pborder => pgrid%borders(iborder)
1613 pborder%iRegionGlobal = pgrid%borderInfo(border_info_irglob,iborder)
1614 pborder%iBorder = pgrid%borderInfo(border_info_ibord ,iborder)
1615 pborder%nCellsSend = pgrid%borderInfo(border_info_ncsend,iborder)
1616 pborder%nCellsRecv = pgrid%borderInfo(border_info_ncrecv,iborder)
1617 pborder%nVertSend = pgrid%borderInfo(border_info_nvsend,iborder)
1618 pborder%nVertRecv = pgrid%borderInfo(border_info_nvrecv,iborder)
1619 pborder%nVertShared = pgrid%borderInfo(border_info_nvshar,iborder)
1621 pborder%iProc = crazy_value_int
1622 pborder%iRegionLocal = crazy_value_int
1625 DO iborder = 1,pgrid%nBorders
1626 pborder => pgrid%borders(iborder)
1628 pborder%iRegionGlobal = crazy_value_int
1629 pborder%iBorder = crazy_value_int
1631 pborder%nCellsSend = 0
1632 pborder%nCellsRecv = 0
1633 pborder%nVertSend = 0
1634 pborder%nVertRecv = 0
1635 pborder%nVertShared = 0
1637 pborder%iProc = crazy_value_int
1638 pborder%iRegionLocal = crazy_value_int
1647 IF ( global%myProcid == masterproc .AND. &
1648 global%verbLevel >= verbose_high )
THEN
1649 WRITE(stdout,
'(A,1X,A)') solver_name,
'Creating borders done.'
1689 TYPE(t_region
),
POINTER :: pregion
1695 INTEGER :: errorflag,iborder
1698 TYPE(t_grid),
POINTER :: pgrid
1704 global => pregion%global
1707 'RFLU_ModCommLists.F90')
1709 IF ( global%myProcid == masterproc .AND. &
1710 global%verbLevel >= verbose_high )
THEN
1711 WRITE(stdout,
'(A,1X,A)') solver_name,
'Creating communication lists...'
1714 IF ( global%myProcid == masterproc .AND. &
1715 global%verbLevel >= verbose_high)
THEN
1716 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
1717 pregion%iRegionGlobal
1724 pgrid => pregion%grid
1730 DO iborder = 1,pgrid%nBorders
1731 pborder => pgrid%borders(iborder)
1733 ALLOCATE(pborder%icgSend(pborder%nCellsSend),stat=errorflag)
1734 global%error = errorflag
1735 IF ( global%error /= err_none )
THEN
1736 CALL
errorstop(global,err_allocate,__line__,
'pBorder%icgSend')
1739 ALLOCATE(pborder%icgRecv(pborder%nCellsRecv),stat=errorflag)
1740 global%error = errorflag
1741 IF ( global%error /= err_none )
THEN
1742 CALL
errorstop(global,err_allocate,__line__,
'pBorder%icgRecv')
1745 ALLOCATE(pborder%ivgSend(pborder%nVertSend),stat=errorflag)
1746 global%error = errorflag
1747 IF ( global%error /= err_none )
THEN
1748 CALL
errorstop(global,err_allocate,__line__,
'pBorder%ivgSend')
1751 ALLOCATE(pborder%ivgRecv(pborder%nVertRecv),stat=errorflag)
1752 global%error = errorflag
1753 IF ( global%error /= err_none )
THEN
1754 CALL
errorstop(global,err_allocate,__line__,
'pBorder%ivgRecv')
1757 ALLOCATE(pborder%ivgShared(pborder%nVertShared),stat=errorflag)
1758 global%error = errorflag
1759 IF ( global%error /= err_none )
THEN
1760 CALL
errorstop(global,err_allocate,__line__,
'pBorder%ivgShared')
1768 IF ( global%myProcid == masterproc .AND. &
1769 global%verbLevel >= verbose_high )
THEN
1770 WRITE(stdout,
'(A,1X,A)') solver_name,
'Creating communication lists done.'
1811 TYPE(t_region
),
POINTER :: pregion
1817 INTEGER :: errorflag
1819 TYPE(t_grid),
POINTER :: pgrid
1825 global => pregion%global
1828 'RFLU_ModCommLists.F90')
1834 pgrid => pregion%grid
1840 DEALLOCATE(pgrid%borderCntr,stat=errorflag)
1841 global%error = errorflag
1842 IF ( global%error /= err_none )
THEN
1843 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%borderCntr')
1889 TYPE(t_region
),
POINTER :: pregion
1895 INTEGER :: errorflag,iborder
1898 TYPE(t_grid),
POINTER :: pgrid
1904 global => pregion%global
1907 'RFLU_ModCommLists.F90')
1909 IF ( global%myProcid == masterproc .AND. &
1910 global%verbLevel >= verbose_high )
THEN
1911 WRITE(stdout,
'(A,1X,A)') solver_name,
'Destroying borders...'
1914 IF ( global%myProcid == masterproc .AND. &
1915 global%verbLevel >= verbose_high)
THEN
1916 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
1917 pregion%iRegionGlobal
1924 pgrid => pregion%grid
1930 DEALLOCATE(pgrid%borders,stat=errorflag)
1931 global%error = errorflag
1932 IF ( global%error /= err_none )
THEN
1933 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%borders')
1940 IF ( global%myProcid == masterproc .AND. &
1941 global%verbLevel >= verbose_high )
THEN
1942 WRITE(stdout,
'(A,1X,A)') solver_name,
'Destroying borders done.'
1981 TYPE(t_region
),
POINTER :: pregion
1987 INTEGER :: errorflag,iborder
1990 TYPE(t_grid),
POINTER :: pgrid
1996 global => pregion%global
1999 'RFLU_ModCommLists.F90')
2001 IF ( global%myProcid == masterproc .AND. &
2002 global%verbLevel >= verbose_high )
THEN
2003 WRITE(stdout,
'(A,1X,A)') solver_name,
'Destroying communication lists...'
2006 IF ( global%myProcid == masterproc .AND. &
2007 global%verbLevel >= verbose_high)
THEN
2008 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
2009 pregion%iRegionGlobal
2016 pgrid => pregion%grid
2022 DO iborder = 1,pgrid%nBorders
2023 pborder => pgrid%borders(iborder)
2025 DEALLOCATE(pborder%icgSend,stat=errorflag)
2026 global%error = errorflag
2027 IF ( global%error /= err_none )
THEN
2028 CALL
errorstop(global,err_deallocate,__line__,
'pBorder%icgSend')
2031 DEALLOCATE(pborder%icgRecv,stat=errorflag)
2032 global%error = errorflag
2033 IF ( global%error /= err_none )
THEN
2034 CALL
errorstop(global,err_deallocate,__line__,
'pBorder%icgRecv')
2037 DEALLOCATE(pborder%ivgSend,stat=errorflag)
2038 global%error = errorflag
2039 IF ( global%error /= err_none )
THEN
2040 CALL
errorstop(global,err_deallocate,__line__,
'pBorder%ivgSend')
2043 DEALLOCATE(pborder%ivgRecv,stat=errorflag)
2044 global%error = errorflag
2045 IF ( global%error /= err_none )
THEN
2046 CALL
errorstop(global,err_deallocate,__line__,
'pBorder%ivgRecv')
2049 DEALLOCATE(pborder%ivgShared,stat=errorflag)
2050 global%error = errorflag
2051 IF ( global%error /= err_none )
THEN
2052 CALL
errorstop(global,err_deallocate,__line__,
'pBorder%ivgShared')
2060 IF ( global%myProcid == masterproc .AND. &
2061 global%verbLevel >= verbose_high )
THEN
2062 WRITE(stdout,
'(A,1X,A)') solver_name, &
2063 'Destroying communication lists done.'
2109 TYPE(t_region
),
POINTER :: pregion
2115 INTEGER :: errorflag,iborder,nregids
2116 INTEGER,
DIMENSION(:),
ALLOCATABLE :: locregids,procids,regids
2119 TYPE(t_grid),
POINTER :: pgrid
2125 global => pregion%global
2128 'RFLU_ModCommLists.F90')
2130 IF ( global%myProcid == masterproc .AND. &
2131 global%verbLevel >= verbose_high )
THEN
2132 WRITE(stdout,
'(A,1X,A)') solver_name,
'Getting border process ids..'
2135 IF ( global%myProcid == masterproc .AND. &
2136 global%verbLevel >= verbose_high)
THEN
2137 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
2138 pregion%iRegionGlobal
2145 pgrid => pregion%grid
2151 ALLOCATE(regids(pgrid%nBorders),stat=errorflag)
2152 global%error = errorflag
2153 IF ( global%error /= err_none )
THEN
2154 CALL
errorstop(global,err_allocate,__line__,
'regIds')
2157 ALLOCATE(procids(pgrid%nBorders),stat=errorflag)
2158 global%error = errorflag
2159 IF ( global%error /= err_none )
THEN
2160 CALL
errorstop(global,err_allocate,__line__,
'procIds')
2163 ALLOCATE(locregids(pgrid%nBorders),stat=errorflag)
2164 global%error = errorflag
2165 IF ( global%error /= err_none )
THEN
2166 CALL
errorstop(global,err_allocate,__line__,
'locRegIds')
2173 DO iborder = 1,pgrid%nBorders
2174 pborder => pgrid%borders(iborder)
2176 regids(iborder) = pborder%iRegionGlobal
2183 DO iborder = 1,pgrid%nBorders
2184 pborder => pgrid%borders(iborder)
2186 pborder%iProc = procids(iborder) - 1
2187 pborder%iRegionLocal = locregids(iborder)
2194 DEALLOCATE(regids,stat=errorflag)
2195 global%error = errorflag
2196 IF ( global%error /= err_none )
THEN
2197 CALL
errorstop(global,err_deallocate,__line__,
'regIds')
2200 DEALLOCATE(procids,stat=errorflag)
2201 global%error = errorflag
2202 IF ( global%error /= err_none )
THEN
2203 CALL
errorstop(global,err_deallocate,__line__,
'procIds')
2206 DEALLOCATE(locregids,stat=errorflag)
2207 global%error = errorflag
2208 IF ( global%error /= err_none )
THEN
2209 CALL
errorstop(global,err_deallocate,__line__,
'locRegIds')
2216 IF ( global%myProcid == masterproc .AND. &
2217 global%verbLevel >= verbose_high )
THEN
2218 WRITE(stdout,
'(A,1X,A)') solver_name,
'Getting border process ids done.'
2259 TYPE(t_region
),
POINTER :: pregion
2265 INTEGER :: errorflag,iborder,icl,ifile,ivl,loopcounter,nborders, &
2266 ncellsrecv,ncellssend,nvertrecv,nvertsend,nvertshared
2267 CHARACTER(CHRLEN) :: ifilename,sectionstring
2269 TYPE(t_grid),
POINTER :: pgrid
2276 global => pregion%global
2279 'RFLU_ModCommLists.F90')
2281 IF ( global%myProcid == masterproc .AND. &
2282 global%verbLevel >= verbose_high )
THEN
2283 WRITE(stdout,
'(A,1X,A)') solver_name,
'Reading communication lists...'
2286 IF ( global%myProcid == masterproc .AND. &
2287 global%verbLevel >= verbose_high)
THEN
2288 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
2289 pregion%iRegionGlobal
2296 ifile = if_comm_lists
2299 pregion%iRegionGlobal,ifilename)
2301 OPEN(ifile,file=ifilename,
form=
"FORMATTED",
status=
"OLD", &
2303 global%error = errorflag
2304 IF ( global%error /= err_none )
THEN
2305 CALL
errorstop(global,err_file_open,__line__,ifilename)
2312 IF ( global%myProcid == masterproc .AND. &
2313 global%verbLevel >= verbose_high)
THEN
2314 WRITE(stdout,
'(A,3X,A)') solver_name,
'Header information...'
2317 READ(ifile,
'(A)') sectionstring
2318 IF ( trim(sectionstring) /=
'# ROCFLU communication lists file' )
THEN
2319 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
2326 pgrid => pregion%grid
2328 READ(ifile,
'(A)') sectionstring
2329 IF ( trim(sectionstring) /=
'# Dimensions' )
THEN
2330 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
2333 READ(ifile,
'(I8)') nborders
2339 IF ( nborders /= pgrid%nBorders )
THEN
2340 CALL
errorstop(global,err_dimens_invalid,__line__)
2354 loopcounter = loopcounter + 1
2356 READ(ifile,
'(A)') sectionstring
2358 SELECT CASE ( trim(sectionstring) )
2364 CASE (
'# Information' )
2365 IF ( global%myProcid == masterproc .AND. &
2366 global%verbLevel >= verbose_high)
THEN
2367 WRITE(stdout,
'(A,3X,A)') solver_name,
'Information...'
2370 DO iborder = 1,pgrid%nBorders
2371 pborder => pgrid%borders(iborder)
2373 READ(ifile,
'(2(I8))') pborder%iRegionGlobal,pborder%iBorder
2381 IF ( global%myProcid == masterproc .AND. &
2382 global%verbLevel >= verbose_high)
THEN
2383 WRITE(stdout,
'(A,3X,A)') solver_name,
'Cells...'
2386 DO iborder = 1,pgrid%nBorders
2387 pborder => pgrid%borders(iborder)
2389 READ(ifile,
'(2(I8))') ncellssend,ncellsrecv
2391 IF ( ncellssend /= pborder%nCellsSend .OR. &
2392 ncellsrecv /= pborder%nCellsRecv )
THEN
2393 CALL
errorstop(global,err_dimens_invalid,__line__)
2396 READ(ifile,
'(10(I8))') (pborder%icgSend(icl), &
2397 icl=1,pborder%nCellsSend)
2398 READ(ifile,
'(10(I8))') (pborder%icgRecv(icl), &
2399 icl=1,pborder%nCellsRecv)
2406 CASE (
'# Vertices' )
2407 IF ( global%myProcid == masterproc .AND. &
2408 global%verbLevel >= verbose_high)
THEN
2409 WRITE(stdout,
'(A,3X,A)') solver_name,
'Vertices...'
2412 DO iborder = 1,pgrid%nBorders
2413 pborder => pgrid%borders(iborder)
2415 READ(ifile,
'(3(I8))') nvertsend,nvertrecv,nvertshared
2417 IF ( nvertsend /= pborder%nVertSend .OR. &
2418 nvertrecv /= pborder%nVertRecv .OR. &
2419 nvertshared /= pborder%nVertShared )
THEN
2420 CALL
errorstop(global,err_dimens_invalid,__line__)
2423 READ(ifile,
'(10(I8))') (pborder%ivgSend(ivl), &
2424 ivl=1,pborder%nVertSend)
2425 READ(ifile,
'(10(I8))') (pborder%ivgRecv(ivl), &
2426 ivl=1,pborder%nVertRecv)
2427 READ(ifile,
'(10(I8))') (pborder%ivgShared(ivl), &
2428 ivl=1,pborder%nVertShared)
2436 IF ( global%myProcid == masterproc .AND. &
2437 global%verbLevel >= verbose_high)
THEN
2438 WRITE(stdout,
'(A,3X,A)') solver_name,
'End marker...'
2448 IF ( global%myProcid == masterproc .AND. &
2449 global%verbLevel >= verbose_high)
THEN
2450 WRITE(stdout,
'(3X,A)') sectionstring
2453 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
2460 IF ( loopcounter >= limit_infinite_loop )
THEN
2461 CALL
errorstop(global,err_infinite_loop,__line__)
2469 CLOSE(ifile,iostat=errorflag)
2470 global%error = errorflag
2471 IF ( global%error /= err_none )
THEN
2472 CALL
errorstop(global,err_file_close,__line__,ifilename)
2479 IF ( global%myProcid == masterproc .AND. &
2480 global%verbLevel >= verbose_high )
THEN
2481 WRITE(stdout,
'(A,1X,A)') solver_name,
'Reading communication lists done.'
2523 TYPE(t_region
),
POINTER :: pregion
2529 INTEGER :: errorflag,iborder,icl,ifile,ivl
2530 CHARACTER(CHRLEN) :: ifilename,sectionstring
2532 TYPE(t_grid),
POINTER :: pgrid
2539 global => pregion%global
2542 'RFLU_ModCommLists.F90')
2544 IF ( global%myProcid == masterproc .AND. &
2545 global%verbLevel >= verbose_high )
THEN
2546 WRITE(stdout,
'(A,1X,A)') solver_name,
'Writing communication lists...'
2549 IF ( global%myProcid == masterproc .AND. &
2550 global%verbLevel >= verbose_high)
THEN
2551 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
2552 pregion%iRegionGlobal
2559 ifile = if_comm_lists
2562 pregion%iRegionGlobal,ifilename)
2564 OPEN(ifile,file=ifilename,
form=
"FORMATTED",
status=
"UNKNOWN", &
2566 global%error = errorflag
2567 IF ( global%error /= err_none )
THEN
2568 CALL
errorstop(global,err_file_open,__line__,ifilename)
2575 IF ( global%myProcid == masterproc .AND. &
2576 global%verbLevel >= verbose_high )
THEN
2577 WRITE(stdout,
'(A,3X,A)') solver_name,
'Header information...'
2580 sectionstring =
'# ROCFLU communication lists file'
2581 WRITE(ifile,
'(A)') trim(sectionstring)
2587 pgrid => pregion%grid
2589 IF ( global%myProcid == masterproc .AND. &
2590 global%verbLevel >= verbose_high )
THEN
2591 WRITE(stdout,
'(A,3X,A)') solver_name,
'Dimensions...'
2594 sectionstring =
'# Dimensions'
2595 WRITE(ifile,
'(A)') trim(sectionstring)
2596 WRITE(ifile,
'(I8)') pgrid%nBorders
2602 IF ( global%myProcid == masterproc .AND. &
2603 global%verbLevel >= verbose_high )
THEN
2604 WRITE(stdout,
'(A,3X,A)') solver_name,
'Information...'
2607 sectionstring =
'# Information'
2608 WRITE(ifile,
'(A)') trim(sectionstring)
2610 DO iborder = 1,pgrid%nBorders
2611 pborder => pgrid%borders(iborder)
2613 WRITE(ifile,
'(2(I8))') pborder%iRegionGlobal,pborder%iBorder
2620 IF ( global%myProcid == masterproc .AND. &
2621 global%verbLevel >= verbose_high )
THEN
2622 WRITE(stdout,
'(A,3X,A)') solver_name,
'Cells...'
2625 sectionstring =
'# Cells'
2626 WRITE(ifile,
'(A)') trim(sectionstring)
2628 DO iborder = 1,pgrid%nBorders
2629 pborder => pgrid%borders(iborder)
2631 WRITE(ifile,
'( 2(I8))') pborder%nCellsSend,pborder%nCellsRecv
2632 WRITE(ifile,
'(10(I8))') (pborder%icgSend(icl),icl=1,pborder%nCellsSend)
2633 WRITE(ifile,
'(10(I8))') (pborder%icgRecv(icl),icl=1,pborder%nCellsRecv)
2640 IF ( global%myProcid == masterproc .AND. &
2641 global%verbLevel >= verbose_high )
THEN
2642 WRITE(stdout,
'(A,3X,A)') solver_name,
'Vertices...'
2645 sectionstring =
'# Vertices'
2646 WRITE(ifile,
'(A)') trim(sectionstring)
2648 DO iborder = 1,pgrid%nBorders
2649 pborder => pgrid%borders(iborder)
2651 WRITE(ifile,
'( 3(I8))') pborder%nVertSend,pborder%nVertRecv, &
2653 WRITE(ifile,
'(10(I8))') (pborder%ivgSend(ivl),ivl=1,pborder%nVertSend)
2654 WRITE(ifile,
'(10(I8))') (pborder%ivgRecv(ivl),ivl=1,pborder%nVertRecv)
2655 WRITE(ifile,
'(10(I8))') (pborder%ivgShared(ivl),ivl=1,pborder%nVertShared)
2662 IF ( global%myProcid == masterproc .AND. &
2663 global%verbLevel >= verbose_high )
THEN
2664 WRITE(stdout,
'(A,3X,A)') solver_name,
'End marker...'
2667 sectionstring =
'# End'
2668 WRITE(ifile,
'(A)') trim(sectionstring)
2674 CLOSE(ifile,iostat=errorflag)
2675 global%error = errorflag
2676 IF ( global%error /= err_none )
THEN
2677 CALL
errorstop(global,err_file_close,__line__,ifilename)
2684 IF ( global%myProcid == masterproc .AND. &
2685 global%verbLevel >= verbose_high )
THEN
2686 WRITE(stdout,
'(A,1X,A)') solver_name,
'Writing communication lists done.'
subroutine, public rflu_comm_readcommlists(pRegion)
subroutine, public rflu_comm_countbordersserial(pRegion)
subroutine buildfilenamebasic(global, dest, ext, id, fileName)
subroutine, public rflu_openregionmappingfile(global)
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
subroutine, public rflu_buildcellvertlist(global, pGrid, cList, cListDim, vList, vListDimMax, vListDim)
subroutine registerfunction(global, funName, fileName)
int status() const
Obtain the status of the attribute.
subroutine, public rflu_comm_getproclocregids(pRegion)
subroutine, public rflu_comm_checkcountborders(regions)
subroutine, public rflu_comm_writecommlists(pRegion)
subroutine, public rflu_comm_destroybordercntr(pRegion)
subroutine quicksortinteger(a, n)
subroutine binarysearchinteger(a, n, v, i, j)
subroutine, public rflu_comm_createborders(pRegion, createMode)
subroutine removecommonsortedintegersfancy(a, na, na2, b, nb, nb2, c, ncMax, nc, errorFlag)
subroutine, public rflu_sype_getactualserialcell(pRegionSerial, icgs, icgs2)
subroutine, public rflu_closeregionmappingfile(global)
subroutine, public rflu_comm_createcommlists(pRegion)
subroutine, public rflu_comm_createbordercntr(pRegion, nBordersMaxOpt)
subroutine, public rflu_sype_getrelatedvertex(pRegionSerial, pRegion, ivgs, ivg)
subroutine rflu_comm_buildcommlistscells(regions)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE form
subroutine rflu_comm_buildcommlistsvert(regions)
subroutine, public rflu_getproclocregids(global, regIds, nRegIds, procIds, locRegIds)
subroutine, public rflu_comm_destroyborders(pRegion)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
LOGICAL function, public rflu_sype_havesypepatches(pRegion)
subroutine, public rflu_comm_countborders(pRegion, pRegionSerial)
subroutine, public rflu_comm_buildcommlists(regions)
subroutine, public rflu_comm_destroycommlists(pRegion)