34 #ifndef NEKTAR_LIB_MULTIREGIONS_GLOBALLINSYS_H 35 #define NEKTAR_LIB_MULTIREGIONS_GLOBALLINSYS_H 45 namespace MultiRegions
66 const std::weak_ptr<ExpList>&,
72 class GlobalLinSys:
public std::enable_shared_from_this<GlobalLinSys>
77 const GlobalLinSysKey &pKey,
78 const std::weak_ptr<ExpList> &pExpList,
79 const std::shared_ptr<AssemblyMap> &pLocToGloMap);
85 const inline GlobalLinSysKey &
GetKey(
void)
const;
88 const inline std::weak_ptr<ExpList> &
GetLocMat(
void)
const;
92 const std::shared_ptr<AssemblyMap>& pLocToGloMap);
107 return shared_from_this();
121 const int pNumDir = 0);
157 const int pNumDir) = 0;
161 const std::shared_ptr<AssemblyMap>& pLocToGloMap);
194 v_Solve(in,out,locToGloMap,dirForcing);
217 const std::shared_ptr<AssemblyMap>& pLocToGloMap)
std::map< GlobalLinSysKey, GlobalLinSysSharedPtr > GlobalLinSysMap
Mapping between GlobalLinSys objects and their associated keys.
static Array< OneD, NekDouble > NullNekDouble1DArray
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
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 a basic matrix system.
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
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.
#define MULTI_REGIONS_EXPORT
std::shared_ptr< GlobalLinSys > GlobalLinSysSharedPtr
Pointer to a GlobalLinSys object.
void DropStaticCondBlock(unsigned int n)
const GlobalLinSysKey & GetKey(void) const
Returns the key associated with the system.
LibUtilities::NekFactory< std::string, GlobalLinSys, const GlobalLinSysKey &, const std::weak_ptr< ExpList > &, const std::shared_ptr< AssemblyMap > &> GlobalLinSysFactory
Datatype of the NekFactory used to instantiate classes derived from the EquationSystem class...
virtual DNekScalBlkMatSharedPtr v_GetStaticCondBlock(unsigned int n)
Retrieves a the static condensation block matrices from n-th expansion using the matrix key provided ...
std::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
DNekScalMatSharedPtr GetBlock(unsigned int n)
virtual void v_Solve(const Array< OneD, const NekDouble > &in, Array< OneD, NekDouble > &out, const AssemblyMapSharedPtr &locToGloMap, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray)=0
Solve a linear system based on mapping.
virtual DNekScalMatSharedPtr v_GetBlock(unsigned int n)
Retrieves the block matrix from n-th expansion using the matrix key provided by the m_linSysKey...
std::shared_ptr< GlobalLinSysMap > GlobalLinSysMapShPtr
Pointer to a GlobalLinSys/key map.
virtual int v_GetNumBlocks()
Get the number of blocks in this system.
virtual void v_InitObject()
virtual void v_Initialise(const std::shared_ptr< AssemblyMap > &pLocToGloMap)
Describe a linear system.
std::shared_ptr< GlobalLinSys > GetSharedThisPtr()
Returns a shared pointer to the current object.
const std::weak_ptr< ExpList > & GetLocMat(void) const
const GlobalLinSysKey m_linSysKey
Key associated with this linear system.
LocalRegions::MatrixKey GetBlockMatrixKey(unsigned int n)
const std::weak_ptr< ExpList > m_expList
Local Matrix System.
virtual void v_DropStaticCondBlock(unsigned int n)
Releases the static condensation block matrices from NekManager of n-th expansion using the matrix ke...
static std::string lookupIds[]
DNekScalBlkMatSharedPtr GetStaticCondBlock(unsigned int n)
std::shared_ptr< Preconditioner > PreconditionerSharedPtr
void Initialise(const std::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...
GlobalLinSysFactory & GetGlobalLinSysFactory()
GlobalLinSys(const GlobalLinSysKey &pKey, const std::weak_ptr< ExpList > &pExpList, const std::shared_ptr< AssemblyMap > &pLocToGloMap)
Constructor for full direct matrix solve.
const std::map< int, RobinBCInfoSharedPtr > m_robinBCInfo
Robin boundary info.
PreconditionerSharedPtr CreatePrecon(AssemblyMapSharedPtr asmMap)
Create a preconditioner object from the parameters defined in the supplied assembly map...
Provides a generic Factory class.