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,
57 void ResetIntegrationRules(GetIntegratorsFn get_integrators);
59 static inline int absdof(
int i) {
return i < 0 ? -1-i : i; }
189 template <
typename SolverType>
223 template <
typename... Args>
235 template <
typename... Args>
237 :
LORSolver(*lor_.GetAssembledSystem(), lor_, args...) { }
253 for (
int i=0; i<x.
Size(); ++i)
254 {
px[i] = p[i] < 0 ? -x[-1-p[i]] : x[p[i]]; }
258 for (
int i=0; i<y.
Size(); ++i)
261 int s = pi < 0 ? -1 : 1;
262 y[pi < 0 ? -1-pi : pi] = s*
py[i];
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.
void SetSize(int s)
Resize the vector to size s.
Pointer to an Operator of a specified type.
FiniteElementSpace & fes_ho
Container class for integration rules.
int Size() const
Returns the size of the vector.
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.
void UsePermutation(bool use_permutation_)
Enable or disable the DOF permutation (enabled by default).
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...
FiniteElementSpace & GetFESpace() const
Returns the low-order refined finite element space.
void SetupNonconforming()
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.
double p(const Vector &x, double t)
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.
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 AssembleSystem(BilinearForm &a_ho, const Array< int > &ess_dofs)
Assembles the LOR system.
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_)
bool RequiresDofPermutation() const
SparseMatrix & GetAssembledMatrix() const
Return the assembled LOR operator as a SparseMatrix.
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...