51 "Full linear space and diagonal preconditioning");
61 const std::shared_ptr<GlobalLinSys> &plinsys,
94 ASSERTL0(isLocal ==
false,
"PreconditionerLinearWithDiag is only set up "
95 "for Global iteratives sovles");
#define ASSERTL0(condition, msg)
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
const std::weak_ptr< GlobalLinSys > m_linsys
std::weak_ptr< AssemblyMap > m_locToGloMap
void v_BuildPreconditioner() override
static std::string className
Name of class.
PreconditionerSharedPtr m_diagonalPrecon
PreconditionerSharedPtr m_linSpacePrecon
void v_InitObject() override
PreconditionerLinearWithDiag(const std::shared_ptr< GlobalLinSys > &plinsys, const AssemblyMapSharedPtr &pLocToGloMap)
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.
PreconFactory & GetPreconFactory()
std::shared_ptr< AssemblyMap > AssemblyMapSharedPtr