[Trilinos-Users] [EXTERNAL] Running Rythmos DAE with a user defined Epetra_Operator as Jacobian

Andrea Mola amola at sissa.it
Mon May 5 10:34:18 MDT 2014

I am currently using version 11.2.3, but maybe the issue isn't there. I 
realized the problem was most likely my fault. The create_W method in 
the model evaluator class was returning an Epetra_CrsMatrix. I never 
called that method, so I din't know it was effectively used. 
Nonetheless, I now run into a further exception

terminate called after throwing an instance of 'std::logic_error'

Throw number = 1

Throw test that evaluated to true: !allFuncsWhereScaled

Error, we can not currently handle epetra output objects that could not 
be scaled.  Special code will have to be added to handle this (i.e. 
using implicit diagonal and multiplied linear operators to implicitly do 
the scaling.

which is maybe called because in my operator some methods are not 
properly set.
However, given the possible preconditioning problems you are hinting at, 
I'm converting everything into a Thyra model evaluator, as previously 
suggested by Roscoe.
Thanks for the help.


On 2014-05-05 16:36, Phipps, Eric T wrote:
> Andrea,
> What version of Trilinos are you using?  I believe Andy Salinger 
> recently
> fixed some of these issues when using an Epetra_Operator generated from 
> an
> EpetraExt::ModelEvaluator in Rythmos.  However I believe those fixes 
> are
> only in the development branch which should be accessible from the 
> public
> git repository.  Even with the fix for the failed dynamic casts,
> there may still be an issue with supplying a user-defined 
> preconditioner
> to Rythmos.
> -Eric
> On 5/5/14, 7:45 AM, "Andrea Mola" <amola at sissa.it> wrote:
>> Dear all,
>> I am trying to use Ryrhmos to solve a DAE system for the time
>> advancement of a PDE system.
>> So far, I have already been able to set up a small example which 
>> solves
>> correctly a small DAE using a Jacobian defined as an Epetra_CrsMatrix.
>> Unfortunately, I need to use a different Linear Operator, which I 
>> define
>> as an Epetra_Operator (JacobianOperator :public Epetra_Operator). The
>> problem comes when I define my AztecOOLinearOpWithSolveFactory to be
>> passed to my EpetraExt::ModelEvaluator constructor. Even though I try 
>> to
>> specify through the Thyra::initializeOp function that I will use a
>> JacobianOperator instead of an Epetra_CrsMatrix, it still seems to 
>> think
>> that the jacobian of my system is an Epetra_CrsMatrix. In fact, upon
>> execution, when the model evaluator calls for a Jacobian evaluation, 
>> the
>> dynamic cast
>> JacobianOperator &jac = dyn_cast<JacobianOperator>(*W_out);
>> fails with the following exception
>> terminate called after throwing an instance of 'Teuchos::m_bad_cast'
>>   what():
>> /home/amola/trilinos-11.2.3-Source/packages/teuchos/core/src/Teuchos_dyn_c
>> ast.cpp:61:
>> Throw number = 1
>> Throw test that evaluated to true: true
>> dyn_cast<16JacobianOperator>(15Epetra_Operator) : Error, the object 
>> with
>> the concrete type '16Epetra_CrsMatrix' (passed in through the 
>> interface
>> type '15Epetra_Operator')  does not support the interface
>> '16JacobianOperator' and the dynamic cast failed!
>> Aborted.
>> So, my question is: what should I do to be able to use an arbitrary
>> Epetra_Operator in an EpetraExt::ModelEvaluator? I am not very 
>> familiar
>> with the parameter lists, so probably the answer is there. Or,
>> Thyra::initializeOp is just the wrong function to do what I need. Can
>> anyone point me out an example that does that, or suggest me some
>> solution?
>> Thank you very much in advance for the help.
>> Regards,
>>     Andrea
>> _______________________________________________
>> Trilinos-Users mailing list
>> Trilinos-Users at software.sandia.gov
>> https://software.sandia.gov/mailman/listinfo/trilinos-users

More information about the Trilinos-Users mailing list