41 #ifndef DTK_L2PROJECTIONOPERATOR_HPP 42 #define DTK_L2PROJECTIONOPERATOR_HPP 44 #include "DTK_EntityIterator.hpp" 45 #include "DTK_IntegrationPointSet.hpp" 46 #include "DTK_MapOperator.hpp" 47 #include "DTK_Types.hpp" 49 #include <Teuchos_Array.hpp> 50 #include <Teuchos_ParameterList.hpp> 51 #include <Teuchos_RCP.hpp> 53 #include <Tpetra_CrsMatrix.hpp> 55 #include <Thyra_LinearOpBase.hpp> 73 typedef typename Base::Root Root;
74 typedef typename Root::scalar_type Scalar;
75 typedef typename Root::local_ordinal_type LO;
76 typedef typename Root::global_ordinal_type GO;
77 typedef typename Base::TpetraMultiVector TpetraMultiVector;
78 typedef typename Base::TpetraMap TpetraMap;
84 const Teuchos::RCP<const TpetraMap> &range_map,
85 const Teuchos::ParameterList ¶meters );
108 void setupImpl(
const Teuchos::RCP<FunctionSpace> &domain_space,
109 const Teuchos::RCP<FunctionSpace> &range_space )
override;
115 const TpetraMultiVector &X, TpetraMultiVector &Y,
116 Teuchos::ETransp mode = Teuchos::NO_TRANS,
117 double alpha = Teuchos::ScalarTraits<double>::one(),
118 double beta = Teuchos::ScalarTraits<double>::zero() )
const override;
123 bool hasTransposeApplyImpl()
const override;
127 void assembleMassMatrix(
128 const Teuchos::RCP<FunctionSpace> &range_space,
130 Teuchos::RCP<Tpetra::CrsMatrix<double, LO, GO>> &mass_matrix,
131 Teuchos::RCP<IntegrationPointSet> &range_ip_set );
134 void assembleCouplingMatrix(
135 const Teuchos::RCP<FunctionSpace> &domain_space,
137 const Teuchos::RCP<IntegrationPointSet> &range_ip_set,
138 Teuchos::RCP<Tpetra::CrsMatrix<double, LO, GO>> &coupling_matrix );
145 Teuchos::ParameterList d_search_list;
148 Teuchos::RCP<const Thyra::LinearOpBase<double>> d_l2_operator;
157 #endif // end DTK_L2PROJECTIONOPERATOR_HPP Entity iterator interface.
MapOperator Base
Root class tyepdef.
L2ProjectionOperator(const Teuchos::RCP< const TpetraMap > &domain_map, const Teuchos::RCP< const TpetraMap > &range_map, const Teuchos::ParameterList ¶meters)
Constructor.
void applyImpl(const TpetraMultiVector &X, TpetraMultiVector &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, double alpha=Teuchos::ScalarTraits< double >::one(), double beta=Teuchos::ScalarTraits< double >::zero()) const override
Apply the operator.