35 #ifndef NEKTAR_LIB_MULTIREGIONS_GLOBALLINSYSSTATICCOND_H 36 #define NEKTAR_LIB_MULTIREGIONS_GLOBALLINSYSSTATICCOND_H 38 #include <boost/core/ignore_unused.hpp> 46 namespace MultiRegions
52 typedef std::shared_ptr<GlobalLinSysStaticCond>
62 const std::weak_ptr<ExpList> &pExpList,
63 const std::shared_ptr<AssemblyMap> &locToGloMap);
72 boost::ignore_unused(scLevel, F_GlobBnd);
80 boost::ignore_unused(pInOut, offset);
86 boost::ignore_unused(pInOut);
90 std::shared_ptr<AssemblyMap> pLoctoGloMap)
92 boost::ignore_unused(pLoctoGloMap);
97 virtual GlobalLinSysStaticCondSharedPtr
v_Recurse(
99 const std::weak_ptr<ExpList> &pExpList,
104 const std::shared_ptr<AssemblyMap> &locToGloMap) = 0;
134 const std::shared_ptr<AssemblyMap>& locToGloMap);
139 const std::shared_ptr<AssemblyMap>& locToGloMap);
143 const std::shared_ptr<AssemblyMap>& locToGloMap);
std::shared_ptr< GlobalLinSysStaticCond > GlobalLinSysStaticCondSharedPtr
Array< OneD, NekDouble > m_wsp
Workspace array for matrix multiplication.
virtual GlobalLinSysStaticCondSharedPtr v_Recurse(const GlobalLinSysKey &mkey, const std::weak_ptr< ExpList > &pExpList, const DNekScalBlkMatSharedPtr pSchurCompl, const DNekScalBlkMatSharedPtr pBinvD, const DNekScalBlkMatSharedPtr pC, const DNekScalBlkMatSharedPtr pInvD, const std::shared_ptr< AssemblyMap > &locToGloMap)=0
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...
static Array< OneD, NekDouble > NullNekDouble1DArray
std::weak_ptr< AssemblyMap > m_locToGloMap
Local to global map.
virtual void v_InitObject()
DNekScalBlkMatSharedPtr m_schurCompl
Block Schur complement matrix.
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
GlobalLinSysStaticCondSharedPtr m_recursiveSchurCompl
Schur complement for Direct Static Condensation.
DNekScalBlkMatSharedPtr m_C
Block matrix.
void SetupTopLevel(const std::shared_ptr< AssemblyMap > &locToGloMap)
Set up the storage for the Schur complement or the top level of the multi-level Schur complement...
DNekScalBlkMatSharedPtr m_invD
Block matrix.
std::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
GlobalLinSysStaticCond(const GlobalLinSysKey &mkey, const std::weak_ptr< ExpList > &pExpList, const std::shared_ptr< AssemblyMap > &locToGloMap)
Constructor for full direct matrix solve.
virtual DNekScalBlkMatSharedPtr v_PreSolve(int scLevel, NekVector< NekDouble > &F_GlobBnd)
void ConstructNextLevelCondensedSystem(const std::shared_ptr< AssemblyMap > &locToGloMap)
virtual void v_AssembleSchurComplement(std::shared_ptr< AssemblyMap > pLoctoGloMap)
Describe a linear system.
virtual void v_Initialise(const std::shared_ptr< AssemblyMap > &locToGloMap)
Initialise this object.
virtual void v_BasisFwdTransform(Array< OneD, NekDouble > &pInOut, int offset)
virtual void v_BasisBwdTransform(Array< OneD, NekDouble > &pInOut)
virtual int v_GetNumBlocks()
Get the number of blocks in this system.
virtual ~GlobalLinSysStaticCond()
DNekScalBlkMatSharedPtr m_BinvD
Block matrix.