60 CHARACTER(CHRLEN) :: RCSIdentString = &
61 '$RCSfile: RFLU_ModReadWriteGrid.F90,v $ $Revision: 1.10 $'
109 CHARACTER(CHRLEN) :: ifilename,sectionstring,timestring1,timestring2
110 INTEGER :: errorflag,
i,ifile,ipatch,
j,
k,loopcounter,nbcellsvirt, &
111 nbquadstot,nbtristot,nbverttot,nhexstot,npatches,npristot, &
112 npyrstot,ntetstot,nverttot,p,
r
113 REAL(RFREAL) :: currenttime
114 TYPE(t_grid),
POINTER :: pgrid
115 TYPE(t_patch),
POINTER :: ppatch
122 TYPE(t_region
),
POINTER :: pregion
128 global => pregion%global
131 'RFLU_ModReadWriteGrid.F90')
133 IF ( global%myProcid == masterproc .AND. &
134 global%verbLevel > verbose_none )
THEN
135 WRITE(stdout,
'(A,1X,A)') solver_name,
'Reading ASCII grid file...'
140 IF ( global%flowType == flow_unsteady .AND. &
141 (pregion%mixtInput%moveGrid .EQV. .true.) )
THEN
143 pregion%iRegionGlobal,global%currentTime, &
146 IF ( global%myProcid == masterproc .AND. &
147 global%verbLevel > verbose_none )
THEN
148 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
149 pregion%iRegionGlobal
150 WRITE(stdout,
'(A,3X,A,1X,1PE11.5)') solver_name,
'Current time:', &
155 pregion%iRegionGlobal,ifilename)
157 IF ( global%myProcid == masterproc .AND. &
158 global%verbLevel > verbose_none )
THEN
159 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
160 pregion%iRegionGlobal
164 OPEN(ifile,file=ifilename,
form=
"FORMATTED",
status=
"OLD",iostat=errorflag)
165 global%error = errorflag
166 IF ( global%error /= err_none )
THEN
167 CALL
errorstop(global,err_file_open,__line__,ifilename)
174 IF ( global%myProcid == masterproc .AND. &
175 global%verbLevel > verbose_low )
THEN
176 WRITE(stdout,
'(A,3X,A)') solver_name,
'Header information...'
179 READ(ifile,
'(A)') sectionstring
180 IF ( trim(sectionstring) /=
'# ROCFLU grid file' )
THEN
181 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
188 READ(ifile,
'(A)') sectionstring
189 IF ( trim(sectionstring) /=
'# Precision and range' )
THEN
190 CALL
errorstop(global,err_invalid_marker,__line__,ifilename)
193 READ(ifile,
'(2(I8))') p,
r
194 IF ( p <
precision(1.0_rfreal) .OR.
r < range(1.0_rfreal) )
THEN
195 CALL
errorstop(global,err_prec_range,__line__)
202 READ(ifile,
'(A)') sectionstring
203 IF ( trim(sectionstring) /=
'# Physical time' )
THEN
204 CALL
errorstop(global,err_invalid_marker,__line__,ifilename)
207 READ(ifile,
'(E23.16)') currenttime
209 IF ( global%flowType == flow_unsteady .AND. &
210 (pregion%mixtInput%moveGrid .EQV. .true.) )
THEN
211 IF ( global%currentTime < 0.0_rfreal )
THEN
212 global%currentTime = currenttime
214 WRITE(timestring1,
'(1PE11.5)') global%currentTime
215 WRITE(timestring2,
'(1PE11.5)') currenttime
216 IF ( trim(timestring1) /= trim(timestring2) )
THEN
217 CALL
errorstop(global,err_time_solution,__line__,trim(ifilename))
226 READ(ifile,
'(A)') sectionstring
227 IF ( trim(sectionstring) /=
'# Dimensions' )
THEN
228 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
231 pgrid => pregion%grid
233 READ(ifile,
'(5(I8))') nverttot,ntetstot,nhexstot,npristot,npyrstot
239 IF ( nverttot /= pgrid%nVertTot )
THEN
240 CALL
errorstop(global,err_dimens_invalid,__line__)
243 IF ( ntetstot /= pgrid%nTetsTot )
THEN
244 CALL
errorstop(global,err_dimens_invalid,__line__)
247 IF ( nhexstot /= pgrid%nHexsTot )
THEN
248 CALL
errorstop(global,err_dimens_invalid,__line__)
251 IF ( npristot /= pgrid%nPrisTot )
THEN
252 CALL
errorstop(global,err_dimens_invalid,__line__)
255 IF ( npyrstot /= pgrid%nPyrsTot )
THEN
256 CALL
errorstop(global,err_dimens_invalid,__line__)
266 loopcounter = loopcounter + 1
268 READ(ifile,
'(A)') sectionstring
270 SELECT CASE ( trim(sectionstring) )
276 CASE (
'# Coordinates' )
277 IF ( global%myProcid == masterproc .AND. &
278 global%verbLevel > verbose_low )
THEN
279 WRITE(stdout,
'(A,3X,A)') solver_name,
'Coordinates...'
283 READ(ifile,
'(5(E23.16))') (pgrid%xyz(
i,
j),
j=1,pgrid%nVertTot)
290 CASE (
'# Tetrahedra' )
291 IF ( pgrid%nTetsTot == 0 )
THEN
292 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
295 IF ( global%myProcid == masterproc .AND. &
296 global%verbLevel > verbose_low )
THEN
297 WRITE(stdout,
'(A,3X,A)') solver_name,
'Tetrahedra...'
301 READ(ifile,
'(10(I8))') (pgrid%tet2v(
i,
j),
j=1,pgrid%nTetsTot)
308 CASE (
'# Hexahedra' )
309 IF ( pgrid%nHexsTot == 0 )
THEN
310 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
313 IF ( global%myProcid == masterproc .AND. &
314 global%verbLevel > verbose_low )
THEN
315 WRITE(stdout,
'(A,3X,A)') solver_name,
'Hexahedra...'
319 READ(ifile,
'(10(I8))') (pgrid%hex2v(
i,
j),
j=1,pgrid%nHexsTot)
327 IF ( pgrid%nPrisTot == 0 )
THEN
328 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
331 IF ( global%myProcid == masterproc .AND. &
332 global%verbLevel > verbose_low )
THEN
333 WRITE(stdout,
'(A,3X,A)') solver_name,
'Prisms...'
337 READ(ifile,
'(10(I8))') (pgrid%pri2v(
i,
j),
j=1,pgrid%nPrisTot)
344 CASE (
'# Pyramids' )
345 IF ( pgrid%nPyrsTot == 0 )
THEN
346 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
349 IF ( global%myProcid == masterproc .AND. &
350 global%verbLevel > verbose_low )
THEN
351 WRITE(stdout,
'(A,3X,A)') solver_name,
'Pyramids...'
355 READ(ifile,
'(10(I8))') (pgrid%pyr2v(
i,
j),
j=1,pgrid%nPyrsTot)
362 CASE (
'# Boundaries' )
363 IF ( global%myProcid == masterproc .AND. &
364 global%verbLevel > verbose_low )
THEN
365 WRITE(stdout,
'(A,3X,A)') solver_name,
'Boundary information...'
368 READ(ifile,*) npatches
370 IF ( npatches /= pgrid%nPatches )
THEN
371 CALL
errorstop(global,err_dimens_invalid,__line__)
376 DO ipatch = 1,pgrid%nPatches
377 ppatch => pregion%patches(ipatch)
381 READ(ifile,
'(2(I8))') nbtristot,nbquadstot
385 IF ( nbtristot /= ppatch%nBTrisTot )
THEN
386 CALL
errorstop(global,err_dimens_invalid,__line__)
389 IF ( nbquadstot /= ppatch%nBQuadsTot )
THEN
390 CALL
errorstop(global,err_dimens_invalid,__line__)
395 IF ( ppatch%nBTrisTot > 0 )
THEN
397 READ(ifile,
'(10(I8))') (ppatch%bTri2v(
j,
k),
k=1,ppatch%nBTrisTot)
401 IF ( ppatch%nBQuadsTot > 0 )
THEN
403 READ(ifile,
'(10(I8))') (ppatch%bQuad2v(
j,
k), &
404 k=1,ppatch%nBQuadsTot)
413 CASE (
'# Boundaries (v2)' )
414 IF ( global%myProcid == masterproc .AND. &
415 global%verbLevel > verbose_low )
THEN
416 WRITE(stdout,
'(A,3X,A)') solver_name,
'Boundary information...'
419 READ(ifile,*) npatches
421 IF ( npatches /= pgrid%nPatches )
THEN
422 CALL
errorstop(global,err_dimens_invalid,__line__)
427 DO ipatch = 1,pgrid%nPatches
428 ppatch => pregion%patches(ipatch)
432 READ(ifile,
'(3(I8))') nbtristot,nbquadstot,nbcellsvirt
436 IF ( nbtristot /= ppatch%nBTrisTot )
THEN
437 CALL
errorstop(global,err_dimens_invalid,__line__)
440 IF ( nbquadstot /= ppatch%nBQuadsTot )
THEN
441 CALL
errorstop(global,err_dimens_invalid,__line__)
444 IF ( nbcellsvirt /= ppatch%nBCellsVirt )
THEN
445 CALL
errorstop(global,err_dimens_invalid,__line__)
450 IF ( ppatch%nBTrisTot > 0 )
THEN
452 READ(ifile,
'(10(I8))') (ppatch%bTri2v(
j,
k),
k=1,ppatch%nBTrisTot)
456 IF ( ppatch%nBQuadsTot > 0 )
THEN
458 READ(ifile,
'(10(I8))') (ppatch%bQuad2v(
j,
k), &
459 k=1,ppatch%nBQuadsTot)
463 IF ( ppatch%nBCellsVirt > 0 )
THEN
464 READ(ifile,
'(10(I8))') (ppatch%bvc(
k),
k=1,ppatch%nBCellsVirt)
473 IF ( global%myProcid == masterproc .AND. &
474 global%verbLevel > verbose_low )
THEN
475 WRITE(stdout,
'(A,3X,A)') solver_name,
'End marker...'
485 IF ( global%verbLevel > verbose_low )
THEN
486 WRITE(stdout,
'(3X,A)') sectionstring
489 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
497 IF ( loopcounter >= limit_infinite_loop )
THEN
498 CALL
errorstop(global,err_infinite_loop,__line__)
503 #ifdef CHECK_DATASTRUCT
508 WRITE(stdout,
'(A)') solver_name
509 WRITE(stdout,
'(A,1X,A)') solver_name,
'### START CHECK OUTPUT ###'
510 WRITE(stdout,
'(A,1X,A)') solver_name,
'Cell connectivity'
512 WRITE(stdout,
'(A,1X,A,1X,I6)') solver_name,
'Number of tetrahedra:', &
514 DO i = 1,pgrid%nTetsTot
515 WRITE(stdout,
'(A,5(1X,I6))') solver_name,
i,pgrid%tet2v(1:4,
i)
518 WRITE(stdout,
'(A,1X,A,1X,I6)') solver_name,
'Number of hexahedra:', &
520 DO i = 1,pgrid%nHexsTot
521 WRITE(stdout,
'(A,9(1X,I6))') solver_name,
i,pgrid%hex2v(1:8,
i)
524 WRITE(stdout,
'(A,1X,A,1X,I6)') solver_name,
'Number of prisms:', &
526 DO i = 1,pgrid%nPrisTot
527 WRITE(stdout,
'(A,7(1X,I6))') solver_name,
i,pgrid%pri2v(1:6,
i)
530 WRITE(stdout,
'(A,1X,A,1X,I6)') solver_name,
'Number of pyramids:', &
532 DO i = 1,pgrid%nPyrsTot
533 WRITE(stdout,
'(A,6(1X,I6))') solver_name,
i,pgrid%pyr2v(1:5,
i)
536 WRITE(stdout,
'(A,1X,A)') solver_name,
'Coordinates'
537 DO i = 1,pgrid%nVertTot
538 WRITE(stdout,
'(A,1X,I6,3(1X,E18.9))') solver_name,
i,pgrid%xyz(1:3,
i)
540 WRITE(stdout,
'(A,1X,A)') solver_name,
'### END CHECK OUTPUT ###'
541 WRITE(stdout,
'(A)') solver_name
548 CLOSE(ifile,iostat=errorflag)
549 global%error = errorflag
550 IF ( global%error /= err_none )
THEN
551 CALL
errorstop(global,err_file_close,__line__,ifilename)
560 IF ( global%myProcid == masterproc .AND. &
561 global%verbLevel > verbose_none )
THEN
562 WRITE(stdout,
'(A,1X,A)') solver_name,
'Reading ASCII grid file done.'
606 CHARACTER(CHRLEN) :: ifilename,sectionstring,timestring1,timestring2
607 INTEGER :: errorflag,
i,ifile,ipatch,
j,
k,loopcounter,nbcellsvirt, &
608 nbquadstot,nbtristot,nbverttot,nhexstot,npatches,npristot, &
609 npyrstot,ntetstot,nverttot,p,
r
610 REAL(RFREAL) :: currenttime
611 TYPE(t_grid),
POINTER :: pgrid
612 TYPE(t_patch),
POINTER :: ppatch
619 TYPE(t_region
),
POINTER :: pregion
625 global => pregion%global
628 'RFLU_ModReadWriteGrid.F90')
630 IF ( global%myProcid == masterproc .AND. &
631 global%verbLevel > verbose_none )
THEN
632 WRITE(stdout,
'(A,1X,A)') solver_name,
'Reading binary grid file...'
637 IF ( global%flowType == flow_unsteady .AND. &
638 (pregion%mixtInput%moveGrid .EQV. .true.) )
THEN
640 pregion%iRegionGlobal,global%currentTime, &
643 IF ( global%myProcid == masterproc .AND. &
644 global%verbLevel > verbose_none )
THEN
645 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
646 pregion%iRegionGlobal
647 WRITE(stdout,
'(A,3X,A,1X,1PE11.5)') solver_name,
'Current time:', &
652 pregion%iRegionGlobal,ifilename)
654 IF ( global%myProcid == masterproc .AND. &
655 global%verbLevel > verbose_none )
THEN
656 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
657 pregion%iRegionGlobal
661 OPEN(ifile,file=ifilename,
form=
"UNFORMATTED",
status=
"OLD",iostat=errorflag)
662 global%error = errorflag
663 IF ( global%error /= err_none )
THEN
664 CALL
errorstop(global,err_file_open,__line__,ifilename)
671 IF ( global%myProcid == masterproc .AND. &
672 global%verbLevel > verbose_low )
THEN
673 WRITE(stdout,
'(A,3X,A)') solver_name,
'Header information...'
676 READ(ifile) sectionstring
677 IF ( trim(sectionstring) /=
'# ROCFLU grid file' )
THEN
678 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
685 READ(ifile) sectionstring
686 IF ( trim(sectionstring) /=
'# Precision and range' )
THEN
687 CALL
errorstop(global,err_invalid_marker,__line__,ifilename)
691 IF ( p <
precision(1.0_rfreal) .OR.
r < range(1.0_rfreal) )
THEN
692 CALL
errorstop(global,err_prec_range,__line__)
699 READ(ifile) sectionstring
700 IF ( trim(sectionstring) /=
'# Physical time' )
THEN
701 CALL
errorstop(global,err_invalid_marker,__line__,ifilename)
704 READ(ifile) currenttime
706 IF ( global%flowType == flow_unsteady .AND. &
707 (pregion%mixtInput%moveGrid .EQV. .true.) )
THEN
708 IF ( global%currentTime < 0.0_rfreal )
THEN
709 global%currentTime = currenttime
711 WRITE(timestring1,
'(1PE11.5)') global%currentTime
712 WRITE(timestring2,
'(1PE11.5)') currenttime
713 IF ( trim(timestring1) /= trim(timestring2) )
THEN
714 CALL
errorstop(global,err_time_solution,__line__,trim(ifilename))
723 READ(ifile) sectionstring
724 IF ( trim(sectionstring) /=
'# Dimensions' )
THEN
725 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
728 pgrid => pregion%grid
730 READ(ifile) nverttot,ntetstot,nhexstot,npristot,npyrstot
736 IF ( nverttot /= pgrid%nVertTot )
THEN
737 CALL
errorstop(global,err_dimens_invalid,__line__)
740 IF ( ntetstot /= pgrid%nTetsTot )
THEN
741 CALL
errorstop(global,err_dimens_invalid,__line__)
744 IF ( nhexstot /= pgrid%nHexsTot )
THEN
745 CALL
errorstop(global,err_dimens_invalid,__line__)
748 IF ( npristot /= pgrid%nPrisTot )
THEN
749 CALL
errorstop(global,err_dimens_invalid,__line__)
752 IF ( npyrstot /= pgrid%nPyrsTot )
THEN
753 CALL
errorstop(global,err_dimens_invalid,__line__)
763 loopcounter = loopcounter + 1
765 READ(ifile) sectionstring
767 SELECT CASE ( trim(sectionstring) )
773 CASE (
'# Coordinates' )
774 IF ( global%myProcid == masterproc .AND. &
775 global%verbLevel > verbose_low )
THEN
776 WRITE(stdout,
'(A,3X,A)') solver_name,
'Coordinates...'
780 READ(ifile) (pgrid%xyz(
i,
j),
j=1,pgrid%nVertTot)
787 CASE (
'# Tetrahedra' )
788 IF ( pgrid%nTetsTot == 0 )
THEN
789 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
792 IF ( global%myProcid == masterproc .AND. &
793 global%verbLevel > verbose_low )
THEN
794 WRITE(stdout,
'(A,3X,A)') solver_name,
'Tetrahedra...'
798 READ(ifile) (pgrid%tet2v(
i,
j),
j=1,pgrid%nTetsTot)
805 CASE (
'# Hexahedra' )
806 IF ( pgrid%nHexsTot == 0 )
THEN
807 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
810 IF ( global%myProcid == masterproc .AND. &
811 global%verbLevel > verbose_low )
THEN
812 WRITE(stdout,
'(A,3X,A)') solver_name,
'Hexahedra...'
816 READ(ifile) (pgrid%hex2v(
i,
j),
j=1,pgrid%nHexsTot)
824 IF ( pgrid%nPrisTot == 0 )
THEN
825 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
828 IF ( global%myProcid == masterproc .AND. &
829 global%verbLevel > verbose_low )
THEN
830 WRITE(stdout,
'(A,3X,A)') solver_name,
'Prisms...'
834 READ(ifile) (pgrid%pri2v(
i,
j),
j=1,pgrid%nPrisTot)
841 CASE (
'# Pyramids' )
842 IF ( pgrid%nPyrsTot == 0 )
THEN
843 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
846 IF ( global%myProcid == masterproc .AND. &
847 global%verbLevel > verbose_low )
THEN
848 WRITE(stdout,
'(A,3X,A)') solver_name,
'Pyramids...'
852 READ(ifile) (pgrid%pyr2v(
i,
j),
j=1,pgrid%nPyrsTot)
859 CASE (
'# Boundaries' )
860 IF ( global%myProcid == masterproc .AND. &
861 global%verbLevel > verbose_low )
THEN
862 WRITE(stdout,
'(A,3X,A)') solver_name,
'Boundary information...'
867 IF ( npatches /= pgrid%nPatches )
THEN
868 CALL
errorstop(global,err_dimens_invalid,__line__)
873 DO ipatch = 1,pgrid%nPatches
874 ppatch => pregion%patches(ipatch)
878 READ(ifile) nbtristot,nbquadstot
882 IF ( nbtristot /= ppatch%nBTrisTot )
THEN
883 CALL
errorstop(global,err_dimens_invalid,__line__)
886 IF ( nbquadstot /= ppatch%nBQuadsTot )
THEN
887 CALL
errorstop(global,err_dimens_invalid,__line__)
892 IF ( ppatch%nBTrisTot > 0 )
THEN
894 READ(ifile) (ppatch%bTri2v(
j,
k),
k=1,ppatch%nBTrisTot)
898 IF ( ppatch%nBQuadsTot > 0 )
THEN
900 READ(ifile) (ppatch%bQuad2v(
j,
k),
k=1,ppatch%nBQuadsTot)
909 CASE (
'# Boundaries (v2)' )
910 IF ( global%myProcid == masterproc .AND. &
911 global%verbLevel > verbose_low )
THEN
912 WRITE(stdout,
'(A,3X,A)') solver_name,
'Boundary information...'
917 IF ( npatches /= pgrid%nPatches )
THEN
918 CALL
errorstop(global,err_dimens_invalid,__line__)
923 DO ipatch = 1,pgrid%nPatches
924 ppatch => pregion%patches(ipatch)
928 READ(ifile) nbtristot,nbquadstot,nbcellsvirt
932 IF ( nbtristot /= ppatch%nBTrisTot )
THEN
933 CALL
errorstop(global,err_dimens_invalid,__line__)
936 IF ( nbquadstot /= ppatch%nBQuadsTot )
THEN
937 CALL
errorstop(global,err_dimens_invalid,__line__)
940 IF ( nbcellsvirt /= ppatch%nBCellsVirt )
THEN
941 CALL
errorstop(global,err_dimens_invalid,__line__)
946 IF ( ppatch%nBTrisTot > 0 )
THEN
948 READ(ifile) (ppatch%bTri2v(
j,
k),
k=1,ppatch%nBTrisTot)
952 IF ( ppatch%nBQuadsTot > 0 )
THEN
954 READ(ifile) (ppatch%bQuad2v(
j,
k),
k=1,ppatch%nBQuadsTot)
958 IF ( ppatch%nBCellsVirt > 0 )
THEN
959 READ(ifile) (ppatch%bvc(
k),
k=1,ppatch%nBCellsVirt)
968 IF ( global%myProcid == masterproc .AND. &
969 global%verbLevel > verbose_low )
THEN
970 WRITE(stdout,
'(A,3X,A)') solver_name,
'End marker...'
980 IF ( global%verbLevel > verbose_low )
THEN
981 WRITE(stdout,
'(3X,A)') sectionstring
984 CALL
errorstop(global,err_invalid_marker,__line__,sectionstring)
992 IF ( loopcounter >= limit_infinite_loop )
THEN
993 CALL
errorstop(global,err_infinite_loop,__line__)
998 #ifdef CHECK_DATASTRUCT
1003 WRITE(stdout,
'(A)') solver_name
1004 WRITE(stdout,
'(A,1X,A)') solver_name,
'### START CHECK OUTPUT ###'
1005 WRITE(stdout,
'(A,1X,A)') solver_name,
'Cell connectivity'
1007 WRITE(stdout,
'(A,1X,A,1X,I6)') solver_name,
'Number of tetrahedra:', &
1009 DO i = 1,pgrid%nTetsTot
1010 WRITE(stdout,
'(A,5(1X,I6))') solver_name,
i,pgrid%tet2v(1:4,
i)
1013 WRITE(stdout,
'(A,1X,A,1X,I6)') solver_name,
'Number of hexahedra:', &
1015 DO i = 1,pgrid%nHexsTot
1016 WRITE(stdout,
'(A,9(1X,I6))') solver_name,
i,pgrid%hex2v(1:8,
i)
1019 WRITE(stdout,
'(A,1X,A,1X,I6)') solver_name,
'Number of prisms:', &
1021 DO i = 1,pgrid%nPrisTot
1022 WRITE(stdout,
'(A,7(1X,I6))') solver_name,
i,pgrid%pri2v(1:6,
i)
1025 WRITE(stdout,
'(A,1X,A,1X,I6)') solver_name,
'Number of pyramids:', &
1027 DO i = 1,pgrid%nPyrsTot
1028 WRITE(stdout,
'(A,6(1X,I6))') solver_name,
i,pgrid%pyr2v(1:5,
i)
1031 WRITE(stdout,
'(A,1X,A)') solver_name,
'Coordinates'
1032 DO i = 1,pgrid%nVertTot
1033 WRITE(stdout,
'(A,1X,I6,3(1X,E18.9))') solver_name,
i,pgrid%xyz(1:3,
i)
1035 WRITE(stdout,
'(A,1X,A)') solver_name,
'### END CHECK OUTPUT ###'
1036 WRITE(stdout,
'(A)') solver_name
1043 CLOSE(ifile,iostat=errorflag)
1044 global%error = errorflag
1045 IF ( global%error /= err_none )
THEN
1046 CALL
errorstop(global,err_file_close,__line__,ifilename)
1053 IF ( global%myProcid == masterproc .AND. &
1054 global%verbLevel > verbose_none )
THEN
1055 WRITE(stdout,
'(A,1X,A)') solver_name,
'Reading binary grid file done.'
1099 TYPE(t_region
),
POINTER :: pregion
1111 global => pregion%global
1114 'RFLU_ModReadWriteGrid.F90')
1123 IF ( global%gridFormat == format_ascii )
THEN
1125 ELSE IF ( global%gridFormat == format_binary )
THEN
1128 CALL
errorstop(global,err_reached_default,__line__)
1179 CHARACTER(CHRLEN) :: ifilename,sectionstring
1180 INTEGER :: errorflag,
i,ifile,ipatch,
j,
k
1181 TYPE(t_grid),
POINTER :: pgrid
1182 TYPE(t_patch),
POINTER :: ppatch
1189 TYPE(t_region
),
POINTER :: pregion
1195 global => pregion%global
1198 'RFLU_ModReadWriteGrid.F90')
1200 IF ( global%myProcid == masterproc .AND. &
1201 global%verbLevel > verbose_none )
THEN
1202 WRITE(stdout,
'(A,1X,A)') solver_name,
'Writing ASCII grid file...'
1207 IF ( global%flowType == flow_unsteady .AND. &
1208 (pregion%mixtInput%moveGrid .EQV. .true.) )
THEN
1210 pregion%iRegionGlobal,global%currentTime, &
1213 IF ( global%myProcid == masterproc .AND. &
1214 global%verbLevel > verbose_none )
THEN
1215 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
1216 pregion%iRegionGlobal
1217 WRITE(stdout,
'(A,3X,A,1X,1PE11.5)') solver_name,
'Current time:', &
1222 pregion%iRegionGlobal,ifilename)
1224 IF ( global%myProcid == masterproc .AND. &
1225 global%verbLevel > verbose_none )
THEN
1226 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
1227 pregion%iRegionGlobal
1231 OPEN(ifile,file=ifilename,
form=
"FORMATTED",
status=
"UNKNOWN", &
1233 global%error = errorflag
1234 IF ( global%error /= err_none )
THEN
1235 CALL
errorstop(global,err_file_open,__line__,ifilename)
1242 IF ( global%myProcid == masterproc .AND. &
1243 global%verbLevel > verbose_low )
THEN
1244 WRITE(stdout,
'(A,3X,A)') solver_name,
'Header information...'
1247 sectionstring =
'# ROCFLU grid file'
1248 WRITE(ifile,
'(A)') trim(sectionstring)
1250 sectionstring =
'# Precision and range'
1251 WRITE(ifile,
'(A)') trim(sectionstring)
1252 WRITE(ifile,
'(2(I8))')
precision(1.0_rfreal),range(1.0_rfreal)
1254 sectionstring =
'# Physical time'
1255 WRITE(ifile,
'(A)') trim(sectionstring)
1256 WRITE(ifile,
'(E23.16)') global%currentTime
1262 pgrid => pregion%grid
1264 sectionstring =
'# Dimensions'
1265 WRITE(ifile,
'(A)') trim(sectionstring)
1266 WRITE(ifile,
'(5(I8))') pgrid%nVertTot,pgrid%nTetsTot,pgrid%nHexsTot, &
1267 pgrid%nPrisTot,pgrid%nPyrsTot
1273 IF ( global%myProcid == masterproc .AND. &
1274 global%verbLevel > verbose_none )
THEN
1275 WRITE(stdout,
'(A,3X,A)') solver_name,
'Coordinates...'
1278 sectionstring =
'# Coordinates'
1279 WRITE(ifile,
'(A)') trim(sectionstring)
1281 WRITE(ifile,
'(5(E23.16))') (pgrid%xyz(
i,
j),
j=1,pgrid%nVertTot)
1288 IF ( pgrid%nTetsTot > 0 )
THEN
1289 IF ( global%myProcid == masterproc .AND. &
1290 global%verbLevel > verbose_none )
THEN
1291 WRITE(stdout,
'(A,3X,A)') solver_name,
'Tetrahedra...'
1294 sectionstring =
'# Tetrahedra'
1295 WRITE(ifile,
'(A)') trim(sectionstring)
1297 WRITE(ifile,
'(10(I8))') (pgrid%tet2v(
i,
j),
j=1,pgrid%nTetsTot)
1301 IF ( pgrid%nHexsTot > 0 )
THEN
1302 IF ( global%myProcid == masterproc .AND. &
1303 global%verbLevel > verbose_low )
THEN
1304 WRITE(stdout,
'(A,3X,A)') solver_name,
'Hexahedra...'
1307 sectionstring =
'# Hexahedra'
1308 WRITE(ifile,
'(A)') trim(sectionstring)
1310 WRITE(ifile,
'(10(I8))') (pgrid%hex2v(
i,
j),
j=1,pgrid%nHexsTot)
1314 IF ( pgrid%nPrisTot > 0 )
THEN
1315 IF ( global%myProcid == masterproc .AND. &
1316 global%verbLevel > verbose_low )
THEN
1317 WRITE(stdout,
'(A,3X,A)') solver_name,
'Prisms...'
1320 sectionstring =
'# Prisms'
1321 WRITE(ifile,
'(A)') trim(sectionstring)
1323 WRITE(ifile,
'(10(I8))') (pgrid%pri2v(
i,
j),
j=1,pgrid%nPrisTot)
1327 IF ( pgrid%nPyrsTot > 0 )
THEN
1328 IF ( global%myProcid == masterproc .AND. &
1329 global%verbLevel > verbose_low )
THEN
1330 WRITE(stdout,
'(A,3X,A)') solver_name,
'Pyramids...'
1333 sectionstring =
'# Pyramids'
1334 WRITE(ifile,
'(A)') trim(sectionstring)
1336 WRITE(ifile,
'(10(I8))') (pgrid%pyr2v(
i,
j),
j=1,pgrid%nPyrsTot)
1344 IF ( global%myProcid == masterproc .AND. &
1345 global%verbLevel > verbose_low )
THEN
1346 WRITE(stdout,
'(A,3X,A)') solver_name,
'Boundary information...'
1349 sectionstring =
'# Boundaries (v2)'
1350 WRITE(ifile,
'(A)') trim(sectionstring)
1351 WRITE(ifile,
'(I8)') pgrid%nPatches
1353 DO ipatch = 1,pgrid%nPatches
1354 ppatch => pregion%patches(ipatch)
1356 WRITE(ifile,
'(3(I8))') ppatch%nBTrisTot,ppatch%nBQuadsTot, &
1359 IF ( ppatch%nBTrisTot > 0 )
THEN
1361 WRITE(ifile,
'(10(I8))') (ppatch%bTri2v(
j,
k),
k=1,ppatch%nBTrisTot)
1365 IF ( ppatch%nBQuadsTot > 0 )
THEN
1367 WRITE(ifile,
'(10(I8))') (ppatch%bQuad2v(
j,
k),
k=1,ppatch%nBQuadsTot)
1371 IF ( ppatch%nBCellsVirt > 0 )
THEN
1372 WRITE(ifile,
'(10(I8))') (ppatch%bvc(
k),
k=1,ppatch%nBCellsVirt)
1380 IF ( global%myProcid == masterproc .AND. &
1381 global%verbLevel > verbose_low )
THEN
1382 WRITE(stdout,
'(A,3X,A)') solver_name,
'End marker...'
1385 sectionstring =
'# End'
1386 WRITE(ifile,
'(A)') trim(sectionstring)
1392 CLOSE(ifile,iostat=errorflag)
1393 global%error = errorflag
1394 IF ( global%myProcid == masterproc .AND. &
1395 global%error /= err_none )
THEN
1396 CALL
errorstop(global,err_file_close,__line__,ifilename)
1403 IF ( global%myProcid == masterproc .AND. &
1404 global%verbLevel > verbose_none )
THEN
1405 WRITE(stdout,
'(A,1X,A)') solver_name,
'Writing ASCII grid file done.'
1448 CHARACTER(CHRLEN) :: ifilename,sectionstring
1449 INTEGER :: errorflag,
i,ifile,ipatch,
j,
k
1450 TYPE(t_grid),
POINTER :: pgrid
1451 TYPE(t_patch),
POINTER :: ppatch
1458 TYPE(t_region
),
POINTER :: pregion
1464 global => pregion%global
1467 'RFLU_ModReadWriteGrid.F90')
1469 IF ( global%myProcid == masterproc .AND. &
1470 global%verbLevel > verbose_none )
THEN
1471 WRITE(stdout,
'(A,1X,A)') solver_name,
'Writing binary grid file...'
1476 IF ( global%flowType == flow_unsteady .AND. &
1477 (pregion%mixtInput%moveGrid .EQV. .true.) )
THEN
1479 pregion%iRegionGlobal,global%currentTime, &
1482 IF ( global%myProcid == masterproc .AND. &
1483 global%verbLevel > verbose_none )
THEN
1484 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
1485 pregion%iRegionGlobal
1486 WRITE(stdout,
'(A,3X,A,1X,1PE11.5)') solver_name,
'Current time:', &
1491 pregion%iRegionGlobal,ifilename)
1493 IF ( global%myProcid == masterproc .AND. &
1494 global%verbLevel > verbose_none )
THEN
1495 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
1496 pregion%iRegionGlobal
1500 OPEN(ifile,file=ifilename,
form=
"UNFORMATTED",
status=
"UNKNOWN", &
1502 global%error = errorflag
1503 IF ( global%error /= err_none )
THEN
1504 CALL
errorstop(global,err_file_open,__line__,ifilename)
1511 IF ( global%myProcid == masterproc .AND. &
1512 global%verbLevel > verbose_low )
THEN
1513 WRITE(stdout,
'(A,3X,A)') solver_name,
'Header information...'
1516 sectionstring =
'# ROCFLU grid file'
1517 WRITE(ifile) sectionstring
1519 sectionstring =
'# Precision and range'
1520 WRITE(ifile) sectionstring
1521 WRITE(ifile)
precision(1.0_rfreal),range(1.0_rfreal)
1523 sectionstring =
'# Physical time'
1524 WRITE(ifile) sectionstring
1525 WRITE(ifile) global%currentTime
1531 pgrid => pregion%grid
1533 sectionstring =
'# Dimensions'
1534 WRITE(ifile) sectionstring
1535 WRITE(ifile) pgrid%nVertTot,pgrid%nTetsTot,pgrid%nHexsTot,pgrid%nPrisTot, &
1542 IF ( global%myProcid == masterproc .AND. &
1543 global%verbLevel > verbose_none )
THEN
1544 WRITE(stdout,
'(A,3X,A)') solver_name,
'Coordinates...'
1547 sectionstring =
'# Coordinates'
1548 WRITE(ifile) sectionstring
1550 WRITE(ifile) (pgrid%xyz(
i,
j),
j=1,pgrid%nVertTot)
1557 IF ( pgrid%nTetsTot > 0 )
THEN
1558 IF ( global%myProcid == masterproc .AND. &
1559 global%verbLevel > verbose_none )
THEN
1560 WRITE(stdout,
'(A,3X,A)') solver_name,
'Tetrahedra...'
1563 sectionstring =
'# Tetrahedra'
1564 WRITE(ifile) sectionstring
1566 WRITE(ifile) (pgrid%tet2v(
i,
j),
j=1,pgrid%nTetsTot)
1570 IF ( pgrid%nHexsTot > 0 )
THEN
1571 IF ( global%myProcid == masterproc .AND. &
1572 global%verbLevel > verbose_low )
THEN
1573 WRITE(stdout,
'(A,3X,A)') solver_name,
'Hexahedra...'
1576 sectionstring =
'# Hexahedra'
1577 WRITE(ifile) sectionstring
1579 WRITE(ifile) (pgrid%hex2v(
i,
j),
j=1,pgrid%nHexsTot)
1583 IF ( pgrid%nPrisTot > 0 )
THEN
1584 IF ( global%myProcid == masterproc .AND. &
1585 global%verbLevel > verbose_low )
THEN
1586 WRITE(stdout,
'(A,3X,A)') solver_name,
'Prisms...'
1589 sectionstring =
'# Prisms'
1590 WRITE(ifile) sectionstring
1592 WRITE(ifile) (pgrid%pri2v(
i,
j),
j=1,pgrid%nPrisTot)
1596 IF ( pgrid%nPyrsTot > 0 )
THEN
1597 IF ( global%myProcid == masterproc .AND. &
1598 global%verbLevel > verbose_low )
THEN
1599 WRITE(stdout,
'(A,3X,A)') solver_name,
'Pyramids...'
1602 sectionstring =
'# Pyramids'
1603 WRITE(ifile) sectionstring
1605 WRITE(ifile) (pgrid%pyr2v(
i,
j),
j=1,pgrid%nPyrsTot)
1613 IF ( global%myProcid == masterproc .AND. &
1614 global%verbLevel > verbose_low )
THEN
1615 WRITE(stdout,
'(A,3X,A)') solver_name,
'Boundary information...'
1618 sectionstring =
'# Boundaries (v2)'
1619 WRITE(ifile) sectionstring
1620 WRITE(ifile) pgrid%nPatches
1622 DO ipatch = 1,pgrid%nPatches
1623 ppatch => pregion%patches(ipatch)
1625 WRITE(ifile) ppatch%nBTrisTot,ppatch%nBQuadsTot,ppatch%nBCellsVirt
1627 IF ( ppatch%nBTrisTot > 0 )
THEN
1629 WRITE(ifile) (ppatch%bTri2v(
j,
k),
k=1,ppatch%nBTrisTot)
1633 IF ( ppatch%nBQuadsTot > 0 )
THEN
1635 WRITE(ifile) (ppatch%bQuad2v(
j,
k),
k=1,ppatch%nBQuadsTot)
1639 IF ( ppatch%nBCellsVirt > 0 )
THEN
1640 WRITE(ifile) (ppatch%bvc(
k),
k=1,ppatch%nBCellsVirt)
1648 IF ( global%myProcid == masterproc .AND. &
1649 global%verbLevel > verbose_low )
THEN
1650 WRITE(stdout,
'(A,3X,A)') solver_name,
'End marker...'
1653 sectionstring =
'# End'
1654 WRITE(ifile) sectionstring
1660 CLOSE(ifile,iostat=errorflag)
1661 global%error = errorflag
1662 IF ( global%myProcid == masterproc .AND. &
1663 global%error /= err_none )
THEN
1664 CALL
errorstop(global,err_file_close,__line__,ifilename)
1671 IF ( global%myProcid == masterproc .AND. &
1672 global%verbLevel > verbose_none )
THEN
1673 WRITE(stdout,
'(A,1X,A)') solver_name,
'Writing binary grid file done.'
1723 TYPE(t_region
),
POINTER :: pregion
1729 global => pregion%global
1732 'RFLU_ModReadWriteGrid.F90')
1741 IF ( global%gridFormat == format_ascii )
THEN
1743 ELSE IF ( global%gridFormat == format_binary )
THEN
1746 CALL
errorstop(global,err_reached_default,__line__)
subroutine buildfilenamebasic(global, dest, ext, id, fileName)
subroutine registerfunction(global, funName, fileName)
int status() const
Obtain the status of the attribute.
subroutine, public rflu_readgridwrapper(pRegion)
subroutine, public rflu_genx_getgrid(pRegion)
subroutine rflu_readgridascii(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
LOGICAL function, public rflu_genx_decidereadfile(global)
subroutine, public rflu_writegridwrapper(pRegion)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
subroutine, public rflu_genx_putgrid(pRegion)
subroutine rflu_writegridascii(pRegion)
subroutine rflu_readgridbinary(pRegion)
subroutine rflu_writegridbinary(pRegion)
LOGICAL function, public rflu_genx_decidewritefile(global)
subroutine buildfilenameunsteady(global, dest, ext, id, tm, fileName)