28 using AddIntegratorMarkersFn =
33 std::map<BilinearFormIntegrator*, const IntegrationRule*> ir_map;
41 GetIntegratorsFn get_integrators,
42 AddIntegratorFn add_integrator,
50 GetIntegratorsFn get_integrators,
51 GetMarkersFn get_markers,
52 AddIntegratorMarkersFn add_integrator_marker,
53 AddIntegratorFn add_integrator,
58 void ResetIntegrationRules(GetIntegratorsFn get_integrators);
60 static inline int absdof(
int i) {
return i < 0 ? -1-i : i; }
194 template <
typename SolverType>
225 template <
typename... Args>
237 template <
typename... Args>
239 :
LORSolver(*lor_.GetAssembledSystem(), lor_, args...) { }
Abstract base class for LORDiscretization and ParLORDiscretization classes, which construct low-order...
LORDiscretization(BilinearForm &a_ho, const Array< int > &ess_tdof_list, int ref_type=BasisType::GaussLobatto)
Construct the low-order refined version of a_ho using the given list of essential DOFs...
const OperatorHandle & GetAssembledSystem() const
Returns the assembled LOR system.
Create and assemble a low-order refined version of a ParBilinearForm.
Class for an integration rule - an Array of IntegrationPoint.
FESpaceType GetFESpaceType() const
Returns the type of finite element space: H1, ND, RT or L2.
int GetLOROrder() const
Returns the order of the LOR space. 1 for H1 or ND, 0 for L2 or RT.
Pointer to an Operator of a specified type.
FiniteElementSpace & fes_ho
Container class for integration rules.
const Array< int > & GetDofPermutation() const
Returns the permutation that maps LOR DOFs to high-order DOFs.
Abstract parallel finite element space.
HypreParMatrix & GetAssembledMatrix() const
Return the assembled LOR operator as a HypreParMatrix.
Create and assemble a low-order refined version of a BilinearForm.
LORSolver(ParBilinearForm &a_ho, const Array< int > &ess_tdof_list, int ref_type=BasisType::GaussLobatto)
Create a solver of type SolverType, formed using the assembled HypreParMatrix of the LOR version of a...
bool HasSameDofNumbering() const
void AssembleSystem(BilinearForm &a_ho, const Array< int > &ess_dofs)
Assembles the LOR system corresponding to a_ho.
FiniteElementSpace & GetFESpace() const
Returns the low-order refined finite element space.
void SetupProlongationAndRestriction()
void SetOperator(const Operator &op)
Set/update the solver for the given operator.
LORSolver(LORBase &lor_, Args &&...args)
Create a solver of type SolverType using the assembled LOR operator represented by lor_...
SolverType & GetSolver()
Access the underlying solver.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
Collection of finite elements from the same family in multiple dimensions. This class is used to matc...
LORSolver(const Operator &op, LORBase &lor_, Args &&...args)
Create a solver of type SolverType using Operator op and arguments args.
void AssembleSystem(ParBilinearForm &a_ho, const Array< int > &ess_dofs)
Assembles the LOR system corresponding to a_ho.
const SolverType & GetSolver() const
Access the underlying solver.
void Mult(const Vector &x, Vector &y) const
Operator application: y=A(x).
void ConstructDofPermutation() const
int height
Dimension of the output / number of rows in the matrix.
ParFiniteElementSpace & GetParFESpace() const
Return the LOR ParFiniteElementSpace.
FiniteElementCollection * fec
ParLORDiscretization(ParBilinearForm &a_ho, const Array< int > &ess_tdof_list, int ref_type=BasisType::GaussLobatto)
Construct the low-order refined version of a_ho using the given list of essential DOFs...
void ConstructLocalDofPermutation(Array< int > &perm_) const
LORSolver(BilinearForm &a_ho, const Array< int > &ess_tdof_list, int ref_type=BasisType::GaussLobatto)
Create a solver of type SolverType, formed using the assembled SparseMatrix of the LOR version of a_h...
LORBase(FiniteElementSpace &fes_ho_)
SparseMatrix & GetAssembledMatrix() const
Return the assembled LOR operator as a SparseMatrix.
void AssembleSystem_(BilinearForm &a_ho, const Array< int > &ess_dofs)
const LORBase & GetLOR() const
Access the LOR discretization object.
Wrapper for hypre's ParCSR matrix class.
int width
Dimension of the input / number of columns in the matrix.
Represents a solver of type SolverType created using the low-order refined version of the given Bilin...