On 18 November 2011 19:28, Garth N. Wells <gn...@cam.ac.uk> wrote: > On 18 November 2011 16:43, Garth N. Wells <gn...@cam.ac.uk> wrote: >> On 18 November 2011 16:19, Johan Hake <johan.h...@gmail.com> wrote: >>> This error should have been picked up by a buildbot as: >>> >>> demo/undomcumented/trilinos/python >>> >>> also fails. I think we need to sort out the PyTrilinos linking bug first as >>> Garth suggested >> >> Fix is on its way. >> > > Try it now. The PyTrilinos demo is working again.
Works for me now, with and without the cbc.block patch Joachim sent. Martin > Garth > >> Garth >> >>> and then look for other sources. >>> >>> Johan >>> >>> On Friday November 18 2011 07:20:23 Martin Sandve Alnæs wrote: >>>> The problem is that dolfin.cpp.EpetraMatrix.mat() returns a >>>> SwigPyObject instead of a PyTrilinos.Epetra.FECrsMatrix. >>>> >>>> With your cbc.block patch, I'm running the following code: >>>> >>>> print type(Puu) >>>> >>>> A = dolfin.down_cast(Puu) >>>> print type(A) >>>> >>>> B = A.mat() >>>> print type(B) >>>> >>>> C = PyTrilinos.ML.MultiLevelPreconditioner(B, 0) >>>> print type(C) >>>> >>>> With dolfin/1.0.x -r6439 I get: >>>> >>>> <class 'dolfin.cpp.Matrix'> >>>> <class 'dolfin.cpp.EpetraMatrix'> >>>> <class 'PyTrilinos.Epetra.FECrsMatrix'> >>>> <class 'PyTrilinos.ML.MultiLevelPreconditioner'> >>>> >>>> With dolfin/1.0.x -r6447 I get: >>>> >>>> <class 'dolfin.cpp.Matrix'> >>>> <class 'dolfin.cpp.EpetraMatrix'> >>>> <type 'SwigPyObject'> >>>> Traceback (most recent call last): >>>> File "/home/martinal/dev/cbc/invbench/scripts/invbench", line 5, in >>>> <module> simfra.introrun.run(locals()) >>>> File "/home/martinal/dev/cbc/invbench/src/simfra/introrun.py", line 79, >>>> in run return func(**kwargs) >>>> File "/home/martinal/dev/cbc/invbench/src/invbench/oneshot.py", line >>>> 160, in case_fruitfly_oneshotblock >>>> C = PyTrilinos.ML.MultiLevelPreconditioner(B, 0) >>>> File >>>> "/home/martinal/opt/fenics/dorsal-unstable/lib/python2.7/site-packages/PyT >>>> rilinos/ML.py", line 1442, in __init__ >>>> this = _ML.new_MultiLevelPreconditioner(*args) >>>> NotImplementedError: Wrong number or type of arguments for overloaded >>>> function 'new_MultiLevelPreconditioner'. >>>> Possible C/C++ prototypes are: >>>> >>>> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(Epetra_RowMa >>>> trix const &,bool const) >>>> >>>> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(Epetra_RowMa >>>> trix const &,Teuchos::ParameterList const &,bool const) >>>> >>>> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(ML_Operator >>>> *,Teuchos::ParameterList const &,bool const) >>>> >>>> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(ML_Operator >>>> *,Teuchos::ParameterList const &,Epetra_RowMatrix >>>> **,Teuchos::ParameterList *,int,bool const) >>>> >>>> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(Epetra_RowMa >>>> trix const &,Epetra_RowMatrix const &,Epetra_RowMatrix const >>>> &,Teuchos::ParameterList const &,bool const,bool const) >>>> >>>> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(Epetra_RowMa >>>> trix const &,Epetra_RowMatrix const &,Epetra_RowMatrix const >>>> &,Epetra_RowMatrix const &,Teuchos::ParameterList const &,bool const) >>>> >>>> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(Epetra_MsrMa >>>> trix const &,ML_Operator *,AZ_MATRIX *,int *,Teuchos::ParameterList const >>>> &,bool const) >>>> >>>> >>>> Martin >>>> >>>> On 18 November 2011 16:03, Joachim Berdal Haga <j...@simula.no> wrote: >>>> >> self.ml_prec = MultiLevelPreconditioner(A.down_cast().mat(), 0) >>>> > >>>> > I assume Puu is a dolfin.GenericMatrix, so this should be equivalent to >>>> > PyTrilinos.ML.MultiLevelPreconditioner(dolfin.down_cast(Puu).mat(), 0) >>>> > and the only reason I can see for that to fail is if the returned matrix >>>> > from dolfin isn't (recognised as) an Epetra matrix. >>>> > Does the explicit call above give the same error? If so, what is the type >>>> > of the down_cast(Puu).mat()? >>>> > -j. >>>> > >>>> > On 18 November 2011 15:47, Martin Sandve Alnæs <marti...@simula.no> >>>> > wrote: >>>> >> On 18 November 2011 13:52, Joachim Berdal Haga <j...@simula.no> wrote: >>>> >> > Yep, sorry, forgot the list. Here's a patch for cbc.block which >>>> >> > removes the >>>> >> > workaround, can you see if it helps? >>>> >> > -j. >>>> >> >>>> >> Now I get: >>>> >> >>>> >> Traceback (most recent call last): >>>> >> File "/home/martinal/dev/cbc/invbench/scripts/invbench", line 5, in >>>> >> <module> >>>> >> simfra.introrun.run(locals()) >>>> >> File "/home/martinal/dev/cbc/invbench/src/simfra/introrun.py", line 79, >>>> >> in run >>>> >> return func(**kwargs) >>>> >> File "/home/martinal/dev/cbc/invbench/src/invbench/oneshot.py", line >>>> >> 168, in case_fruitfly_oneshotblock >>>> >> P = block_mat([[ML(Puu), 0, 0], >>>> >> File >>>> >> "/home/martinal/opt/fenics/dorsal-unstable/lib/python2.7/site-packages/b >>>> >> lock/algebraic/trilinos/MLPrec.py", line 25, in __init__ >>>> >> self.ml_prec = MultiLevelPreconditioner(A.down_cast().mat(), 0) >>>> >> File >>>> >> "/home/martinal/opt/fenics/dorsal-unstable/lib/python2.7/site-packages/P >>>> >> yTrilinos/ML.py", line 1442, in __init__ >>>> >> this = _ML.new_MultiLevelPreconditioner(*args) >>>> >> NotImplementedError: Wrong number or type of arguments for overloaded >>>> >> function 'new_MultiLevelPreconditioner'. >>>> >> Possible C/C++ prototypes are: >>>> >> >>>> >> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(Epetra_Ro >>>> >> wMatrix const &,bool const) >>>> >> >>>> >> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(Epetra_Ro >>>> >> wMatrix const &,Teuchos::ParameterList const &,bool const) >>>> >> >>>> >> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(ML_Operat >>>> >> or *,Teuchos::ParameterList const &,bool const) >>>> >> >>>> >> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(ML_Operat >>>> >> or *,Teuchos::ParameterList const &,Epetra_RowMatrix >>>> >> **,Teuchos::ParameterList *,int,bool const) >>>> >> >>>> >> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(Epetra_Ro >>>> >> wMatrix const &,Epetra_RowMatrix const &,Epetra_RowMatrix const >>>> >> &,Teuchos::ParameterList const &,bool const,bool const) >>>> >> >>>> >> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(Epetra_Ro >>>> >> wMatrix const &,Epetra_RowMatrix const &,Epetra_RowMatrix const >>>> >> &,Epetra_RowMatrix const &,Teuchos::ParameterList const &,bool const) >>>> >> >>>> >> ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner(Epetra_Ms >>>> >> rMatrix const &,ML_Operator *,AZ_MATRIX *,int *,Teuchos::ParameterList >>>> >> const &,bool const) >>>> >> >>>> >> >>>> >> -- >>>> >> Martin >>>> >>>> _______________________________________________ >>>> Mailing list: https://launchpad.net/~dolfin >>>> Post to : dolfin@lists.launchpad.net >>>> Unsubscribe : https://launchpad.net/~dolfin >>>> More help : https://help.launchpad.net/ListHelp >>> >>> _______________________________________________ >>> Mailing list: https://launchpad.net/~dolfin >>> Post to : dolfin@lists.launchpad.net >>> Unsubscribe : https://launchpad.net/~dolfin >>> More help : https://help.launchpad.net/ListHelp >>> >> >> >> > > _______________________________________________ > Mailing list: https://launchpad.net/~dolfin > Post to : dolfin@lists.launchpad.net > Unsubscribe : https://launchpad.net/~dolfin > More help : https://help.launchpad.net/ListHelp > _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@lists.launchpad.net Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp