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()),
196 m_verbose(m_expList.lock()->GetSession()->
197 DefinesCmdLineArgument(
"verbose"))
207 Loki::CreateUsingNew,
209 Loki::SingleThreaded> Type;
210 return Type::Instance();
248 boost::shared_ptr<MultiRegions::ExpList> expList =
m_expList.lock();
263 StdRegions::VarCoeffMap::const_iterator x;
264 cnt = expList->GetPhys_Offset(n);
269 vVarCoeffMap[x->first] = x->second + cnt;
274 vExp->DetShapeType(),
277 loc_mat = vExp->GetLocMatrix(matkey);
285 int rows = loc_mat->GetRows();
286 int cols = loc_mat->GetColumns();
287 const NekDouble *dat = loc_mat->GetRawPtr();
290 Blas::Dscal(rows*cols,loc_mat->Scale(),new_mat->GetRawPtr(),1);
293 for(rBC =
m_robinBCInfo.find(n)->second;rBC; rBC = rBC->next)
295 vExp->AddRobinMassMatrix(
296 rBC->m_robinID, rBC->m_robinPrimitiveCoeffs, new_mat);
319 boost::shared_ptr<MultiRegions::ExpList> expList =
m_expList.lock();
333 StdRegions::VarCoeffMap::const_iterator x;
334 cnt = expList->GetPhys_Offset(n);
338 vVarCoeffMap[x->first] = x->second + cnt;
343 vExp->DetShapeType(),
348 loc_mat = vExp->GetLocStaticCondMatrix(matkey);
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(
368 rBC->m_robinID, rBC->m_robinPrimitiveCoeffs, new_mat);
375 unsigned int exp_size[] = {tmp_mat->GetRows(), loc_mat->GetBlock(1,1)->GetRows()};
376 unsigned int nblks = 2;
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;
398 boost::shared_ptr<MultiRegions::ExpList> expList =
m_expList.lock();
409 StdRegions::VarCoeffMap::const_iterator x;
410 int cnt = expList->GetPhys_Offset(n);
414 vVarCoeffMap[x->first] = x->second + cnt;
419 vExp->DetShapeType(),
424 vExp->DropLocStaticCondMatrix(matkey);
433 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...
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[]
const std::map< int, RobinBCInfoSharedPtr > m_robinBCInfo
Robin boundary info.
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.