46 namespace MultiRegions
50 "GlobalSysSoln",
"DirectFull",
53 "GlobalSysSoln",
"DirectStaticCond",
56 "GlobalSysSoln",
"DirectMultiLevelStaticCond",
59 "GlobalSysSoln",
"IterativeFull",
62 "GlobalSysSoln",
"IterativeStaticCond",
65 "GlobalSysSoln",
"IterativeMultiLevelStaticCond",
68 "GlobalSysSoln",
"XxtFull",
71 "GlobalSysSoln",
"XxtStaticCond",
74 "GlobalSysSoln",
"XxtMultiLevelStaticCond",
77 "GlobalSysSoln",
"PETScFull",
80 "GlobalSysSoln",
"PETScStaticCond",
83 "GlobalSysSoln",
"PETScMultiLevelStaticCond",
89 "DirectMultiLevelStaticCond");
189 const boost::weak_ptr<ExpList> &pExpList,
190 const boost::shared_ptr<AssemblyMap>
194 m_robinBCInfo(m_expList.lock()->GetRobinBCInfo())
204 Loki::CreateUsingNew,
206 Loki::SingleThreaded> Type;
207 return Type::Instance();
230 boost::shared_ptr<MultiRegions::ExpList> expList =
m_expList.lock();
245 StdRegions::VarCoeffMap::const_iterator x;
246 cnt = expList->GetPhys_Offset(n);
251 vVarCoeffMap[x->first] = x->second + cnt;
256 vExp->DetShapeType(),
259 loc_mat = vExp->GetLocMatrix(matkey);
267 int rows = loc_mat->GetRows();
268 int cols = loc_mat->GetColumns();
269 const NekDouble *dat = loc_mat->GetRawPtr();
272 Blas::Dscal(rows*cols,loc_mat->Scale(),new_mat->GetRawPtr(),1);
275 for(rBC =
m_robinBCInfo.find(n)->second;rBC; rBC = rBC->next)
277 vExp->AddRobinMassMatrix(
278 rBC->m_robinID, rBC->m_robinPrimitiveCoeffs, new_mat);
301 boost::shared_ptr<MultiRegions::ExpList> expList =
m_expList.lock();
315 StdRegions::VarCoeffMap::const_iterator x;
316 cnt = expList->GetPhys_Offset(n);
320 vVarCoeffMap[x->first] = x->second + cnt;
325 vExp->DetShapeType(),
330 loc_mat = vExp->GetLocStaticCondMatrix(matkey);
336 tmp_mat = loc_mat->GetBlock(0,0);
339 int rows = tmp_mat->GetRows();
340 int cols = tmp_mat->GetColumns();
341 const NekDouble *dat = tmp_mat->GetRawPtr();
344 Blas::Dscal(rows*cols,tmp_mat->Scale(),new_mat->GetRawPtr(),1);
347 for(rBC =
m_robinBCInfo.find(n)->second;rBC; rBC = rBC->next)
349 vExp->AddRobinMassMatrix(
350 rBC->m_robinID, rBC->m_robinPrimitiveCoeffs, new_mat);
356 loc_mat->SetBlock(0,0,tmp_mat);
370 boost::shared_ptr<MultiRegions::ExpList> expList =
m_expList.lock();
381 StdRegions::VarCoeffMap::const_iterator x;
382 int cnt = expList->GetPhys_Offset(n);
386 vVarCoeffMap[x->first] = x->second + cnt;
391 vExp->DetShapeType(),
396 vExp->DropLocStaticCondMatrix(matkey);
405 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 StdRegions::VarCoeffMap & GetVarCoeffs() const
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
static std::string RegisterEnumValue(std::string pEnum, std::string pString, int pEnumValue)
Registers an enumeration value.
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
boost::shared_ptr< RobinBCInfo > RobinBCInfoSharedPtr
virtual DNekScalBlkMatSharedPtr v_GetStaticCondBlock(unsigned int n)
Retrieves a the static condensation block matrices from n-th expansion using the matrix key provided ...
const StdRegions::ConstFactorMap & GetConstFactors() const
Returns all the constants.
boost::shared_ptr< DNekMat > DNekMatSharedPtr
boost::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
virtual void v_Initialise(const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
int GetNVarCoeffs() const
std::map< StdRegions::VarCoeffType, Array< OneD, NekDouble > > VarCoeffMap
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< DNekScalBlkMat > DNekScalBlkMatSharedPtr
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.
StdRegions::MatrixType GetMatrixType() const
Return the matrix type.
const GlobalLinSysKey m_linSysKey
Key associated with this linear system.
boost::shared_ptr< Expansion > ExpansionSharedPtr
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[]
static std::string RegisterDefaultSolverInfo(const std::string &pName, const std::string &pValue)
Registers the default string value of a solver info property.
GlobalLinSysFactory & GetGlobalLinSysFactory()
boost::shared_ptr< StdExpansion > StdExpansionSharedPtr
Provides a generic Factory class.
const boost::weak_ptr< ExpList > m_expList
Local Matrix System.