[Paraview] Importing time-varying data into Paraview

Daniel Duke daniel.duke at monash.edu
Mon Nov 8 22:18:19 EST 2010


Hi,

I'm working for a fluid mechanics laboratory, and we have very large amounts
of data that we want to interrogate in Paraview.  We're moving away from
text and custom binary data formats, to use the more portable VTK and NetCDF
data formats.  NetCDF and VTK seem very fast and easy to imolement in our in
house code.  Paraview is also a very efficient tool for us to visualise
large data sets and create complex, 3D isosurfaces etc.  It's in some
respects better than the expensive commercial alternatives.  I'm new to
Paraview, NetCDF and VTK, but have been using Linux & Open Source for a long
time.

There is one major snag that we have, which is the importing of
time-dependent data.   Paraview's feature set and documentation seems to
indicate that handling time-dependent data is a large part of what the
application should be capable of doing, so I'm not sure why we can't get it
to work.

We have very large scalar and vector fields which are typically a function
of 3D space and time, for example we might wish to plot a vector field
u~(x,y,z,time).  Whilst the importing of a single time instance u~(x,y,z)
works perfectly via both NetCDF, we can't seem to import 4D time dependent
data and animate it.  Paraview appears to have some very nice animation and
time based functions, but we can't use them at all because we can't get any
of our data imported as a function of time.

I've tried a number of different ways of doing it, and in every instance
Paraview fails to identify the "time" axis as being distinct from x, y & z.
  I will list them here, along with the error messages and the incoming data
format.  I won't attach our actual .nc data files, as they're gigabytes in
size!  But I will provide the ncdump header info at the bottom of the
message.  They are very simple; one scalar value over a regular,
structured, rectilinear grid with a regular time-step size.  We don't need
to compute any time-derivatives, but simply wish to animate iso-surfaces
computed at each time step discretely.  We have Paraview v.3.6.1 running on
Linux and Mac OS X.

Our failed attempts at loading time varying data are as follows:

1.  Importing a single large NetCDF file which has the data stored as a 4-D
array (x,y,z,time).  In this case each dimension is stored as a NetCDF
"double" type with the appropriate units.

Opening the .nc file results in the error "more than 3 dims without time not
supported".
The "information" tab after clearing away that error shows Extents X =
#timesteps in netcdf,  extents Y = #sizeX in netcdf, extents Z = #sizeY in
netcdf.  The "Time" list at the bottom of the object inspector is empty.  So
it appears that Paraview is treating "time" as a spatial co-ordinate and
then failing to be able to have 4 spatial co-ordinates (which makes perfect
sense).  I've tried naming the "time" axis several different ways and
changing its units, but to no avail.

2.  Importing a sequence of separate NetCDF files which are in 3D (x,y,z)
and are numbered according to their position in time.  ie  data-0.00.nc,
data-0.01.nc , data-0.02.nc etc.   In this case each spatial dimension is
stored as a "double" type with the appropriate units , and the time value is
only recorded in the filename.

In this case, the Paraview "open" dialog does detect a "set" of files
"data-*.nc".  So it recognises that they are a related series.  When I open
"data-*.nc", I only see the data for the first time step.  The "Information"
tab shows "properties: filename: data-0.00.nc", and the "Time" list at the
bottom of the object inspector is empty.  Apparently only the first file has
loaded.  The time animation features don't do anything.  I can't find a way
to move forward in the set data-*.nc.

3.  Importing time slices as NetCDF files individually into Paraview and
attempting to place each slice at its appropriate position in time (tedious,
but it should work, right?)

I can't seem to find any feature which will allow me to assign a data set to
a particular place in time.  Creating a time source does not allow me to
link a dataset to a point in time;  all visible datasets are overlapping
each other at all points in time.

In summary:
Is importing time dependent data via NetCDF currently possible in Paraview ?
 Do we need to convert to an alternative file format, or name or mark the
time axis in some special way so that Paraview recognises it?  I can't see
why the importing process can't allow one to choose any axis they like as
the time axis; certainly this feature is built into all commercial data
visualisation packages.  Even if a restructuring of the data was required to
do this, surely this could be easily implemented.

Kind Regards

Daniel Duke
Laboratory for Turbulence Research in Aerospace & Combustion
Monash University, Australia


------ netcdf headers produced by ncdump below -------

--------4D file---------  this won't load. ----------------
netcdf data-timeseries {
dimensions:
         X = 201 ;
         Y = 201 ;
         Z = 201 ;
         time = 31;
variables:
         double X(X) ;
              X:units = "meters" ;
         double Y(Y) ;
              Y:units = "meters" ;
         double Z(Z) ;
              Z:units = "meters" ;
         double time(time) ;
              time:units = "seconds" ;
         double scalarfield(X,Y,Z,time) ;
}

--------3D file---------  this loads OK, but won't animate over multiple
files ----------
netcdf data-slice {
dimensions:
         X = 201 ;
         Y = 201 ;
         Z = 201 ;
variables:
         double X(X) ;
              X:units = "meters" ;
         double Y(Y) ;
              Y:units = "meters" ;
         double Z(Z) ;
              Z:units = "meters" ;
         double scalarfield(X,Y,Z) ;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20101109/88396ae4/attachment-0001.htm>


More information about the ParaView mailing list