← Back to team overview

dolfin team mailing list archive

Re: [Viper-dev] C++ plotting broken (even in serial)

 



Ola Skavhaug wrote:
On Mon, Sep 21, 2009 at 9:00 PM, Johan Hake <hake@xxxxxxxxx> wrote:
On Monday 21 September 2009 20:32:41 Garth N. Wells wrote:
This issue has returned.
I think the issue is at the viper side this time.

 f = File(filename)
 data = FunctionPlotData()
 f >> data

works fine.

Johan

The general problem with DOLFIN and Viper is the changing interface of
DOLFIN. This, together with the desired viper use of

viper some_plot_data.xml

which essentially leads to Python code a-la

try:
 plot_function_plot_data()
except:
 pass
try:
 plot_mesh_function()
except:
 pass
try:
 plot_mesh()
except:
 raise IOError("Could not find anything to plot")

makes life hard.

In general, the problem as seen from the Python side is that we need
to spesify the type of object read from file. Being a dynamically
typed language, the following code (or similar) is possible:

plot(File(filename).read())

which would make is much simpler to issue a sound error message from Viper.


I added a Blueprint to Launchpad on this,

    https://blueprints.launchpad.net/fenics-viper/+spec/plot-type

In my view, the problem is that we haven't code for extracting type
info from a DOLFIN xml file. A simple reader that extracts and reports
this would be nice to have.


I've said a bunch of times already (but without a response) that we can already write to the VTK XML format, and Viper is based on VTK which can of course parse its own XML files, so why aren't we just using the VTK format? The process is essentially what is described above and would require minimal work. See

    https://blueprints.launchpad.net/fenics-viper/+spec/vtk-files

Garth


f = File(filename)
info = XMLFileInfo(f)
print info
(FunctionPlotData, Mesh)
data = info[0]() # Construct an empty FunctionPlotData instance
mesh = info[1]() # Construct an empty Mesh.
[...]



Garth

Ola Skavhaug wrote:
On Tue, Sep 15, 2009 at 2:48 PM, Johan Hake <hake@xxxxxxxxx> wrote:
On Tuesday 15 September 2009 14:31:22 Ola Skavhaug wrote:
On Tue, Sep 15, 2009 at 1:03 PM, Anders Logg <logg@xxxxxxxxx> wrote:
On Tue, Sep 15, 2009 at 12:59:24PM +0200, Garth N. Wells wrote:
Anders Logg wrote:
When plotting a <function_plot_data> object from file, Viper just
plots the mesh, not the function.

Is this a bug in Viper?
I don't know. It's a pain to find out because there is no error
message and DOLFIN cleans up the plot files afterwards. It happens to
me so often that I'm not going to bother fixing it any more.

Garth
I don't think DOLFIN cleans up the plot files. The file is created in
the current directory and is named dolfin_plot_data.xml.
The problem here is the restructuring of the swig interface; the
rshift operator on FunctionPlotData is defined before the definition
of FunctionPlotData. This causes swig to ignore the rshift (and
lshift) operator for FunctionPlotData, and hence the lines

f = File(filename)
f >> FunctionPlotData()
Should be fixed now

Johan
Latest viper commit should make things work again.

Ola

fails.

Ola

--
Anders

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEARECAAYFAkqvdHQACgkQTuwUCDsYZdE7QACfeE0YBtDkgF8UCT98L/XrTijV
esUAn3+GtnSrAMEiS6s8bfiFJT4gVPU+
=fclj
-----END PGP SIGNATURE-----

_______________________________________________
Viper-dev mailing list
Viper-dev@xxxxxxxxxx
http://fenics.org/mailman/listinfo/viper-dev






Follow ups

References