12#ifndef MFEM_BLOCK_FESPACE_OPERATOR
13#define MFEM_BLOCK_FESPACE_OPERATOR
28 using FESVector = std::vector<const FiniteElementSpace*>;
43 static int GetHeight(
const FESVector &fespaces);
45 static Array<int> GetBlockOffsets(
const FESVector &fespaces);
47 static Array<int> GetProColBlockOffsets(
const FESVector &fespaces);
49 static Array<int> GetResRowBlockOffsets(
const FESVector &fespaces);
Operator for block systems arising from different arbitrarily many finite element spaces.
const Operator * GetProlongation() const override
Prolongation operator from linear algebra (linear system) vectors, to input vectors for the operator....
void Mult(const Vector &x, Vector &y) const override
Operator application: y=A(x).
BlockFESpaceOperator(const FESVector &fespaces)
Constructor for BlockFESpaceOperator.
const Operator * GetRestriction() const override
Restriction operator from input vectors for the operator to linear algebra (linear system) vectors....
void SetBlock(int iRow, int iCol, Operator *op, real_t c=1.0)
Wraps BlockOperator::SetBlock. Eventually would like this class to inherit from BlockOperator instead...
A class to handle Block systems in a matrix-free implementation.
void Mult(const Vector &x, Vector &y) const override
Operator application.
void SetBlock(int iRow, int iCol, Operator *op, real_t c=1.0)
Add a block op in the block-entry (iblock, jblock).