Nektar++
|
#include <NekLinSysIterCGLoc.h>
Static Public Member Functions | |
static NekLinSysIterSharedPtr | create (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vRowComm, const int nDimen, const NekSysKey &pKey) |
![]() | |
static NekLinSysIterSharedPtr | CreateInstance (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vRowComm, const int nDimen, const NekSysKey &pKey) |
![]() | |
static NekSysSharedPtr | CreateInstance (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vRowComm, const int nDimen, const NekSysKey &pKey) |
Static Public Attributes | |
static std::string | className |
Protected Member Functions | |
void | v_InitObject () override |
int | v_SolveSystem (const int nGlobal, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const int nDir) override |
![]() | |
void | v_InitObject () override |
void | SetUniversalUniqueMap () |
void | Set_Rhs_Magnitude (const Array< OneD, NekDouble > &pIn) |
void | ConvergenceCheck (const Array< OneD, const NekDouble > &Residual) |
![]() | |
virtual void | v_InitObject () |
virtual void | v_SetSysOperators (const NekSysOperators &in) |
virtual int | v_SolveSystem (const int nGlobal, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const int nDir) |
Private Member Functions | |
void | DoConjugateGradient (const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput) |
Actual iterative solve. More... | |
Friends | |
class | MemoryManager< NekLinSysIterCGLoc > |
Support creation through MemoryManager. More... | |
Additional Inherited Members | |
![]() | |
Array< OneD, int > | m_map |
Global to universal unique map. More... | |
NekDouble | m_NekLinSysTolerance |
int | m_NekLinSysMaxIterations |
int | m_totalIterations = 0 |
bool | m_isLocal |
![]() | |
LibUtilities::CommSharedPtr | m_rowComm |
bool | m_converged |
bool | m_root |
bool | m_verbose |
bool | m_FlagWarnings |
int | m_SysDimen |
NekSysOperators | m_operator |
NekDouble | m_rhs_magnitude = NekConstants::kNekUnsetDouble |
Solves a linear system using iterative methods.
Definition at line 48 of file NekLinSysIterCGLoc.h.
Nektar::LibUtilities::NekLinSysIterCGLoc::NekLinSysIterCGLoc | ( | const LibUtilities::SessionReaderSharedPtr & | pSession, |
const LibUtilities::CommSharedPtr & | vRowComm, | ||
const int | nDimen, | ||
const NekSysKey & | pKey | ||
) |
Constructor for full direct matrix solve.
Definition at line 52 of file NekLinSysIterCGLoc.cpp.
References Nektar::LibUtilities::NekLinSysIter::m_isLocal.
|
overridedefault |
|
inlinestatic |
Definition at line 54 of file NekLinSysIterCGLoc.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and CellMLToNektar.cellml_metadata::p.
|
private |
Actual iterative solve.
Solve a global linear system using the conjugate gradient method. We solve only for the non-Dirichlet modes. The operator is evaluated using an auxiliary function m_operator.DoNekSysLhsEval defined by the specific solver. Distributed math routines are used to support parallel execution of the solver. The implemented algorithm uses a reduced-communication reordering of the standard PCG method (Demmel, Heath and Vorst, 1993)
pInput | Input residual of all DOFs. |
pOutput | Solution vector of all DOFs. |
Definition at line 91 of file NekLinSysIterCGLoc.cpp.
References Nektar::LibUtilities::beta, Nektar::LibUtilities::NekSysOperators::DoAssembleLoc(), Nektar::LibUtilities::NekSysOperators::DoNekSysLhsEval(), Nektar::LibUtilities::NekSysOperators::DoNekSysPrecon(), Vmath::Dot(), Nektar::ErrorUtil::efatal, Nektar::NekConstants::kNekUnsetDouble, Nektar::LibUtilities::NekLinSysIter::m_NekLinSysMaxIterations, Nektar::LibUtilities::NekLinSysIter::m_NekLinSysTolerance, Nektar::LibUtilities::NekSys::m_operator, Nektar::LibUtilities::NekSys::m_rhs_magnitude, Nektar::LibUtilities::NekSys::m_root, Nektar::LibUtilities::NekSys::m_rowComm, Nektar::LibUtilities::NekLinSysIter::m_totalIterations, Nektar::LibUtilities::NekSys::m_verbose, Nektar::LibUtilities::ReduceSum, ROOTONLY_NEKERROR, Nektar::LibUtilities::NekLinSysIter::Set_Rhs_Magnitude(), tinysimd::sqrt(), Vmath::Svtvp(), Vmath::Vcopy(), and Vmath::Zero().
Referenced by v_SolveSystem().
|
overrideprotectedvirtual |
Reimplemented from Nektar::LibUtilities::NekLinSysIter.
Definition at line 61 of file NekLinSysIterCGLoc.cpp.
References Nektar::LibUtilities::NekLinSysIter::v_InitObject().
|
overrideprotectedvirtual |
Reimplemented from Nektar::LibUtilities::NekSys.
Definition at line 69 of file NekLinSysIterCGLoc.cpp.
References DoConjugateGradient(), and Nektar::LibUtilities::NekLinSysIter::m_totalIterations.
|
friend |
Support creation through MemoryManager.
Definition at line 46 of file NekLinSysIterCGLoc.h.
|
static |
Definition at line 66 of file NekLinSysIterCGLoc.h.