52 "GlobalSysSoln",
"DirectMultiLevelStaticCond",
57 "GlobalSysSoln",
"IterativeStaticCond",
60 "GlobalSysSoln",
"IterativeMultiLevelStaticCond",
67 "GlobalSysSoln",
"XxtMultiLevelStaticCond",
74 "GlobalSysSoln",
"PETScMultiLevelStaticCond",
77#ifdef NEKTAR_USE_SCOTCH
80 "GlobalSysSoln",
"DirectMultiLevelStaticCond");
195 [[maybe_unused]]
const std::shared_ptr<AssemblyMap> &pLocToGloMap)
196 : m_linSysKey(pKey), m_expList(pExpList),
197 m_robinBCInfo(m_expList.lock()->GetRobinBCInfo()),
199 m_expList.lock()->GetSession()->DefinesCmdLineArgument(
"verbose"))
211 std::string PreconType = asmMap->GetPreconType();
234 std::shared_ptr<MultiRegions::ExpList> expList =
m_expList.lock();
255 "VarCoeffSVVCuroffRatio is set but "
256 " not FactorSVVCutoffRatio");
283 expList->GetPhys_Offset(n),
284 vExp->GetTotPoints());
288 vExp->DetShapeType(), *vExp, vConstFactorMap,
312 int rows = loc_mat->GetRows();
313 int cols = loc_mat->GetColumns();
314 const NekDouble *dat = loc_mat->GetRawPtr();
317 Blas::Dscal(rows * cols, loc_mat->Scale(), new_mat->GetRawPtr(), 1);
320 for (rBC =
m_robinBCInfo.find(n)->second; rBC; rBC = rBC->next)
322 vExp->AddRobinMassMatrix(rBC->m_robinID,
323 rBC->m_robinPrimitiveCoeffs, new_mat);
354 tmp_mat = loc_mat->GetBlock(0, 0);
357 int rows = tmp_mat->GetRows();
358 int cols = tmp_mat->GetColumns();
359 const NekDouble *dat = tmp_mat->GetRawPtr();
362 Blas::Dscal(rows * cols, tmp_mat->Scale(), new_mat->GetRawPtr(), 1);
365 for (rBC =
m_robinBCInfo.find(n)->second; rBC; rBC = rBC->next)
367 vExp->AddRobinMassMatrix(rBC->m_robinID,
368 rBC->m_robinPrimitiveCoeffs, new_mat);
374 unsigned int exp_size[] = {tmp_mat->GetRows(),
375 loc_mat->GetBlock(1, 1)->GetRows()};
376 unsigned int nblks = 2;
378 nblks, nblks, exp_size, exp_size);
380 new_loc_mat->SetBlock(0, 0, tmp_mat);
381 new_loc_mat->SetBlock(0, 1, loc_mat->GetBlock(0, 1));
382 new_loc_mat->SetBlock(1, 0, loc_mat->GetBlock(1, 0));
383 new_loc_mat->SetBlock(1, 1, loc_mat->GetBlock(1, 1));
384 loc_mat = new_loc_mat;
420 [[maybe_unused]]
const std::shared_ptr<AssemblyMap> &pLocToGloMap)
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Provides a generic Factory class.
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
static std::string RegisterEnumValue(std::string pEnum, std::string pString, int pEnumValue)
Registers an enumeration value.
static std::string RegisterDefaultSolverInfo(const std::string &pName, const std::string &pValue)
Registers the default string value of a solver info property.
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
virtual int v_GetNumBlocks()
Get the number of blocks in this system.
const std::weak_ptr< ExpList > m_expList
Local Matrix System.
static std::string lookupIds[]
LocalRegions::MatrixKey GetBlockMatrixKey(unsigned int n)
std::shared_ptr< GlobalLinSys > GetSharedThisPtr()
Returns a shared pointer to the current object.
const std::map< int, RobinBCInfoSharedPtr > m_robinBCInfo
Robin boundary info.
GlobalLinSys(const GlobalLinSysKey &pKey, const std::weak_ptr< ExpList > &pExpList, const std::shared_ptr< AssemblyMap > &pLocToGloMap)
Constructor for full direct matrix solve.
virtual void v_InitObject()
const GlobalLinSysKey m_linSysKey
Key associated with this linear system.
virtual DNekScalMatSharedPtr v_GetBlock(unsigned int n)
Retrieves the block matrix from n-th expansion using the matrix key provided by the m_linSysKey.
virtual void v_DropBlock(unsigned int n)
Releases the local block matrix from NekManager of n-th expansion using the matrix key provided by th...
PreconditionerSharedPtr CreatePrecon(AssemblyMapSharedPtr asmMap)
Create a preconditioner object from the parameters defined in the supplied assembly map.
virtual DNekScalBlkMatSharedPtr v_GetStaticCondBlock(unsigned int n)
Retrieves a the static condensation block matrices from n-th expansion using the matrix key provided ...
virtual void v_Initialise(const std::shared_ptr< AssemblyMap > &pLocToGloMap)
virtual void v_DropStaticCondBlock(unsigned int n)
Releases the static condensation block matrices from NekManager of n-th expansion using the matrix ke...
Describe a linear system.
int GetNVarFactors() const
const Array< OneD, const NekDouble > & GetVarFactors(const StdRegions::ConstFactorType &coeff) const
const StdRegions::ConstFactorMap & GetConstFactors() const
Returns all the constants.
int GetNVarCoeffs() const
const StdRegions::VarCoeffMap & GetVarCoeffs() const
StdRegions::MatrixType GetMatrixType() const
Return the matrix type.
static void Dscal(const int &n, const double &alpha, double *x, const int &incx)
BLAS level 1: x = alpha x.
std::shared_ptr< Expansion > ExpansionSharedPtr
@ eIterativeMultiLevelStaticCond
@ eDirectMultiLevelStaticCond
@ eXxtMultiLevelStaticCond
@ ePETScMultiLevelStaticCond
std::shared_ptr< RobinBCInfo > RobinBCInfoSharedPtr
GlobalLinSysFactory & GetGlobalLinSysFactory()
std::shared_ptr< Preconditioner > PreconditionerSharedPtr
PreconFactory & GetPreconFactory()
std::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
@ eFactorSVVDGKerDiffCoeff
@ eFactorSVVPowerKerDiffCoeff
VarCoeffMap RestrictCoeffMap(const VarCoeffMap &m, size_t offset, size_t cnt)
std::map< ConstFactorType, NekDouble > ConstFactorMap
std::map< StdRegions::VarCoeffType, VarCoeffEntry > VarCoeffMap
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr