My Project
Opm::WellModelAsLinearOperator< WellModel, X, Y > Class Template Reference

Linear operator wrapper for well model. More...

#include <WellOperators.hpp>

Inheritance diagram for Opm::WellModelAsLinearOperator< WellModel, X, Y >:

Public Types

using Base = Dune::LinearOperator< X, Y >
 
using field_type = typename Base::field_type
 

Public Member Functions

 WellModelAsLinearOperator (const WellModel &wm)
 
void apply (const X &x, Y &y) const override
 apply operator to x: $ y = A(x) $ The input vector is consistent and the output must also be consistent on the interior+border partition.
 
virtual void applyscaleadd (field_type alpha, const X &x, Y &y) const override
 apply operator to x, scale and add: $ y = y + \alpha A(x) $
 
Dune::SolverCategory::Category category () const override
 Category for operator. More...
 

Detailed Description

template<class WellModel, class X, class Y>
class Opm::WellModelAsLinearOperator< WellModel, X, Y >

Linear operator wrapper for well model.

This class is intended to hide the actual type of the well model (which depends on a TypeTag) by making a simple linear operator wrapper. That way the WellModelMatrixAdapter template does not need the concrete WellModel type, and we can avoid instantiating WellModelMatrixAdapter separately for each TypeTag, as it will only depend on the matrix and vector types involved, which typically are just one for each block size with block sizes 1-4.

Member Function Documentation

◆ category()

template<class WellModel , class X , class Y >
Dune::SolverCategory::Category Opm::WellModelAsLinearOperator< WellModel, X, Y >::category ( ) const
inlineoverride

Category for operator.

This is somewhat tricky, I consider this operator sequential since (unlike WellModelMatrixAdapter) it does not do any projections etc. but only forwards the calls to the sequential well model.


The documentation for this class was generated from the following file: