[Dune-devel] [GSoc] Work plan for psurface project

Oliver Sander sander at igpm.rwth-aachen.de
Sun Jun 30 12:15:31 CEST 2013


Hi Xiaoxue,

as promised here is a more detailed work plan.  I think we need to do a few
more preliminary steps before attacking the actual ParaView integration.  They will allow
you to get more familiar with the code, but they are also interesting deliverables
in their own right.  That means that if it turns out that full ParaView integration
is too difficult (I cannot fully judge that right now), then you still have a lot
of useful things to show.

Here are the steps that I propose:

1. Write a command-line tool that can take a psurface object and write its domain surface
  in vtk format (which can be read by paraview).

- Please call the program 'psurface-convert'

- VTK seems to be pretty big, and I don't think I want a vtk dependence for
psurface.  In dune-grid/dune/grid/io/file/vtk/vtkwriter.hh there is code that writes
grids in vtk format without external dependencies.  That should get you started.

- You'll need a psurface object to test with.  The easiest way to get one is to load
it from an AmiraMesh file.  Configure psurface with --with-amiramesh=path,
and use the code in AmiraMeshIO.cpp



2. Write a tool that takes the vtk format surface a into psuface object.

- This should be part of psurface-convert

- Vtk input is nice, but you may want to start with input from a gmsh file, which
is a bit easier.  Code to read grids from a gmsh file can be found in
dune-grid/dune/grid/io/file/gmshreader.hh

- Once you get here I'll write you some more on how to actually construct a
PSurface object from a given domain surface.  It is not really involved, but
may be a bit difficult to figure out with the current state of documentation.



3. Implement an HDF5-based file format for psurface objects

Nobody will be able to use your stuff as long as we rely on the AmiraMesh format.
(The format itself is not a secret, but the support library is difficult to come by).

- AmiraMesh is a general-purpose file format for all kinds of visualization-related
data.  Read the file psurface/README to learn how psurface objects are stored in
AmiraMesh files.

- Familiarize yourself with HDF5 (http://www.hdfgroup.org/HDF5/)  Find a way to
store a psurface object in HDF5 instead of AmiraMesh.  Here it is okay to use
the HDF5 support library.

- Implement HDF5 reading and writing in psurface-convert


At this point you will already have achieved quite a few useful things.

There are two ways how to proceed.  Either

4.a) Write a tool that allows to control the surface simplifier from the command
line

or

4.b) Write a plugin for ParaView that allows to load and visualize (not more!)
a complete hdf5 psurface object including the complete graph structure.

I will provide more information on both topics later.

These points are probably not enough to keep you busy for three month.
I'll try to map out the schedule for later once I see how fast progress is.

Good luck, happy hacking, and don't hesitate to ask questions!

Best,
Oliver





2.Wrap the PSurface surface simplification algorithm and other relevent code
in PSurface and hxpsurface in python to create a new filter for paraview.
With this filter we can interactively modify the domain surface using paraview GUI.(5 weeks)
3. Adding the new filter into paraview using server manager configuration XML.
write a CMakeLists.txt file to package the new filter into a plugin.(1 week).





More information about the Dune-devel mailing list