dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #12472
Re: STLVectorUInt in PyDOLFIN
On Wed, Mar 04, 2009 at 02:06:53PM +0100, Johan Hake wrote:
> On Wednesday 04 March 2009 13:50:18 Anders Logg wrote:
> > On Wed, Mar 04, 2009 at 01:39:10PM +0100, Johan Hake wrote:
> > > On Wednesday 04 March 2009 13:34:17 Anders Logg wrote:
> > > > On Wed, Mar 04, 2009 at 01:28:10PM +0100, Johan Hake wrote:
> > > > > On Wednesday 04 March 2009 13:17:37 Garth N. Wells wrote:
> > > > > > When running demo/mesh/intersection/demo.py, I get
> > > > > >
> > > > > > Traceback (most recent call last):
> > > > > > File "demo.py", line 33, in <module>
> > > > > > cells = STLVectorUInt()
> > > > > > NameError: name 'STLVectorUInt' is not defined
> > > > > >
> > > > > > Any ideas?
> > > > >
> > > > > Should be fixed now
> > > >
> > > > How is the STL integration with Python lists? The optimal thing would
> > > > be if one could write
> > > >
> > > > cells = omega0.intersection(boundary, False)
> > > >
> > > > instead of
> > > >
> > > > cells = STLVectorUInt()
> > > > omega0.intersection(boundary, cells, False)
> > > >
> > > > and cells would be a Python list.
> > >
> > > Agree on this.
> > >
> > > Should be doable with the right typemaps.
> > >
> > > I can fix it but not right now...
> >
> > ok, nice.
> >
> > > Is this the only place where we use STLVectorFoo?
> >
> > Yes, at least in the demos. It (std::vector) appears in quite a few
> > places now in function calls in the C++ interface, but it's mostly
> > invisible from Python. For example, the Assembler uses this but it's
> > wrapped and handled from Python with standard Python lists or tuples.
>
> Ok, I see that it is needed in assemble_system and VariationalProblem also use
> it. I think it would be doable to remove all these from the python interface,
> with a proper typemap.
>
> I could e.g. add a typemap macro for all type Foo, that we want to be able to
> pass to the c++ as std::vector<Foo>, using any iterable from python, e.g.,
> tuple, list and numpy arrays.
Sounds good.
> The output typemap of intersection detector will probably need some extra
> attention.
>
> Johan
Is there a nice way to handle those cases where functions return
something. Another such example is eval() in Function which now
requires the value as an argument. The demo function/eval/python/
looks pretty silly now:
x = array((0.31, 0.32, 0.33))
values = array((0.0,))
f.eval(values, x)
Instead of just
x = array((0.31, 0.32, 0.33))
values = f.eval(x)
--
Anders
Attachment:
signature.asc
Description: Digital signature
Follow ups
References