My Project
|
Adapter to combine a matrix and another linear operator into a combined linear operator. More...
#include <WellOperators.hpp>
Public Types | |
typedef M | matrix_type |
typedef X | domain_type |
typedef Y | range_type |
typedef X::field_type | field_type |
typedef Dune::CollectiveCommunication< int > | communication_type |
Public Member Functions | |
Dune::SolverCategory::Category | category () const override |
WellModelMatrixAdapter (const M &A, const Dune::LinearOperator< X, Y > &wellOper, const std::shared_ptr< communication_type > &comm=std::shared_ptr< communication_type >()) | |
constructor: just store a reference to a matrix | |
virtual void | apply (const X &x, Y &y) const override |
virtual void | applyscaleadd (field_type alpha, const X &x, Y &y) const override |
virtual const matrix_type & | getmat () const override |
Protected Attributes | |
const matrix_type & | A_ |
const Dune::LinearOperator< X, Y > & | wellOper_ |
std::shared_ptr< communication_type > | comm_ |
Adapter to combine a matrix and another linear operator into a combined linear operator.
Adapts a matrix A plus another linear operator W (typically from wells) to the assembled linear operator interface by returning S from getmat() and making apply() and applyscaleadd() apply both A and W to the input vector. In addition this is a parallel-aware adapter, that does not require the W operator to be parallel, but makes it into one by making the proper projections.