79 CHARACTER,
PARAMETER ::
lf = achar(10)
91 INTEGER :: ip1,jp1,kp1
118 SUBROUTINE initfileio_vtk(this,Mesh,Physics,Timedisc,Sources,config,IO)
121 CLASS(fileio_vtk),
INTENT(INOUT) :: this
122 CLASS(mesh_base),
INTENT(IN) :: Mesh
123 CLASS(physics_base),
INTENT(IN) :: Physics
124 CLASS(timedisc_base),
INTENT(IN) :: Timedisc
125 CLASS(sources_base),
INTENT(IN),
POINTER :: Sources
126 TYPE(Dict_TYP),
INTENT(IN),
POINTER :: config
127 TYPE(Dict_TYP),
INTENT(IN),
POINTER :: IO
129 TYPE(Dict_TYP),
POINTER :: node
132 INTEGER,
DIMENSION(:),
POINTER :: sendbuf,recvbuf
135 REAL,
DIMENSION(:,:,:,:,:),
POINTER :: corners
138 this%multfiles = .true.
141 CALL this%InitFileIO(mesh,physics,timedisc,sources,config,io,
"VTK",
"vts")
144 IF (this%cycles .NE. this%count+1)
CALL this%Error(
'InitFileIO',
'VTK need filecycles = count+1')
147 IF (abs(mesh%xmax-mesh%xmin).LT.2*epsilon(mesh%xmin) &
148 .OR.(mesh%INUM.EQ.1.AND.mesh%ROTSYM.EQ.1))
THEN 154 IF (abs(mesh%ymax-mesh%ymin).LT.2*epsilon(mesh%ymin) &
155 .OR.(mesh%JNUM.EQ.1.AND.mesh%ROTSYM.EQ.2))
THEN 161 IF (abs(mesh%zmax-mesh%zmin).LT.2*epsilon(mesh%zmin) &
162 .OR.(mesh%KNUM.EQ.1.AND.mesh%ROTSYM.EQ.3))
THEN 170 ALLOCATE(this%binout(
maxcomp, &
171 mesh%IMIN:mesh%IMAX, &
172 mesh%JMIN:mesh%JMAX, &
173 mesh%KMIN:mesh%KMAX), &
175 mesh%IMIN:mesh%IMAX+this%IP1, &
176 mesh%JMIN:mesh%JMAX+this%JP1, &
177 mesh%KMIN:mesh%KMAX+this%KP1), &
180 this%bflux(physics%VNUM,6), &
183 CALL this%Error(
"InitFileio_vtk",
"Unable to allocate memory.")
186 CALL this%GetPrecision(this%realsize)
188 WRITE(this%linebuf,fmt=
'(I4)',iostat=this%error_io) 8*this%realsize
189 WRITE(this%realfmt,fmt=
'(A)',iostat=this%error_io)
'"Float' &
190 // trim(adjustl(this%linebuf)) //
'"' 191 CALL this%GetEndianness(this%endianness,
'"LittleEndian"',
'"BigEndian"')
195 IF (bit_size(this%output(1)%numbytes) .NE. 4*8) &
196 CALL this%Error(
"InitFileio_vtk",
"output%numbytes must be a 4 byte integer !!!")
206 IF (this%GetRank() .EQ. 0 )
THEN 207 n = this%GetNumProcs()
208 ALLOCATE(this%extent(0:(n-1)),sendbuf(6),recvbuf(6*n),stat = this%error_io)
211 ALLOCATE(sendbuf(6),recvbuf(1),stat = this%error_io)
213 IF (this%error_io.NE.0) &
214 CALL this%Error(
"InitFileio_vtk",
"Unable to allocate memory.")
218 sendbuf(1) = mesh%IMIN
219 sendbuf(2) = mesh%IMAX+this%IP1
220 sendbuf(3) = mesh%JMIN
221 sendbuf(4) = mesh%JMAX+this%JP1
222 sendbuf(5) = mesh%KMIN
223 sendbuf(6) = mesh%KMAX+this%KP1
226 CALL mpi_gather(sendbuf, 6, mpi_integer, recvbuf, 6, mpi_integer, &
227 0, mpi_comm_world, this%error_io)
230 IF (this%GetRank() .EQ. 0 )
THEN 232 WRITE(this%extent(i),fmt=
'(6(I7))',iostat=this%error_io)&
233 recvbuf(i*6+1),recvbuf(i*6+2),recvbuf(i*6+3),recvbuf(i*6+4),recvbuf(i*6+5),recvbuf(i*6+6)
237 DEALLOCATE(sendbuf,recvbuf,stat=this%error_io)
241 IF (this%cartcoords)
THEN 242 corners => mesh%RemapBounds(mesh%cart%corners)
244 corners => mesh%RemapBounds(mesh%curv%corners)
248 DO k=mesh%KMIN,mesh%KMAX+mesh%KP1
249 DO j=mesh%JMIN,mesh%JMAX+mesh%JP1
250 DO i=mesh%IMIN,mesh%IMAX+mesh%IP1
251 this%vtkcoords(1:3,i,j,k) = corners(i,j,k,1,1:3)
257 IF (mesh%INUM.EQ.1.AND.this%IP1.EQ.1)
THEN 260 DO k=mesh%KMIN,mesh%KMAX+mesh%KP1
261 DO j=mesh%JMIN,mesh%JMAX+mesh%JP1
262 this%vtkcoords(1:3,i+1,j,k) = corners(i,j,k,2,1:3)
267 IF (mesh%JNUM.EQ.1.AND.this%JP1.EQ.1)
THEN 270 DO k=mesh%KMIN,mesh%KMAX+mesh%KP1
271 DO i=mesh%IMIN,mesh%IMAX+mesh%IP1
272 this%vtkcoords(1:3,i,j+1,k) = corners(i,j,k,3,1:3)
277 IF (mesh%KNUM.EQ.1.AND.this%KP1.EQ.1)
THEN 280 DO j=mesh%JMIN,mesh%JMAX+mesh%JP1
281 DO i=mesh%IMIN,mesh%IMAX+mesh%IP1
282 this%vtkcoords(1:3,i,j,k+1) = corners(i,j,k,5,1:3)
289 this%offset =
SIZE(this%vtkcoords)*this%realsize + 4
295 CALL this%GetOutputlist(mesh,node,this%cols,this%tscols)
297 IF (this%GetRank().EQ.0)
CALL this%WriteParaviewFile()
303 CLASS(fileio_vtk),
INTENT(INOUT) :: this
307 CHARACTER(LEN=256) :: basename
313 CALL this%OpenFile(
replace,
'pvd')
316 WRITE(this%unit+200,fmt=
'(A)',iostat=this%error_io) &
317 '<?xml version="1.0"?>'//
lf &
318 //
'<VTKFile type="Collection" version="0.1" byte_order=' &
319 //this%endianness//
'>'//
lf &
320 //repeat(
' ',2)//
'<Collection>' 326 ftime = this%stoptime*k/(this%cycles-1)
329 DO i=0,this%GetNumProcs()-1
330 basename=this%GetBasename(i)
331 IF (this%error_io.EQ. 0)
WRITE(this%unit+200,fmt=
'(A,E11.5,A,I4.4,A)',iostat=this%error_io) &
332 repeat(
' ',4)//
'<DataSet timestep="',&
333 ftime,
'" part="', i ,
'" file="'//trim(basename)//
'"/>' 336 basename=this%GetBasename()
337 IF (this%error_io.EQ. 0)
WRITE(this%unit+200,fmt=
'(A,E11.5,A)',iostat=this%error_io) &
338 repeat(
' ',4)//
'<DataSet timestep="',ftime,
'" part="0" file="' &
339 //trim(basename)//
'"/>' 345 IF (this%error_io.EQ. 0)
WRITE(this%unit+200,fmt=
'(A)',iostat=this%error_io) &
346 repeat(
' ',2)//
'</Collection>'//
lf//
'</VTKFile>' 347 IF (this%error_io.GT.0)
CALL this%Error(
"InitFileIO_vtk",
"cannot write pvd-file")
349 CALL this%CloseFile(
'pvd')
361 CLASS(fileio_vtk),
INTENT(INOUT) :: this
364 CHARACTER(LEN=4) :: cTIPO4
365 CHARACTER(LEN=8) :: cTIPO8
366 CHARACTER(LEN=16) :: cTIPO16
367 REAL :: rTIPO1, rTIPO2
370 INTENT(OUT) :: realsize
374 k = bit_size(itipo)/8
377 ctipo4 = transfer(rtipo1,ctipo4)
378 rtipo2 = transfer(ctipo4,rtipo2)
379 IF (rtipo2 == rtipo1)
THEN 382 ctipo8 = transfer(rtipo1,ctipo8)
383 rtipo2 = transfer(ctipo8,rtipo2)
384 IF (rtipo2 == rtipo1)
THEN 387 ctipo16 = transfer(rtipo1,ctipo16)
388 rtipo2 = transfer(ctipo16,rtipo2)
389 IF (rtipo2 == rtipo1)
THEN 392 CALL this%Error(
"GetPrecision_vtk",
"Could not estimate size of float type")
405 CLASS(fileio_vtk),
INTENT(INOUT) :: this
406 CHARACTER(LEN=*) :: res
407 CHARACTER(LEN=*) :: littlestr
408 CHARACTER(LEN=*) :: bigstr
411 CHARACTER,
POINTER :: cTIPO(:)
413 INTENT(IN) :: littlestr, bigstr
418 k = bit_size(itipo)/8
419 ALLOCATE(ctipo(k),stat = this%error_io)
420 IF (this%error_io.NE.0) &
421 CALL this%Error(
"GetEndianness",
"Unable to allocate memory.")
426 itipo = transfer(ctipo, itipo)
429 IF (btest(itipo,1))
THEN 430 write(res,
'(A)',iostat=this%error_io)bigstr
432 write(res,
'(A)',iostat=this%error_io)littlestr
441 RECURSIVE SUBROUTINE getoutputlist(this,Mesh,node,k,l,prefix)
447 INTEGER,
INTENT(INOUT) :: k
448 INTEGER,
INTENT(INOUT) :: l
450 CHARACTER(LEN=*),
OPTIONAL,
INTENT(INOUT) ::
prefix 453 CHARACTER(LEN=MAXKEY) :: key
455 REAL,
DIMENSION(:,:),
POINTER :: dummy2
456 REAL,
DIMENSION(:,:,:),
POINTER :: dummy3
457 REAL,
DIMENSION(:,:,:,:),
POINTER :: dummy4
458 INTEGER,
DIMENSION(4) :: dims
461 DO WHILE(
ASSOCIATED(node))
467 key =
'/'//trim(
getkey(node))
470 CALL this%GetOutputlist(mesh,dir,k,l,key)
472 .NOT.(
getkey(node).EQ.
"time"))
THEN 473 IF (k+1 .GT.
maxcols)
CALL this%Error(
"GetOutputlist",
"reached MAXCOLS")
478 CALL getattr(node,trim(
getkey(node)),dummy2)
479 dims(1:2) = shape(dummy2)
482 CALL getattr(node,trim(
getkey(node)),dummy3)
483 dims(1:3) = shape(dummy3)
486 CALL getattr(node,trim(
getkey(node)),dummy4)
487 dims(1:4) = shape(dummy4)
489 CALL getattr(node,
getkey(node),dummy1)
490 IF (
ASSOCIATED(dummy1%p))
THEN 492 this%tsoutput(l)%val => dummy1%p
495 this%tsoutput(l)%key = trim(
prefix) //
'/' //
this%tsoutput(l)%key
502 IF ((dims(1).EQ.(mesh%IMAX-mesh%IMIN+1)).AND.&
503 (dims(2).EQ.(mesh%JMAX-mesh%JMIN+1)).AND.&
504 (dims(3).EQ.(mesh%KMAX-mesh%KMIN+1)))
THEN 514 ALLOCATE(
this%output(k)%p(dims(4)),stat=
this%error_io)
515 IF (
this%error_io.NE.0) &
516 CALL this%Error(
"GetOutputlist",
"Unable to allocate memory.")
518 IF (dims(4).EQ.1)
THEN 520 this%output(k)%p(1)%val => dummy3
521 this%output(k)%numbytes =
SIZE(dummy3)*
this%realsize
525 this%output(k)%p(n)%val => dummy4(:,:,:,n)
526 this%output(k)%numbytes =
SIZE(dummy4)*
this%realsize
537 SUBROUTINE openfile(this,action,ftype)
540 CLASS(fileio_vtk),
INTENT(INOUT) :: this
541 INTEGER,
INTENT(IN) :: action
542 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: ftype
544 CHARACTER(LEN=32) :: sta,act,pos,fext
565 CALL this%Error(
"OpenFile",
"Unknown access mode.")
569 IF (
PRESENT(ftype))
THEN 576 SELECT CASE(trim(fext))
579 OPEN(this%unit, file=this%GetFilename(),status=trim(sta), &
580 access =
'STREAM' , &
581 action=trim(act),position=trim(pos),iostat=this%error_io)
585 IF (this%GetRank().EQ.0)
THEN 586 this%extension=
'pvts' 587 OPEN(this%unit+100, file=this%GetFilename(-1),status=trim(sta), &
588 form=
'FORMATTED',action=trim(act),position=trim(pos),iostat=this%error_io)
593 OPEN(this%unit+200, file=trim(this%filename)//
'.'//trim(fext),status=trim(sta), &
594 form=
'FORMATTED',action=trim(act),position=trim(pos),iostat=this%error_io)
596 CALL this%Error(
"OpenFile",
"Unknown file type")
599 IF (this%error_io.GT.0) &
600 CALL this%Error(
"OpenFile",
"cannot open " // trim(this%extension) //
"-file")
608 CLASS(fileio_vtk),
INTENT(INOUT) :: this
609 CHARACTER(LEN=*),
OPTIONAL :: ftype
611 CHARACTER(LEN=4) :: fext
617 IF (
PRESENT(ftype))
THEN 625 SELECT CASE(trim(fext))
627 CLOSE(this%unit,iostat=this%error_io)
630 IF (this%GetRank() .EQ. 0 )
THEN 631 CLOSE(this%unit+100,iostat=this%error_io)
635 CLOSE(this%unit+200,iostat=this%error_io)
637 CALL this%Error(
"OpenFile",
"Unknown file type")
641 IF(this%error_io .NE. 0) &
642 CALL this%Error(
"CloseFileIO",
"cannot close "//trim(fext)//
"-file")
663 SUBROUTINE writeheader(this,Mesh,Physics,Header,IO)
666 CLASS(fileio_vtk),
INTENT(INOUT) :: this
667 CLASS(mesh_base),
INTENT(IN) :: Mesh
668 CLASS(physics_base),
INTENT(IN) :: Physics
669 TYPE(Dict_TYP),
POINTER :: IO
670 TYPE(Dict_TYP),
POINTER :: Header
676 WRITE(this%linebuf,fmt=
'(A,6(I7),A)')
'<?xml version="1.0"?>' //
lf// &
677 '<VTKFile type="StructuredGrid" version="0.1" byte_order='&
678 //this%endianness//
'>'//
lf//&
679 ' <StructuredGrid WholeExtent="',&
680 mesh%IMIN,mesh%IMAX+this%IP1,mesh%JMIN,mesh%JMAX+this%JP1, &
681 mesh%KMIN,mesh%KMAX+this%KP1,
'">'//
lf// &
683 ' <FieldData>'//
lf// &
684 ' <InformationKey type="String" Name="fosite version" format="ascii">'//
lf// &
685 ' '//trim(version)//
lf// &
686 ' </InformationKey>'//
lf 687 WRITE(this%unit,iostat=this%error_io) trim(this%linebuf)
691 IF (this%GetRank() .EQ. 0 )
THEN 692 CALL this%OpenFile(
replace,
'pvts')
693 WRITE(this%unit+100,fmt=
'(A,6(I7),A)',iostat=this%error_io)
'<?xml version="1.0"?>' //
lf// &
694 '<VTKFile type="PStructuredGrid" version="0.1" byte_order='&
695 //this%endianness//
'>'//
lf//&
696 ' <PStructuredGrid WholeExtent="',&
697 1,mesh%INUM+this%IP1,1,mesh%JNUM+this%JP1,1,mesh%KNUM+this%KP1,
'">'//
lf//&
698 ' <PFieldData>'//
lf// &
699 ' <InformationKey type="String" Name="fosite version" format="ascii">'//
lf// &
700 ' '//trim(version)//
lf//&
702 CALL this%CloseFile(
'pvts')
705 IF (this%error_io.GT.0)
CALL this%Error(
"WriteHeader",
"cannot write (P)VTS file header")
707 CALL this%CloseFile()
715 CLASS(fileio_vtk),
INTENT(INOUT) :: this
718 INTENT(OUT) :: success
722 CALL this%CloseFile()
730 CLASS(fileio_vtk) :: this
735 CALL this%OpenFile(
append)
737 WRITE(this%linebuf,fmt=
'(A,ES14.7,A)') &
738 ' <DataArray type="Float64" Name="TIME" NumberOfTuples="1" format="ascii">'//
lf// &
739 repeat(
' ',8),time,
lf//&
741 WRITE(this%unit,iostat=this%error_io) trim(this%linebuf)
744 IF (this%GetRank() .EQ. 0 )
THEN 745 CALL this%OpenFile(
append,
'pvts')
746 WRITE(this%unit+100,fmt=
'(A)',advance=
'NO',iostat=this%error_io) trim(this%linebuf)
747 CALL this%CloseFile(
'pvts')
750 CALL this%CloseFile()
760 CLASS(fileio_vtk),
INTENT(INOUT) :: this
767 CALL this%CloseFile()
772 SUBROUTINE writedataset(this,Mesh,Physics,Fluxes,Timedisc,Header,IO)
775 CLASS(fileio_vtk),
INTENT(INOUT) :: this
776 CLASS(mesh_base),
INTENT(IN) :: Mesh
777 CLASS(physics_base),
INTENT(INOUT) :: Physics
778 CLASS(fluxes_base),
INTENT(IN) :: Fluxes
779 CLASS(timedisc_base),
INTENT(IN) :: Timedisc
780 TYPE(Dict_TYP),
POINTER :: Header
781 TYPE(Dict_TYP),
POINTER :: IO
786 CHARACTER(LEN=256) :: basename
803 IF (
ASSOCIATED(timedisc%w))
THEN 804 IF (mesh%FARGO.EQ.3.AND.mesh%shear_dir.EQ.1)
THEN 805 CALL physics%AddBackgroundVelocityX(mesh,timedisc%w,timedisc%pvar,timedisc%cvar)
807 CALL physics%AddBackgroundVelocityY(mesh,timedisc%w,timedisc%pvar,timedisc%cvar)
814 IF ((this%step.EQ.0).OR.(this%cycles.GT.0))
THEN 815 CALL this%WriteHeader(mesh,physics,header,io)
818 CALL this%WriteTimestamp(timedisc%time)
819 CALL this%OpenFile(
append)
830 IF (this%GetRank() .EQ. 0 )
THEN 831 CALL this%OpenFile(
append,
'pvts')
832 IF(this%error_io .NE. 0)
CALL this%Error(
"WriteDataset",
"Can't open pvts file")
837 WRITE(this%linebuf,fmt=
'(A,ES14.7,A)') &
838 ' <DataArray type="Float64" Name="'//trim(this%tsoutput(k)%key)// &
839 '" NumberOfTuples="1" format="ascii">'//
lf// &
840 repeat(
' ',8),this%tsoutput(k)%val,
lf//&
842 WRITE(this%unit,iostat=this%error_io) trim(this%linebuf)
845 IF (this%GetRank() .EQ. 0 )
THEN 846 WRITE(this%unit+100,fmt=
'(A)',advance=
'NO',iostat=this%error_io) trim(this%linebuf)
898 WRITE(this%linebuf,fmt=
'(A,(6(I7)),A)')&
899 ' </FieldData>'//
lf// &
900 ' <Piece Extent="', &
901 mesh%IMIN,mesh%IMAX+this%IP1,mesh%JMIN,mesh%JMAX+this%JP1,&
902 mesh%KMIN,mesh%KMAX+this%KP1,
'">'//
lf// &
904 ' <DataArray type='//this%realfmt//
' NumberOfComponents="3"'//&
905 ' Name="Point" format="appended" offset="0">'//
lf// &
906 ' </DataArray>'//
lf// &
909 WRITE(this%unit,iostat=this%error_io) trim(this%linebuf)
912 IF (this%GetRank() .EQ. 0 )
THEN 913 WRITE(this%unit+100,fmt=
'(A)',iostat=this%error_io)&
914 repeat(
' ',4)//
'</PFieldData>' &
915 //
lf//repeat(
' ',4)//
'<PPoints>' &
916 //
lf//repeat(
' ',6)//
'<DataArray type='//this%realfmt &
917 //
' NumberOfComponents="3" Name="Point"/>' &
918 //
lf//repeat(
' ',4)//
'</PPoints>' &
919 //
lf//repeat(
' ',4)//
'<PCellData>' 927 WRITE(this%linebuf,fmt=
'(A,I3,A,I8,A)')&
928 repeat(
' ',6)//
'<DataArray type='//this%realfmt//&
929 ' NumberOfComponents="',
SIZE(this%output(k)%p), &
930 '" Name="'//trim(this%output(k)%key)//&
931 '" format="appended" offset="',this%offset+offset,
'"/>'//
lf 932 WRITE(this%unit,iostat=this%error_io) trim(this%linebuf)
935 IF (this%GetRank() .EQ. 0 )
THEN 936 WRITE(this%unit+100,fmt=
'(A,I3,A)',iostat=this%error_io)&
937 repeat(
' ',6)//
'<DataArray type='//this%realfmt//&
938 ' NumberOfComponents="',
SIZE(this%output(k)%p),&
939 '" Name="'//trim(this%output(k)%key)//
'"/>' 944 offset = offset + this%output(k)%numbytes + 4
947 WRITE(this%unit,iostat=this%error_io)&
948 repeat(
' ',6)//
'</CellData>' &
949 //
lf//repeat(
' ',4)//
'</Piece>' &
950 //
lf//repeat(
' ',2)//
'</StructuredGrid>' &
951 //
lf//repeat(
' ',2)//
'<GlobalData>' 954 IF (this%GetRank() .EQ. 0 )
THEN 955 WRITE(this%unit+100,fmt=
'(A)',iostat=this%error_io) repeat(
' ',4)//
'</PCellData>' 957 DO i=0,this%GetNumProcs()-1
958 basename=this%GetBasename(i)
959 WRITE(this%unit+100,fmt=
'(A)',iostat=this%error_io) &
960 repeat(
' ',4)//
'<Piece Extent="'//trim(this%extent(i))&
961 //
'" Source="'//trim(basename)//
'"/>' 964 WRITE(this%unit+100,fmt=
'(A)',iostat=this%error_io)&
965 repeat(
' ',2)//
'</PStructuredGrid>' &
993 WRITE(this%unit,iostat=this%error_io)&
994 lf//repeat(
' ',2)//
'</GlobalData>' &
995 //
lf//
'<AppendedData encoding="raw">' &
999 IF (this%GetRank() .EQ. 0 )
THEN 1000 CALL this%CloseFile(
'pvts')
1001 IF(this%error_io .NE. 0)
CALL this%Error(
"WriteDataset",
"Can't close pvts file")
1012 WRITE(this%unit,iostat=this%error_io) int(this%offset,4),this%vtkcoords(:,:,:,:)
1013 IF (this%error_io.GT.0) &
1014 CALL this%Error(
"WriteDataset",
"cannot write coordinates")
1026 n =
SIZE(this%output(k)%p)
1028 this%binout(m,:,:,:)=this%output(k)%p(m)%val(:,:,:)
1031 WRITE(this%unit,iostat=this%error_io) this%output(k)%numbytes, &
1032 this%binout(1:n,:,:,:)
1034 IF (this%error_io.GT.0) &
1035 CALL this%Error(
"WriteDataset",
"cannot write data")
1037 WRITE(this%unit,iostat=this%error_io)
lf//repeat(
' ',2)//&
1038 '</AppendedData>'//
lf//
'</VTKFile>'//
lf 1040 CALL this%CloseFile()
1049 CLASS(fileio_vtk),
INTENT(INOUT) :: this
1055 IF (
ASSOCIATED(this%output(k)%p))
DEALLOCATE(this%output(k)%p)
1057 DEALLOCATE(this%binout,this%vtkcoords,this%output,this%tsoutput,this%bflux)
1058 CALL this%Finalize_base()
subroutine finalize(this)
Destructor of common class.
generic source terms module providing functionaly common to all source terms
subroutine readheader(this, success)
Reads the header (not yet implemented)
integer, parameter, public replace
read/write access replacing file
I/O for VTK files in XML format (vtkStructuredGrid)
type(logging_base), save this
integer, parameter maxcols
max of different output arrays
type(dict_typ) function, pointer, public getchild(root)
Get the pointer to a direct child of the pointer 'root'.
integer function, public getdatatype(root)
Return the datatype of node 'root'.
integer, parameter, public dict_real_fourd
subroutine getendianness(this, res, littlestr, bigstr)
Determines the endianness of the system.
logical function, public haschild(root)
Check if the node 'root' has one or more children.
integer, parameter, public dict_real_p
subroutine initfileio_vtk(this, Mesh, Physics, Timedisc, Sources, config, IO)
Constructor for the VTK file I/O.
function, public getkey(root)
Get the key of pointer 'root'.
subroutine readtimestamp(this, time)
Reads the timestep (not yet implemented)
subroutine getprecision(this, realsize)
Determines precision of real numbers in bytes.
base class for geometrical properties
subroutine writeheader(this, Mesh, Physics, Header, IO)
Writes XML header to file.
integer, parameter, public dict_real_threed
integer, parameter, public readend
readonly access at end
subroutine writedataset(this, Mesh, Physics, Fluxes, Timedisc, Header, IO)
Writes all desired data arrays to a file.
integer, parameter maxcomp
max. of allowed components 9 is a tensor (rank 2, dim 3)
subroutine writeparaviewfile(this)
integer, parameter, public dict_real_twod
type(dict_typ) function, pointer, public getnext(root)
Get the pointer to the next child.
Dictionary for generic data types.
logical function, public hasdata(root)
Checks if the node 'root' has data associated.
subroutine writetimestamp(this, time)
Writes the timestep.
subroutine openfile(this, action, ftype)
Specific routine to open a file for vtk I/O.
integer, parameter, public append
read/write access at end
base module for numerical flux functions
recursive subroutine getoutputlist(this, Mesh, node, k, l, prefix)
Creates a list of all data arrays which will be written to file.
character(len=1), save prefix
preceds info output
character, parameter lf
line feed
integer, parameter maxkey
max length of keyname
integer, parameter, public readonly
readonly access
subroutine closefile(this, ftype)
Specific routine to close a file for vtk I/O.