On Tue, Aug 24, 2010 at 01:25:56AM +0200, Benjamin Kehlet wrote: > Johan Hake wrote: > >On Monday August 23 2010 15:59:15 Benjamin Kehlet wrote: > >>Hello! > >> > >>I have been trying to get the python wrappes of the ODE solvers in place > >>again and learn more about Swig. The wrappers have been broken since the > >>change from uBLASVector to real*. > >> > >>Dolfin needs to call functions implemented on the python side, so > >>directors are needed. This simple typemap seems to do the job: > >> > >>%typemap(directorin) double* ODE_ARGIN > >>{ > >> // Get the length of the arrays > >> int n = size(); > >> $input = PyArray_SimpleNewFromData(1, &n, NPY_DOUBLE, $1_name); > >>} > >> > >>Some questions from a Swig newbie: Is this the preferred way of doing this? > >>Note that the typemap have to call size() (a member function of class > >>ODE) to get the length of the array, so I guess it is not possible to > >>use a more generic typemap. > > > >This is why we instroduced the dolfin::Array class. So > >speciallized typemaps like this could be avoided. > > > >Is there any way you can port the ODE interface to using > >dolfin::Array instead? Then most of the typemaps should be inplace > >already. > > That shouldn't be too complicated. Or was there a reason for > changing to plain c arrays (and not dolfin::Array) in the first > place? Anders?
The reason was that we couldn't get uBLAS to use GMP types so we needed a more basic container like foo*, but the Array class would work fine for this. It would also provide a nicer interface for the user (since u etc will have a size). -- Anders > > > >>It seems to me that no "directorargout" typemap is needed when returning > >>arrays, since the numpy arrays are just wrapping the plain c array. Is > >>this safe? > > > >Yes I think so. > > > >>How should "const double*" be handled (I used a const_cast<double *> > >>when I tested it, to avoid compiler errors)? Is data copying needed here? > > > >Should not be any problem as Python does not know what const is. > > > >Johan > > > _______________________________________________ > Mailing list: https://launchpad.net/~dolfin > Post to : dolfin@lists.launchpad.net > Unsubscribe : https://launchpad.net/~dolfin > More help : https://help.launchpad.net/ListHelp -- Anders _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@lists.launchpad.net Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp