RES: [Paraview] Writing binary files: C/Fortran interface to VTKXMLfiles.

Stéphane Montésino Stephane.Montesino at hmg.inpg.fr
Wed Feb 1 10:13:31 EST 2006


Thanks Renato,
Ensight Format seems to be faster to implement than linking C & Fortran 
routines....
But is "Ensight Format" bytes-order dependant (little Endian/ Big 
endian) ? I haven't  read anything about it in the fortran routines.
Maybe paraview can manage it ?????

Renato N. Elias wrote:

>Hi Stéphane,
>
>When I was starting using Paraview I thought about writing Fortran routines
>to write VTK files, but after reading about Base64 compression I gave up. I
>think the VTK team has been doing a wonderful work in VTK's file formats and
>Base64 really seems incredible to write very small compressed binary files
>but, unfortunately, I don't have knowledge enough to implement something
>like this in Fortran. Furthermore, I don't know if a pure Fortran code would
>be able to produce a Base64 compressed file. Ok, VTK has an interface to
>write VTK files from a Fortran code, but it obliges me to install, or pick
>and compile the VTK routines needed with my program, in any machine I intend
>to run my program. My solution has been working fine for me, and I hope
>it'll keep working for a long time... As I work basicaly with CFD, and my
>team group has licenses for the Ensight visualizer, I've been writing all my
>files in Ensight's format. It's easy to implement in C/C++ or Fortran,
>portable (thank God Paraview has support to this format), parallel through
>the server-of-server casefile extension and I can keep using Ensight when
>I'd like to do something that Paraview can't do yet - almost nothing it
>happen ;-)
>
>If you are interested in trying to use Ensight's format, get the following
>routines http://www.nacad.ufrj.br/~rnelias/public/EnsightFortranRoutines.zip
>I guess, they can be a good starting point...
>
>Cheers
>
>Renato N. Elias
>===================================================
>PhD student
>High Performance Computing Center - NACAD/COPPE
>Federal University of Rio de Janeiro, RJ -Brazil
>http://www.nacad.ufrj.br/~rnelias
> 
>
>
>-----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
>Stéphane Montésino
>Enviada em: terça-feira, 31 de janeiro de 2006 14:45
>Para: Thierry Dubuis; brad.king at kitware.com
>Cc: paraview at paraview.org
>Assunto: Re: [Paraview] Writing binary files: C/Fortran interface to
>VTKXMLfiles.
>
>Thanks for all tese answers, but I 'm still like an an homosexual with a
>wonderfull girl. I don't know how to use it (sorry her).
>
>In fact, I would like to directly write this type of file that I can obtain
>when I save my data with Paraview:
>
><?xml version="1.0"?>
><VTKFile type="RectilinearGrid" version="0.1" byte_order="LittleEndian" 
>compressor="vtkZLibDataCompressor">
>  <RectilinearGrid WholeExtent="1 8 1 4 1 16">
>    <Piece Extent="1 8 1 4 1 16">
>      <PointData>
>        <DataArray type="Float32" Name="pressure" format="appended" 
>offset="0"           />
>      </PointData>
>      <CellData>
>      </CellData>
>      <Coordinates>
>        <DataArray type="Float32" Name="X_COORDINATES" format="appended" 
>offset="956"         />
>        <DataArray type="Float32" Name="Y_COORDINATES" format="appended" 
>offset="1036"        />
>        <DataArray type="Float32" Name="Z_COORDINATES" format="appended" 
>offset="1092"        />
>      </Coordinates>
>    </Piece>
>  </RectilinearGrid>
>  <AppendedData encoding="base64">
>   _AQAAAACAAAAACAAAuQIAAA==eJwVy8fvoFMUx+HDdIkyWOiG/0Bvmzfm   etc.....
>  </AppendedData>
></VTKFile>
>
>My knowledge are only reduces to Fluid mechanics.
>
> >>>>>>>>>>>>>Encode in Base 64 ? More details please...How to ?   
><<<<<<<<<<<<<<<<<<<<<<
>
>Link properly to vtkIO ? More details please.
> >>>>>>>>>>>>>> Does it mean that VTK IO library should be installed on the
>Computer where my CFD code run ?.
> I don't run my code on my own computer. It runs in Computing center where I
>can't install what I want.
> >>>>>>>>So I would like to obtain some fortran routine I could link myself
>to my  CFD code  <<<<<<<<<<<<<<<<
>
>When I try  to write binary data in a formatted file:
>run-time error F6204: WRITE(pressure.vtr)
>- unformatted I/O not consistent with OPEN options
>
>When I try  to write formatted string in an unformatted file:
>run-time error F6200: WRITE(pressure.vtr)
>- formatted I/O not consistent with OPEN options
>
> >>>>>>>>>>>>>>>>How to convert my data to a string ?   
><<<<<<<<<<<<<<<<<<<<<
>
>
>The format for raw appended binary data should be
>
><AppendedData encoding="raw">
>  _NNNN...........................
></AppendedData>
>
>Where the underscore is literal (as you already have) and the NNNN is a
>four-byte block containing an unsigned 32-bit count of the number of "words"
>in the array.  A word is one value of the type of the array, so in your case
>the NNNN would have the number of float values.  Then the number of bytes of
>binary data to follow should be NNNN*sizeof(float).
>
>If you have another appended data array in the same file then start it
>immediately after the end of the first array (with no newline or any other
>character.  Then specify in the offset="..." attribute for the corresponding
>DataArray the number of bytes beyond the underscore where the second array
>begins.
>
>-Brad
>
>
>
>
>Thierry Dubuis wrote:
>
>  
>
>>Hello Stéphane,
>>
>>perhaps this email can help you ?
>>
>>Else if you want code directly your program in fortran :
>>1. You must encode all you data in Base64 2. And write them like a 
>>string.
>>3. don't forget to add the size of your data block (integer*4) encoded 
>>in base64 before you block.
>>
>>Best regards,
>>Thierry Dubuis
>>
>>-------- Original Message --------
>>Subject:     Re: [Paraview] Writing binary files: C/Fortran interface 
>>to VTK XML files.
>>Date:     Tue, 07 Jun 2005 10:06:51 -0400
>>From:     Brad King <brad.king at kitware.com>
>>To:     SamuelKey <samuelkey at comcast.net>
>>CC:     paraview <paraview at paraview.org>, "Wylie, Brian" 
>><bnwylie at sandia.gov>
>>References:     
>><200506030152.j531quWp005650 at rrcs-mta-04.hrndva.rr.com>
>><42A05837.3010206 at kitware.com> <000a01c5684c$1d1a6740$6e01a8c0 at last>
>>
>>
>>
>>SamuelKey wrote:
>>
>>    
>>
>>>Needing to have a C-compiler is not a problem for me; I have one.
>>>
>>>Let me try to work with what you commit next week and see if I have 
>>>any ideas. I will be gone all next week, so you won't hear from me 
>>>until week after next. With luck you may hear from someone else that 
>>>will help keep you busy, though I suspect "busy" is not a problem for 
>>>you.
>>>      
>>>
>>Okay, the C/Fortran interface is now available.  A C program can do
>>
>>#include "vtkXMLWriterC.h"
>>
>>and link to vtkIO.  A Fortran program can use the interface (see the 
>>example code below) but will need to compile one extra .c file to link 
>>properly to vtkIO.  See VTK/IO/vtkXMLWriterF.h for instructions.
>>
>>-Brad
>>
>>     PROGRAM Hello
>>     INTEGER writer
>>     INTEGER success
>>     INTEGER*8 numpoints/8/
>>     INTEGER*8 numcells/1/
>>     INTEGER*8 cellsSize/9/
>>     REAL*4 pdata(8)/0,0,0,0,1,1,1,1/
>>     REAL*4 points(24)/0,0,0, 1,0,0, 1,1,0, 0,1,0,
>>    _                  0,0,1, 1,0,1, 1,1,1, 0,1,1/
>>     INTEGER*8 cells(9)/8,0,1,2,3,4,5,6,7/
>>     call vtkXMLWriterF_New(writer)
>>     call vtkXMLWriterF_SetDataObjectType(writer, 4)
>>     call vtkXMLWriterF_SetFileName(writer, 'test1.vtu')
>>     call vtkXMLWriterF_SetPoints(writer, 10, points, numpoints)
>>     call vtkXMLWriterF_SetCellsWithType(writer, 12, numcells, cells,
>>    _                                    cellsSize)
>>     call vtkXMLWriterF_SetPointData(writer, 'example data', 10, pdata,
>>    _                                numpoints, 1, 'SCALARS')
>>     call vtkXMLWriterF_Write(writer, success)
>>     call vtkXMLWriterF_Delete(writer)
>>     PRINT *, 'success =', success
>>     END PROGRAM Hello
>>_______________________________________________
>>ParaView mailing list
>>ParaView at paraview.org
>>http://www.paraview.org/mailman/listinfo/paraview
>>
>>
>>
>>
>>Stéphane Montésino wrote:
>>
>>    
>>
>>>With Asci, all is OK except the size of my file.
>>>So how to write my data array in binary with my fortran code.
>>>Does anyone have some details ?
>>>
>>>!    
>>>*********************************************************************
>>>*********
>>>
>>>!    ****                       subrout 
>>>paraview_scalar                        ****
>>>!    
>>>*********************************************************************
>>>*********
>>>
>>>!    Export 3D scalar data upon a Non uniform rectilinear Grid
>>>!
>>>!    n1m,n2m,n3m: size of the data and the grid
>>>!    y1,y2,y3: coordinates
>>>!    scal_data: data to write
>>>!    name: name of the data
>>>!
>>>     subroutine 
>>>paraview_3d_scalar(n1m,n2m,n3m,y1,y2,y3,scal_data,name)
>>>!
>>>     implicit none
>>>!
>>>     INTEGER                      ,INTENT(IN)::n1m,n2m,n3m
>>>     REAL*8,DIMENSION(n1m)        ,INTENT(IN)::y1
>>>     REAL*8,DIMENSION(n2m)        ,INTENT(IN)::y2
>>>     REAL*8,DIMENSION(n3m)        ,INTENT(IN)::y3
>>>     REAL*8,DIMENSION(n1m,n2m,n3m),INTENT(IN)::scal_data
>>>     CHARACTER(LEN=10)            ,INTENT(IN)::name
>>>!
>>>     integer::i,j,k,nfil
>>>!
>>>     nfil=41
>>>     open(nfil,file=trim(name)//'.vtr')
>>>     write(nfil,*)'<VTKFile type="RectilinearGrid" version="0.1"',
>>>    &         ' byte_order="LittleEndian">'
>>>     write(nfil,*)'  <RectilinearGrid WholeExtent=',
>>>    &                '"1 ',n1m,' 1 ',n2m,' 1 ',n3m,'">'
>>>     write(nfil,*)'    <Piece Extent=',
>>>    &                  '"1 ',n1m,' 1 ',n2m,' 1 ',n3m,'">'
>>>     write(nfil,*)'      <Coordinates>'
>>>     write(nfil,*)'        <DataArray type="Float32"',
>>>    &                             ' Name="X_COORDINATES"',
>>>    &                             ' NumberOfComponents="1">'
>>>     write(nfil,*) (y1(i),i=1,n1m)
>>>     write(nfil,*)'        </DataArray>'
>>>     write(nfil,*)'        <DataArray type="Float32"',
>>>    &                             ' Name="Y_COORDINATES"',
>>>    &                             ' NumberOfComponents="1">'
>>>     write(nfil,*) (y2(j),j=1,n2m)
>>>     write(nfil,*)'        </DataArray>'
>>>     write(nfil,*)'        <DataArray type="Float32"',
>>>    &                             ' Name="Z_COORDINATES"',
>>>    &                             ' NumberOfComponents="1">'
>>>     write(nfil,*) (y3(k),k=1,n3m)
>>>     write(nfil,*)'        </DataArray>'
>>>     write(nfil,*)'      </Coordinates>'
>>>     write(nfil,*)'      <PointData Scalars="scalar">'
>>>     write(nfil,*)'        <DataArray Name="'//trim(name)//'"',
>>>    &                             ' type="Float32"',
>>>    &                             ' NumberOfComponents="1"',
>>>    &                             ' format="ascii">'
>>>     write(nfil,*) (((scal_data(i,j,k),i=1,n1m),j=1,n2m),k=1,n3m)
>>>     write(nfil,*)'        </DataArray>'
>>>     write(nfil,*)'      </PointData>'
>>>     write(nfil,*)'    </Piece>'
>>>     write(nfil,*)'  </RectilinearGrid>'
>>>     write(nfil,*)'</VTKFile>'
>>>     close(nfil)
>>>!
>>>     return
>>>     end
>>>
>>>_______________________________________________
>>>ParaView mailing list
>>>ParaView at paraview.org
>>>http://www.paraview.org/mailman/listinfo/paraview
>>> 
>>>
>>>      
>>>
>
>
>--
>Stéphane MONTESINO
>
>Doctorant                       tel:+33 4 76 82 52 91
>LEGI                            fax:+33 4 76 82 70 22
>BP 53
>38041 Grenoble Cedex            email: stephane.montesino at hmg.inpg.fr
>France                          http://www.legi.hmg.inpg.fr 
>
>
>  
>


-- 
Stéphane MONTESINO

Doctorant                       tel:+33 4 76 82 52 91
LEGI                            fax:+33 4 76 82 70 22
BP 53
38041 Grenoble Cedex            email: stephane.montesino at hmg.inpg.fr
France                          http://www.legi.hmg.inpg.fr 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Stephane.Montesino.vcf
Type: text/x-vcard
Size: 308 bytes
Desc: not available
Url : http://public.kitware.com/pipermail/paraview/attachments/20060201/29832220/Stephane.Montesino.vcf


More information about the ParaView mailing list