← Back to team overview

dolfin team mailing list archive

Re: uBLASKrylovMatrix and Python callbacks: now the fun begins

 

On Monday 13 April 2009 22:23:12 Robert Kirby wrote:
> I didn't see it as a sub of cpp.  thanks for pointing that out.  no_prec is
> a better namegiven what "None" means in python.

I think that it was not imported to the main dolfin namespace because of it 
resemblens to the Python None. 

Untill we have settled the enum vs string vs parameters we can just declare a 
variable in the PyDOLFIN namespace

  no_prec = 0

which would work fine in this case as the enums from DOLFIN is mapped to 
integer variables in Python.

Johan

> On Mon, Apr 13, 2009 at 3:00 PM, Johan Hake <hake@xxxxxxxxx> wrote:
> > On Monday 13 April 2009 21:32:22 Robert Kirby wrote:
> > > Aha.  I forgot about the inheritance issue.This should die on forming
> > > an ILU since I don't have matrix values.
> > >
> > > doflin::none is not exposed to PyDOLFIN, so I can't set the
> >
> > preconditioner
> >
> > > to do nothing rather than attempt to compute an ILU.
> >
> > It is exposed to dolfin.cpp. You can for example do:
> >
> >  dolfin.uBLASKrylovSolver( dolfin.gmres, dolfin.cpp.none )
> >
> > We can allways expose it to dolfin too but however I am not sure "none"
> > is a
> > good name. Maybe "no_prec" is better?
> >
> > Johan
> >
> > > Thanks,
> > > Rob
> > >
> > > On Mon, Apr 13, 2009 at 2:30 PM, Johan Hake <hake@xxxxxxxxx> wrote:
> > > > On Wednesday 08 April 2009 23:15:42 Robert Kirby wrote:
> > > > > Hi all,I've gotten a prototype working where I construct
> > > > > a uBLASSparseMatrix and get it to compute the same result as my
> > > > > matrix-free uBLASKrylovMatrix.  Both of these are constructed
> > > > > in PyDOLFIN.  However, I can feed the uBLASSparseMatrix
> > > > > I construct into a dolfin.uBLASKrylovSolver solve method,
> > > > > but I get a type error when I try to put my
> > > > > uBLASKrylovMatrix with mult and dim implemented in Python
> > > > > into the solver.
> > > > >
> > > > > In fact, I get a
> > > > >
> > > > > TypeError: in method 'uBLASKrylovSolver_solve', argument 2 of type
> > > > > 'dolfin::uBLASKrylovMatrix const &'
> > > >
> > > > You need to call:
> > > >
> > > >  dolfin.uBLASKrylovMatrix.__init__(self)
> > > >
> > > > to initialize the super class.
> > > >
> > > > When I did this I got a bit further. Now an assertion is triggered:
> > > >
> > > > *** Assertion (_x.size() == _M.size1())
> > > >    [at dolfin/la/uBLASILUPreconditioner.cpp:41 in solve()]
> > > >
> > > > Johan
> > > >
> > > > > Not very revealing.  I've attached a horribly ugly source code for
> > > > > anyone interested in doing a post-mortem on this.
> > > > >
> > > > > Thanks,
> > > > > Rob




Follow ups

References