47 #include "Teko_BlockPreconditionerFactory.hpp"
49 #include "Teko_Preconditioner.hpp"
50 #include "Teko_InverseLibrary.hpp"
52 #include "Thyra_DefaultPreconditioner.hpp"
54 using namespace Thyra;
60 LinearOp BlockPreconditionerFactory::buildPreconditionerOperator(LinearOp &lo,
63 RCP<LinearOpBase<double> > loA = Teuchos::rcp_const_cast<Thyra::LinearOpBase<double> >(lo);
64 BlockedLinearOp A = Teuchos::rcp_dynamic_cast<Thyra::PhysicallyBlockedLinearOpBase<double> >(loA);
68 return buildPreconditionerOperator(A, dynamic_cast<BlockPreconditionerState &>(state));
72 bool BlockPreconditionerFactory::isCompatible(
73 const Thyra::LinearOpSourceBase<double> &fwdOpSrc)
const {
74 RCP<const Thyra::PhysicallyBlockedLinearOpBase<double> > A =
75 Teuchos::rcp_dynamic_cast<
const Thyra::PhysicallyBlockedLinearOpBase<double> >(
77 return A != Teuchos::null;
An implementation of a state object preconditioners.
virtual void setInitialized(bool init=true)