Thread Previous • Date Previous • Date Next • Thread Next |
hello,ehm, i just noticed the same problem for writing out a Matrix to XML from c++ and then reading it in again in PyDolfin:
in python, the read-in fails: fn = "matrixdata.xml" df = File(fn) data = Matrix() df >> data gives: RuntimeError: *** Error: Handler stack not empty. Something is wrong! greetings, patrick Anders Logg wrote:
On Fri, Aug 06, 2010 at 01:37:12PM -0700, Johan Hake wrote:On Friday August 6 2010 12:10:34 Anders Logg wrote:On Fri, Aug 06, 2010 at 07:57:52PM +0100, Garth N. Wells wrote:On Fri, 2010-08-06 at 11:55 -0700, Johan Hake wrote:On Friday August 6 2010 11:48:37 Anders Logg wrote:On Wed, Aug 04, 2010 at 05:06:57PM -0700, Johan Hake wrote:On Wednesday August 4 2010 13:09:47 Riesen Patrick wrote:-----Original Message----- From: Garth N. Wells [mailto:gnw20@xxxxxxxxx] Sent: Wed 04.08.2010 19:07 To: johan.hake@xxxxxxxxx Cc: Riesen Patrick; dolfin@xxxxxxxxxxxxxxxxxxx Subject: Re: [Dolfin] python: xml read for vector / std::vector On Wed, 2010-08-04 at 10:03 -0700, Johan Hake wrote:On Wednesday August 4 2010 09:28:22 Patrick Riesen wrote:Patrick Riesen wrote:Johan Hake wrote:Patrick! On Wednesday August 4 2010 09:13:24 Patrick Riesen wrote:hello dolfin developers I write out a std::vector in XML file format from cpp. Can I read the XML file in again in python and construct a numpy array? I know how to do it with a dolfin Vector, but is it possible with a std::vector<double>? I could not figure out the syntax, i tried # this is ok fn = File("data/norm.xml") div_vec = d.Vector() a = n.array((11,1)) # fails fn >> a # fails fn >> div_vec.array()Have you tried: fn >> div_vec a = div_vec.array()yes, that gives the error: *** Error: Handler stack not empty. Something is wrong!The format is then different for the Vector XML file and the std::vector file?if i write out a dolfin::Vector in xml, it's all fine with: fn = File("data/norm.xml") div_vec = d.Vector() fn >> div_vec a = div_vec.array() but if i write out a std::vector<double> in xml, I can't read it in.Silly question from a Python user: How do you write the std::vector to a XML file?You don't ;); DOLFIN does. It's overloaded in the XMLFile class. Well, anyway, i thought if dolfin can write out a std::vector to xml via File/XMLFile, pydolfin can also read it in, but obviously not.I think you stumble across some unused code there. I am not sure but I think Ola implemented this for some debugging of the parallel interface. But I am not sure actually. If we had a typemap for std::vector <-> numpy array (which we could have, but desided we did not want...) we sould be able to do: somefile >> array somefile << array Where somefile will be file generated by XMLArray, which probably define a different XML interfaces than XMLVector.Input/output is implemented for the Array class so it would be appropriate to use that. It was implemented to handle input/output for parallel mesh data (stored in the data section of a mesh as MeshFunctions, Arrays and maps).OkCan someone remind me of why we don't have a typemap for numpy.array and dolfin::Array? Or what am I missing here?We have that, but the XMLArray read and writes std::vector, which typemaps we decided to ditch.The best solution is to use dolfin::Array in XMLArray. It will also simplify io of dolfin::Vector.Aha. I missed that. I suggest we support input/output for both dolfin::Array and std::vector. It should be possible to implement with a good deal of code reuse.Another thing, is it anything that prevent us to harmonize the xml format of an XMLArray and an XMLVector? Any potential issues during parallel? If so one should be able to do what Patrick did in the first place.Speaking of which, would it be possible to add a constructor to dolfin::Array that takes a std::vector? std::vector<int> x(10); dolfin::Array<int> xx(x); ? I have been missing that on a few occasions.That should be possible with copying of data of course.I meant without copying. Isn't that one of the main points with the Array class that it is flexible in terms of ownership? -- Anders ------------------------------------------------------------------------ _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@xxxxxxxxxxxxxxxxxxx Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp
Thread Previous • Date Previous • Date Next • Thread Next |