AW: RES: [Paraview] VTK formats and Fortran (again...)
Benjamin Ahrenholz
ahrenholz at cab.bau.tu-bs.de
Fri Apr 27 08:11:51 EDT 2007
Hello,
just some short correction. I made a little mistake about the length oft he
array. Instead of
laenge = 27000 (were laenge is my variable for length [extends are
30³=27000] ) it should be:
laenge = 27000*4 and the the offset for the first data array has to be
set to 0 instead of 4!
Sorry for that wrong information in the first post.
Regards,
Ben
> Hello,
>
> I ran into similar problems as Renato and had a look into the Fortran
> source
> code he provided in an earlier post. After reading through the
> documentation
> and lots of posts on the mailing list I came up with the following
> solution
> (actually because of that post:
> http://public.kitware.com/pipermail/paraview/2006-October/004031.html)
>
> subroutine writeXMLScalars(P, FileName, pfeld)
> use types
>
> implicit none
>
> type(parameter_store), intent(in) :: P
> character(len=charlen), intent(in) :: FileName
> real(sp), intent(in) :: pfeld(P%x_anf_loc-P%gn:P%x_end_loc+P%gn,
> P%y_anf_loc-P%gn:P%y_end_loc+P%gn, P%z_anf_loc-P%gn:P%z_end_loc+P%gn)
>
> character(len=80) :: cbuffer
> character :: lf
> integer :: FileUnit, i, j, k, laenge
>
> FileUnit = 40
> lf = char(10) ! line feed character
> laenge = 27000
>
> open (unit=FileUnit, file=trim(FileName), err=99, form='binary')
> cbuffer = '<?xml version="1.0"?>'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = '<VTKFile type="ImageData" version="0.1"
> byte_order="LittleEndian">'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = ' <ImageData WholeExtent="0 29 0 29 0 29" Origin="1 1
> 1"
> Spacing="1 1 1">'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = ' <Piece Extent="0 29 0 29 0 29">'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = ' <PointData Scalars="Scalars">'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = ' <DataArray type="Float32" Name="values"
> format="appended" offset="4"/>'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = ' </PointData>'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = ' <CellData>'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = ' </CellData>'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = ' </Piece>'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = ' </ImageData>'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = ' <AppendedData encoding="raw">'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = '_' ! leading char
> write(FileUnit) trim(cbuffer)
> write(FileUnit) laenge ! length of the array
> write(FileUnit) ((( pfeld(i,j,k), i=P%x_anf_loc,P%x_end_loc), &
> & j=P%y_anf_loc,P%y_end_loc), &
> & k=P%z_anf_loc,P%z_end_loc)
> cbuffer = ' </AppendedData>'//lf
> write(FileUnit) trim(cbuffer)
> cbuffer = '</VTKFile>'//lf
> write(FileUnit) trim(cbuffer)
> close(FileUnit)
>
> return
>
> 99 write(messg,'(a,a)') 'Oeffnen oder Schreiben der Scalar-Dump-
> Datei
> misslungen! '
> call aerror(messg)
>
> end subroutine writeXMLScalars
>
> In that version above most values are hardcoded, however there are
> three
> things you have to take care of:
> - use the AppendedData option, because only there you have the option
> of raw
> encoding (a.f.a.i.k.)
> - you have to use _ (underscore) as leading character fort he binary
> data
> - and, as Kent stated, you have to put the length of the array in front
> of
> it. However, than you have to put the offset attribute to 4 (in my
> case)
> Now it should work (tested with ParaView 2.6.0). I hope that helps, if
> you
> still had that problem.
>
> Cheers,
>
> Ben
> __________________________________
>
> Institute for Computerapplications
> in Civil Engineering (CAB)
> Technical University of
> Braunschweig
>
> Pockelsstr. 3 (9th Floor)
> Braunschweig
> D-38106, Germany
>
> phone +49 531/391-7584
> fax +49 531/391-7599
> web www.cab.bau.tu-bs.de
> __________________________________
>
>
> First of all I'd like to thank Fred, Kent and Bruno for the help...
>
> I've finally got something working here... Fortran, Binary and VTK
> (unfortunately only the Legacy format...)
>
> I left a very simple Fortran90 program available in
> http://www.nacad.ufrj.br/~rnelias/paraview/VTKFormat.f90 . Please, if
> you
> find what's wrong with the XML version contact me.
>
> Now, I have another very silly doubt regarding the Legacy format:
>
> -- What is a "partitioned VTK Legacy" file? Would it be a simple VTK
> Legacy
> file with *.pvtk extension?!
>
> BTW, I can't understand why there is a bunch of different file
> extensions
> for those XML/VTK based files... if they are all XML files why they
> should
> be distinguished by their extension and not by a simple XML tag?!
>
> Regards
>
> Renato N. Elias
> ===============================================
> PhD student - http://www.nacad.ufrj.br/~rnelias
> High Performance Computing Center (NACAD)
> Federal University of Rio de Janeiro (UFRJ)
> Rio de Janeiro, Brazil
>
>
>
> -----Mensagem original-----
> De: paraview-bounces+rnelias=nacad.ufrj.br at paraview.org
> [mailto:paraview-bounces+rnelias=nacad.ufrj.br at paraview.org] Em nome de
> fred
> Enviada em: Friday, April 13, 2007 07:55
> Para: vtkusers at vtk.org
> Cc: paraview at paraview.org
> Assunto: Re: RES: [Paraview] VTK formats and Fortran (again...)
>
> Renato N. Elias a écrit :
> > Fred wrote: You also have ASCII and binary (not base64) formats.
> >
> > I've reread and found this information hidden in the VTK file
> format's
> > guide. A footnote in page 12 which says:
> >
> > "* There is one case in which the file is not a valid XML document.
> ***
> When
> > the AppendedData section is not encoded as base64,
> > raw binary data *** is present that may violate the XML
> specification.
> This
> > is not default behavior, and must be explicitly enabled
> > by the user."
> >
> >
> Yes, I know this, but not a problem for me.
> By the way, XML base64 files size are little bigger than binary.
> > However, there is no further information regarding such form of
> writing
> raw
> > binary data in "XML files" for VTK and PV. I'll try to write a file
> with
> raw
> > binary data in the AppendedData section to see what happen.
> >
> I began to write my C code to write legacy VTK files, which does not
> require any VTK libs.
> Then, I added a few routines, which do use VTK libs, to write my files
> in XML.
> But once again, only in C.
> But if it can help...
>
> --
> /F
>
> _______________________________________________
> ParaView mailing list
> ParaView at paraview.org
> http://www.paraview.org/mailman/listinfo/paraview
>
> _______________________________________________
> ParaView mailing list
> ParaView at paraview.org
> http://www.paraview.org/mailman/listinfo/paraview
>
> _______________________________________________
> ParaView mailing list
> ParaView at paraview.org
> http://www.paraview.org/mailman/listinfo/paraview
More information about the ParaView
mailing list