69 INTEGER :: bcType,nFaces
70 INTEGER,
DIMENSION(:),
POINTER :: bf2ct,bf2cgi,bf2fli
74 CHARACTER(CHRLEN) :: title
75 INTEGER :: MTYP,NDFCD,NDFVL,NDP,NELGP,NFLAGS,NGP,NGRPS,NTYPE
76 INTEGER :: nMappings,nPatches
77 INTEGER,
DIMENSION(:),
POINTER :: ct
78 INTEGER,
DIMENSION(:,:),
POINTER :: c2v,patch2bc
82 CHARACTER(CHRLEN) :: &
83 RCSIdentString =
'$RCSfile: RFLU_ModGAMBIT.F90,v $ $Revision: 1.4 $'
89 INTEGER,
PARAMETER :: GAMBIT_NTYPE_EDGE = 1, &
90 GAMBIT_NTYPE_QUAD = 2, &
91 GAMBIT_NTYPE_TRI = 3, &
92 GAMBIT_NTYPE_HEX = 4, &
93 GAMBIT_NTYPE_PRI = 5, &
94 GAMBIT_NTYPE_TET = 6, &
101 INTEGER,
DIMENSION(4),
PARAMETER :: f2fTetGAMBIT = (/4,1,2,3/)
102 INTEGER,
DIMENSION(6),
PARAMETER :: f2fHexGAMBIT = (/2,3,4,5,1,6/)
103 INTEGER,
DIMENSION(5),
PARAMETER :: f2fPriGAMBIT = (/2,3,4,1,5/)
104 INTEGER,
DIMENSION(5),
PARAMETER :: f2fPyrGAMBIT = (/1,2,3,4,5/)
110 INTEGER,
DIMENSION(4,4),
PARAMETER :: f2vTetGAMBIT = &
111 RESHAPE((/2,1,3,VERT_NONE,1,2,4,VERT_NONE,2,3,4,VERT_NONE,3,1,4, &
112 VERT_NONE/), (/4,4/))
113 INTEGER,
DIMENSION(4,6),
PARAMETER :: f2vHexGAMBIT = &
114 RESHAPE((/1,2,6,5,2,4,8,6,4,3,7,8,3,1,5,7,2,1,3,4,5,6,7,8/), (/4,6/))
115 INTEGER,
DIMENSION(4,5),
PARAMETER :: f2vPriGAMBIT = &
116 RESHAPE((/1,2,5,4,2,3,6,5,3,1,4,6,1,3,2,VERT_NONE,4,5,6, &
117 VERT_NONE/), (/4,5/))
118 INTEGER,
DIMENSION(4,5),
PARAMETER :: f2vPyrGAMBIT = &
119 RESHAPE((/1,3,4,2,1,2,5,VERT_NONE,2,4,5,VERT_NONE,4,3,5,VERT_NONE,3,1,5, &
120 VERT_NONE/), (/4,5/))
171 TYPE(t_region
),
POINTER :: pregion
177 INTEGER :: errorflag,icg,ivgmax,ivgmin
178 TYPE(t_grid),
POINTER :: pgrid
185 global => pregion%global
188 'RFLU_ModGAMBIT.F90')
190 IF ( global%verbLevel > verbose_none )
THEN
191 WRITE(stdout,
'(A,3X,A)') solver_name, &
192 'Checking connectivity arrays...'
199 pgrid => pregion%grid
207 DO icg = 1,pgrid%nCellsTot
208 SELECT CASE ( gridgambit%ct(icg) )
209 CASE ( gambit_ntype_hex )
210 ivgmin = minval(gridgambit%c2v(1:8,icg))
211 ivgmax = minval(gridgambit%c2v(1:8,icg))
212 CASE ( gambit_ntype_tet )
213 ivgmin = minval(gridgambit%c2v(1:4,icg))
214 ivgmax = minval(gridgambit%c2v(1:4,icg))
215 CASE ( gambit_ntype_pri )
216 ivgmin = minval(gridgambit%c2v(1:6,icg))
217 ivgmax = minval(gridgambit%c2v(1:6,icg))
218 CASE ( gambit_ntype_pyr )
219 ivgmin = minval(gridgambit%c2v(1:5,icg))
220 ivgmax = minval(gridgambit%c2v(1:5,icg))
224 IF ( ivgmin < 1 .OR. ivgmax > pgrid%nVertTot )
THEN
225 global%error = err_vertex_number
228 IF ( global%error /= err_none )
THEN
229 IF ( global%verbLevel > verbose_none )
THEN
230 WRITE(stdout,
'(A,5X,A)') solver_name,
'Check failed.'
232 CALL
errorstop(global,global%error,__line__)
240 IF ( global%verbLevel > verbose_none )
THEN
241 WRITE(stdout,
'(A,3X,A)') solver_name, &
242 'Checking connectivity arrays done.'
282 TYPE(t_region
),
POINTER :: pregion
288 CHARACTER(CHRLEN) :: ifilename
289 INTEGER :: errorflag,ibegmax,ibegmin,ibeg1,ibeg2,icg,icl,ict,iendmax, &
290 iendmin,iend1,iend2,ifg,ifile,ifl,ifl2,imap,imap2,ipatch, &
292 TYPE(t_grid),
POINTER :: pgrid
293 TYPE(t_patch),
POINTER :: ppatch
301 global => pregion%global
304 'RFLU_ModGAMBIT.F90')
306 IF ( global%verbLevel > verbose_none )
THEN
307 WRITE(stdout,
'(A,1X,A)') solver_name, &
308 'Converting from GAMBIT to ROCFLU format...'
315 pgrid => pregion%grid
327 IF ( pgrid%nTetsMax > 0 )
THEN
328 ALLOCATE(pgrid%tet2v(4,pgrid%nTetsMax),stat=errorflag)
329 global%error = errorflag
330 IF ( global%error /= err_none )
THEN
331 CALL
errorstop(global,err_allocate,__line__,
'pGrid%tet2v')
337 IF ( pgrid%nHexsMax > 0 )
THEN
338 ALLOCATE(pgrid%hex2v(8,pgrid%nHexsMax),stat=errorflag)
339 global%error = errorflag
340 IF ( global%error /= err_none )
THEN
341 CALL
errorstop(global,err_allocate,__line__,
'pGrid%hex2v')
347 IF ( pgrid%nPrisMax > 0 )
THEN
348 ALLOCATE(pgrid%pri2v(6,pgrid%nPrisMax),stat=errorflag)
349 global%error = errorflag
350 IF ( global%error /= err_none )
THEN
351 CALL
errorstop(global,err_allocate,__line__,
'pGrid%pri2v')
357 IF ( pgrid%nPyrsMax > 0 )
THEN
358 ALLOCATE(pgrid%pyr2v(5,pgrid%nPyrsMax),stat=errorflag)
359 global%error = errorflag
360 IF ( global%error /= err_none )
THEN
361 CALL
errorstop(global,err_allocate,__line__,
'pGrid%pyr2v')
373 ALLOCATE(pgrid%cellGlob2Loc(2,pgrid%nCellsTot),stat=errorflag)
374 global%error = errorflag
375 IF ( global%error /= err_none )
THEN
376 CALL
errorstop(global,err_allocate,__line__,
'pGrid%cellGlob2Loc')
384 IF ( global%verbLevel > verbose_none )
THEN
385 WRITE(stdout,
'(A,3X,A)') solver_name,
'Converting connectivity...'
393 DO icg = 1,pgrid%nCellsTot
394 SELECT CASE ( gridgambit%ct(icg) )
395 CASE ( gambit_ntype_tet )
396 pgrid%nTets = pgrid%nTets + 1
398 pgrid%tet2v(1,pgrid%nTets) = gridgambit%c2v(1,icg)
399 pgrid%tet2v(2,pgrid%nTets) = gridgambit%c2v(2,icg)
400 pgrid%tet2v(3,pgrid%nTets) = gridgambit%c2v(4,icg)
401 pgrid%tet2v(4,pgrid%nTets) = gridgambit%c2v(3,icg)
403 pgrid%cellGlob2Loc(1,icg) = cell_type_tet
404 pgrid%cellGlob2Loc(2,icg) = pgrid%nTets
405 CASE ( gambit_ntype_hex )
406 pgrid%nHexs = pgrid%nHexs + 1
408 pgrid%hex2v(1,pgrid%nHexs) = gridgambit%c2v(1,icg)
409 pgrid%hex2v(2,pgrid%nHexs) = gridgambit%c2v(2,icg)
410 pgrid%hex2v(3,pgrid%nHexs) = gridgambit%c2v(4,icg)
411 pgrid%hex2v(4,pgrid%nHexs) = gridgambit%c2v(3,icg)
412 pgrid%hex2v(5,pgrid%nHexs) = gridgambit%c2v(5,icg)
413 pgrid%hex2v(6,pgrid%nHexs) = gridgambit%c2v(6,icg)
414 pgrid%hex2v(7,pgrid%nHexs) = gridgambit%c2v(8,icg)
415 pgrid%hex2v(8,pgrid%nHexs) = gridgambit%c2v(7,icg)
417 pgrid%cellGlob2Loc(1,icg) = cell_type_hex
418 pgrid%cellGlob2Loc(2,icg) = pgrid%nHexs
419 CASE ( gambit_ntype_pri )
420 pgrid%nPris = pgrid%nPris + 1
422 pgrid%pri2v(1,pgrid%nPris) = gridgambit%c2v(1,icg)
423 pgrid%pri2v(2,pgrid%nPris) = gridgambit%c2v(2,icg)
424 pgrid%pri2v(3,pgrid%nPris) = gridgambit%c2v(3,icg)
425 pgrid%pri2v(4,pgrid%nPris) = gridgambit%c2v(4,icg)
426 pgrid%pri2v(5,pgrid%nPris) = gridgambit%c2v(5,icg)
427 pgrid%pri2v(6,pgrid%nPris) = gridgambit%c2v(6,icg)
429 pgrid%cellGlob2Loc(1,icg) = cell_type_pri
430 pgrid%cellGlob2Loc(2,icg) = pgrid%nPris
431 CASE ( gambit_ntype_pyr )
432 pgrid%nPyrs = pgrid%nPyrs + 1
434 pgrid%pyr2v(1,pgrid%nPyrs) = gridgambit%c2v(1,icg)
435 pgrid%pyr2v(2,pgrid%nPyrs) = gridgambit%c2v(2,icg)
436 pgrid%pyr2v(3,pgrid%nPyrs) = gridgambit%c2v(4,icg)
437 pgrid%pyr2v(4,pgrid%nPyrs) = gridgambit%c2v(3,icg)
438 pgrid%pyr2v(5,pgrid%nPyrs) = gridgambit%c2v(5,icg)
440 pgrid%cellGlob2Loc(1,icg) = cell_type_pyr
441 pgrid%cellGlob2Loc(2,icg) = pgrid%nPyrs
443 CALL
errorstop(global,err_reached_default,__line__)
447 IF ( global%verbLevel > verbose_none )
THEN
448 WRITE(stdout,
'(A,3X,A)') solver_name,
'Converting connectivity done.'
455 IF ( global%verbLevel > verbose_none )
THEN
456 WRITE(stdout,
'(A,3X,A)') solver_name,
'Converting patch data structure...'
463 IF ( global%verbLevel > verbose_none )
THEN
464 WRITE(stdout,
'(A,5X,A)') solver_name,
'Reading patch mapping file...'
475 OPEN(ifile,file=ifilename,
form=
"FORMATTED",
status=
"OLD",iostat=errorflag)
476 global%error = errorflag
477 IF ( global%error /= err_none )
THEN
478 CALL
errorstop(global,err_file_open,__line__,ifilename)
485 READ(ifile,*) pgrid%nPatches
486 READ(ifile,*) gridgambit%nMappings
488 ALLOCATE(gridgambit%patch2bc(3,gridgambit%nMappings),stat=errorflag)
489 global%error = errorflag
490 IF ( global%error /= err_none )
THEN
491 CALL
errorstop(global,err_allocate,__line__,
'gridGAMBIT%patch2bc')
494 DO imap = 1,gridgambit%nMappings
495 READ(ifile,*) (gridgambit%patch2bc(
j,imap),
j=1,3)
502 CLOSE(ifile,iostat=errorflag)
503 global%error = errorflag
504 IF ( global%error /= err_none )
THEN
505 CALL
errorstop(global,err_file_close,__line__,ifilename)
508 IF ( global%verbLevel > verbose_none )
THEN
509 WRITE(stdout,
'(A,5X,A)') solver_name,
'Reading patch mapping file done.'
516 IF ( global%checkLevel > check_none )
THEN
517 IF ( global%verbLevel > verbose_none )
THEN
518 WRITE(stdout,
'(A,5X,A)') solver_name,
'Checking patch mapping entries...'
521 DO imap = 1,gridgambit%nMappings
522 IF ( gridgambit%patch2bc(2,imap) < gridgambit%patch2bc(1,imap) )
THEN
523 IF ( global%verbLevel > verbose_none )
THEN
524 WRITE(stdout,
'(A,5X,A)') solver_name,
'Check failed.'
526 CALL
errorstop(global,err_patch_numbering,__line__)
530 IF ( minval(gridgambit%patch2bc(3,:)) /= 1 .OR. &
531 maxval(gridgambit%patch2bc(3,:)) /= pgrid%nPatches )
THEN
532 IF ( global%verbLevel > verbose_none )
THEN
533 WRITE(stdout,
'(A,5X,A)') solver_name,
'Check failed.'
535 CALL
errorstop(global,err_patch_numbering,__line__)
538 DO imap = 1,gridgambit%nMappings
539 DO imap2 = 1,gridgambit%nMappings
541 IF ( imap /= imap2 )
THEN
542 ibeg1 = gridgambit%patch2bc(1,imap)
543 iend1 = gridgambit%patch2bc(2,imap)
545 ibeg2 = gridgambit%patch2bc(1,imap2)
546 iend2 = gridgambit%patch2bc(2,imap2)
548 IF ( ibeg1 < ibeg2 )
THEN
553 ELSE IF ( ibeg1 > ibeg2 )
THEN
559 IF ( global%verbLevel > verbose_none )
THEN
560 WRITE(stdout,
'(A,5X,A)') solver_name,
'Check failed.'
562 CALL
errorstop(global,err_patch_numbering,__line__)
565 IF ( iendmin >= ibegmax )
THEN
566 IF ( global%verbLevel > verbose_none )
THEN
567 WRITE(stdout,
'(A,5X,A)') solver_name,
'Check failed.'
569 CALL
errorstop(global,err_patch_numbering,__line__)
576 IF ( global%verbLevel > verbose_none )
THEN
577 WRITE(stdout,
'(A,5X,A)') solver_name, &
578 'Checking patch mapping entries done.'
586 ALLOCATE(pregion%patches(pgrid%nPatches),stat=errorflag)
587 global%error = errorflag
588 IF ( global%error /= err_none )
THEN
589 CALL
errorstop(global,err_allocate,__line__,
'pRegion%patches')
592 DO ipatch = 1,pgrid%nPatches
593 ppatch => pregion%patches(ipatch)
599 ppatch%iPatchGlobal = ipatch
600 ppatch%iBorder = patch_iborder_default
601 ppatch%renumFlag = .false.
604 global%nPatches = pgrid%nPatches
610 DO ipatch = 1,gridgambit%nPatches
611 ppatchgambit => gridgambit%patches(ipatch)
613 DO imap = 1,gridgambit%nMappings
614 IF ( ipatch >= gridgambit%patch2bc(1,imap) .AND. &
615 ipatch <= gridgambit%patch2bc(2,imap) )
THEN
616 ipatch2 = gridgambit%patch2bc(3,imap)
620 ppatch => pregion%patches(ipatch2)
622 DO ifg = 1,ppatchgambit%nFaces
623 ict = ppatchgambit%bf2ct(ifg)
624 ifl = ppatchgambit%bf2fli(ifg)
627 CASE ( gambit_ntype_tet )
628 ppatch%nBTris = ppatch%nBTris + 1
629 CASE ( gambit_ntype_hex )
630 ppatch%nBQuads = ppatch%nBQuads + 1
631 CASE ( gambit_ntype_pri )
632 IF ( f2vprigambit(4,ifl) == vert_none )
THEN
633 ppatch%nBTris = ppatch%nBTris + 1
635 ppatch%nBQuads = ppatch%nBQuads + 1
637 CASE ( gambit_ntype_pyr )
638 IF ( f2vpyrgambit(4,ifl) == vert_none )
THEN
639 ppatch%nBTris = ppatch%nBTris + 1
641 ppatch%nBQuads = ppatch%nBQuads + 1
644 CALL
errorstop(global,err_reached_default,__line__)
655 DO ipatch = 1,pgrid%nPatches
656 ppatch => pregion%patches(ipatch)
658 ppatch%nBFaces = ppatch%nBTris + ppatch%nBQuads
659 pgrid%nBFaces = pgrid%nBFaces + ppatch%nBFaces
661 ppatch%nBFacesTot = ppatch%nBFaces
662 ppatch%nBQuadsTot = ppatch%nBQuads
663 ppatch%nBTrisTot = ppatch%nBTris
664 ppatch%nBVertTot = ppatch%nBVert
671 ppatch%nBCellsVirt = 0
674 pgrid%nBFacesTot = pgrid%nBFaces
680 DO ipatch = 1,pgrid%nPatches
681 ppatch => pregion%patches(ipatch)
683 IF ( ppatch%nBTrisMax > 0 )
THEN
684 ALLOCATE(ppatch%bTri2v(3,ppatch%nBTrisMax),stat=errorflag)
685 global%error = errorflag
686 IF ( global%error /= err_none )
THEN
687 CALL
errorstop(global,err_allocate,__line__,
'pPatch%bTri2v')
690 nullify(ppatch%bTri2v)
693 IF ( ppatch%nBQuadsMax > 0 )
THEN
694 ALLOCATE(ppatch%bQuad2v(4,ppatch%nBQuadsMax),stat=errorflag)
695 global%error = errorflag
696 IF ( global%error /= err_none )
THEN
697 CALL
errorstop(global,err_allocate,__line__,
'pPatch%bQuad2v')
700 nullify(ppatch%bQuad2v)
708 DO ipatch = 1,pgrid%nPatches
709 ppatch => pregion%patches(ipatch)
719 DO ipatch = 1,gridgambit%nPatches
720 ppatchgambit => gridgambit%patches(ipatch)
724 DO imap = 1,gridgambit%nMappings
725 IF ( ipatch >= gridgambit%patch2bc(1,imap) .AND. &
726 ipatch <= gridgambit%patch2bc(2,imap) )
THEN
727 ipatch2 = gridgambit%patch2bc(3,imap)
731 ppatch => pregion%patches(ipatch2)
735 DO ifg = 1,ppatchgambit%nFaces
736 ict = ppatchgambit%bf2ct(ifg)
737 icg = ppatchgambit%bf2cgi(ifg)
738 ifl = ppatchgambit%bf2fli(ifg)
742 SELECT CASE ( pgrid%cellGlob2Loc(1,icg) )
743 CASE ( cell_type_tet )
744 IF ( ict /= gambit_ntype_tet )
THEN
745 CALL
errorstop(global,err_ntype_invalid,__line__)
747 CASE ( cell_type_hex )
748 IF ( ict /= gambit_ntype_hex )
THEN
749 CALL
errorstop(global,err_ntype_invalid,__line__)
751 CASE ( cell_type_pri )
752 IF ( ict /= gambit_ntype_pri )
THEN
753 CALL
errorstop(global,err_ntype_invalid,__line__)
755 CASE ( cell_type_pyr )
756 IF ( ict /= gambit_ntype_pyr )
THEN
757 CALL
errorstop(global,err_ntype_invalid,__line__)
760 CALL
errorstop(global,err_reached_default,__line__)
765 icl = pgrid%cellGlob2Loc(2,icg)
770 CASE ( gambit_ntype_tet )
771 ppatch%nBTris = ppatch%nBTris + 1
774 ifl2 = f2ftetgambit(ifl)
775 ivg = pgrid%tet2v(f2vtet(ivl,ifl2),icl)
777 ppatch%bTri2v(ivl,ppatch%nBTris) = ivg
779 CASE ( gambit_ntype_hex )
780 ppatch%nBQuads = ppatch%nBQuads + 1
783 ifl2 = f2fhexgambit(ifl)
784 ivg = pgrid%hex2v(f2vhex(ivl,ifl2),icl)
786 ppatch%bQuad2v(ivl,ppatch%nBQuads) = ivg
788 CASE ( gambit_ntype_pri )
789 IF ( f2vprigambit(4,ifl) == vert_none )
THEN
790 ppatch%nBTris = ppatch%nBTris + 1
793 ifl2 = f2fprigambit(ifl)
794 ivg = pgrid%pri2v(f2vpri(ivl,ifl2),icl)
796 ppatch%bTri2v(ivl,ppatch%nBTris) = ivg
799 ppatch%nBQuads = ppatch%nBQuads + 1
802 ifl2 = f2fprigambit(ifl)
803 ivg = pgrid%pri2v(f2vpri(ivl,ifl2),icl)
805 ppatch%bQuad2v(ivl,ppatch%nBQuads) = ivg
808 CASE ( gambit_ntype_pyr )
809 IF ( f2vpyrgambit(4,ifl) == vert_none )
THEN
810 ppatch%nBTris = ppatch%nBTris + 1
813 ifl2 = f2fpyrgambit(ifl)
814 ivg = pgrid%pyr2v(f2vpyr(ivl,ifl2),icl)
816 ppatch%bTri2v(ivl,ppatch%nBTris) = ivg
819 ppatch%nBQuads = ppatch%nBQuads + 1
822 ifl2 = f2fpyrgambit(ifl)
823 ivg = pgrid%pyr2v(f2vpyr(ivl,ifl2),icl)
825 ppatch%bQuad2v(ivl,ppatch%nBQuads) = ivg
829 CALL
errorstop(global,err_reached_default,__line__)
834 IF ( global%verbLevel > verbose_none )
THEN
835 WRITE(stdout,
'(A,3X,A)') solver_name, &
836 'Converting patch data structure done.'
843 DEALLOCATE(pgrid%cellGlob2Loc,stat=errorflag)
844 global%error = errorflag
845 IF ( global%error /= err_none )
THEN
846 CALL
errorstop(global,err_deallocate,__line__,
'pGrid%cellGlob2Loc')
853 DO ipatch = 1,pgrid%nPatches
854 ppatch => pregion%patches(ipatch)
856 ALLOCATE(ppatch%bf2c(ppatch%nBFacesMax),stat=errorflag)
857 global%error = errorflag
858 IF ( global%error /= err_none )
THEN
859 CALL
errorstop(global,err_allocate,__line__,
'pPatch%bf2c')
862 ALLOCATE(ppatch%bf2v(4,ppatch%nBFacesMax),stat=errorflag)
863 global%error = errorflag
864 IF ( global%error /= err_none )
THEN
865 CALL
errorstop(global,err_allocate,__line__,
'pPatch%bf2v')
868 DO ifl = 1,ppatch%nBFacesMax
869 ppatch%bf2v(1,ifl) = vert_none
870 ppatch%bf2v(2,ifl) = vert_none
871 ppatch%bf2v(3,ifl) = vert_none
872 ppatch%bf2v(4,ifl) = vert_none
880 DEALLOCATE(gridgambit%ct,stat=errorflag)
881 global%error = errorflag
882 IF ( global%error /= err_none )
THEN
883 CALL
errorstop(global,err_deallocate,__line__,
'gridGAMBIT%ct')
886 DEALLOCATE(gridgambit%c2v,stat=errorflag)
887 global%error = errorflag
888 IF ( global%error /= err_none )
THEN
889 CALL
errorstop(global,err_deallocate,__line__,
'gridGAMBIT%c2v')
892 DEALLOCATE(gridgambit%patches,stat=errorflag)
893 global%error = errorflag
894 IF ( global%error /= err_none )
THEN
895 CALL
errorstop(global,err_deallocate,__line__,
'gridGAMBIT%patches')
902 IF ( global%verbLevel > verbose_none )
THEN
903 WRITE(stdout,
'(A,1X,A)') solver_name, &
904 'Converting from GAMBIT to ROCFLU format done.'
946 TYPE(t_region
),
POINTER :: pregion
953 TYPE(t_grid),
POINTER :: pgrid
960 pgrid => pregion%grid
966 WRITE(stdout,
'(A,3X,A)') solver_name,
'Grid Statistics:'
967 WRITE(stdout,
'(A,5X,A,2X,I9)') solver_name,
'Vertices: ', &
969 WRITE(stdout,
'(A,5X,A,2X,I9)') solver_name,
'Cells: ', &
971 WRITE(stdout,
'(A,5X,A,2X,I9)') solver_name,
'Patches: ', &
974 IF ( gridgambit%nPatches > 0 )
THEN
975 WRITE(stdout,
'(A,5X,A)') solver_name,
'Patch statistics:'
977 DO ipatch = 1,gridgambit%nPatches
978 ppatchgambit => gridgambit%patches(ipatch)
980 WRITE(stdout,
'(A,7X,A,2X,I4)') solver_name,
'Patch:',ipatch
981 WRITE(stdout,
'(A,7X,A,1X,I9)') solver_name,
'Faces:',ppatchgambit%nFaces
1031 TYPE(t_region
),
POINTER :: pregion
1037 CHARACTER(CHRLEN) :: dummystring,ifilename,sectionstring,versionstring
1038 INTEGER :: itype,nentry
1039 INTEGER :: dummyinteger,errorflag,icg,icl,ifile,ifl,ipatch,ivg,ivl, &
1041 TYPE(t_grid),
POINTER :: pgrid
1049 global => pregion%global
1052 'RFLU_ModGAMBIT.F90')
1054 IF ( global%verbLevel > verbose_none )
THEN
1055 WRITE(stdout,
'(A,1X,A)') solver_name,
'Reading GAMBIT neutral grid file...'
1062 OPEN(ifile,file=ifilename,
form=
"FORMATTED",
status=
"OLD",iostat=errorflag)
1063 global%error = errorflag
1064 IF ( global%error /= err_none )
THEN
1065 CALL
errorstop(global,err_file_open,__line__,ifilename)
1072 pgrid => pregion%grid
1088 READ(ifile,
'(2(A20))') dummystring,versionstring
1089 READ(ifile,*) dummystring
1090 READ(ifile,*) gridgambit%title
1092 READ(ifile,*) dummystring
1093 READ(ifile,*) dummystring
1094 READ(ifile,*) dummystring
1096 READ(ifile,*) pgrid%nVert,pgrid%nCells,gridgambit%NGRPS, &
1097 gridgambit%nPatches,gridgambit%NDFCD,gridgambit%NDFVL
1099 READ(ifile,*) dummystring
1101 IF ( trim(dummystring) /=
"ENDOFSECTION" )
THEN
1102 CALL
errorstop(global,err_string_invalid,__line__)
1105 pgrid%nVertTot = pgrid%nVert
1106 pgrid%nCellsTot = pgrid%nCells
1115 ALLOCATE(pgrid%xyz(xcoord:zcoord,pgrid%nVertMax),stat=errorflag)
1116 global%error = errorflag
1117 IF ( global%error /= err_none )
THEN
1118 CALL
errorstop(global,err_allocate,__line__,
'grid%xyz')
1121 ALLOCATE(gridgambit%ct(pgrid%nCellsTot),stat=errorflag)
1122 global%error = errorflag
1123 IF ( global%error /= err_none )
THEN
1124 CALL
errorstop(global,err_allocate,__line__,
'gridGAMBIT%ct')
1127 ALLOCATE(gridgambit%c2v(8,pgrid%nCellsTot),stat=errorflag)
1128 global%error = errorflag
1129 IF ( global%error /= err_none )
THEN
1130 CALL
errorstop(global,err_allocate,__line__,
'gridGAMBIT%c2v')
1133 DO icg = 1,pgrid%nCellsTot
1134 gridgambit%c2v(1,icg) = c2v_init
1135 gridgambit%c2v(2,icg) = c2v_init
1136 gridgambit%c2v(3,icg) = c2v_init
1137 gridgambit%c2v(4,icg) = c2v_init
1138 gridgambit%c2v(5,icg) = c2v_init
1139 gridgambit%c2v(6,icg) = c2v_init
1140 gridgambit%c2v(7,icg) = c2v_init
1141 gridgambit%c2v(8,icg) = c2v_init
1144 ALLOCATE(gridgambit%patches(gridgambit%nPatches),stat=errorflag)
1145 global%error = errorflag
1146 IF ( global%error /= err_none )
THEN
1147 CALL
errorstop(global,err_allocate,__line__,
'gridGAMBIT%patches')
1157 loopcounter = loopcounter + 1
1163 READ(ifile,
'(A32)',iostat=errorflag,
end=100) sectionstring
1169 IF ( adjustl(trim(sectionstring)) == &
1170 "NODAL COORDINATES"//
" "//adjustl(trim(versionstring)) )
THEN
1171 IF ( global%verbLevel > verbose_low )
THEN
1172 WRITE(stdout,
'(A,3X,A)') solver_name,
'Reading coordinate section...'
1175 DO ivl = 1,pgrid%nVertTot
1179 READ(ifile,*) dummyinteger,pgrid%xyz(xcoord:zcoord,ivg)
1186 ELSE IF ( adjustl(trim(sectionstring)) == &
1187 "ELEMENTS/CELLS"//
" "//adjustl(trim(versionstring)) )
THEN
1188 IF ( global%verbLevel > verbose_low )
THEN
1189 WRITE(stdout,
'(A,3X,A)') solver_name,
'Reading element connectivity...'
1192 DO icl = 1,pgrid%nCellsTot
1196 READ(ifile,*) dummystring,gridgambit%NTYPE,gridgambit%NDP
1199 gridgambit%ct(icg) = gridgambit%NTYPE
1205 SELECT CASE ( gridgambit%NTYPE )
1209 CASE ( gambit_ntype_edge )
1210 CALL
errorstop(global,err_ntype_invalid,__line__)
1214 CASE ( gambit_ntype_quad )
1215 CALL
errorstop(global,err_ntype_invalid,__line__)
1219 CASE ( gambit_ntype_tri )
1220 CALL
errorstop(global,err_ntype_invalid,__line__)
1224 CASE ( gambit_ntype_hex )
1225 IF ( gridgambit%NDP == 8 )
THEN
1226 READ(ifile,*) dummystring,dummystring,dummystring, &
1227 gridgambit%c2v(1:7,icg)
1229 IF ( gridgambit%NDP == 8 )
THEN
1230 pgrid%nHexs = pgrid%nHexs + 1
1232 READ(ifile,*) gridgambit%c2v(8,icg)
1235 CALL
errorstop(global,err_ndp_invalid,__line__)
1240 CASE ( gambit_ntype_pri )
1241 IF ( gridgambit%NDP == 6 )
THEN
1242 pgrid%nPris = pgrid%nPris + 1
1244 READ(ifile,*) dummystring,dummystring,dummystring, &
1245 gridgambit%c2v(1:6,icg)
1247 CALL
errorstop(global,err_ndp_invalid,__line__)
1252 CASE ( gambit_ntype_tet )
1253 IF ( gridgambit%NDP == 4 )
THEN
1254 pgrid%nTets = pgrid%nTets + 1
1256 READ(ifile,*) dummystring,dummystring,dummystring, &
1257 gridgambit%c2v(1:4,icg)
1259 CALL
errorstop(global,err_ndp_invalid,__line__)
1264 CASE ( gambit_ntype_pyr )
1265 IF ( gridgambit%NDP == 5 )
THEN
1266 pgrid%nPyrs = pgrid%nPyrs + 1
1268 READ(ifile,*) dummystring,dummystring,dummystring, &
1269 gridgambit%c2v(1:5,icg)
1271 CALL
errorstop(global,err_ndp_invalid,__line__)
1277 CALL
errorstop(global,err_reached_default,__line__)
1285 ELSE IF ( adjustl(trim(sectionstring)) == &
1286 "ELEMENT GROUP"//
" "//adjustl(trim(versionstring)) )
THEN
1287 IF ( global%verbLevel > verbose_low )
THEN
1288 WRITE(stdout,
'(A,3X,A)') solver_name, &
1289 'Reading element group information...'
1292 READ(ifile,*) dummystring,gridgambit%NGP,dummystring,gridgambit%NELGP, &
1293 dummystring,gridgambit%MTYP,dummystring,gridgambit%NFLAGS
1295 READ(ifile,*) dummystring
1297 READ(ifile,
'(10(I8))') (dummyinteger,ifl=1,gridgambit%NFLAGS)
1298 READ(ifile,
'(10(I8))') (dummyinteger,icl=1,gridgambit%NELGP)
1304 ELSE IF ( adjustl(trim(sectionstring)) == &
1305 "BOUNDARY CONDITIONS"//
" "//adjustl(trim(versionstring)) )
THEN
1306 IF ( global%verbLevel > verbose_low )
THEN
1307 WRITE(stdout,
'(A,3X,A)') solver_name, &
1308 'Reading boundary condition information...'
1313 ppatchgambit => gridgambit%patches(ipatch)
1315 READ(ifile,
'(A32,2(I10))') dummystring,itype,nentry
1321 SELECT CASE ( itype )
1326 ppatchgambit%nFaces = nentry
1328 ALLOCATE(ppatchgambit%bf2cgi(ppatchgambit%nFaces),stat=errorflag)
1329 global%error = errorflag
1330 IF ( global%error /= err_none )
THEN
1331 CALL
errorstop(global,err_allocate,__line__, &
1332 'pPatchGAMBIT%bf2cgi')
1335 ALLOCATE(ppatchgambit%bf2ct(ppatchgambit%nFaces),stat=errorflag)
1336 global%error = errorflag
1337 IF ( global%error /= err_none )
THEN
1338 CALL
errorstop(global,err_allocate,__line__, &
1339 'pPatchGAMBIT%bf2ct')
1342 ALLOCATE(ppatchgambit%bf2fli(ppatchgambit%nFaces),stat=errorflag)
1343 global%error = errorflag
1344 IF ( global%error /= err_none )
THEN
1345 CALL
errorstop(global,err_allocate,__line__, &
1346 'pPatchGAMBIT%bf2fli')
1349 DO ifl = 1,ppatchgambit%nFaces
1350 READ(ifile,*) ppatchgambit%bf2cgi(ifl), &
1351 ppatchgambit%bf2ct(ifl), &
1352 ppatchgambit%bf2fli(ifl)
1359 READ(ifile,*) dummyinteger
1365 CALL
errorstop(global,err_reached_default,__line__)
1373 CALL
errorstop(global,err_reached_default,__line__)
1380 READ(ifile,*) dummystring
1382 IF ( trim(dummystring) /=
"ENDOFSECTION" )
THEN
1383 CALL
errorstop(global,err_string_invalid,__line__)
1390 IF ( loopcounter >= limit_infinite_loop )
THEN
1391 CALL
errorstop(global,err_infinite_loop,__line__)
1401 global%warnCounter = global%warnCounter + 1
1403 100
WRITE(stdout,*) solver_name,
'*** WARNING *** Encountered EOF.'
1409 pgrid%nTetsTot = pgrid%nTets
1410 pgrid%nHexsTot = pgrid%nHexs
1411 pgrid%nPrisTot = pgrid%nPris
1412 pgrid%nPyrsTot = pgrid%nPyrs
1423 IF ( global%checkLevel > check_none )
THEN
1431 IF ( global%verbLevel > verbose_none )
THEN
1439 CLOSE(ifile,iostat=errorflag)
1440 global%error = errorflag
1441 IF ( global%error /= err_none )
THEN
1442 CALL
errorstop(global,err_file_close,__line__,ifilename)
1449 IF ( global%verbLevel > verbose_none )
THEN
1450 WRITE(stdout,
'(A,1X,A)') solver_name, &
1451 'Reading GAMBIT neutral grid file done.'
subroutine registerfunction(global, funName, fileName)
int status() const
Obtain the status of the attribute.
subroutine buildfilenameplain(global, dest, ext, fileName)
subroutine, public rflu_readgridgambitneutral(pRegion)
subroutine, public rflu_convgambit2rocflu(pRegion)
**********************************************************************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_checkgridgambit(pRegion)
INTEGER function, public rflu_setmaxdimension(global, nXyzTot)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
subroutine rflu_printgridgambitinfo(pRegion)