Nektar++
|
#include <NekLinSysIter.h>
Public Member Functions | |
NekLinSysIter (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vComm, const int nDimen, const NekSysKey &pKey) | |
virtual | ~NekLinSysIter () |
void | setUniversalUniqueMap (Array< OneD, int > &map) |
void | setRhsMagnitude (const NekDouble mag) |
void | SetNekLinSysTolerance (const NekDouble in) |
void | SetNekLinSysMaxIterations (const unsigned int in) |
void | SetLinSysMaxStorage (const unsigned int in) |
![]() | |
NekSys (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vComm, const int nDimen, const NekSysKey &pKey) | |
void | InitObject () |
virtual | ~NekSys () |
void | SetSysOperators (const NekSysOperators &in) |
const NekSysOperators & | GetSysOperators () |
int | SolveSystem (const int nGlobal, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const int nDir, const NekDouble tol=1.0E-7, const NekDouble factor=1.0) |
bool | ConvergenceCheck (const int nIteration, const Array< OneD, const NekDouble > &Residual, const NekDouble tol=1.0E-7) |
void | SetFlagWarnings (bool in) |
Static Public Member Functions | |
static NekLinSysIterSharedPtr | CreateInstance (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vComm, const int nDimen, const NekSysKey &pKey) |
![]() | |
static NekSysSharedPtr | CreateInstance (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vComm, const int nDimen, const NekSysKey &pKey) |
Protected Member Functions | |
void | Set_Rhs_Magnitude (const NekVector< NekDouble > &pIn) |
void | setUniversalUniqueMap () |
virtual void | v_InitObject () override |
![]() | |
virtual int | v_SolveSystem (const int nGlobal, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const int nDir, const NekDouble tol, const NekDouble factor) |
virtual bool | v_ConvergenceCheck (const int nIteration, const Array< OneD, const NekDouble > &Residual, const NekDouble tol) |
virtual void | v_NekSysInitialGuess (const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pguess) |
Protected Attributes | |
Array< OneD, int > | m_map |
Global to universal unique map. More... | |
NekDouble | m_rhs_magnitude = NekConstants::kNekUnsetDouble |
Dot product of rhs to normalise stopping criterion. More... | |
int | m_totalIterations = 0 |
NekDouble | m_rhs_mag_sm = 0.9 |
NekDouble | m_prec_factor = 1.0 |
int | m_LinSysMaxStorage |
![]() | |
int | m_maxiter |
Maximum iterations. More... | |
NekDouble | m_tolerance |
Tolerance of iterative solver. More... | |
LibUtilities::CommSharedPtr | m_Comm |
Communicate. More... | |
bool | m_converged |
Whether the iteration has been converged. More... | |
bool | m_root |
Root if parallel. More... | |
bool | m_verbose |
Verbose. More... | |
bool | m_FlagWarnings |
NekSysOperators | m_operator |
Operators. More... | |
int | m_SysDimen |
The dimension of the system. More... | |
Friends | |
class | MemoryManager< NekLinSysIter > |
Support creation through MemoryManager. More... | |
Solves a linear system using iterative methods.
Definition at line 56 of file NekLinSysIter.h.
Nektar::LibUtilities::NekLinSysIter::NekLinSysIter | ( | const LibUtilities::SessionReaderSharedPtr & | pSession, |
const LibUtilities::CommSharedPtr & | vComm, | ||
const int | nDimen, | ||
const NekSysKey & | pKey | ||
) |
Definition at line 56 of file NekLinSysIter.cpp.
References m_LinSysMaxStorage, Nektar::LibUtilities::NekSysKey::m_LinSysMaxStorage, Nektar::LibUtilities::NekSys::m_maxiter, Nektar::LibUtilities::NekSysKey::m_NekLinSysMaxIterations, Nektar::LibUtilities::NekSysKey::m_NekLinSysTolerance, and Nektar::LibUtilities::NekSys::m_tolerance.
|
virtual |
Definition at line 109 of file NekLinSysIter.cpp.
|
inlinestatic |
Definition at line 62 of file NekLinSysIter.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and CellMLToNektar.cellml_metadata::p.
|
protected |
Definition at line 128 of file NekLinSysIter.cpp.
References Vmath::Dot2(), Nektar::NekVector< DataType >::GetDimension(), Nektar::NekConstants::kNekUnsetDouble, Nektar::LibUtilities::NekSys::m_Comm, m_map, m_rhs_mag_sm, m_rhs_magnitude, and Nektar::LibUtilities::ReduceSum.
Referenced by Nektar::LibUtilities::NekLinSysIterCG::DoConjugateGradient(), and Nektar::LibUtilities::NekLinSysIterGMRES::DoGMRES().
|
inline |
Definition at line 93 of file NekLinSysIter.h.
References m_LinSysMaxStorage.
|
inline |
Definition at line 88 of file NekLinSysIter.h.
References Nektar::LibUtilities::NekSys::m_maxiter.
Definition at line 83 of file NekLinSysIter.h.
References Nektar::LibUtilities::NekSys::m_tolerance.
Definition at line 79 of file NekLinSysIter.h.
References m_rhs_magnitude.
|
protected |
Definition at line 123 of file NekLinSysIter.cpp.
References m_map, and Nektar::LibUtilities::NekSys::m_SysDimen.
Referenced by v_InitObject().
Definition at line 113 of file NekLinSysIter.cpp.
References m_map, and Vmath::Vcopy().
|
overrideprotectedvirtual |
Reimplemented from Nektar::LibUtilities::NekSys.
Reimplemented in Nektar::LibUtilities::NekLinSysIterGMRES, Nektar::LibUtilities::NekLinSysIterFixedpointJacobi, and Nektar::LibUtilities::NekLinSysIterCG.
Definition at line 103 of file NekLinSysIter.cpp.
References setUniversalUniqueMap(), and Nektar::LibUtilities::NekSys::v_InitObject().
Referenced by Nektar::LibUtilities::NekLinSysIterCG::v_InitObject(), Nektar::LibUtilities::NekLinSysIterFixedpointJacobi::v_InitObject(), and Nektar::LibUtilities::NekLinSysIterGMRES::v_InitObject().
|
friend |
Support creation through MemoryManager.
Definition at line 54 of file NekLinSysIter.h.
|
protected |
Global to universal unique map.
Definition at line 100 of file NekLinSysIter.h.
Referenced by Nektar::LibUtilities::NekLinSysIterGMRES::DoArnoldi(), Nektar::LibUtilities::NekLinSysIterCG::DoConjugateGradient(), Nektar::LibUtilities::NekLinSysIterGMRES::DoGMRES(), Nektar::LibUtilities::NekLinSysIterGMRES::DoGmresRestart(), Set_Rhs_Magnitude(), and setUniversalUniqueMap().
|
protected |
Definition at line 108 of file NekLinSysIter.h.
Referenced by Nektar::LibUtilities::NekLinSysIterGMRES::DoArnoldi(), Nektar::LibUtilities::NekLinSysIterGMRES::DoGMRES(), Nektar::LibUtilities::NekLinSysIterGMRES::DoGmresRestart(), Nektar::LibUtilities::NekLinSysIterCG::v_SolveSystem(), Nektar::LibUtilities::NekLinSysIterFixedpointJacobi::v_SolveSystem(), and Nektar::LibUtilities::NekLinSysIterGMRES::v_SolveSystem().
|
protected |
Definition at line 106 of file NekLinSysIter.h.
Referenced by Set_Rhs_Magnitude().
|
protected |
Dot product of rhs to normalise stopping criterion.
Definition at line 103 of file NekLinSysIter.h.
Referenced by Nektar::LibUtilities::NekLinSysIterCG::DoConjugateGradient(), Nektar::LibUtilities::NekLinSysIterGMRES::DoGMRES(), Nektar::LibUtilities::NekLinSysIterGMRES::DoGmresRestart(), Set_Rhs_Magnitude(), and setRhsMagnitude().
|
protected |