71 CHARACTER(CHRLEN) :: &
72 RCSIdentString =
'$RCSfile: RFLU_ModEdgeList.F90,v $ $Revision: 1.13 $'
73 INTEGER,
PRIVATE :: ekCntr(EDGE_KIND_AA:EDGE_KIND_VV), &
74 ekOffs(EDGE_KIND_AA:EDGE_KIND_VV), &
75 ekStrt(EDGE_KIND_AA:EDGE_KIND_VV)
76 INTEGER,
DIMENSION(:,:),
ALLOCATABLE,
PRIVATE :: degr,strt
113 TYPE(t_region
),
POINTER :: pregion
119 TYPE(t_grid),
POINTER :: pgrid
126 global => pregion%global
129 'RFLU_ModEdgeList.F90')
131 IF ( global%myProcid == masterproc .AND. &
132 global%verbLevel >= verbose_high )
THEN
133 WRITE(stdout,
'(A,1X,A)') solver_name,
'Nullifying edge list...'
140 pgrid => pregion%grid
152 IF ( global%myProcid == masterproc .AND. &
153 global%verbLevel >= verbose_high )
THEN
154 WRITE(stdout,
'(A,1X,A)') solver_name,
'Nullifying edge list done.'
192 TYPE(t_region
),
POINTER :: pregion
198 TYPE(t_grid),
POINTER :: pgrid
205 global => pregion%global
208 'RFLU_ModEdgeList.F90')
210 IF ( global%myProcid == masterproc .AND. &
211 global%verbLevel >= verbose_high )
THEN
212 WRITE(stdout,
'(A,1X,A)') solver_name,
'Nullifying edge-to-cell list...'
219 pgrid => pregion%grid
225 nullify(pgrid%e2cStrt)
226 nullify(pgrid%e2cDegr)
232 IF ( global%myProcid == masterproc .AND. &
233 global%verbLevel >= verbose_high )
THEN
234 WRITE(stdout,
'(A,1X,A)') solver_name, &
235 'Nullifying edge-to-cell list done.'
276 TYPE(t_region
),
POINTER :: pregion
282 INTEGER :: errorflag,ieg,ipatch,nbfaces,nfacesest
283 TYPE(t_grid),
POINTER :: pgrid
284 TYPE(t_patch),
POINTER :: ppatch
291 global => pregion%global
294 'RFLU_ModEdgeList.F90')
296 IF ( global%myProcid == masterproc .AND. &
297 global%verbLevel >= verbose_high )
THEN
298 WRITE(stdout,
'(A,1X,A)') solver_name,
'Creating edge list...'
311 pgrid => pregion%grid
325 DO ipatch = 1,pgrid%nPatches
326 ppatch => pregion%patches(ipatch)
328 nbfaces = nbfaces + ppatch%nBTrisTot + ppatch%nBQuadsTot
331 nfacesest = nbfaces + 2*pgrid%nTetsTot + 3*pgrid%nHexsTot &
334 pgrid%nEdgesEst = nbfaces + pgrid%nTetsTot + 2*pgrid%nHexsTot + &
335 3*pgrid%nPrisTot/2 + pgrid%nVertTot - pgrid%nPyrsTot
337 IF ( nbfaces/
REAL(nFacesEst,KIND=RFREAL) > 0.8_rfreal .OR. &
338 nbfaces/
REAL(nFacesEst,KIND=RFREAL) < 0.2_rfreal ) then
339 pgrid%nEdgesEst = 2*pgrid%nEdgesEst
341 IF ( global%myProcid == masterproc .AND. &
342 global%verbLevel >= verbose_high)
THEN
343 WRITE(stdout,
'(A,3X,A)') solver_name,
'Corrected estimate of '// &
348 IF ( global%myProcid == masterproc .AND. &
349 global%verbLevel >= verbose_high )
THEN
350 WRITE(stdout,
'(A,3X,A,3X,I9)') solver_name,
'Estimated number of '// &
351 'edges: ',pgrid%nEdgesEst
354 ALLOCATE(pgrid%e2v(2,pgrid%nEdgesEst),stat=errorflag)
355 global%error = errorflag
356 IF ( global%error /= err_none )
THEN
357 CALL
errorstop(global,err_allocate,__line__,
'pGrid%e2vTemp')
360 DO ieg = 1,pgrid%nEdgesEst
369 IF ( global%myProcid == masterproc .AND. &
370 global%verbLevel >= verbose_high )
THEN
371 WRITE(stdout,
'(A,1X,A)') solver_name,
'Creating edge list done.'
409 TYPE(t_region
),
POINTER :: pregion
416 TYPE(t_grid),
POINTER :: pgrid
423 global => pregion%global
426 'RFLU_ModEdgeList.F90')
428 IF ( global%myProcid == masterproc .AND. &
429 global%verbLevel >= verbose_high )
THEN
430 WRITE(stdout,
'(A,1X,A)') solver_name,
'Creating edge-to-cell list...'
437 pgrid => pregion%grid
449 ALLOCATE(pgrid%e2cStrt(pgrid%nEdgesTot),stat=errorflag)
450 global%error = errorflag
451 IF ( global%error /= err_none )
THEN
452 CALL
errorstop(global,err_allocate,__line__,
'pGrid%e2cStrt')
457 ALLOCATE(pgrid%e2cDegr(pgrid%nEdgesTot),stat=errorflag)
458 global%error = errorflag
459 IF ( global%error /= err_none )
THEN
460 CALL
errorstop(global,err_allocate,__line__,
'pGrid%e2cDegr')
467 IF ( global%myProcid == masterproc .AND. &
468 global%verbLevel >= verbose_high )
THEN
469 WRITE(stdout,
'(A,1X,A)') solver_name,
'Creating edge-to-cell list done.'
515 TYPE(t_region
),
POINTER :: pregion
521 INTEGER :: ecntr,edgetype,eksum,errorflag,ieg,iegb,iege,iek,iel,icl, &
525 TYPE(t_grid),
POINTER :: pgrid
526 TYPE(t_patch),
POINTER :: ppatch
533 global => pregion%global
536 'RFLU_ModEdgeList.F90')
538 IF ( global%myProcid == masterproc .AND. &
539 global%verbLevel >= verbose_high )
THEN
540 WRITE(stdout,
'(A,1X,A)') solver_name,
'Building edge list...'
541 WRITE(stdout,
'(A,3X,A)') solver_name,
'Building hash table...'
548 pgrid => pregion%grid
558 IF ( global%myProcid == masterproc .AND. &
559 global%verbLevel >= verbose_high )
THEN
560 WRITE(stdout,
'(A,5X,A,1X,I9)') solver_name,
'Hash table size: '// &
571 IF ( global%myProcid == masterproc .AND. &
572 global%verbLevel >= verbose_high)
THEN
573 WRITE(stdout,
'(A,5X,A)') solver_name,
'Looping over cell types...'
580 IF ( pgrid%nTetsTot /= 0 )
THEN
581 IF ( global%myProcid == masterproc .AND. &
582 global%verbLevel >= verbose_high)
THEN
583 WRITE(stdout,
'(A,7X,A)') solver_name,
'Tetrahedra...'
587 DO icl = 1,pgrid%nTetsTot
589 v(1) = pgrid%tet2v(ce2vtet(1,iel),icl)
590 v(2) = pgrid%tet2v(ce2vtet(2,iel),icl)
596 IF ( edgetype == edge_type_new )
THEN
606 IF ( pgrid%nHexsTot /= 0 )
THEN
607 IF ( global%myProcid == masterproc .AND. &
608 global%verbLevel >= verbose_high)
THEN
609 WRITE(stdout,
'(A,7X,A)') solver_name,
'Hexahedra...'
613 DO icl = 1,pgrid%nHexsTot
615 v(1) = pgrid%hex2v(ce2vhex(1,iel),icl)
616 v(2) = pgrid%hex2v(ce2vhex(2,iel),icl)
622 IF ( edgetype == edge_type_new )
THEN
632 IF ( pgrid%nPrisTot /= 0 )
THEN
633 IF ( global%myProcid == masterproc .AND. &
634 global%verbLevel >= verbose_high)
THEN
635 WRITE(stdout,
'(A,7X,A)') solver_name,
'Prisms...'
639 DO icl = 1,pgrid%nPrisTot
641 v(1) = pgrid%pri2v(ce2vpri(1,iel),icl)
642 v(2) = pgrid%pri2v(ce2vpri(2,iel),icl)
648 IF ( edgetype == edge_type_new )
THEN
658 IF ( pgrid%nPyrsTot /= 0 )
THEN
659 IF ( global%myProcid == masterproc .AND. &
660 global%verbLevel >= verbose_high)
THEN
661 WRITE(stdout,
'(A,7X,A)') solver_name,
'Pyramids...'
665 DO icl = 1,pgrid%nPyrsTot
667 v(1) = pgrid%pyr2v(ce2vpyr(1,iel),icl)
668 v(2) = pgrid%pyr2v(ce2vpyr(2,iel),icl)
674 IF ( edgetype == edge_type_new )
THEN
686 IF ( global%myProcid == masterproc .AND. &
687 global%verbLevel >= verbose_high)
THEN
688 WRITE(stdout,
'(A,5X,A,6X,I9)') solver_name,
'Hash table collisions:', &
698 ekcntr(edge_kind_aa) = 0
699 ekcntr(edge_kind_av) = 0
700 ekcntr(edge_kind_vv) = 0
702 DO ieg = 1,pgrid%nEdgesTot
703 v1 = pgrid%e2v(1,ieg)
704 v2 = pgrid%e2v(2,ieg)
708 ekcntr(edge_kind_aa) = ekcntr(edge_kind_aa) + 1
710 ekcntr(edge_kind_av) = ekcntr(edge_kind_av) + 1
712 ekcntr(edge_kind_vv) = ekcntr(edge_kind_vv) + 1
714 CALL
errorstop(global,err_reached_default,__line__)
718 ekoffs(edge_kind_aa) = 0
719 ekoffs(edge_kind_av) = ekcntr(edge_kind_aa)
720 ekoffs(edge_kind_vv) = ekcntr(edge_kind_av) + ekoffs(edge_kind_av)
729 pgrid%nEdges = ekcntr(edge_kind_aa)
735 IF ( global%myProcid == masterproc .AND. &
736 global%verbLevel >= verbose_high )
THEN
738 WRITE(stdout,
'(A,5X,A)') solver_name,
'Edge-type statistics:'
739 WRITE(stdout,
'(A,7X,A,4X,I9)') solver_name,
'Total edges: ', &
741 WRITE(stdout,
'(A,5X,A)') solver_name,
'Edge-kind statistics:'
742 WRITE(stdout,
'(A,7X,A,4X,I9)') solver_name,
'Actual-actual edges: ', &
744 WRITE(stdout,
'(A,7X,A,4X,I9)') solver_name,
'Actual-virtual edges: ', &
746 WRITE(stdout,
'(A,7X,A,4X,I9)') solver_name,
'Virtual-virtual edges:', &
761 ALLOCATE(strt(edge_kind_aa:edge_kind_vv,pgrid%nVertTot),stat=errorflag)
762 global%error = errorflag
763 IF ( global%error /= err_none )
THEN
764 CALL
errorstop(global,err_allocate,__line__,
'strt')
767 ALLOCATE(degr(edge_kind_aa:edge_kind_vv,pgrid%nVertTot),stat=errorflag)
768 global%error = errorflag
769 IF ( global%error /= err_none )
THEN
770 CALL
errorstop(global,err_allocate,__line__,
'degr')
773 DO ivg = 1,pgrid%nVertTot
774 degr(edge_kind_aa,ivg) = 0
775 degr(edge_kind_av,ivg) = 0
776 degr(edge_kind_vv,ivg) = 0
779 DO ieg = 1,pgrid%nEdgesTot
780 v1 = pgrid%e2v(1,ieg)
781 v2 = pgrid%e2v(2,ieg)
785 degr(iek,v1) = degr(iek,v1) + 1
788 strt(edge_kind_aa:edge_kind_vv,1) = 1
790 DO ivg = 2,pgrid%nVertTot
791 strt(edge_kind_aa,ivg) = strt(edge_kind_aa,ivg-1) &
792 + degr(edge_kind_aa,ivg-1)
793 strt(edge_kind_av,ivg) = strt(edge_kind_av,ivg-1) &
794 + degr(edge_kind_av,ivg-1)
795 strt(edge_kind_vv,ivg) = strt(edge_kind_vv,ivg-1) &
796 + degr(edge_kind_vv,ivg-1)
806 ekcntr(edge_kind_aa) = 0
807 ekcntr(edge_kind_av) = 0
808 ekcntr(edge_kind_vv) = 0
810 DO ivg = 1,pgrid%nVertTot
811 degr(edge_kind_aa,ivg) = 0
812 degr(edge_kind_av,ivg) = 0
813 degr(edge_kind_vv,ivg) = 0
816 ALLOCATE(pgrid%e2vTemp(2,pgrid%nEdgesTot),stat=errorflag)
817 global%error = errorflag
818 IF ( global%error /= err_none )
THEN
819 CALL
errorstop(global,err_allocate,__line__,
'pGrid%e2vTemp')
822 DO ieg = 1,pgrid%nEdgesTot
823 v1 = pgrid%e2v(1,ieg)
824 v2 = pgrid%e2v(2,ieg)
828 ecntr = strt(iek,v1) + degr(iek,v1) + ekoffs(iek)
829 degr(iek,v1) = degr(iek,v1) + 1
830 ekcntr(iek) = ekcntr(iek) + 1
832 pgrid%e2vTemp(1,ecntr) = pgrid%e2v(1,ieg)
833 pgrid%e2vTemp(2,ecntr) = pgrid%e2v(2,ieg)
836 eksum = ekcntr(edge_kind_aa) + ekcntr(edge_kind_av) + ekcntr(edge_kind_vv)
838 IF ( eksum /= pgrid%nEdgesTot )
THEN
839 CALL
errorstop(global,err_nedges_wrong,__line__)
850 DO ivg = 1,pgrid%nVertTot
857 iegb = ekoffs(iek) + strt(iek,ivg)
858 iege = ekoffs(iek) + strt(iek,ivg) + degr(iek,ivg) - 1
860 IF ( iege > iegb )
THEN
869 iegb = ekoffs(iek) + strt(iek,ivg)
870 iege = ekoffs(iek) + strt(iek,ivg) + degr(iek,ivg) - 1
872 IF ( iege > iegb )
THEN
881 iegb = ekoffs(iek) + strt(iek,ivg)
882 iege = ekoffs(iek) + strt(iek,ivg) + degr(iek,ivg) - 1
884 IF ( iege > iegb )
THEN
893 DEALLOCATE(strt,stat=errorflag)
894 global%error = errorflag
895 IF ( global%error /= err_none )
THEN
896 CALL
errorstop(global,err_deallocate,__line__,
'strt')
899 DEALLOCATE(degr,stat=errorflag)
900 global%error = errorflag
901 IF ( global%error /= err_none )
THEN
902 CALL
errorstop(global,err_deallocate,__line__,
'degr')
909 DEALLOCATE(pgrid%e2v,stat=errorflag)
910 global%error = errorflag
911 IF ( global%error /= err_none )
THEN
912 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%e2v')
915 ALLOCATE(pgrid%e2v(2,pgrid%nEdgesTot),stat=errorflag)
916 global%error = errorflag
917 IF ( global%error /= err_none )
THEN
918 CALL
errorstop(global,err_allocate,__line__,
'pGrid%e2v')
921 DO ieg = 1,pgrid%nEdgesTot
922 pgrid%e2v(1,ieg) = pgrid%e2vTemp(1,ieg)
923 pgrid%e2v(2,ieg) = pgrid%e2vTemp(2,ieg)
930 DEALLOCATE(pgrid%e2vTemp,stat=errorflag)
931 global%error = errorflag
932 IF ( global%error /= err_none )
THEN
933 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%e2v')
940 IF ( global%myProcid == masterproc .AND. &
941 global%verbLevel >= verbose_high )
THEN
942 WRITE(stdout,
'(A,1X,A)') solver_name,
'Building edge list done.'
989 TYPE(t_region
),
POINTER :: pregion
995 INTEGER :: errorflag,e2csize,icl,ieg,iegb,iege,iek,iel,iloc,ipass, &
998 TYPE(t_grid),
POINTER :: pgrid
1005 global => pregion%global
1008 'RFLU_ModEdgeList.F90')
1010 IF ( global%myProcid == masterproc .AND. &
1011 global%verbLevel >= verbose_high )
THEN
1012 WRITE(stdout,
'(A,1X,A)') solver_name,
'Building edge-to-cell list...'
1015 pgrid => pregion%grid
1022 ekcntr(edge_kind_aa) = 0
1023 ekcntr(edge_kind_av) = 0
1024 ekcntr(edge_kind_vv) = 0
1026 DO ieg = 1,pgrid%nEdgesTot
1027 v1 = pgrid%e2v(1,ieg)
1028 v2 = pgrid%e2v(2,ieg)
1032 ekcntr(edge_kind_aa) = ekcntr(edge_kind_aa) + 1
1034 ekcntr(edge_kind_av) = ekcntr(edge_kind_av) + 1
1036 ekcntr(edge_kind_vv) = ekcntr(edge_kind_vv) + 1
1038 CALL
errorstop(global,err_reached_default,__line__)
1042 ekoffs(edge_kind_aa) = 0
1043 ekoffs(edge_kind_av) = ekcntr(edge_kind_aa)
1044 ekoffs(edge_kind_vv) = ekcntr(edge_kind_av) + ekoffs(edge_kind_av)
1046 ekstrt(edge_kind_aa) = 1
1047 ekstrt(edge_kind_av) = ekstrt(edge_kind_aa) + ekcntr(edge_kind_aa)
1048 ekstrt(edge_kind_vv) = ekstrt(edge_kind_av) + ekcntr(edge_kind_av)
1056 ALLOCATE(strt(edge_kind_aa:edge_kind_vv,pgrid%nVertTot),stat=errorflag)
1057 global%error = errorflag
1058 IF ( global%error /= err_none )
THEN
1059 CALL
errorstop(global,err_allocate,__line__,
'strt')
1062 ALLOCATE(degr(edge_kind_aa:edge_kind_vv,pgrid%nVertTot),stat=errorflag)
1063 global%error = errorflag
1064 IF ( global%error /= err_none )
THEN
1065 CALL
errorstop(global,err_allocate,__line__,
'degr')
1068 DO ivg = 1,pgrid%nVertTot
1069 degr(edge_kind_aa,ivg) = 0
1070 degr(edge_kind_av,ivg) = 0
1071 degr(edge_kind_vv,ivg) = 0
1074 DO ieg = 1,pgrid%nEdgesTot
1075 v1 = pgrid%e2v(1,ieg)
1076 v2 = pgrid%e2v(2,ieg)
1080 degr(iek,v1) = degr(iek,v1) + 1
1083 strt(edge_kind_aa,1) = 1
1084 strt(edge_kind_av,1) = 1
1085 strt(edge_kind_vv,1) = 1
1087 DO ivg = 2,pgrid%nVertTot
1088 strt(edge_kind_aa,ivg) = strt(edge_kind_aa,ivg-1) &
1089 + degr(edge_kind_aa,ivg-1)
1090 strt(edge_kind_av,ivg) = strt(edge_kind_av,ivg-1) &
1091 + degr(edge_kind_av,ivg-1)
1092 strt(edge_kind_vv,ivg) = strt(edge_kind_vv,ivg-1) &
1093 + degr(edge_kind_vv,ivg-1)
1103 IF ( global%myProcid == masterproc .AND. &
1104 global%verbLevel >= verbose_high)
THEN
1105 WRITE(stdout,
'(A,3X,A,1X,I1)') solver_name,
'Pass:',ipass
1114 DO ieg = 1,pgrid%nEdgesTot
1115 pgrid%e2cDegr(ieg) = 0
1122 IF ( pgrid%nTetsTot /= 0 )
THEN
1123 IF ( global%myProcid == masterproc .AND. &
1124 global%verbLevel >= verbose_high)
THEN
1125 WRITE(stdout,
'(A,5X,A)') solver_name,
'Tetrahedra...'
1129 DO icl = 1,pgrid%nTetsTot
1131 v(1) = pgrid%tet2v(ce2vtet(1,iel),icl)
1132 v(2) = pgrid%tet2v(ce2vtet(2,iel),icl)
1137 iegb = ekoffs(iek) + strt(iek,
v(1))
1138 iege = ekoffs(iek) + strt(iek,
v(1)) + degr(iek,
v(1)) - 1
1143 IF ( iloc /= element_not_found )
THEN
1144 ieg = iloc + iegb - 1
1146 IF ( pgrid%e2v(1,ieg) /=
v(1) .OR. pgrid%e2v(2,ieg) /=
v(2) )
THEN
1147 CALL
errorstop(global,err_edgelist_invalid,__line__)
1150 pgrid%e2cDegr(ieg) = pgrid%e2cDegr(ieg) + 1
1152 IF ( ipass == 2 )
THEN
1153 iloc = pgrid%e2cStrt(ieg) + pgrid%e2cDegr(ieg) - 1
1154 pgrid%e2c(iloc) = pgrid%tet2CellGlob(icl)
1157 CALL
errorstop(global,err_edgelist_invalid,__line__)
1166 IF ( pgrid%nHexsTot /= 0 )
THEN
1167 IF ( global%myProcid == masterproc .AND. &
1168 global%verbLevel >= verbose_high)
THEN
1169 WRITE(stdout,
'(A,5X,A)') solver_name,
'Hexahedra...'
1173 DO icl = 1,pgrid%nHexsTot
1175 v(1) = pgrid%hex2v(ce2vhex(1,iel),icl)
1176 v(2) = pgrid%hex2v(ce2vhex(2,iel),icl)
1181 iegb = ekoffs(iek) + strt(iek,
v(1))
1182 iege = ekoffs(iek) + strt(iek,
v(1)) + degr(iek,
v(1)) - 1
1187 IF ( iloc /= element_not_found )
THEN
1188 ieg = iloc + iegb - 1
1190 IF ( pgrid%e2v(1,ieg) /=
v(1) .OR. pgrid%e2v(2,ieg) /=
v(2) )
THEN
1191 CALL
errorstop(global,err_edgelist_invalid,__line__)
1194 pgrid%e2cDegr(ieg) = pgrid%e2cDegr(ieg) + 1
1196 IF ( ipass == 2 )
THEN
1197 iloc = pgrid%e2cStrt(ieg) + pgrid%e2cDegr(ieg) - 1
1198 pgrid%e2c(iloc) = pgrid%hex2CellGlob(icl)
1201 CALL
errorstop(global,err_edgelist_invalid,__line__)
1210 IF ( pgrid%nPrisTot /= 0 )
THEN
1211 IF ( global%myProcid == masterproc .AND. &
1212 global%verbLevel >= verbose_high)
THEN
1213 WRITE(stdout,
'(A,5X,A)') solver_name,
'Prisms...'
1217 DO icl = 1,pgrid%nPrisTot
1219 v(1) = pgrid%pri2v(ce2vpri(1,iel),icl)
1220 v(2) = pgrid%pri2v(ce2vpri(2,iel),icl)
1225 iegb = ekoffs(iek) + strt(iek,
v(1))
1226 iege = ekoffs(iek) + strt(iek,
v(1)) + degr(iek,
v(1)) - 1
1231 IF ( iloc /= element_not_found )
THEN
1232 ieg = iloc + iegb - 1
1234 IF ( pgrid%e2v(1,ieg) /=
v(1) .OR. pgrid%e2v(2,ieg) /=
v(2) )
THEN
1235 CALL
errorstop(global,err_edgelist_invalid,__line__)
1238 pgrid%e2cDegr(ieg) = pgrid%e2cDegr(ieg) + 1
1240 IF ( ipass == 2 )
THEN
1241 iloc = pgrid%e2cStrt(ieg) + pgrid%e2cDegr(ieg) - 1
1242 pgrid%e2c(iloc) = pgrid%pri2CellGlob(icl)
1245 CALL
errorstop(global,err_edgelist_invalid,__line__)
1254 IF ( pgrid%nPyrsTot /= 0 )
THEN
1255 IF ( global%myProcid == masterproc .AND. &
1256 global%verbLevel >= verbose_high)
THEN
1257 WRITE(stdout,
'(A,5X,A)') solver_name,
'Pyramids...'
1261 DO icl = 1,pgrid%nPyrsTot
1263 v(1) = pgrid%pyr2v(ce2vpyr(1,iel),icl)
1264 v(2) = pgrid%pyr2v(ce2vpyr(2,iel),icl)
1269 iegb = ekoffs(iek) + strt(iek,
v(1))
1270 iege = ekoffs(iek) + strt(iek,
v(1)) + degr(iek,
v(1)) - 1
1275 IF ( iloc /= element_not_found )
THEN
1276 ieg = iloc + iegb - 1
1278 IF ( pgrid%e2v(1,ieg) /=
v(1) .OR. pgrid%e2v(2,ieg) /=
v(2) )
THEN
1279 CALL
errorstop(global,err_edgelist_invalid,__line__)
1282 pgrid%e2cDegr(ieg) = pgrid%e2cDegr(ieg) + 1
1284 IF ( ipass == 2 )
THEN
1285 iloc = pgrid%e2cStrt(ieg) + pgrid%e2cDegr(ieg) - 1
1286 pgrid%e2c(iloc) = pgrid%pyr2CellGlob(icl)
1289 CALL
errorstop(global,err_edgelist_invalid,__line__)
1298 IF ( ipass == 1 )
THEN
1301 DO ieg = 1,pgrid%nEdgesTot
1302 e2csize = e2csize + pgrid%e2cDegr(ieg)
1305 pgrid%e2cStrt(ieg) = pgrid%e2cStrt(ieg-1) + pgrid%e2cDegr(ieg-1)
1309 IF ( global%myProcid == masterproc .AND. &
1310 global%verbLevel >= verbose_high)
THEN
1311 WRITE(stdout,
'(A,5X,A,1X,I9)') solver_name,
'Size:',e2csize
1314 ALLOCATE(pgrid%e2c(e2csize),stat=errorflag)
1315 global%error = errorflag
1316 IF ( global%error /= err_none )
THEN
1317 CALL
errorstop(global,err_allocate,__line__,
'pGrid%e2c')
1320 pgrid%e2c(1:e2csize) = 0
1328 DEALLOCATE(strt,stat=errorflag)
1329 global%error = errorflag
1330 IF ( global%error /= err_none )
THEN
1331 CALL
errorstop(global,err_deallocate,__line__,
'strt')
1334 DEALLOCATE(degr,stat=errorflag)
1335 global%error = errorflag
1336 IF ( global%error /= err_none )
THEN
1337 CALL
errorstop(global,err_deallocate,__line__,
'degr')
1344 IF ( global%myProcid == masterproc .AND. &
1345 global%verbLevel >= verbose_high )
THEN
1346 WRITE(stdout,
'(A,1X,A)') solver_name,
'Building edge-to-cell list done.'
1387 TYPE(t_region
),
POINTER :: pregion
1393 INTEGER :: errorflag
1394 TYPE(t_grid),
POINTER :: pgrid
1401 global => pregion%global
1404 'RFLU_ModEdgeList.F90')
1406 IF ( global%myProcid == masterproc .AND. &
1407 global%verbLevel >= verbose_high )
THEN
1408 WRITE(stdout,
'(A,1X,A)') solver_name,
'Destroying edge list...'
1415 pgrid => pregion%grid
1421 DEALLOCATE(pgrid%e2v,stat=errorflag)
1422 global%error = errorflag
1423 IF ( global%error /= err_none )
THEN
1424 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%e2v')
1437 IF ( global%myProcid == masterproc .AND. &
1438 global%verbLevel >= verbose_high )
THEN
1439 WRITE(stdout,
'(A,1X,A)') solver_name,
'Destroying edge list done.'
1482 TYPE(t_region
),
POINTER :: pregion
1488 INTEGER :: errorflag
1489 TYPE(t_grid),
POINTER :: pgrid
1496 global => pregion%global
1499 'RFLU_ModEdgeList.F90')
1501 IF ( global%myProcid == masterproc .AND. &
1502 global%verbLevel >= verbose_high )
THEN
1503 WRITE(stdout,
'(A,1X,A)') solver_name,
'Destroying edge-to-cell list...'
1510 pgrid => pregion%grid
1516 DEALLOCATE(pgrid%e2cDegr,stat=errorflag)
1517 global%error = errorflag
1518 IF ( global%error /= err_none )
THEN
1519 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%e2cDegr')
1522 DEALLOCATE(pgrid%e2cStrt,stat=errorflag)
1523 global%error = errorflag
1524 IF ( global%error /= err_none )
THEN
1525 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%e2cStrt')
1528 IF (
ASSOCIATED(pgrid%e2c) .EQV. .true. )
THEN
1529 DEALLOCATE(pgrid%e2c,stat=errorflag)
1530 global%error = errorflag
1531 IF ( global%error /= err_none )
THEN
1532 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%e2c')
1546 IF ( global%myProcid == masterproc .AND. &
1547 global%verbLevel >= verbose_high )
THEN
1548 WRITE(stdout,
'(A,1X,A)') solver_name, &
1549 'Destroying edge-to-cell list done.'
subroutine, public rflu_buildedge2celllist(pRegion)
subroutine, public rflu_createhashtable(global, size)
subroutine, public rflu_hashedge(global, key, pGrid, v, edgeType)
subroutine, public rflu_destroyhashtable(global)
subroutine registerfunction(global, funName, fileName)
subroutine, public rflu_hashbuildkey(a, aSize, key)
subroutine, public rflu_destroyedgelist(pRegion)
subroutine quicksortinteger(a, n)
INTEGER function, public rflu_getedgekind(global, pGrid, v1, v2)
subroutine binarysearchinteger(a, n, v, i, j)
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS 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 v
subroutine, public rflu_createedgelist(pRegion)
subroutine, public rflu_buildedgelist(pRegion)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine, public rflu_nullifyedgelist(pRegion)
subroutine, public rflu_nullifyedge2celllist(pRegion)
subroutine deregisterfunction(global)
subroutine, public rflu_createedge2celllist(pRegion)
subroutine, public rflu_destroyedge2celllist(pRegion)