Nektar++
|
#include <PreconditionerLinear.h>
Static Public Member Functions | |
static PreconditionerSharedPtr | create (const std::shared_ptr< GlobalLinSys > &plinsys, const std::shared_ptr< AssemblyMap > &pLocToGloMap) |
Creates an instance of this class. More... | |
Static Public Attributes | |
static std::string | className1 |
Name of class. More... | |
Protected Attributes | |
GlobalLinSysSharedPtr | m_vertLinsys |
std::shared_ptr< AssemblyMap > | m_vertLocToGloMap |
![]() | |
const std::weak_ptr< GlobalLinSys > | m_linsys |
PreconditionerType | m_preconType |
DNekMatSharedPtr | m_preconditioner |
std::weak_ptr< AssemblyMap > | m_locToGloMap |
LibUtilities::CommSharedPtr | m_comm |
Private Member Functions | |
virtual void | v_InitObject () |
virtual void | v_DoPreconditionerWithNonVertOutput (const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const Array< OneD, NekDouble > &pNonVertOutput, Array< OneD, NekDouble > &pVertForce) |
Apply a preconditioner to the conjugate gradient method with an output for non-vertex degrees of freedom. More... | |
virtual void | v_DoPreconditioner (const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput) |
Apply a preconditioner to the conjugate gradient method. More... | |
virtual void | v_BuildPreconditioner () |
Static Private Attributes | |
static std::string | solveType |
static std::string | solveTypeIds [] |
Additional Inherited Members | |
![]() | |
virtual DNekScalMatSharedPtr | v_TransformedSchurCompl (int offset, int bndoffset, const std::shared_ptr< DNekScalMat > &loc_mat) |
Get block elemental transposed transformation matrix \(\mathbf{R}^{T}\). More... | |
This class implements preconditioning for the conjugate gradient matrix solver.
Definition at line 57 of file PreconditionerLinear.h.
Nektar::MultiRegions::PreconditionerLinear::PreconditionerLinear | ( | const std::shared_ptr< GlobalLinSys > & | plinsys, |
const AssemblyMapSharedPtr & | pLocToGloMap | ||
) |
Definition at line 87 of file PreconditionerLinear.cpp.
|
inlinevirtual |
Definition at line 78 of file PreconditionerLinear.h.
|
inlinestatic |
Creates an instance of this class.
Definition at line 61 of file PreconditionerLinear.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and CellMLToNektar.cellml_metadata::p.
|
privatevirtual |
Reimplemented from Nektar::MultiRegions::Preconditioner.
Definition at line 98 of file PreconditionerLinear.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, Nektar::ErrorUtil::efatal, Nektar::MultiRegions::eIterativeStaticCond, Nektar::MultiRegions::eLinearPreconPETSc, Nektar::MultiRegions::eLinearPreconXxt, Nektar::StdRegions::eMass, Nektar::MultiRegions::ePETScFullMatrix, Nektar::MultiRegions::ePETScStaticCond, Nektar::StdRegions::ePreconLinearSpace, Nektar::StdRegions::ePreconLinearSpaceMass, Nektar::MultiRegions::eXxtFullMatrix, Nektar::MultiRegions::Preconditioner::m_linsys, Nektar::MultiRegions::Preconditioner::m_locToGloMap, m_vertLinsys, m_vertLocToGloMap, NEKERROR, and solveType.
|
privatevirtual |
Apply a preconditioner to the conjugate gradient method.
Reimplemented from Nektar::MultiRegions::Preconditioner.
Definition at line 168 of file PreconditionerLinear.cpp.
References Nektar::NullNekDouble1DArray, and v_DoPreconditionerWithNonVertOutput().
|
privatevirtual |
Apply a preconditioner to the conjugate gradient method with an output for non-vertex degrees of freedom.
Reimplemented from Nektar::MultiRegions::Preconditioner.
Definition at line 179 of file PreconditionerLinear.cpp.
References ASSERTL0, ASSERTL1, Nektar::MultiRegions::eIterativeStaticCond, Nektar::MultiRegions::ePETScStaticCond, Nektar::MultiRegions::Preconditioner::m_locToGloMap, m_vertLinsys, m_vertLocToGloMap, Nektar::NullNekDouble1DArray, Vmath::Vcopy(), and Vmath::Zero().
Referenced by v_DoPreconditioner().
|
privatevirtual |
Reimplemented from Nektar::MultiRegions::Preconditioner.
Definition at line 94 of file PreconditionerLinear.cpp.
|
static |
Name of class.
Registers the class with the Factory.
Definition at line 71 of file PreconditionerLinear.h.
|
protected |
Definition at line 81 of file PreconditionerLinear.h.
Referenced by v_BuildPreconditioner(), and v_DoPreconditionerWithNonVertOutput().
|
protected |
Definition at line 82 of file PreconditionerLinear.h.
Referenced by v_BuildPreconditioner(), and v_DoPreconditionerWithNonVertOutput().
|
staticprivate |
Definition at line 85 of file PreconditionerLinear.h.
Referenced by v_BuildPreconditioner().
|
staticprivate |
Definition at line 86 of file PreconditionerLinear.h.