← Back to team overview

dolfin team mailing list archive

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

 

On Tue, Sep 22, 2009 at 9:41 AM, Garth N. Wells <gnw20@xxxxxxxxx> wrote:
>
>
> 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
>

Yes, I agree that this is an alternative solution, and possibly the
best. I have it somewhere on my stack, but I don't except to start
working on it for quite some time. As a matter of fact, plain Viper
has this already for simple unstructured meshes and scalar fields. The
challenge is to allow other types of plot objects to be read from vtk
files as well (i.e. vector fields, cell valued fields, and 2d plots).

The functionality to poll an XML file for its contents would still be
nice to have, for instance if you want to make a simple GUI layer on
top of DOLFIN and allow flexible file input.

Ola


>> 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
>>
>>
>>
>
>



-- 
Ola Skavhaug


References