Nektar++
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Nektar::LibUtilities::NekNonlinSys Class Reference

#include <NekNonlinSys.h>

Inheritance diagram for Nektar::LibUtilities::NekNonlinSys:
[legend]

Public Member Functions

 NekNonlinSys (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vRowComm, const int nDimen, const NekSysKey &pKey)
 
 ~NekNonlinSys () override=default
 
const Array< OneD, const NekDouble > & GetRefSolution () const
 
const Array< OneD, const NekDouble > & GetRefResidual () const
 
const Array< OneD, const NekDouble > & GetRefSourceVec () const
 
const NekLinSysIterSharedPtrGetLinSys ()
 
int GetNtotLinSysIts ()
 
void SetNekNonlinSysTolerance (const NekDouble in)
 
void SetNekNonlinSysMaxIterations (const unsigned int in)
 
void SetNonlinIterTolRelativeL2 (const NekDouble in)
 
void SetLinSysRelativeTolInNonlin (const NekDouble in)
 
- Public Member Functions inherited from Nektar::LibUtilities::NekSys
 NekSys (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vRowComm, const int nDimen, const NekSysKey &pKey)
 
virtual ~NekSys ()=default
 
void InitObject ()
 
void SetSysOperators (const NekSysOperators &in)
 
const NekSysOperatorsGetSysOperators ()
 
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)
 

Protected Member Functions

void v_InitObject () override
 
- Protected Member Functions inherited from Nektar::LibUtilities::NekSys
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, 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

NekLinSysIterSharedPtr m_linsol
 
NekDouble m_NonlinIterTolRelativeL2
 
NekDouble m_LinSysRelativeTolInNonlin
 
std::string m_LinSysIterSolverType
 
int m_totalIterations = 0
 
int m_NtotLinSysIts = 0
 
Array< OneD, NekDoublem_Solution
 
Array< OneD, NekDoublem_Residual
 
Array< OneD, NekDoublem_DeltSltn
 
Array< OneD, NekDoublem_SourceVec
 
- Protected Attributes inherited from Nektar::LibUtilities::NekSys
int m_maxiter
 Maximum iterations. More...
 
NekDouble m_tolerance
 Tolerance of iterative solver. More...
 
LibUtilities::CommSharedPtr m_rowComm
 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...
 

Additional Inherited Members

- Static Public Member Functions inherited from Nektar::LibUtilities::NekSys
static NekSysSharedPtr CreateInstance (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vRowComm, const int nDimen, const NekSysKey &pKey)
 

Detailed Description

Solves a nonlinear system using iterative methods.

Definition at line 54 of file NekNonlinSys.h.

Constructor & Destructor Documentation

◆ NekNonlinSys()

Nektar::LibUtilities::NekNonlinSys::NekNonlinSys ( const LibUtilities::SessionReaderSharedPtr pSession,
const LibUtilities::CommSharedPtr vRowComm,
const int  nDimen,
const NekSysKey pKey 
)

Definition at line 53 of file NekNonlinSys.cpp.

56 : NekSys(pSession, vRowComm, nDimen, pKey)
57{
58 m_maxiter = pKey.m_NekNonlinSysMaxIterations;
59 m_NonlinIterTolRelativeL2 = pKey.m_NonlinIterTolRelativeL2;
60 m_LinSysRelativeTolInNonlin = pKey.m_LinSysRelativeTolInNonlin;
61 m_LinSysIterSolverType = pKey.m_LinSysIterSolverTypeInNonlin;
62
65 "NekLinSysIter '" + m_LinSysIterSolverType +
66 "' is not defined.\n");
67
70 m_linsol->SetFlagWarnings(false);
71}
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:208
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
Definition: NekFactory.hpp:143
NekLinSysIterSharedPtr m_linsol
Definition: NekNonlinSys.h:113
LibUtilities::CommSharedPtr m_rowComm
Communicate.
Definition: NekSys.h:293
int m_SysDimen
The dimension of the system.
Definition: NekSys.h:304
NekSys(const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::CommSharedPtr &vRowComm, const int nDimen, const NekSysKey &pKey)
Definition: NekSys.cpp:48
int m_maxiter
Maximum iterations.
Definition: NekSys.h:289
NekLinSysIterFactory & GetNekLinSysIterFactory()

References ASSERTL0, Nektar::LibUtilities::NekFactory< tKey, tBase, tParam >::CreateInstance(), Nektar::LibUtilities::GetNekLinSysIterFactory(), m_linsol, m_LinSysIterSolverType, Nektar::LibUtilities::NekSysKey::m_LinSysIterSolverTypeInNonlin, m_LinSysRelativeTolInNonlin, Nektar::LibUtilities::NekSysKey::m_LinSysRelativeTolInNonlin, Nektar::LibUtilities::NekSys::m_maxiter, Nektar::LibUtilities::NekSysKey::m_NekNonlinSysMaxIterations, m_NonlinIterTolRelativeL2, Nektar::LibUtilities::NekSysKey::m_NonlinIterTolRelativeL2, Nektar::LibUtilities::NekSys::m_rowComm, and Nektar::LibUtilities::NekSys::m_SysDimen.

◆ ~NekNonlinSys()

Nektar::LibUtilities::NekNonlinSys::~NekNonlinSys ( )
overridedefault

Member Function Documentation

◆ GetLinSys()

const NekLinSysIterSharedPtr & Nektar::LibUtilities::NekNonlinSys::GetLinSys ( )
inline

Definition at line 81 of file NekNonlinSys.h.

82 {
83 return m_linsol;
84 }

References m_linsol.

◆ GetNtotLinSysIts()

int Nektar::LibUtilities::NekNonlinSys::GetNtotLinSysIts ( )
inline

Definition at line 86 of file NekNonlinSys.h.

References m_NtotLinSysIts.

◆ GetRefResidual()

const Array< OneD, const NekDouble > & Nektar::LibUtilities::NekNonlinSys::GetRefResidual ( ) const
inline

Definition at line 69 of file NekNonlinSys.h.

71 {
72 return m_Residual;
73 }
Array< OneD, NekDouble > m_Residual
Definition: NekNonlinSys.h:124

References m_Residual.

◆ GetRefSolution()

const Array< OneD, const NekDouble > & Nektar::LibUtilities::NekNonlinSys::GetRefSolution ( ) const
inline

Definition at line 63 of file NekNonlinSys.h.

65 {
66 return m_Solution;
67 }
Array< OneD, NekDouble > m_Solution
Definition: NekNonlinSys.h:123

References m_Solution.

◆ GetRefSourceVec()

const Array< OneD, const NekDouble > & Nektar::LibUtilities::NekNonlinSys::GetRefSourceVec ( ) const
inline

Definition at line 75 of file NekNonlinSys.h.

77 {
78 return m_SourceVec;
79 }
Array< OneD, NekDouble > m_SourceVec
Definition: NekNonlinSys.h:126

References m_SourceVec.

◆ SetLinSysRelativeTolInNonlin()

void Nektar::LibUtilities::NekNonlinSys::SetLinSysRelativeTolInNonlin ( const NekDouble  in)
inline

Definition at line 107 of file NekNonlinSys.h.

108 {
110 }

References m_LinSysRelativeTolInNonlin.

◆ SetNekNonlinSysMaxIterations()

void Nektar::LibUtilities::NekNonlinSys::SetNekNonlinSysMaxIterations ( const unsigned int  in)
inline

Definition at line 96 of file NekNonlinSys.h.

98 {
99 m_maxiter = in;
100 }

References Nektar::LibUtilities::NekSys::m_maxiter.

◆ SetNekNonlinSysTolerance()

void Nektar::LibUtilities::NekNonlinSys::SetNekNonlinSysTolerance ( const NekDouble  in)
inline

Definition at line 91 of file NekNonlinSys.h.

92 {
93 m_tolerance = in;
94 }
NekDouble m_tolerance
Tolerance of iterative solver.
Definition: NekSys.h:291

References Nektar::LibUtilities::NekSys::m_tolerance.

◆ SetNonlinIterTolRelativeL2()

void Nektar::LibUtilities::NekNonlinSys::SetNonlinIterTolRelativeL2 ( const NekDouble  in)
inline

Definition at line 102 of file NekNonlinSys.h.

103 {
105 }

References m_NonlinIterTolRelativeL2.

◆ v_InitObject()

void Nektar::LibUtilities::NekNonlinSys::v_InitObject ( )
overrideprotectedvirtual

Reimplemented from Nektar::LibUtilities::NekSys.

Reimplemented in Nektar::LibUtilities::NekNonlinSysNewton.

Definition at line 73 of file NekNonlinSys.cpp.

74{
76}
virtual void v_InitObject()
Definition: NekSys.h:306

References Nektar::LibUtilities::NekSys::v_InitObject().

Member Data Documentation

◆ m_DeltSltn

Array<OneD, NekDouble> Nektar::LibUtilities::NekNonlinSys::m_DeltSltn
protected

◆ m_linsol

NekLinSysIterSharedPtr Nektar::LibUtilities::NekNonlinSys::m_linsol
protected

◆ m_LinSysIterSolverType

std::string Nektar::LibUtilities::NekNonlinSys::m_LinSysIterSolverType
protected

Definition at line 118 of file NekNonlinSys.h.

Referenced by NekNonlinSys().

◆ m_LinSysRelativeTolInNonlin

NekDouble Nektar::LibUtilities::NekNonlinSys::m_LinSysRelativeTolInNonlin
protected

◆ m_NonlinIterTolRelativeL2

NekDouble Nektar::LibUtilities::NekNonlinSys::m_NonlinIterTolRelativeL2
protected

◆ m_NtotLinSysIts

int Nektar::LibUtilities::NekNonlinSys::m_NtotLinSysIts = 0
protected

◆ m_Residual

Array<OneD, NekDouble> Nektar::LibUtilities::NekNonlinSys::m_Residual
protected

◆ m_Solution

Array<OneD, NekDouble> Nektar::LibUtilities::NekNonlinSys::m_Solution
protected

◆ m_SourceVec

Array<OneD, NekDouble> Nektar::LibUtilities::NekNonlinSys::m_SourceVec
protected

◆ m_totalIterations

int Nektar::LibUtilities::NekNonlinSys::m_totalIterations = 0
protected

Definition at line 120 of file NekNonlinSys.h.