36 #ifndef NEKTAR_LIB_MULTIREGIONS_GLOBALLINSYSSTATICCOND_H
37 #define NEKTAR_LIB_MULTIREGIONS_GLOBALLINSYSSTATICCOND_H
45 namespace MultiRegions
51 typedef boost::shared_ptr<GlobalLinSysStaticCond>
61 const boost::weak_ptr<ExpList> &pExpList,
62 const boost::shared_ptr<AssemblyMap> &locToGloMap);
88 boost::shared_ptr<AssemblyMap> pLoctoGloMap)
95 virtual GlobalLinSysStaticCondSharedPtr
v_Recurse(
97 const boost::weak_ptr<ExpList> &pExpList,
102 const boost::shared_ptr<AssemblyMap> &locToGloMap) = 0;
132 const boost::shared_ptr<AssemblyMap>& locToGloMap);
137 const boost::shared_ptr<AssemblyMap>& locToGloMap);
141 const boost::shared_ptr<AssemblyMap>& locToGloMap);
Array< OneD, NekDouble > m_wsp
Workspace array for matrix multiplication.
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 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)=0
static Array< OneD, NekDouble > NullNekDouble1DArray
boost::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
virtual void v_InitObject()
DNekScalBlkMatSharedPtr m_schurCompl
Block Schur complement matrix.
GlobalLinSysStaticCondSharedPtr m_recursiveSchurCompl
Schur complement for Direct Static Condensation.
DNekScalBlkMatSharedPtr m_C
Block matrix.
virtual void v_BasisTransform(Array< OneD, NekDouble > &pInOut, int offset)
virtual void v_Initialise(const boost::shared_ptr< AssemblyMap > &locToGloMap)
Initialise this object.
DNekScalBlkMatSharedPtr m_invD
Block matrix.
virtual void v_AssembleSchurComplement(boost::shared_ptr< AssemblyMap > pLoctoGloMap)
virtual DNekScalBlkMatSharedPtr v_PreSolve(int scLevel, NekVector< NekDouble > &F_GlobBnd)
boost::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
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...
Describe a linear system.
virtual int v_GetNumBlocks()
Get the number of blocks in this system.
GlobalLinSysStaticCond(const GlobalLinSysKey &mkey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &locToGloMap)
Constructor for full direct matrix solve.
virtual ~GlobalLinSysStaticCond()
boost::shared_ptr< AssemblyMap > m_locToGloMap
Local to global map.
virtual void v_BasisInvTransform(Array< OneD, NekDouble > &pInOut)
DNekScalBlkMatSharedPtr m_BinvD
Block matrix.
void ConstructNextLevelCondensedSystem(const boost::shared_ptr< AssemblyMap > &locToGloMap)
boost::shared_ptr< GlobalLinSysStaticCond > GlobalLinSysStaticCondSharedPtr