21 #ifndef bempp_preconditioner_factory_hpp
22 #define bempp_preconditioner_factory_hpp
24 #include "../common/common.hpp"
26 #include "bempp/common/config_trilinos.hpp"
30 #include "Teuchos_RCP.hpp"
31 #include "Thyra_PreconditionerBase.hpp"
32 #include "../assembly/discrete_boundary_operator.hpp"
33 #include "../assembly/discrete_blocked_boundary_operator.hpp"
34 #include "../assembly/boundary_operator.hpp"
35 #include "../common/shared_ptr.hpp"
36 #include "../fiber/scalar_traits.hpp"
47 template<
typename ValueType>
51 typedef Teuchos::RCP<const Thyra::PreconditionerBase<ValueType> >
52 TeuchosPreconditionerPtr;
53 typedef shared_ptr<const DiscreteBoundaryOperator<ValueType> >
54 DiscreteBoundaryOperatorPtr;
62 inline const TeuchosPreconditionerPtr&
get()
const {
return m_precPtr;}
65 TeuchosPreconditionerPtr m_precPtr;
70 template<
typename ValueType>
76 template<
typename ValueType>
78 discreteBlockDiagonalPreconditioner(
79 const std::vector<shared_ptr<
Traits of scalar types.
Definition: scalar_traits.hpp:40
Discrete boundary operator.
Definition: assembled_potential_operator.hpp:33
A simple container class to hold pointers to preconditioners.
Definition: preconditioner.hpp:48
Preconditioner< ValueType > discreteOperatorToPreconditioner(const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &discreteOperator)
Create a preconditioner from a discrete operator.
Definition: preconditioner.cpp:56