87 CHARACTER(CHRLEN) :: &
88 RCSIdentString =
'$RCSfile: RFLU_ModBoundLists.F90,v $ $Revision: 1.33 $'
138 TYPE(t_region
),
POINTER :: pregion
144 INTEGER :: errorflag,ifl,ifl2,ipatch,nbcells
146 TYPE(t_grid),
POINTER :: pgrid
147 TYPE(t_patch),
POINTER :: ppatch
153 global => pregion%global
156 'RFLU_ModBoundLists.F90')
158 IF ( global%myProcid == masterproc .AND. &
159 global%verbLevel >= verbose_med )
THEN
160 WRITE(stdout,
'(A,1X,A)') solver_name, &
161 'Building master boundary-cell list...'
168 pgrid => pregion%grid
176 DO ipatch = 1,pregion%grid%nPatches
177 ppatch => pregion%patches(ipatch)
179 DO ifl = 1,ppatch%nBFacesTot
182 pgrid%bcm(ifl2) = ppatch%bf2c(ifl)
185 nbcells = nbcells + ppatch%nBFacesTot
192 IF ( nbcells > 0 )
THEN
201 IF ( global%myProcid == masterproc .AND. &
202 global%verbLevel >= verbose_high )
THEN
203 WRITE(stdout,
'(A,3X,A,1X,I9)') solver_name,
'Number of boundary cells:', &
211 IF ( global%myProcid == masterproc .AND. &
212 global%verbLevel >= verbose_high )
THEN
213 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
214 'Building master boundary-cell list done.'
256 TYPE(t_region
),
POINTER :: pregion
262 INTEGER :: errorflag,ifl,ipatch
264 TYPE(t_grid),
POINTER :: pgrid
265 TYPE(t_patch),
POINTER :: ppatch
271 global => pregion%global
274 'RFLU_ModBoundLists.F90')
276 IF ( global%myProcid == masterproc .AND. &
277 global%verbLevel >= verbose_high )
THEN
278 WRITE(stdout,
'(A,1X,A)') solver_name, &
279 'Building local boundary-face lists...'
286 pgrid => pregion%grid
292 DO ipatch = 1,pregion%grid%nPatches
293 ppatch => pregion%patches(ipatch)
295 IF ( ppatch%nBTrisTot > 0 )
THEN
296 DO ifl = 1,ppatch%nBTrisTot
297 ppatch%bTri2vLoc(1,ifl) = ppatch%bTri2v(1,ifl)
298 ppatch%bTri2vLoc(2,ifl) = ppatch%bTri2v(2,ifl)
299 ppatch%bTri2vLoc(3,ifl) = ppatch%bTri2v(3,ifl)
303 ppatch%bTri2vLoc(1:3,1:ppatch%nBTrisTot), &
304 ppatch%nBVertTot,ppatch%bv(1:ppatch%nBVertTot))
307 IF ( ppatch%nBQuadsTot > 0 )
THEN
308 DO ifl = 1,ppatch%nBQuadsTot
309 ppatch%bQuad2vLoc(1,ifl) = ppatch%bQuad2v(1,ifl)
310 ppatch%bQuad2vLoc(2,ifl) = ppatch%bQuad2v(2,ifl)
311 ppatch%bQuad2vLoc(3,ifl) = ppatch%bQuad2v(3,ifl)
312 ppatch%bQuad2vLoc(4,ifl) = ppatch%bQuad2v(4,ifl)
316 ppatch%bQuad2vLoc(1:4,1:ppatch%nBQuadsTot), &
317 ppatch%nBVertTot,ppatch%bv(1:ppatch%nBVertTot))
325 IF ( global%myProcid == masterproc .AND. &
326 global%verbLevel >= verbose_high )
THEN
327 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
328 'Building local boundary-face lists done.'
370 TYPE(t_region
),
POINTER :: pregion
376 INTEGER :: errorflag,ifl,ipatch
378 TYPE(t_grid),
POINTER :: pgrid
379 TYPE(t_patch),
POINTER :: ppatch
385 global => pregion%global
388 'RFLU_ModBoundLists.F90')
390 IF ( global%myProcid == masterproc .AND. &
391 global%verbLevel >= verbose_high )
THEN
392 WRITE(stdout,
'(A,1X,A)') solver_name, &
393 'Building sorted boundary-face lists...'
400 pgrid => pregion%grid
406 DO ipatch = 1,pregion%grid%nPatches
407 ppatch => pregion%patches(ipatch)
409 DO ifl = 1,ppatch%nBFacesTot
410 ppatch%bf2cSorted(ifl) = ppatch%bf2c(ifl)
420 IF ( global%myProcid == masterproc .AND. &
421 global%verbLevel >= verbose_high )
THEN
422 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
423 'Building sorted boundary-face lists done.'
468 TYPE(t_region
),
POINTER :: pregion
474 INTEGER :: actualcntr,errorflag,
ic,ifc,iloc,ipatch,iq,it,ivg,ivl,
key, &
476 INTEGER,
DIMENSION(:),
ALLOCATABLE :: bvactual,bvvirtual
478 TYPE(t_grid),
POINTER :: pgrid
479 TYPE(t_patch),
POINTER :: ppatch
485 global => pregion%global
488 'RFLU_ModBoundLists.F90')
490 IF ( global%myProcid == masterproc .AND. &
491 global%verbLevel >= verbose_med )
THEN
492 WRITE(stdout,
'(A,1X,A)') solver_name
493 WRITE(stdout,
'(A,1X,A)') solver_name,
'Building boundary-vertex lists...'
500 pgrid => pregion%grid
502 DO ipatch = 1,pregion%grid%nPatches
503 ppatch => pregion%patches(ipatch)
507 IF ( global%myProcid == masterproc .AND. &
508 global%verbLevel >= verbose_med )
THEN
509 WRITE(stdout,
'(A,3X,A,1X,I3)') solver_name,
'Boundary:',ipatch
510 WRITE(stdout,
'(A,5X,A,2X,I8)') solver_name,
'Estimated number of '// &
511 'vertices:',ppatch%nBVertEst
513 IF ( global%myProcid == masterproc .AND. &
514 global%verbLevel >= verbose_med )
THEN
515 WRITE(stdout,
'(A,5X,A,13X,I9)') solver_name,
'Hash table size: ', &
533 DO it = 1,ppatch%nBTrisTot
534 ivg = ppatch%bTri2v(1,it)
538 ivg = ppatch%bTri2v(2,it)
542 ivg = ppatch%bTri2v(3,it)
551 DO iq = 1,ppatch%nBQuadsTot
552 ivg = ppatch%bQuad2v(1,iq)
556 ivg = ppatch%bQuad2v(2,iq)
560 ivg = ppatch%bQuad2v(3,iq)
564 ivg = ppatch%bQuad2v(4,iq)
573 IF ( global%myProcid == masterproc .AND. &
574 global%verbLevel >= verbose_med)
THEN
575 WRITE(stdout,
'(A,5X,A,18X,I9)') solver_name,
'Collisions: ', &
579 IF ( global%myProcid == masterproc .AND. &
580 global%verbLevel >= verbose_med )
THEN
581 WRITE(stdout,
'(A,5X,A,6X,I8)') solver_name,
'Total number of '// &
582 'vertices:',ppatch%nBVertTot
597 DO ivl = 1,ppatch%nBVertTot
598 ivg = ppatch%bvTemp(ivl)
600 IF ( ivg <= pgrid%nVert )
THEN
601 ppatch%nBVert = ppatch%nBVert + 1
605 IF ( global%myProcid == masterproc .AND. &
606 global%verbLevel >= verbose_med )
THEN
607 WRITE(stdout,
'(A,7X,A,13X,I8)') solver_name,
'Actual vertices:', &
609 WRITE(stdout,
'(A,7X,A,12X,I8)') solver_name,
'Virtual vertices:', &
610 ppatch%nBVertTot - ppatch%nBVert
618 ALLOCATE(ppatch%bv(ppatch%nBVertTot),stat=errorflag)
619 global%error = errorflag
620 IF ( global%error /= err_none )
THEN
621 CALL
errorstop(global,err_allocate,__line__,
'pPatch%bv')
624 IF ( ppatch%nBVert > 0 )
THEN
625 ALLOCATE(bvactual(ppatch%nBVert),stat=errorflag)
626 global%error = errorflag
627 IF ( global%error /= err_none )
THEN
628 CALL
errorstop(global,err_allocate,__line__,
'bvActual')
632 IF ( ppatch%nBVertTot /= ppatch%nBVert )
THEN
633 ALLOCATE(bvvirtual(ppatch%nBVertTot-ppatch%nBVert),stat=errorflag)
634 global%error = errorflag
635 IF ( global%error /= err_none )
THEN
636 CALL
errorstop(global,err_allocate,__line__,
'bvVirtual')
647 DO ivl = 1,ppatch%nBVertTot
648 ivg = ppatch%bvTemp(ivl)
650 IF ( ivg <= pgrid%nVert )
THEN
651 actualcntr = actualcntr + 1
652 bvactual(actualcntr) = ppatch%bvTemp(ivl)
653 ELSE IF ( ivg <= pgrid%nVertTot )
THEN
654 virtualcntr = virtualcntr + 1
655 bvvirtual(virtualcntr) = ppatch%bvTemp(ivl)
657 CALL
errorstop(global,err_reached_default,__line__)
661 IF ( (actualcntr /= ppatch%nBVert) .OR. &
662 (virtualcntr /= (ppatch%nBVertTot - ppatch%nBVert)) )
THEN
663 CALL
errorstop(global,err_nbvert_extrema,__line__)
674 IF ( ppatch%nBVert > 0 )
THEN
678 ppatch%bv(1:ppatch%nBVert) = bvactual(1:ppatch%nBVert)
684 IF ( ppatch%nBVertTot /= ppatch%nBVert )
THEN
687 ppatch%bv((ppatch%nBVert+1):ppatch%nBVertTot) = &
688 bvvirtual(1:(ppatch%nBVertTot-ppatch%nBVert))
690 DEALLOCATE(bvvirtual,stat=errorflag)
691 global%error = errorflag
692 IF ( global%error /= err_none )
THEN
693 CALL
errorstop(global,err_deallocate,__line__,
'bvVirtual')
697 IF ( ppatch%nBVert > 0 )
THEN
698 DEALLOCATE(bvactual,stat=errorflag)
699 global%error = errorflag
700 IF ( global%error /= err_none )
THEN
701 CALL
errorstop(global,err_deallocate,__line__,
'bvActual')
705 DEALLOCATE(ppatch%bvTemp,stat=errorflag)
706 global%error = errorflag
707 IF ( global%error /= err_none )
THEN
708 CALL
errorstop(global,err_deallocate,__line__,
'pPatch%bvTemp')
712 #ifdef CHECK_DATASTRUCT
717 IF ( pgrid%nPatches > 0 )
THEN
718 WRITE(stdout,
'(A)') solver_name
719 WRITE(stdout,
'(A,1X,A)') solver_name,
'### START CHECK OUTPUT ###'
720 WRITE(stdout,
'(A,1X,A)') solver_name,
'Boundary vertex lists:'
721 DO ipatch = 1,pgrid%nPatches
722 ppatch => pregion%patches(ipatch)
724 WRITE(stdout,
'(A,1X,A,1X,I3)') solver_name,
'Boundary:',ipatch
725 WRITE(stdout,
'(A,1X,A,1X,A,1X,I8)') solver_name,
'Total number of ', &
726 'vertices:',ppatch%nBVertTot
727 WRITE(stdout,
'(A,8(1X,I8))') solver_name,(ppatch%bv(ivl), &
728 ivl=1,ppatch%nBVertTot)
730 WRITE(stdout,
'(A,1X,A)') solver_name,
'### END CHECK OUTPUT ###'
731 WRITE(stdout,
'(A)') solver_name
739 IF ( global%myProcid == masterproc .AND. &
740 global%verbLevel >= verbose_med )
THEN
741 WRITE(stdout,
'(A,1X,A)') solver_name, &
742 'Building boundary-vertex lists done.'
743 WRITE(stdout,
'(A,1X,A)') solver_name
785 TYPE(t_region
),
POINTER :: pregion
791 INTEGER :: bvmsize,errorflag,ipatch,iv,nbverttemp,workarraysize
792 INTEGER,
DIMENSION(:),
ALLOCATABLE :: bvmtemp,workarray
794 TYPE(t_grid),
POINTER :: pgrid
795 TYPE(t_patch),
POINTER :: ppatch
801 global => pregion%global
804 'RFLU_ModBoundLists.F90')
806 IF ( global%myProcid == masterproc .AND. &
807 global%verbLevel >= verbose_high )
THEN
808 WRITE(stdout,
'(A,1X,A)') solver_name, &
809 'Building boundary-vertex master list...'
812 pgrid => pregion%grid
820 DO iv = 1,pgrid%nBVertEst
828 DO ipatch=1,pgrid%nPatches
829 ppatch => pregion%patches(ipatch)
831 IF ( global%myProcid == masterproc .AND. &
832 global%verbLevel >= verbose_high)
THEN
833 WRITE(stdout,
'(A,3X,A,1X,I3)') solver_name,
'Patch:',ipatch
840 IF ( ipatch > 1 )
THEN
841 workarraysize = nbverttemp + ppatch%nBVertTot
843 ALLOCATE(workarray(workarraysize),stat=errorflag)
844 global%error = errorflag
845 IF ( global%error /= err_none )
THEN
846 CALL
errorstop(global,err_allocate,__line__,
'workArray')
849 DO iv = 1,workarraysize
856 pgrid%bvm(1:nbverttemp), &
857 ppatch%bv(1:ppatch%nBVertTot), &
858 workarraysize,nbverttemp,workarray)
861 pgrid%bvm(iv) = workarray(iv)
864 DEALLOCATE(workarray,stat=errorflag)
865 global%error = errorflag
866 IF ( global%error /= err_none )
THEN
867 CALL
errorstop(global,err_deallocate,__line__,
'workArray')
870 DO iv = 1,ppatch%nBVertTot
871 pgrid%bvm(iv) = ppatch%bv(iv)
875 nbverttemp = ppatch%nBVertTot
878 IF ( global%myProcid == masterproc .AND. &
879 global%verbLevel >= verbose_high)
THEN
880 WRITE(stdout,
'(A,5X,A,1X,I6,1X,A)') solver_name,
'Contributed', &
881 nbverttemp-bvmsize, &
890 pgrid%nBVert = nbverttemp
892 ALLOCATE(bvmtemp(pgrid%nBVert),stat=errorflag)
893 global%error = errorflag
894 IF ( global%error /= err_none )
THEN
895 CALL
errorstop(global,err_allocate,__line__,
'bvmTemp')
898 DO iv = 1,pgrid%nBVert
899 bvmtemp(iv) = pgrid%bvm(iv)
902 DEALLOCATE(pgrid%bvm,stat=errorflag)
903 global%error = errorflag
904 IF ( global%error /= err_none )
THEN
905 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%bvm')
908 ALLOCATE(pgrid%bvm(pgrid%nBVert),stat=errorflag)
909 global%error = errorflag
910 IF ( global%error /= err_none )
THEN
911 CALL
errorstop(global,err_allocate,__line__,
'pGrid%bvm')
914 DO iv = 1,pgrid%nBVert
915 pgrid%bvm(iv) = bvmtemp(iv)
918 DEALLOCATE(bvmtemp,stat=errorflag)
919 global%error = errorflag
920 IF ( global%error /= err_none )
THEN
921 CALL
errorstop(global,err_deallocate,__line__,
'bvmTemp')
928 IF ( global%myProcid == masterproc .AND. &
929 global%verbLevel >= verbose_high )
THEN
930 WRITE(stdout,
'(A,3X,A,I9)') solver_name, &
931 'Number of vertices:',pgrid%nBVert
938 IF ( global%myProcid == masterproc .AND. &
939 global%verbLevel >= verbose_high )
THEN
940 WRITE(stdout,
'(A,1X,A)') solver_name, &
941 'Building boundary-vertex master list done.'
986 TYPE(t_region
),
POINTER :: pregion
992 INTEGER :: errorflag,ipatch,nbcells
994 TYPE(t_grid),
POINTER :: pgrid
995 TYPE(t_patch),
POINTER :: ppatch
1001 global => pregion%global
1004 'RFLU_ModBoundLists.F90')
1006 IF ( global%myProcid == masterproc .AND. &
1007 global%verbLevel >= verbose_high )
THEN
1008 WRITE(stdout,
'(A,1X,A)') solver_name, &
1009 'Creating master boundary-cell list...'
1022 pgrid => pregion%grid
1032 DO ipatch = 1,pgrid%nPatches
1033 ppatch => pregion%patches(ipatch)
1035 nbcells = nbcells + ppatch%nBFacesTot
1038 ALLOCATE(pgrid%bcm(nbcells),stat=errorflag)
1039 global%error = errorflag
1040 IF ( global%error /= err_none )
THEN
1041 CALL
errorstop(global,err_allocate,__line__,
'pGrid%bcm')
1048 IF ( global%myProcid == masterproc .AND. &
1049 global%verbLevel >= verbose_high )
THEN
1050 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
1051 'Creating master boundary-cell list done.'
1091 TYPE(t_region
),
POINTER :: pregion
1097 INTEGER :: errorflag,ipatch
1099 TYPE(t_grid),
POINTER :: pgrid
1100 TYPE(t_patch),
POINTER :: ppatch
1106 global => pregion%global
1109 'RFLU_ModBoundLists.F90')
1111 IF ( global%myProcid == masterproc .AND. &
1112 global%verbLevel >= verbose_high )
THEN
1113 WRITE(stdout,
'(A,1X,A)') solver_name, &
1114 'Creating local boundary-face lists...'
1127 pgrid => pregion%grid
1133 DO ipatch = 1,pregion%grid%nPatches
1134 ppatch => pregion%patches(ipatch)
1136 IF ( ppatch%nBTrisTot > 0 )
THEN
1137 ALLOCATE(ppatch%bTri2vLoc(3,ppatch%nBTrisTot),stat=errorflag)
1138 global%error = errorflag
1139 IF ( global%error /= err_none )
THEN
1140 CALL
errorstop(global,err_allocate,__line__,
'pPatch%bTri2vLoc')
1144 IF ( ppatch%nBQuadsTot > 0 )
THEN
1145 ALLOCATE(ppatch%bQuad2vLoc(4,ppatch%nBQuadsTot),stat=errorflag)
1146 global%error = errorflag
1147 IF ( global%error /= err_none )
THEN
1148 CALL
errorstop(global,err_allocate,__line__,
'pPatch%bQuad2vLoc')
1157 IF ( global%myProcid == masterproc .AND. &
1158 global%verbLevel >= verbose_high )
THEN
1159 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
1160 'Creating local boundary-face lists done.'
1200 TYPE(t_region
),
POINTER :: pregion
1206 INTEGER :: errorflag,ipatch
1208 TYPE(t_grid),
POINTER :: pgrid
1209 TYPE(t_patch),
POINTER :: ppatch
1215 global => pregion%global
1218 'RFLU_ModBoundLists.F90')
1220 IF ( global%myProcid == masterproc .AND. &
1221 global%verbLevel >= verbose_high )
THEN
1222 WRITE(stdout,
'(A,1X,A)') solver_name, &
1223 'Creating sorted boundary-face lists...'
1236 pgrid => pregion%grid
1242 DO ipatch = 1,pregion%grid%nPatches
1243 ppatch => pregion%patches(ipatch)
1245 ALLOCATE(ppatch%bf2cSorted(ppatch%nBFacesTot),stat=errorflag)
1246 global%error = errorflag
1247 IF ( global%error /= err_none )
THEN
1248 CALL
errorstop(global,err_allocate,__line__,
'pPatch%bf2cSorted')
1256 IF ( global%myProcid == masterproc .AND. &
1257 global%verbLevel >= verbose_high )
THEN
1258 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
1259 'Creating sorted boundary-face lists done.'
1299 TYPE(t_region
),
POINTER :: pregion
1305 INTEGER :: errorflag,ibv,ipatch
1307 TYPE(t_grid),
POINTER :: pgrid
1308 TYPE(t_patch),
POINTER :: ppatch
1314 global => pregion%global
1317 'RFLU_ModBoundLists.F90')
1319 IF ( global%myProcid == masterproc .AND. &
1320 global%verbLevel >= verbose_high )
THEN
1321 WRITE(stdout,
'(A,1X,A)') solver_name,
'Creating boundary vertex lists...'
1334 pgrid => pregion%grid
1340 DO ipatch = 1,pregion%grid%nPatches
1341 ppatch => pregion%patches(ipatch)
1347 SELECT CASE ( pregion%mixtInput%dimens )
1349 ppatch%nBVertEst = 2*ppatch%nBQuadsTot + 2
1351 IF ( ppatch%bcType /= bc_virtual )
THEN
1352 ppatch%nBVertEst = 2*ppatch%nBQuadsTot + 2
1354 ppatch%nBVertEst = 4*(ppatch%nBTrisTot/2 + ppatch%nBQuadsTot)
1357 ppatch%nBVertEst = 2*(ppatch%nBTrisTot/2 + ppatch%nBQuadsTot)
1359 IF ( ppatch%nBVertEst < 100 )
THEN
1360 ppatch%nBVertEst = 100 + 4*ppatch%nBVertEst
1361 ELSE IF ( ppatch%nBVertEst < 1000 )
THEN
1362 ppatch%nBVertEst = 2*ppatch%nBVertEst
1365 CALL
errorstop(global,err_reached_default,__line__)
1372 ALLOCATE(ppatch%bvTemp(ppatch%nBVertEst),stat=errorflag)
1373 global%error = errorflag
1374 IF ( global%error /= err_none )
THEN
1375 CALL
errorstop(global,err_allocate,__line__,
'pPatch%bvTemp')
1378 DO ibv = 1,ppatch%nBVertEst
1379 ppatch%bvTemp(ibv) = 0
1387 IF ( global%myProcid == masterproc .AND. &
1388 global%verbLevel >= verbose_high )
THEN
1389 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name,
'Creating boundary vertex', &
1431 TYPE(t_region
),
POINTER :: pregion
1437 INTEGER :: errorflag,ipatch
1439 TYPE(t_grid),
POINTER :: pgrid
1440 TYPE(t_patch),
POINTER :: ppatch
1446 global => pregion%global
1449 'RFLU_ModBoundLists.F90')
1451 IF ( global%myProcid == masterproc .AND. &
1452 global%verbLevel >= verbose_high )
THEN
1453 WRITE(stdout,
'(A,1X,A)') solver_name, &
1454 'Creating boundary vertex master list...'
1467 pgrid => pregion%grid
1475 DO ipatch = 1,pregion%grid%nPatches
1476 ppatch => pregion%patches(ipatch)
1478 pgrid%nBVertEst = pgrid%nBVertEst + ppatch%nBVertTot
1481 ALLOCATE(pgrid%bvm(pgrid%nBVertEst),stat=errorflag)
1482 global%error = errorflag
1483 IF ( global%error /= err_none )
THEN
1484 CALL
errorstop(global,err_allocate,__line__,
'pGrid%bvm')
1491 IF ( global%myProcid == masterproc .AND. &
1492 global%verbLevel >= verbose_high )
THEN
1493 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
1494 'Creating master boundary vertex list done.'
1534 TYPE(t_region
),
POINTER :: pregion
1540 INTEGER :: errorflag,ifl,ipatch
1542 TYPE(t_grid),
POINTER :: pgrid
1543 TYPE(t_patch),
POINTER :: ppatch
1549 global => pregion%global
1552 'RFLU_ModBoundLists.F90')
1554 IF ( global%myProcid == masterproc .AND. &
1555 global%verbLevel >= verbose_high )
THEN
1556 WRITE(stdout,
'(A,1X,A)') solver_name, &
1557 'Denumbering boundary-face lists...'
1564 pgrid => pregion%grid
1566 DO ipatch = 1,pgrid%nPatches
1567 ppatch => pregion%patches(ipatch)
1569 IF ( global%myProcid == masterproc .AND. &
1570 global%verbLevel >= verbose_high)
THEN
1571 WRITE(stdout,
'(A,3X,A,1X,I3)') solver_name,
'Patch:',ipatch
1578 IF ( ppatch%renumFlag .EQV. .false. )
THEN
1579 global%warnCounter = global%warnCounter + 1
1581 IF ( global%myProcid == masterproc .AND. &
1582 global%verbLevel >= verbose_none )
THEN
1583 WRITE(stdout,
'(A,5X,A,1X,A)') solver_name, &
1584 '*** WARNING *** Patch already denumbered. Skipping denumbering.'
1593 IF ( global%myProcid == masterproc .AND. &
1594 global%verbLevel >= verbose_high)
THEN
1595 WRITE(stdout,
'(A,5X,A)') solver_name,
'Actual faces...'
1599 ppatch%bf2v(1:4,1:ppatch%nBFaces), &
1600 ppatch%nBVert,ppatch%bv(1:ppatch%nBVert))
1606 IF ( ppatch%nBFacesTot > ppatch%nBFaces .AND. &
1607 global%myProcid == masterproc .AND. &
1608 global%verbLevel >= verbose_high)
THEN
1609 WRITE(stdout,
'(A,5X,A)') solver_name,
'Virtual faces...'
1612 IF ( ppatch%nBFacesTot > ppatch%nBFaces )
THEN
1614 ppatch%bf2v(1:4,ppatch%nBFaces+1:ppatch%nBFacesTot), &
1615 ppatch%nBVertTot,ppatch%bv(1:ppatch%nBVertTot))
1622 ppatch%renumFlag = .false.
1625 #ifdef CHECK_DATASTRUCT
1630 IF ( pgrid%nPatches > 0 )
THEN
1631 WRITE(stdout,
'(A)') solver_name
1632 WRITE(stdout,
'(A,1X,A)') solver_name,
'### START CHECK OUTPUT ###'
1633 WRITE(stdout,
'(A,1X,A,A)') solver_name,
'Globally-numbered boundary ', &
1635 DO ipatch = 1,pgrid%nPatches
1636 ppatch => pregion%patches(ipatch)
1638 WRITE(stdout,
'(A,1X,A,1X,I3,3X,A)') solver_name,
'Boundary:', &
1639 ipatch,trim(ppatch%bcName)
1640 WRITE(stdout,
'(A,1X,A,1X,I7)') solver_name, &
1641 'Actual number of faces:', &
1643 WRITE(stdout,
'(A,1X,A,1X,I7)') solver_name, &
1644 'Total number of faces: ', &
1646 DO ifl = 1,ppatch%nBFacesTot
1647 WRITE(stdout,
'(A,5(1X,I7))') solver_name,ifl,ppatch%bf2v(1:4,ifl)
1650 WRITE(stdout,
'(A,1X,A)') solver_name,
'### END CHECK OUTPUT ###'
1651 WRITE(stdout,
'(A)') solver_name
1659 IF ( global%myProcid == masterproc .AND. &
1660 global%verbLevel >= verbose_high )
THEN
1661 WRITE(stdout,
'(A,1X,A)') solver_name, &
1662 'Denumbering boundary-face lists done.'
1702 TYPE(t_region
),
POINTER :: pregion
1708 INTEGER :: errorflag
1710 TYPE(t_grid),
POINTER :: pgrid
1716 global => pregion%global
1719 'RFLU_ModBoundLists.F90')
1721 IF ( global%myProcid == masterproc .AND. &
1722 global%verbLevel >= verbose_high )
THEN
1723 WRITE(stdout,
'(A,1X,A)') solver_name, &
1724 'Destroying master boundary-cell list...'
1731 pgrid => pregion%grid
1737 DEALLOCATE(pgrid%bcm,stat=errorflag)
1738 global%error = errorflag
1739 IF ( global%error /= err_none )
THEN
1740 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%bcm')
1753 IF ( global%myProcid == masterproc .AND. &
1754 global%verbLevel >= verbose_high )
THEN
1755 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
1756 'Destroying master boundary-cell list done.'
1797 TYPE(t_region
),
POINTER :: pregion
1803 INTEGER :: errorflag,ipatch
1805 TYPE(t_grid),
POINTER :: pgrid
1806 TYPE(t_patch),
POINTER :: ppatch
1812 global => pregion%global
1815 'RFLU_ModBoundLists.F90')
1817 IF ( global%myProcid == masterproc .AND. &
1818 global%verbLevel >= verbose_high )
THEN
1819 WRITE(stdout,
'(A,1X,A)') solver_name, &
1820 'Destroying local boundary-face lists...'
1827 pgrid => pregion%grid
1833 DO ipatch = 1,pregion%grid%nPatches
1834 ppatch => pregion%patches(ipatch)
1836 IF ( ppatch%nBTrisTot > 0 )
THEN
1837 DEALLOCATE(ppatch%bTri2vLoc,stat=errorflag)
1838 global%error = errorflag
1839 IF ( global%error /= err_none )
THEN
1840 CALL
errorstop(global,err_deallocate,__line__,
'pPatch%bTri2vLoc')
1844 IF ( ppatch%nBQuadsTot > 0 )
THEN
1845 DEALLOCATE(ppatch%bQuad2vLoc,stat=errorflag)
1846 global%error = errorflag
1847 IF ( global%error /= err_none )
THEN
1848 CALL
errorstop(global,err_deallocate,__line__,
'pPatch%bQuad2vLoc')
1863 IF ( global%myProcid == masterproc .AND. &
1864 global%verbLevel >= verbose_high )
THEN
1865 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
1866 'Destroying local boundary-face lists done.'
1907 TYPE(t_region
),
POINTER :: pregion
1913 INTEGER :: errorflag,ipatch
1915 TYPE(t_grid),
POINTER :: pgrid
1916 TYPE(t_patch),
POINTER :: ppatch
1922 global => pregion%global
1925 'RFLU_ModBoundLists.F90')
1927 IF ( global%myProcid == masterproc .AND. &
1928 global%verbLevel >= verbose_high )
THEN
1929 WRITE(stdout,
'(A,1X,A)') solver_name, &
1930 'Destroying sorted boundary-face lists...'
1937 pgrid => pregion%grid
1943 DO ipatch = 1,pregion%grid%nPatches
1944 ppatch => pregion%patches(ipatch)
1946 DEALLOCATE(ppatch%bf2cSorted,stat=errorflag)
1947 global%error = errorflag
1948 IF ( global%error /= err_none )
THEN
1949 CALL
errorstop(global,err_deallocate,__line__,
'pPatch%bf2cSorted')
1963 IF ( global%myProcid == masterproc .AND. &
1964 global%verbLevel >= verbose_high )
THEN
1965 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
1966 'Destroying sorted boundary-face lists done.'
2006 TYPE(t_region
),
POINTER :: pregion
2012 INTEGER :: errorflag,ipatch
2013 TYPE(t_grid),
POINTER :: pgrid
2014 TYPE(t_patch),
POINTER :: ppatch
2021 global => pregion%global
2024 'RFLU_ModBoundLists.F90')
2026 IF ( global%myProcid == masterproc .AND. &
2027 global%verbLevel >= verbose_high )
THEN
2028 WRITE(stdout,
'(A,1X,A)') solver_name, &
2029 'Destroying boundary-vertex lists...'
2036 pgrid => pregion%grid
2042 DO ipatch = 1,pgrid%nPatches
2043 ppatch => pregion%patches(ipatch)
2045 DEALLOCATE(ppatch%bv,stat=errorflag)
2046 global%error = errorflag
2047 IF ( global%error /= err_none )
THEN
2048 CALL
errorstop(global,err_deallocate,__line__,
'pPatch%bv')
2062 IF ( global%myProcid == masterproc .AND. &
2063 global%verbLevel >= verbose_high )
THEN
2064 WRITE(stdout,
'(A,1X,A)') solver_name, &
2065 'Destroying boundary-vertex lists done.'
2104 TYPE(t_region
),
POINTER :: pregion
2110 INTEGER :: errorflag,ipatch
2111 TYPE(t_grid),
POINTER :: pgrid
2112 TYPE(t_patch),
POINTER :: ppatch
2119 global => pregion%global
2122 'RFLU_ModBoundLists.F90')
2124 IF ( global%myProcid == masterproc .AND. &
2125 global%verbLevel >= verbose_high )
THEN
2126 WRITE(stdout,
'(A,1X,A)') solver_name, &
2127 'Destroying boundary-vertex master list...'
2134 pgrid => pregion%grid
2140 DEALLOCATE(pgrid%bvm,stat=errorflag)
2141 global%error = errorflag
2142 IF ( global%error /= err_none )
THEN
2143 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%bvm')
2156 IF ( global%myProcid == masterproc .AND. &
2157 global%verbLevel >= verbose_high )
THEN
2158 WRITE(stdout,
'(A,1X,A)') solver_name, &
2159 'Destroying boundary-vertex master list done.'
2199 TYPE(t_region
),
POINTER :: pregion
2206 TYPE(t_grid),
POINTER :: pgrid
2212 global => pregion%global
2215 'RFLU_ModBoundLists.F90')
2217 IF ( global%myProcid == masterproc .AND. &
2218 global%verbLevel >= verbose_high )
THEN
2219 WRITE(stdout,
'(A,1X,A)') solver_name, &
2220 'Nullifying master boundary-cell list...'
2227 pgrid => pregion%grid
2239 IF ( global%myProcid == masterproc .AND. &
2240 global%verbLevel >= verbose_high )
THEN
2241 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
2242 'Nullifying master boundary-cell list done.'
2282 TYPE(t_region
),
POINTER :: pregion
2290 TYPE(t_grid),
POINTER :: pgrid
2291 TYPE(t_patch),
POINTER :: ppatch
2297 global => pregion%global
2300 'RFLU_ModBoundLists.F90')
2302 IF ( global%myProcid == masterproc .AND. &
2303 global%verbLevel >= verbose_high )
THEN
2304 WRITE(stdout,
'(A,1X,A)') solver_name, &
2305 'Nullifying local boundary-face lists...'
2312 pgrid => pregion%grid
2318 DO ipatch = 1,pregion%grid%nPatches
2319 ppatch => pregion%patches(ipatch)
2321 nullify(ppatch%bTri2vLoc)
2322 nullify(ppatch%bQuad2vLoc)
2329 IF ( global%myProcid == masterproc .AND. &
2330 global%verbLevel >= verbose_high )
THEN
2331 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
2332 'Nullifying local boundary-face lists done.'
2374 TYPE(t_region
),
POINTER :: pregion
2382 TYPE(t_grid),
POINTER :: pgrid
2383 TYPE(t_patch),
POINTER :: ppatch
2389 global => pregion%global
2392 'RFLU_ModBoundLists.F90')
2394 IF ( global%myProcid == masterproc .AND. &
2395 global%verbLevel >= verbose_high )
THEN
2396 WRITE(stdout,
'(A,1X,A)') solver_name, &
2397 'Nullifying sorted boundary-face lists...'
2404 pgrid => pregion%grid
2410 DO ipatch = 1,pregion%grid%nPatches
2411 ppatch => pregion%patches(ipatch)
2413 nullify(ppatch%bf2cSorted)
2420 IF ( global%myProcid == masterproc .AND. &
2421 global%verbLevel >= verbose_high )
THEN
2422 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
2423 'Nullifying sorted boundary-face lists done.'
2466 TYPE(t_region
),
POINTER :: pregion
2474 TYPE(t_grid),
POINTER :: pgrid
2475 TYPE(t_patch),
POINTER :: ppatch
2481 global => pregion%global
2484 'RFLU_ModBoundLists.F90')
2486 IF ( global%myProcid == masterproc .AND. &
2487 global%verbLevel >= verbose_high )
THEN
2488 WRITE(stdout,
'(A,1X,A)') solver_name, &
2489 'Nullifying boundary vertex lists...'
2496 pgrid => pregion%grid
2502 DO ipatch = 1,pregion%grid%nPatches
2503 ppatch => pregion%patches(ipatch)
2506 nullify(ppatch%bvTemp)
2513 IF ( global%myProcid == masterproc .AND. &
2514 global%verbLevel >= verbose_high )
THEN
2515 WRITE(stdout,
'(A,1X,A,1X,A)') solver_name, &
2516 'Nullifying boundary vertex lists done.'
2555 TYPE(t_region
),
POINTER :: pregion
2562 TYPE(t_grid),
POINTER :: pgrid
2568 global => pregion%global
2571 'RFLU_ModBoundLists.F90')
2573 IF ( global%myProcid == masterproc .AND. &
2574 global%verbLevel >= verbose_high )
THEN
2575 WRITE(stdout,
'(A,1X,A)') solver_name, &
2576 'Nullifying boundary vertex master list...'
2583 pgrid => pregion%grid
2595 IF ( global%myProcid == masterproc .AND. &
2596 global%verbLevel >= verbose_high )
THEN
2597 WRITE(stdout,
'(A,1X,A)') solver_name, &
2598 'Nullifying boundary vertex master list done.'
2638 TYPE(t_region
),
POINTER :: pregion
2644 INTEGER :: errorflag,ifl,ipatch
2646 TYPE(t_grid),
POINTER :: pgrid
2647 TYPE(t_patch),
POINTER :: ppatch
2653 global => pregion%global
2656 'RFLU_ModBoundLists.F90')
2658 IF ( global%myProcid == masterproc .AND. &
2659 global%verbLevel >= verbose_high )
THEN
2660 WRITE(stdout,
'(A,1X,A)') solver_name, &
2661 'Renumbering boundary-face lists...'
2668 pgrid => pregion%grid
2670 DO ipatch = 1,pgrid%nPatches
2671 ppatch => pregion%patches(ipatch)
2673 IF ( global%myProcid == masterproc .AND. &
2674 global%verbLevel >= verbose_high)
THEN
2675 WRITE(stdout,
'(A,3X,A,1X,I3)') solver_name,
'Patch:',ipatch
2682 IF ( ppatch%renumFlag .EQV. .true. )
THEN
2683 global%warnCounter = global%warnCounter + 1
2685 IF ( global%myProcid == masterproc .AND. &
2686 global%verbLevel >= verbose_none )
THEN
2687 WRITE(stdout,
'(A,5X,A)') solver_name, &
2688 '*** WARNING *** Patch already renumbered. Skipping renumbering.'
2697 IF ( ppatch%nBFaces > 0 .AND. &
2698 global%myProcid == masterproc .AND. &
2699 global%verbLevel >= verbose_high)
THEN
2700 WRITE(stdout,
'(A,5X,A)') solver_name,
'Actual faces...'
2703 IF ( ppatch%nBFaces > 0 )
THEN
2705 ppatch%bf2v(1:4,1:ppatch%nBFaces), &
2706 ppatch%nBVert,ppatch%bv(1:ppatch%nBVert))
2713 IF ( ppatch%nBFacesTot > ppatch%nBFaces .AND. &
2714 global%myProcid == masterproc .AND. &
2715 global%verbLevel >= verbose_high)
THEN
2716 WRITE(stdout,
'(A,5X,A)') solver_name,
'Virtual faces...'
2719 IF ( ppatch%nBFacesTot > ppatch%nBFaces )
THEN
2721 ppatch%bf2v(1:4,ppatch%nBFaces+1:ppatch%nBFacesTot), &
2722 ppatch%nBVertTot,ppatch%bv(1:ppatch%nBVertTot))
2729 ppatch%renumFlag = .true.
2732 #ifdef CHECK_DATASTRUCT
2737 IF ( pgrid%nPatches > 0 )
THEN
2738 WRITE(stdout,
'(A)') solver_name
2739 WRITE(stdout,
'(A,1X,A)') solver_name,
'### START CHECK OUTPUT ###'
2740 WRITE(stdout,
'(A,1X,A,A)') solver_name,
'Locally-numbered boundary ', &
2742 DO ipatch = 1,pgrid%nPatches
2743 ppatch => pregion%patches(ipatch)
2745 WRITE(stdout,
'(A,1X,A,1X,I3,3X,A)') solver_name,
'Boundary:', &
2746 ipatch,trim(ppatch%bcName)
2747 WRITE(stdout,
'(A,1X,A,1X,I7)') solver_name, &
2748 'Actual number of faces:', &
2750 WRITE(stdout,
'(A,1X,A,1X,I7)') solver_name, &
2751 'Total number of faces: ', &
2753 DO ifl = 1,ppatch%nBFacesTot
2754 WRITE(stdout,
'(A,5(1X,I7))') solver_name,ifl,ppatch%bf2v(1:4,ifl)
2757 WRITE(stdout,
'(A,1X,A)') solver_name,
'### END CHECK OUTPUT ###'
2758 WRITE(stdout,
'(A)') solver_name
2766 IF ( global%myProcid == masterproc .AND. &
2767 global%verbLevel >= verbose_high )
THEN
2768 WRITE(stdout,
'(A,1X,A)') solver_name, &
2769 'Renumbering boundary-face lists done.'
subroutine, public rflu_createbfaceloclists(pRegion)
subroutine, public rflu_buildbvertexlists(pRegion)
subroutine, public rflu_buildbvertexmlist(pRegion)
subroutine, public rflu_createhashtable(global, size)
subroutine, public rflu_destroyhashtable(global)
subroutine, public rflu_nullifybfaceloclists(pRegion)
subroutine rflu_hashbuildkey1(a, key)
subroutine registerfunction(global, funName, fileName)
**********************************************************************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 ic
subroutine, public rflu_destroybvertexmlist(pRegion)
subroutine, public rflu_buildbfacesortlists(pRegion)
subroutine simplifysortedintegers(a, na, nb)
subroutine quicksortinteger(a, n)
subroutine, public rflu_denumberbfacelists(pRegion)
subroutine, public rflu_createbfacesortlists(pRegion)
subroutine, public rflu_denumberlist(global, listDim1, listDim2, list, keyDim, key)
subroutine, public rflu_nullifybvertexmlist(pRegion)
subroutine, public rflu_destroybcellmlist(pRegion)
subroutine, public rflu_buildbcellmlist(pRegion)
subroutine, public rflu_renumberbfacelists(pRegion)
subroutine, public rflu_destroybfacesortlists(pRegion)
subroutine, public rflu_nullifybcellmlist(pRegion)
subroutine, public rflu_nullifybvertexlists(pRegion)
subroutine, public rflu_destroybvertexlists(pRegion)
subroutine, public rflu_createbvertexlists(pRegion)
subroutine, public rflu_destroybfaceloclists(pRegion)
subroutine, public rflu_renumberlist(global, listDim1, listDim2, list, keyDim, key)
subroutine mergesortedintegers(global, na, nb, a, b, nm, im, m)
subroutine, public rflu_nullifybfacesortlists(pRegion)
subroutine, public rflu_createbvertexmlist(pRegion)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine, public rflu_buildbfaceloclists(pRegion)
subroutine deregisterfunction(global)
subroutine, public rflu_hashvertex(global, key, ivg, nVert, vert, errorFlag)
subroutine, public rflu_createbcellmlist(pRegion)