44      typename LumpedMatrixA_,
 
   62      typedef typename LumpedMatrixA_::DataType 
DataType;
 
   78      static constexpr bool is_global = 
true;
 
   79      static constexpr bool is_local = 
false;
 
  114        const LumpedMatrixA_& lumped_matrix_a_,
 
  115        const MatrixB_& matrix_b_,
 
  116        const MatrixD_& matrix_d_,
 
  117        const FilterA_& filter_a_) :
 
  122        _vec_ml(lumped_matrix_a_.
clone(LAFEM::CloneMode::Layout)),
 
  123        _vec_mr(lumped_matrix_a_.
clone(LAFEM::CloneMode::Layout))
 
  143      void update_lumped_a(
const LumpedMatrixA_& lumped_matrix_a_)
 
  258        if(diag.get_gate() != 
nullptr && !diag.get_gate()->_ranks.empty() )
 
  262          typename MatrixB_::LocalMatrixType matrix_b1(
matrix_b.convert_to_1());
 
#define ASSERT(expr)
Debug-Assertion macro definition.
Symmetric lumped Schur complement matrix.
std::size_t bytes() const
Returns the total amount of bytes allocated.
VectorTypeL create_vector_l() const
Returns a left-vector.
virtual ~SymmetricLumpedSchurMatrix()
Virtual destructor.
void apply(VectorTypeL &r, const VectorTypeR &x, const VectorTypeL &y, const DataType alpha=DataType(1)) const
Calculate .
SymmetricLumpedSchurMatrix clone(LAFEM::CloneMode mode=LAFEM::CloneMode::Weak) const
Clone operation.
void apply(VectorTypeL &r, const VectorTypeR &x) const
Calculate .
void extract_diag(VectorTypeL &diag, bool sync=true) const
Extracts the diagonal.
const MatrixD_ & matrix_d
D = B^T.
MatrixB_::GateColType GateColType
The column-gate type (used by SFINAE)
MatrixB_::VectorTypeR VectorTypeR
The vector for right-multiplication with S.
MatrixD_ MatrixTypeD
The type of D = B^T.
VectorTypeML _vec_ml
Buffer vector for receiving v <- x^T A.
MatrixD_::GateRowType GateRowType
The row-gate type (used by SFINAE)
Index columns() const
Gets the total number of columns in this matrix.
VectorTypeR create_vector_r() const
Returns a right-vector.
const FilterA_ & filter_a
The filter for a.
VectorTypeMR _vec_mr
Buffer vector for receiving v <- A x.
SymmetricLumpedSchurMatrix(const LumpedMatrixA_ &lumped_matrix_a_, const MatrixB_ &matrix_b_, const MatrixD_ &matrix_d_, const FilterA_ &filter_a_)
Constructor.
void preproc_rhs(VectorTypeML &r, const VectorTypeMR &x) const
Calculate .
LumpedMatrixA_ LumpedMatrixTypeA
The type of A = diag(a)
MatrixD_::VectorTypeL VectorTypeL
The vector for left-multiplication with S.
MatrixB_ MatrixTypeB
The type of B.
FilterA_ FilterTypeA
The filter for A.
Index used_elements() const
Returns the total number of non-zeros in this matrix.
LumpedMatrixA_::DataType DataType
The floating point precision.
LumpedMatrixA_ VectorTypeML
The left-vector type for A.
Index rows() const
Gets the total number of rows in this matrix.
const MatrixB_ & matrix_b
B.
LumpedMatrixA_ VectorTypeMR
The right-vector type for A.
LumpedMatrixA_ inv_lumped_matrix_a
A = diag(a)
std::uint64_t Index
Index data type.