|
Nektar++
|
A global linear system. More...
#include <GlobalLinSysIterativeFull.h>


Public Member Functions | |
| GlobalLinSysIterativeFull (const GlobalLinSysKey &pLinSysKey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &pLocToGloMap) | |
| Constructor for full direct matrix solve. More... | |
| virtual | ~GlobalLinSysIterativeFull () |
Public Member Functions inherited from Nektar::MultiRegions::GlobalLinSysIterative | |
| GlobalLinSysIterative (const GlobalLinSysKey &pKey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &pLocToGloMap) | |
| Constructor for full direct matrix solve. More... | |
| virtual | ~GlobalLinSysIterative () |
Public Member Functions inherited from Nektar::MultiRegions::GlobalLinSys | |
| GlobalLinSys (const GlobalLinSysKey &pKey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &pLocToGloMap) | |
| Constructor for full direct matrix solve. More... | |
| virtual | ~GlobalLinSys () |
| const GlobalLinSysKey & | GetKey (void) const |
| Returns the key associated with the system. More... | |
| const boost::weak_ptr< ExpList > & | GetLocMat (void) const |
| void | InitObject () |
| void | Initialise (const boost::shared_ptr< AssemblyMap > &pLocToGloMap) |
| void | Solve (const Array< OneD, const NekDouble > &in, Array< OneD, NekDouble > &out, const AssemblyMapSharedPtr &locToGloMap, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray) |
| Solve the linear system for given input and output vectors using a specified local to global map. More... | |
| boost::shared_ptr< GlobalLinSys > | GetSharedThisPtr () |
| Returns a shared pointer to the current object. More... | |
| int | GetNumBlocks () |
| DNekScalMatSharedPtr | GetBlock (unsigned int n) |
| DNekScalBlkMatSharedPtr | GetStaticCondBlock (unsigned int n) |
| void | DropStaticCondBlock (unsigned int n) |
| void | SolveLinearSystem (const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const AssemblyMapSharedPtr &locToGloMap, const int pNumDir=0) |
| Solve the linear system for given input and output vectors. More... | |
Static Public Member Functions | |
| static GlobalLinSysSharedPtr | create (const GlobalLinSysKey &pLinSysKey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &pLocToGloMap) |
| Creates an instance of this class. More... | |
Static Public Attributes | |
| static std::string | className |
| Name of class. More... | |
Private Member Functions | |
| virtual void | v_Solve (const Array< OneD, const NekDouble > &in, Array< OneD, NekDouble > &out, const AssemblyMapSharedPtr &locToGloMap, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray) |
| Solve the linear system for given input and output vectors using a specified local to global map. More... | |
| virtual void | v_DoMatrixMultiply (const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput) |
| virtual void | v_UniqueMap () |
Private Attributes | |
| boost::shared_ptr< AssemblyMap > | m_locToGloMap |
Additional Inherited Members | |
Protected Member Functions inherited from Nektar::MultiRegions::GlobalLinSysIterative | |
| 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. More... | |
| void | DoConjugateGradient (const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const AssemblyMapSharedPtr &locToGloMap, const int pNumDir) |
| Actual iterative solve. More... | |
| void | Set_Rhs_Magnitude (const NekVector< NekDouble > &pIn) |
Protected Member Functions inherited from Nektar::MultiRegions::GlobalLinSys | |
| virtual int | v_GetNumBlocks () |
| Get the number of blocks in this system. More... | |
| virtual DNekScalMatSharedPtr | v_GetBlock (unsigned int n) |
| Retrieves the block matrix from n-th expansion using the matrix key provided by the m_linSysKey. More... | |
| virtual DNekScalBlkMatSharedPtr | v_GetStaticCondBlock (unsigned int n) |
| Retrieves a the static condensation block matrices from n-th expansion using the matrix key provided by the m_linSysKey. More... | |
| virtual void | v_DropStaticCondBlock (unsigned int n) |
| Releases the static condensation block matrices from NekManager of n-th expansion using the matrix key provided by the m_linSysKey. More... | |
| PreconditionerSharedPtr | CreatePrecon (AssemblyMapSharedPtr asmMap) |
| Create a preconditioner object from the parameters defined in the supplied assembly map. More... | |
Protected Attributes inherited from Nektar::MultiRegions::GlobalLinSysIterative | |
| Array< OneD, int > | m_map |
| Global to universal unique map. More... | |
| int | m_maxiter |
| maximum iterations More... | |
| NekDouble | m_tolerance |
| Tolerance of iterative solver. More... | |
| NekDouble | m_rhs_magnitude |
| dot product of rhs to normalise stopping criterion More... | |
| NekDouble | m_rhs_mag_sm |
| cnt to how many times rhs_magnitude is called More... | |
| PreconditionerSharedPtr | m_precon |
| MultiRegions::PreconditionerType | m_precontype |
| int | m_totalIterations |
| bool | m_useProjection |
| Whether to apply projection technique. More... | |
| bool | m_root |
| Provide verbose output and root if parallel. More... | |
| bool | m_verbose |
| boost::circular_buffer< Array < OneD, NekDouble > > | m_prevLinSol |
| Storage for solutions to previous linear problems. More... | |
| int | m_numPrevSols |
| Total counter of previous solutions. More... | |
Protected Attributes inherited from Nektar::MultiRegions::GlobalLinSys | |
| const GlobalLinSysKey | m_linSysKey |
| Key associated with this linear system. More... | |
| const boost::weak_ptr< ExpList > | m_expList |
| Local Matrix System. More... | |
| const std::map< int, RobinBCInfoSharedPtr > | m_robinBCInfo |
| Robin boundary info. More... | |
A global linear system.
Definition at line 48 of file GlobalLinSysIterativeFull.h.
| Nektar::MultiRegions::GlobalLinSysIterativeFull::GlobalLinSysIterativeFull | ( | const GlobalLinSysKey & | pKey, |
| const boost::weak_ptr< ExpList > & | pExp, | ||
| const boost::shared_ptr< AssemblyMap > & | pLocToGloMap | ||
| ) |
Constructor for full direct matrix solve.
Constructor for full direct matrix solve.
| pKey | Key specifying matrix to solve. |
| pExp | Shared pointer to expansion list for applying matrix evaluations. |
| pLocToGloMap | Local to global mapping. |
Definition at line 71 of file GlobalLinSysIterativeFull.cpp.
References ASSERTL1, Nektar::MultiRegions::eIterativeFull, Nektar::MultiRegions::GlobalLinSysKey::GetGlobalSysSolnType(), and Nektar::MultiRegions::GlobalLinSys::m_linSysKey.
|
virtual |
Definition at line 87 of file GlobalLinSysIterativeFull.cpp.
|
inlinestatic |
Creates an instance of this class.
Definition at line 52 of file GlobalLinSysIterativeFull.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr().
|
privatevirtual |
Implements Nektar::MultiRegions::GlobalLinSysIterative.
Definition at line 189 of file GlobalLinSysIterativeFull.cpp.
References ASSERTL0, Nektar::MultiRegions::eGlobal, Nektar::eWrapper, Nektar::MultiRegions::GlobalLinSys::m_expList, Nektar::MultiRegions::GlobalLinSys::m_linSysKey, m_locToGloMap, Vmath::Vadd(), and Vmath::Zero().
|
privatevirtual |
Solve the linear system for given input and output vectors using a specified local to global map.
Solve a global linear system with Dirichlet forcing using a conjugate gradient method. This routine performs handling of the Dirichlet forcing terms and wraps the underlying iterative solver used for the remaining degrees of freedom.
Consider solving for
, the matrix system
, where
is known. To enforce the Dirichlet terms we instead solve
where
is the Dirichlet forcing.
| pInput | RHS of linear system, . |
| pOutput | On input, values of dirichlet degrees of freedom with initial guess on other values. On output, the solution . |
| pLocToGloMap | Local to global mapping. |
| pDirForcing | Precalculated Dirichlet forcing. |
Implements Nektar::MultiRegions::GlobalLinSys.
Definition at line 111 of file GlobalLinSysIterativeFull.cpp.
References ASSERTL0, Nektar::MultiRegions::eGlobal, Nektar::MultiRegions::GlobalLinSys::m_expList, Nektar::MultiRegions::GlobalLinSys::m_linSysKey, m_locToGloMap, Nektar::LibUtilities::ReduceSum, Nektar::MultiRegions::GlobalLinSys::SolveLinearSystem(), Vmath::Vadd(), Vmath::Vcopy(), and Vmath::Vsub().
|
privatevirtual |
Implements Nektar::MultiRegions::GlobalLinSysIterative.
Definition at line 257 of file GlobalLinSysIterativeFull.cpp.
References m_locToGloMap, and Nektar::MultiRegions::GlobalLinSysIterative::m_map.
|
static |
Name of class.
Registers the class with the Factory.
Definition at line 63 of file GlobalLinSysIterativeFull.h.
|
private |
Definition at line 76 of file GlobalLinSysIterativeFull.h.
Referenced by v_DoMatrixMultiply(), v_Solve(), and v_UniqueMap().
1.8.8