Nektar++
|
A global linear system. More...
#include <GlobalLinSysXxtStaticCond.h>
Public Member Functions | |
GlobalLinSysXxtStaticCond (const GlobalLinSysKey &mkey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &locToGloMap) | |
Constructor for full direct matrix solve. | |
GlobalLinSysXxtStaticCond (const GlobalLinSysKey &mkey, const boost::weak_ptr< ExpList > &pExpList, const DNekScalBlkMatSharedPtr pSchurCompl, const DNekScalBlkMatSharedPtr pBinvD, const DNekScalBlkMatSharedPtr pC, const DNekScalBlkMatSharedPtr pInvD, const boost::shared_ptr< AssemblyMap > &locToGloMap) | |
Constructor for full direct matrix solve. | |
virtual | ~GlobalLinSysXxtStaticCond () |
Public Member Functions inherited from Nektar::MultiRegions::GlobalLinSysXxt | |
GlobalLinSysXxt (const GlobalLinSysKey &pKey, const boost::weak_ptr< ExpList > &pExp, const boost::shared_ptr< AssemblyMap > &pLocToGloMap) | |
Constructor for full direct matrix solve. | |
virtual | ~GlobalLinSysXxt () |
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. | |
virtual | ~GlobalLinSys () |
const GlobalLinSysKey & | GetKey (void) const |
Returns the key associated with the system. | |
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. | |
boost::shared_ptr< GlobalLinSys > | GetSharedThisPtr () |
Returns a shared pointer to the current object. | |
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. | |
Public Member Functions inherited from Nektar::MultiRegions::GlobalLinSysStaticCond | |
GlobalLinSysStaticCond (const GlobalLinSysKey &mkey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &locToGloMap) | |
Constructor for full direct matrix solve. | |
virtual | ~GlobalLinSysStaticCond () |
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. |
Static Public Attributes | |
static std::string | className |
Name of class. | |
static std::string | className2 |
Protected Member Functions | |
void | CreateMap (const boost::shared_ptr< AssemblyMap > &pLocToGloMap) |
virtual void | v_AssembleSchurComplement (boost::shared_ptr< AssemblyMap > locToGloMap) |
Assemble the Schur complement matrix. | |
virtual GlobalLinSysStaticCondSharedPtr | v_Recurse (const GlobalLinSysKey &mkey, const boost::weak_ptr< ExpList > &pExpList, const DNekScalBlkMatSharedPtr pSchurCompl, const DNekScalBlkMatSharedPtr pBinvD, const DNekScalBlkMatSharedPtr pC, const DNekScalBlkMatSharedPtr pInvD, const boost::shared_ptr< AssemblyMap > &locToGloMap) |
Protected Member Functions inherited from Nektar::MultiRegions::GlobalLinSysXxt | |
virtual void | v_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. | |
void | GlobalToLocalNoSign (const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &local) |
void | LocalToGlobalNoSign (const Array< OneD, const NekDouble > &local, Array< OneD, NekDouble > &global) |
Protected Member Functions inherited from Nektar::MultiRegions::GlobalLinSys | |
virtual DNekScalMatSharedPtr | v_GetBlock (unsigned int n) |
Retrieves the block matrix from n-th expansion using the matrix key provided by the m_linSysKey. | |
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. | |
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. | |
Protected Member Functions inherited from Nektar::MultiRegions::GlobalLinSysStaticCond | |
virtual DNekScalBlkMatSharedPtr | v_PreSolve (int scLevel, NekVector< NekDouble > &F_GlobBnd) |
virtual void | v_BasisTransform (Array< OneD, NekDouble > &pInOut, int offset) |
virtual void | v_BasisInvTransform (Array< OneD, NekDouble > &pInOut) |
virtual int | v_GetNumBlocks () |
Get the number of blocks in this system. | |
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. | |
virtual void | v_InitObject () |
virtual void | v_Initialise (const boost::shared_ptr< AssemblyMap > &locToGloMap) |
Initialise this object. | |
void | SetupTopLevel (const boost::shared_ptr< AssemblyMap > &locToGloMap) |
Set up the storage for the Schur complement or the top level of the multi-level Schur complement. | |
void | ConstructNextLevelCondensedSystem (const boost::shared_ptr< AssemblyMap > &locToGloMap) |
Additional Inherited Members | |
Protected Attributes inherited from Nektar::MultiRegions::GlobalLinSysXxt | |
struct Xxt::crs_data * | m_crsData |
Array< OneD, unsigned int > | m_Ai |
Array< OneD, unsigned int > | m_Aj |
Array< OneD, double > | m_Ar |
Array< OneD, NekDouble > | m_locToGloSignMult |
Array< OneD, int > | m_map |
Protected Attributes inherited from Nektar::MultiRegions::GlobalLinSysStaticCond | |
GlobalLinSysStaticCondSharedPtr | m_recursiveSchurCompl |
Schur complement for Direct Static Condensation. | |
DNekScalBlkMatSharedPtr | m_schurCompl |
Block Schur complement matrix. | |
DNekScalBlkMatSharedPtr | m_BinvD |
Block matrix. | |
DNekScalBlkMatSharedPtr | m_C |
Block matrix. | |
DNekScalBlkMatSharedPtr | m_invD |
Block matrix. | |
boost::shared_ptr< AssemblyMap > | m_locToGloMap |
Local to global map. | |
Array< OneD, NekDouble > | m_wsp |
Workspace array for matrix multiplication. |
A global linear system.
Definition at line 57 of file GlobalLinSysXxtStaticCond.h.
Nektar::MultiRegions::GlobalLinSysXxtStaticCond::GlobalLinSysXxtStaticCond | ( | const GlobalLinSysKey & | pKey, |
const boost::weak_ptr< ExpList > & | pExpList, | ||
const boost::shared_ptr< AssemblyMap > & | pLocToGloMap | ||
) |
Constructor for full direct matrix solve.
For a matrix system of the form
where and are invertible, store and assemble a static condensation system, according to a given local to global mapping. #m_linSys is constructed by AssembleSchurComplement().
mKey | Associated matrix key. |
pLocMatSys | LocalMatrixSystem |
locToGloMap | Local to global mapping. |
Definition at line 86 of file GlobalLinSysXxtStaticCond.cpp.
References ASSERTL1, Nektar::MultiRegions::eXxtMultiLevelStaticCond, Nektar::MultiRegions::eXxtStaticCond, and Nektar::MultiRegions::GlobalLinSysKey::GetGlobalSysSolnType().
Nektar::MultiRegions::GlobalLinSysXxtStaticCond::GlobalLinSysXxtStaticCond | ( | const GlobalLinSysKey & | mkey, |
const boost::weak_ptr< ExpList > & | pExpList, | ||
const DNekScalBlkMatSharedPtr | pSchurCompl, | ||
const DNekScalBlkMatSharedPtr | pBinvD, | ||
const DNekScalBlkMatSharedPtr | pC, | ||
const DNekScalBlkMatSharedPtr | pInvD, | ||
const boost::shared_ptr< AssemblyMap > & | locToGloMap | ||
) |
Constructor for full direct matrix solve.
Definition at line 109 of file GlobalLinSysXxtStaticCond.cpp.
References Nektar::MultiRegions::GlobalLinSysStaticCond::m_BinvD, Nektar::MultiRegions::GlobalLinSysStaticCond::m_C, Nektar::MultiRegions::GlobalLinSysStaticCond::m_invD, Nektar::MultiRegions::GlobalLinSysStaticCond::m_locToGloMap, and Nektar::MultiRegions::GlobalLinSysStaticCond::m_schurCompl.
|
virtual |
Definition at line 133 of file GlobalLinSysXxtStaticCond.cpp.
|
inlinestatic |
Creates an instance of this class.
Definition at line 62 of file GlobalLinSysXxtStaticCond.h.
|
protected |
Create the inverse multiplicity map.
locToGloMap | Local to global mapping information. |
Definition at line 142 of file GlobalLinSysXxtStaticCond.cpp.
References Nektar::MultiRegions::GlobalLinSysXxt::m_locToGloSignMult, and Nektar::MultiRegions::GlobalLinSysXxt::m_map.
Referenced by v_AssembleSchurComplement().
|
protectedvirtual |
Assemble the Schur complement matrix.
Construct the local matrix row index, column index and value index arrays and initialize the XXT data structure with this information.
locToGloMap | Local to global mapping information. |
Reimplemented from Nektar::MultiRegions::GlobalLinSysStaticCond.
Definition at line 176 of file GlobalLinSysXxtStaticCond.cpp.
References CreateMap(), Gs::Init(), Nektar::MultiRegions::GlobalLinSysXxt::m_Ai, Nektar::MultiRegions::GlobalLinSysXxt::m_Aj, Nektar::MultiRegions::GlobalLinSysXxt::m_Ar, Nektar::MultiRegions::GlobalLinSysXxt::m_crsData, Nektar::MultiRegions::GlobalLinSys::m_expList, Nektar::MultiRegions::GlobalLinSysStaticCond::m_schurCompl, and Xxt::nektar_crs_stats().
|
protectedvirtual |
Implements Nektar::MultiRegions::GlobalLinSysStaticCond.
Definition at line 258 of file GlobalLinSysXxtStaticCond.cpp.
|
static |
Name of class.
Registers the class with the Factory.
Definition at line 76 of file GlobalLinSysXxtStaticCond.h.
|
static |
Definition at line 77 of file GlobalLinSysXxtStaticCond.h.