35 #ifndef NEKTAR_LIB_MULTIREGIONS_GLOBALLINSYSITERATIVE_H 
   36 #define NEKTAR_LIB_MULTIREGIONS_GLOBALLINSYSITERATIVE_H 
   42 #include <boost/circular_buffer.hpp> 
   46     namespace MultiRegions
 
   58                     const boost::weak_ptr<ExpList>       &pExpList,
 
   59                     const boost::shared_ptr<AssemblyMap> &pLocToGloMap);
 
  120                     const int pGlobalBndDofs,
 
  122                     const int pNumDirBndDofs);
 
boost::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
 
NekDouble m_rhs_mag_sm
cnt to how many times rhs_magnitude is called 
 
void Set_Rhs_Magnitude(const NekVector< NekDouble > &pIn)
 
void UpdateKnownSolutions(const int pGlobalBndDofs, const Array< OneD, const NekDouble > &pSolution, const int pNumDirBndDofs)
 
bool m_root
Root if parallel. 
 
bool m_useProjection
Whether to apply projection technique. 
 
#define MULTI_REGIONS_EXPORT
 
boost::shared_ptr< Preconditioner > PreconditionerSharedPtr
 
boost::circular_buffer< Array< OneD, NekDouble > > m_prevLinSol
Storage for solutions to previous linear problems. 
 
virtual void v_DoMatrixMultiply(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)=0
 
NekDouble CalculateAnorm(const int nGlobal, const Array< OneD, const NekDouble > &in, const int nDir)
 
PreconditionerSharedPtr m_precon
 
NekDouble m_tolerance
Tolerance of iterative solver. 
 
int m_numPrevSols
Total counter of previous solutions. 
 
Array< OneD, int > m_map
Global to universal unique map. 
 
GlobalLinSysIterative(const GlobalLinSysKey &pKey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
Constructor for full direct matrix solve. 
 
Describe a linear system. 
 
void DoAconjugateProjection(const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const AssemblyMapSharedPtr &locToGloMap, const int pNumDir)
A-conjugate projection technique. 
 
NekDouble m_rhs_magnitude
dot product of rhs to normalise stopping criterion 
 
int m_maxiter
maximum iterations 
 
virtual void v_SolveLinearSystem(const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const AssemblyMapSharedPtr &locToGloMap, const int pNumDir)
Solve the matrix system. 
 
MultiRegions::PreconditionerType m_precontype
 
void DoConjugateGradient(const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const AssemblyMapSharedPtr &locToGloMap, const int pNumDir)
Actual iterative solve. 
 
virtual ~GlobalLinSysIterative()
 
virtual void v_UniqueMap()=0