35 #ifndef NEKTAR_LIB_MULTIREGIONS_GLOBALLINSYS_H
36 #define NEKTAR_LIB_MULTIREGIONS_GLOBALLINSYS_H
41 #include <boost/enable_shared_from_this.hpp>
47 namespace MultiRegions
64 const boost::weak_ptr<ExpList>&,
70 class GlobalLinSys:
public boost::enable_shared_from_this<GlobalLinSys>
75 const GlobalLinSysKey &pKey,
76 const boost::weak_ptr<ExpList> &pExpList,
77 const boost::shared_ptr<AssemblyMap> &pLocToGloMap);
83 const inline GlobalLinSysKey &
GetKey(
void)
const;
86 const inline boost::weak_ptr<ExpList> &
GetLocMat(
void)
const;
90 const boost::shared_ptr<AssemblyMap>& pLocToGloMap);
105 return shared_from_this();
119 const int pNumDir = 0);
149 const int pNumDir) = 0;
153 const boost::shared_ptr<AssemblyMap>& pLocToGloMap);
186 v_Solve(in,out,locToGloMap,dirForcing);
209 const boost::shared_ptr<AssemblyMap>& pLocToGloMap)
LibUtilities::NekFactory< std::string, GlobalLinSys, const GlobalLinSysKey &, const boost::weak_ptr< ExpList > &, const boost::shared_ptr< AssemblyMap > & > GlobalLinSysFactory
Datatype of the NekFactory used to instantiate classes derived from the EquationSystem class...
const GlobalLinSysKey & GetKey(void) const
Returns the key associated with the system.
static Array< OneD, NekDouble > NullNekDouble1DArray
boost::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
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.
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.
map< GlobalLinSysKey, GlobalLinSysSharedPtr > GlobalLinSysMap
Mapping between GlobalLinSys objects and their associated keys.
#define MULTI_REGIONS_EXPORT
void DropStaticCondBlock(unsigned int n)
void Initialise(const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
virtual DNekScalBlkMatSharedPtr v_GetStaticCondBlock(unsigned int n)
Retrieves a the static condensation block matrices from n-th expansion using the matrix key provided ...
boost::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
virtual void v_Initialise(const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
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...
const map< int, RobinBCInfoSharedPtr > m_robinBCInfo
Robin boundary info.
boost::shared_ptr< GlobalLinSys > GetSharedThisPtr()
Returns a shared pointer to the current object.
boost::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
boost::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()
GlobalLinSys(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.
const GlobalLinSysKey m_linSysKey
Key associated with this linear system.
virtual void v_DropStaticCondBlock(unsigned int n)
Releases the static condensation block matrices from NekManager of n-th expansion using the matrix ke...
boost::shared_ptr< GlobalLinSys > GlobalLinSysSharedPtr
Pointer to a GlobalLinSys object.
static std::string lookupIds[]
DNekScalBlkMatSharedPtr GetStaticCondBlock(unsigned int n)
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()
const boost::weak_ptr< ExpList > & GetLocMat(void) const
Provides a generic Factory class.
const boost::weak_ptr< ExpList > m_expList
Local Matrix System.