35#ifndef NEKTAR_LIB_MULTIREGIONS_PRECONDITIONERLOR_H
36#define NEKTAR_LIB_MULTIREGIONS_PRECONDITIONERLOR_H
47class PreconditionerLOR;
60 const std::shared_ptr<GlobalLinSys> &plinsys,
61 const std::shared_ptr<AssemblyMap> &pLocToGloMap)
75 const std::shared_ptr<GlobalLinSys> &plinsys,
87 const bool &isLocal =
false)
override;
93 static std::string
def;
#define MULTI_REGIONS_EXPORT
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
Low-order representation (LOR) preconditioner.
Array< OneD, int > m_ho2lor
Map from high-order node numbers to LOR representation.
bool m_verboseIter
Whether to be verbose.
MultiRegions::ContFieldSharedPtr m_lor_field
Field object for the LOR system.
bool m_useSimplex
Use a simplex distribution in the LOR system so that e.g. quadrilaterals are split into triangles.
GlobalLinSysSharedPtr m_LORLinSys
Linear solver for LOR system.
Array< OneD, NekDouble > m_invLinMeshMultiplicity
Inverse of multiplicity of each global DOF in the LOR mesh.
std::string m_slvType
Solution type for LOR space, DirectFull, IterativeFull, PETScFull.
void CreateInvMultiplicity(void)
~PreconditionerLOR() override
static PreconditionerSharedPtr create(const std::shared_ptr< GlobalLinSys > &plinsys, const std::shared_ptr< AssemblyMap > &pLocToGloMap)
Creates an instance of this class.
void v_DoPreconditioner(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const bool &isLocal=false) override
Apply a preconditioner to the conjugate gradient method.
static std::string lookupIds[]
void v_BuildPreconditioner() override
void v_InitObject() override
static std::string className
Name of class.
unsigned int m_nDir
Number of Dirichlet values on original mesh.
Array< OneD, NekDouble > m_invMultiplicity
Inverse of multiplicity of each global DOF in the high-order mesh.
SpatialDomains::MeshGraphSharedPtr m_lor_graph
MeshGraph for the LOR system.
bool m_equiSpaced
Flag that determines whether to use equispaced point distributions or GLL.
std::shared_ptr< GlobalLinSys > GlobalLinSysSharedPtr
Pointer to a GlobalLinSys object.
std::shared_ptr< Preconditioner > PreconditionerSharedPtr
std::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
std::shared_ptr< ContField > ContFieldSharedPtr
std::shared_ptr< MeshGraph > MeshGraphSharedPtr