47 namespace MultiRegions
51 "GlobalSysSoln",
"DirectFull",
54 "GlobalSysSoln",
"DirectStaticCond",
57 "GlobalSysSoln",
"DirectMultiLevelStaticCond",
60 "GlobalSysSoln",
"IterativeFull",
63 "GlobalSysSoln",
"IterativeStaticCond",
66 "GlobalSysSoln",
"IterativeMultiLevelStaticCond",
69 "GlobalSysSoln",
"XxtFull",
72 "GlobalSysSoln",
"XxtStaticCond",
75 "GlobalSysSoln",
"XxtMultiLevelStaticCond",
78 "GlobalSysSoln",
"PETScFull",
81 "GlobalSysSoln",
"PETScStaticCond",
84 "GlobalSysSoln",
"PETScMultiLevelStaticCond",
90 "DirectMultiLevelStaticCond");
190 const boost::weak_ptr<ExpList> &pExpList,
191 const boost::shared_ptr<AssemblyMap>
195 m_robinBCInfo(m_expList.lock()->GetRobinBCInfo())
205 Loki::CreateUsingNew,
207 Loki::SingleThreaded> Type;
208 return Type::Instance();
246 boost::shared_ptr<MultiRegions::ExpList> expList =
m_expList.lock();
261 StdRegions::VarCoeffMap::const_iterator x;
262 cnt = expList->GetPhys_Offset(n);
267 vVarCoeffMap[x->first] = x->second + cnt;
272 vExp->DetShapeType(),
275 loc_mat = vExp->GetLocMatrix(matkey);
283 int rows = loc_mat->GetRows();
284 int cols = loc_mat->GetColumns();
285 const NekDouble *dat = loc_mat->GetRawPtr();
288 Blas::Dscal(rows*cols,loc_mat->Scale(),new_mat->GetRawPtr(),1);
291 for(rBC =
m_robinBCInfo.find(n)->second;rBC; rBC = rBC->next)
293 vExp->AddRobinMassMatrix(
294 rBC->m_robinID, rBC->m_robinPrimitiveCoeffs, new_mat);
317 boost::shared_ptr<MultiRegions::ExpList> expList =
m_expList.lock();
331 StdRegions::VarCoeffMap::const_iterator x;
332 cnt = expList->GetPhys_Offset(n);
336 vVarCoeffMap[x->first] = x->second + cnt;
341 vExp->DetShapeType(),
346 loc_mat = vExp->GetLocStaticCondMatrix(matkey);
352 tmp_mat = loc_mat->GetBlock(0,0);
355 int rows = tmp_mat->GetRows();
356 int cols = tmp_mat->GetColumns();
357 const NekDouble *dat = tmp_mat->GetRawPtr();
360 Blas::Dscal(rows*cols,tmp_mat->Scale(),new_mat->GetRawPtr(),1);
363 for(rBC =
m_robinBCInfo.find(n)->second;rBC; rBC = rBC->next)
365 vExp->AddRobinMassMatrix(
366 rBC->m_robinID, rBC->m_robinPrimitiveCoeffs, new_mat);
373 unsigned int exp_size[] = {tmp_mat->GetRows(), loc_mat->GetBlock(1,1)->GetRows()};
374 unsigned int nblks = 2;
378 new_loc_mat->SetBlock(0,0,tmp_mat);
379 new_loc_mat->SetBlock(0,1,loc_mat->GetBlock(0,1));
380 new_loc_mat->SetBlock(1,0,loc_mat->GetBlock(1,0));
381 new_loc_mat->SetBlock(1,1,loc_mat->GetBlock(1,1));
382 loc_mat = new_loc_mat;
396 boost::shared_ptr<MultiRegions::ExpList> expList =
m_expList.lock();
407 StdRegions::VarCoeffMap::const_iterator x;
408 int cnt = expList->GetPhys_Offset(n);
412 vVarCoeffMap[x->first] = x->second + cnt;
417 vExp->DetShapeType(),
422 vExp->DropLocStaticCondMatrix(matkey);
431 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...
tBaseSharedPtr CreateInstance(tKey idKey BOOST_PP_COMMA_IF(MAX_PARAM) BOOST_PP_ENUM_BINARY_PARAMS(MAX_PARAM, tParam, x))
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 boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
boost::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
boost::shared_ptr< RobinBCInfo > RobinBCInfoSharedPtr
PreconFactory & GetPreconFactory()
boost::shared_ptr< Preconditioner > PreconditionerSharedPtr
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< GlobalLinSys > GetSharedThisPtr()
Returns a shared pointer to the current object.
boost::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
virtual int v_GetNumBlocks()
Get the number of blocks in this system.
virtual void v_InitObject()
boost::shared_ptr< Expansion > ExpansionSharedPtr
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.
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
const char *const PreconditionerTypeMap[]
PreconditionerSharedPtr CreatePrecon(AssemblyMapSharedPtr asmMap)
Create a preconditioner object from the parameters defined in the supplied assembly map...
Provides a generic Factory class.
const boost::weak_ptr< ExpList > m_expList
Local Matrix System.