← Back to team overview

dolfin team mailing list archive

Re: [HG DOLFIN] PyDOLFIN update for new Function interface

 

On Tuesday 06 October 2009 23:49:22 Garth N. Wells wrote:
> Johan Hake wrote:
> > On Tuesday 06 October 2009 23:42:52 Garth N. Wells wrote:
> >> Johan Hake wrote:
> >>> On Tuesday 06 October 2009 23:33:39 DOLFIN wrote:
> >>>> One or more new changesets pushed to the primary dolfin repository.
> >>>> A short summary of the last three changesets is included below.
> >>>>
> >>>> changeset:   7297:91e8cb87b971
> >>>> tag:         tip
> >>>> user:        "Garth N. Wells <gnw20@xxxxxxxxx>"
> >>>> date:        Tue Oct 06 22:33:27 2009 +0100
> >>>> files:       dolfin/swig/function_pre.i
> >>>> description:
> >>>> PyDOLFIN update for new Function interface
> >>>>
> >>>> %rename(eval_data) dolfin::GenericFunction::eval(double* values, const
> >>>>  Data& data) const;
> >>>>
> >>>> I changed this to 'GenericFunction' from 'Function'. Should it be
> >>>>
> >>>> %rename(eval_data) dolfin::Function::eval(double* values, const Data&
> >>>> data) const;
> >>>>  %rename(eval_data) dolfin::Expression::eval(double* values, const
> >>>>  Data& data) const;
> >>>
> >>> Probably just the last one. It is this that is overloaded from Python.
> >>>
> >>> Do not see the immediate point of renaming GenericFunction.eval_data.
> >>
> >> This change fixed my problem with
> >>
> >> "Exception: Swig director method error. Error detected when calling
> >> 'Expression.eval'"
> >
> > Subtle... but great!
> 
> But is it correct to rename the function in the base class, or should I
> have done
> 
> %rename(eval_data) dolfin::Function::eval(double* values, const Data&
> data) const;
> 
> %rename(eval_data) dolfin::Expression::eval(double* values, const Data&
> data) const;

Beats me. 

I thought it was enough to rename Expression, as it is the only one we need to 
overload from Python. We rename it so SWIG can figure out which eval we 
overload.

But SWIG does a lot of stuff behind the scene here. Call are dispatched up and 
down class hierarchy, from python to cpp and back, so I can only guess.

Trial and error, together with documentation of why one ends up with any 
directive in the SWIG interface files has worked for me.

Johan
 
> ?
> 
> Garth
> 
> > Johan
> >
> >> Garth
> >>
> >>> Johan
> >>>
> >>>> ?
> >>>>
> >>>>
> >>>> changeset:   7296:043de1021325
> >>>> user:        "Garth N. Wells <gnw20@xxxxxxxxx>"
> >>>> date:        Tue Oct 06 22:09:52 2009 +0100
> >>>> files:       dolfin/swig/docstrings.i dolfin/swig/fem_pre.i
> >>>> description:
> >>>> Some updates for new function interface.
> >>>>
> >>>>
> >>>> changeset:   7295:57d4ab05d93b
> >>>> user:        Anders Logg <logg@xxxxxxxxx>
> >>>> date:        Tue Oct 06 22:45:01 2009 +0200
> >>>> files:       dolfin/function/Function.cpp
> >>>> description:
> >>>> Remove warning in compute_vertex_values
> >>>>
> >>>> ----------------------------------------------------------------------
> >>>> For more details, visit http://www.fenics.org/hg/dolfin
> >>>> _______________________________________________
> >>>> DOLFIN-dev mailing list
> >>>> DOLFIN-dev@xxxxxxxxxx
> >>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> >>>
> >>> _______________________________________________
> >>> DOLFIN-dev mailing list
> >>> DOLFIN-dev@xxxxxxxxxx
> >>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> 


Follow ups

References