Nektar++
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | List of all members
Nektar::MultiRegions::GlobalLinSysDirectStaticCond Class Reference

A global linear system. More...

#include <GlobalLinSysDirectStaticCond.h>

Inheritance diagram for Nektar::MultiRegions::GlobalLinSysDirectStaticCond:
[legend]

Public Member Functions

 GlobalLinSysDirectStaticCond (const GlobalLinSysKey &mkey, const std::weak_ptr< ExpList > &pExpList, const std::shared_ptr< AssemblyMap > &locToGloMap)
 Constructor for full direct matrix solve. More...
 
 GlobalLinSysDirectStaticCond (const GlobalLinSysKey &mkey, const std::weak_ptr< ExpList > &pExpList, const DNekScalBlkMatSharedPtr pSchurCompl, const DNekScalBlkMatSharedPtr pBinvD, const DNekScalBlkMatSharedPtr pC, const DNekScalBlkMatSharedPtr pInvD, const std::shared_ptr< AssemblyMap > &locToGloMap)
 Constructor for full direct matrix solve. More...
 
 ~GlobalLinSysDirectStaticCond () override
 
- Public Member Functions inherited from Nektar::MultiRegions::GlobalLinSysDirect
 GlobalLinSysDirect (const GlobalLinSysKey &pKey, const std::weak_ptr< ExpList > &pExp, const std::shared_ptr< AssemblyMap > &pLocToGloMap)
 Constructor for full direct matrix solve. More...
 
 ~GlobalLinSysDirect () override
 
- Public Member Functions inherited from Nektar::MultiRegions::GlobalLinSys
 GlobalLinSys (const GlobalLinSysKey &pKey, const std::weak_ptr< ExpList > &pExpList, const std::shared_ptr< AssemblyMap > &pLocToGloMap)
 Constructor for full direct matrix solve. More...
 
virtual ~GlobalLinSys ()
 
const GlobalLinSysKeyGetKey (void) const
 Returns the key associated with the system. More...
 
const std::weak_ptr< ExpList > & GetLocMat (void) const
 
void InitObject ()
 
void Initialise (const std::shared_ptr< AssemblyMap > &pLocToGloMap)
 
void 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. More...
 
std::shared_ptr< GlobalLinSysGetSharedThisPtr ()
 Returns a shared pointer to the current object. More...
 
int GetNumBlocks ()
 
DNekScalMatSharedPtr GetBlock (unsigned int n)
 
void DropBlock (unsigned int n)
 
DNekScalBlkMatSharedPtr GetStaticCondBlock (unsigned int n)
 
void DropStaticCondBlock (unsigned int n)
 
void SolveLinearSystem (const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const AssemblyMapSharedPtr &locToGloMap, const int pNumDir=0)
 Solve the linear system for given input and output vectors. More...
 
- Public Member Functions inherited from Nektar::MultiRegions::GlobalLinSysStaticCond
 GlobalLinSysStaticCond (const GlobalLinSysKey &mkey, const std::weak_ptr< ExpList > &pExpList, const std::shared_ptr< AssemblyMap > &locToGloMap)
 Constructor for full direct matrix solve. More...
 
 ~GlobalLinSysStaticCond () override
 

Static Public Member Functions

static GlobalLinSysSharedPtr create (const GlobalLinSysKey &pLinSysKey, const std::weak_ptr< ExpList > &pExpList, const std::shared_ptr< AssemblyMap > &pLocToGloMap)
 Creates an instance of this class. More...
 

Static Public Attributes

static std::string className
 Name of class. More...
 
static std::string className2
 

Protected Member Functions

void v_AssembleSchurComplement (std::shared_ptr< AssemblyMap > pLocToGloMap) override
 
GlobalLinSysStaticCondSharedPtr v_Recurse (const GlobalLinSysKey &mkey, const std::weak_ptr< ExpList > &pExpList, const DNekScalBlkMatSharedPtr pSchurCompl, const DNekScalBlkMatSharedPtr pBinvD, const DNekScalBlkMatSharedPtr pC, const DNekScalBlkMatSharedPtr pInvD, const std::shared_ptr< AssemblyMap > &l2gMap) override
 
- Protected Member Functions inherited from Nektar::MultiRegions::GlobalLinSys
virtual void v_Solve (const Array< OneD, const NekDouble > &in, Array< OneD, NekDouble > &out, const AssemblyMapSharedPtr &locToGloMap, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray)=0
 Solve a linear system based on mapping. More...
 
virtual void v_SolveLinearSystem (const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const AssemblyMapSharedPtr &locToGloMap, const int pNumDir)=0
 Solve a basic matrix system. More...
 
virtual void v_InitObject ()
 
virtual void v_Initialise (const std::shared_ptr< AssemblyMap > &pLocToGloMap)
 
virtual int v_GetNumBlocks ()
 Get the number of blocks in this system. More...
 
virtual DNekScalMatSharedPtr v_GetBlock (unsigned int n)
 Retrieves the block matrix from n-th expansion using the matrix key provided by the m_linSysKey. More...
 
virtual void v_DropBlock (unsigned int n)
 Releases the local block matrix from NekManager of n-th expansion using the matrix key provided by the m_linSysKey. More...
 
virtual DNekScalBlkMatSharedPtr v_GetStaticCondBlock (unsigned int n)
 Retrieves a the static condensation block matrices from n-th expansion using the matrix key provided by the m_linSysKey. More...
 
virtual void v_DropStaticCondBlock (unsigned int n)
 Releases the static condensation block matrices from NekManager of n-th expansion using the matrix key provided by the m_linSysKey. More...
 
PreconditionerSharedPtr CreatePrecon (AssemblyMapSharedPtr asmMap)
 Create a preconditioner object from the parameters defined in the supplied assembly map. More...
 
- Protected Member Functions inherited from Nektar::MultiRegions::GlobalLinSysStaticCond
virtual void v_PreSolve (int scLevel, Array< OneD, NekDouble > &F_bnd)
 
virtual void v_BasisFwdTransform (Array< OneD, NekDouble > &pInOut)
 
virtual void v_CoeffsBwdTransform (Array< OneD, NekDouble > &pInOut)
 
virtual void v_CoeffsFwdTransform (const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
 
virtual void v_AssembleSchurComplement (std::shared_ptr< AssemblyMap > pLoctoGloMap)
 
int v_GetNumBlocks () override
 Get the number of blocks in this system. More...
 
virtual GlobalLinSysStaticCondSharedPtr v_Recurse (const GlobalLinSysKey &mkey, const std::weak_ptr< ExpList > &pExpList, const DNekScalBlkMatSharedPtr pSchurCompl, const DNekScalBlkMatSharedPtr pBinvD, const DNekScalBlkMatSharedPtr pC, const DNekScalBlkMatSharedPtr pInvD, const std::shared_ptr< AssemblyMap > &locToGloMap)=0
 
void v_Solve (const Array< OneD, const NekDouble > &in, Array< OneD, NekDouble > &out, const AssemblyMapSharedPtr &locToGloMap, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray) override
 Solve the linear system for given input and output vectors using a specified local to global map. More...
 
void v_InitObject () override
 
void v_Initialise (const std::shared_ptr< AssemblyMap > &locToGloMap) override
 Initialise this object. More...
 
void SetupTopLevel (const std::shared_ptr< AssemblyMap > &locToGloMap)
 Set up the storage for the Schur complement or the top level of the multi-level Schur complement. More...
 
void ConstructNextLevelCondensedSystem (const std::shared_ptr< AssemblyMap > &locToGloMap)
 

Private Member Functions

MatrixStorage DetermineMatrixStorage (const std::shared_ptr< AssemblyMap > &locToGloMap)
 Matrix Storage type for known matrices. More...
 
void v_SolveLinearSystem (const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const AssemblyMapSharedPtr &locToGloMap, const int pNumDir) override
 Solve the linear system for given input and output vectors. More...
 

Additional Inherited Members

- Protected Attributes inherited from Nektar::MultiRegions::GlobalLinSysDirect
DNekLinSysSharedPtr m_linSys
 Basic linear system object. More...
 
- Protected Attributes inherited from Nektar::MultiRegions::GlobalLinSys
const GlobalLinSysKey m_linSysKey
 Key associated with this linear system. More...
 
const std::weak_ptr< ExpListm_expList
 Local Matrix System. More...
 
const std::map< int, RobinBCInfoSharedPtrm_robinBCInfo
 Robin boundary info. More...
 
bool m_verbose
 
- Protected Attributes inherited from Nektar::MultiRegions::GlobalLinSysStaticCond
GlobalLinSysStaticCondSharedPtr m_recursiveSchurCompl
 Schur complement for Direct Static Condensation. More...
 
DNekScalBlkMatSharedPtr m_schurCompl
 Block Schur complement matrix. More...
 
DNekScalBlkMatSharedPtr m_BinvD
 Block \( BD^{-1} \) matrix. More...
 
DNekScalBlkMatSharedPtr m_C
 Block \( C \) matrix. More...
 
DNekScalBlkMatSharedPtr m_invD
 Block \( D^{-1} \) matrix. More...
 
std::weak_ptr< AssemblyMapm_locToGloMap
 Local to global map. More...
 
Array< OneD, NekDoublem_wsp
 Workspace array for matrix multiplication. More...
 
Array< OneD, const NekDoublem_sign
 

Detailed Description

A global linear system.

Definition at line 51 of file GlobalLinSysDirectStaticCond.h.

Constructor & Destructor Documentation

◆ GlobalLinSysDirectStaticCond() [1/2]

Nektar::MultiRegions::GlobalLinSysDirectStaticCond::GlobalLinSysDirectStaticCond ( const GlobalLinSysKey pKey,
const std::weak_ptr< ExpList > &  pExpList,
const std::shared_ptr< AssemblyMap > &  pLocToGloMap 
)

Constructor for full direct matrix solve.

For a matrix system of the form

\[ \left[ \begin{array}{cc} \boldsymbol{A} & \boldsymbol{B}\\ \boldsymbol{C} & \boldsymbol{D} \end{array} \right] \left[ \begin{array}{c} \boldsymbol{x_1}\\ \boldsymbol{x_2} \end{array}\right] = \left[ \begin{array}{c} \boldsymbol{y_1}\\ \boldsymbol{y_2} \end{array}\right], \]

where \(\boldsymbol{D}\) and \((\boldsymbol{A-BD^{-1}C})\) are invertible, store and assemble a static condensation system, according to a given local to global mapping. m_linSys is constructed by AssembleSchurComplement().

Parameters
mKeyAssociated matrix key.
pLocMatSysLocalMatrixSystem
locToGloMapLocal to global mapping.

Definition at line 78 of file GlobalLinSysDirectStaticCond.cpp.

81 : GlobalLinSys(pKey, pExpList, pLocToGloMap),
82 GlobalLinSysDirect(pKey, pExpList, pLocToGloMap),
83 GlobalLinSysStaticCond(pKey, pExpList, pLocToGloMap)
84{
85 ASSERTL1((pKey.GetGlobalSysSolnType() == eDirectStaticCond) ||
86 (pKey.GetGlobalSysSolnType() == eDirectMultiLevelStaticCond),
87 "This constructor is only valid when using static "
88 "condensation");
89 ASSERTL1(pKey.GetGlobalSysSolnType() ==
90 pLocToGloMap->GetGlobalSysSolnType(),
91 "The local to global map is not set up for the requested "
92 "solution type");
93}
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:242
GlobalLinSysDirect(const GlobalLinSysKey &pKey, const std::weak_ptr< ExpList > &pExp, const std::shared_ptr< AssemblyMap > &pLocToGloMap)
Constructor for full direct matrix solve.
GlobalLinSys(const GlobalLinSysKey &pKey, const std::weak_ptr< ExpList > &pExpList, const std::shared_ptr< AssemblyMap > &pLocToGloMap)
Constructor for full direct matrix solve.
GlobalLinSysStaticCond(const GlobalLinSysKey &mkey, const std::weak_ptr< ExpList > &pExpList, const std::shared_ptr< AssemblyMap > &locToGloMap)
Constructor for full direct matrix solve.

References ASSERTL1, Nektar::MultiRegions::eDirectMultiLevelStaticCond, Nektar::MultiRegions::eDirectStaticCond, and Nektar::MultiRegions::GlobalLinSysKey::GetGlobalSysSolnType().

◆ GlobalLinSysDirectStaticCond() [2/2]

Nektar::MultiRegions::GlobalLinSysDirectStaticCond::GlobalLinSysDirectStaticCond ( const GlobalLinSysKey mkey,
const std::weak_ptr< ExpList > &  pExpList,
const DNekScalBlkMatSharedPtr  pSchurCompl,
const DNekScalBlkMatSharedPtr  pBinvD,
const DNekScalBlkMatSharedPtr  pC,
const DNekScalBlkMatSharedPtr  pInvD,
const std::shared_ptr< AssemblyMap > &  locToGloMap 
)

Constructor for full direct matrix solve.

Definition at line 98 of file GlobalLinSysDirectStaticCond.cpp.

104 : GlobalLinSys(pKey, pExpList, pLocToGloMap),
105 GlobalLinSysDirect(pKey, pExpList, pLocToGloMap),
106 GlobalLinSysStaticCond(pKey, pExpList, pLocToGloMap)
107{
108 m_schurCompl = pSchurCompl;
109 m_BinvD = pBinvD;
110 m_C = pC;
111 m_invD = pInvD;
112}
DNekScalBlkMatSharedPtr m_schurCompl
Block Schur complement matrix.
DNekScalBlkMatSharedPtr m_BinvD
Block matrix.
DNekScalBlkMatSharedPtr m_C
Block matrix.
DNekScalBlkMatSharedPtr m_invD
Block matrix.

References Nektar::MultiRegions::GlobalLinSysStaticCond::m_BinvD, Nektar::MultiRegions::GlobalLinSysStaticCond::m_C, Nektar::MultiRegions::GlobalLinSysStaticCond::m_invD, and Nektar::MultiRegions::GlobalLinSysStaticCond::m_schurCompl.

◆ ~GlobalLinSysDirectStaticCond()

Nektar::MultiRegions::GlobalLinSysDirectStaticCond::~GlobalLinSysDirectStaticCond ( )
override

Definition at line 117 of file GlobalLinSysDirectStaticCond.cpp.

118{
119}

Member Function Documentation

◆ create()

static GlobalLinSysSharedPtr Nektar::MultiRegions::GlobalLinSysDirectStaticCond::create ( const GlobalLinSysKey pLinSysKey,
const std::weak_ptr< ExpList > &  pExpList,
const std::shared_ptr< AssemblyMap > &  pLocToGloMap 
)
inlinestatic

Creates an instance of this class.

Definition at line 56 of file GlobalLinSysDirectStaticCond.h.

60 {
63 pLinSysKey, pExpList, pLocToGloMap);
64 ret->InitObject();
65 return ret;
66 }
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::shared_ptr< GlobalLinSysDirectStaticCond > GlobalLinSysDirectStaticCondSharedPtr

References Nektar::MemoryManager< DataType >::AllocateSharedPtr().

◆ DetermineMatrixStorage()

MatrixStorage Nektar::MultiRegions::GlobalLinSysDirectStaticCond::DetermineMatrixStorage ( const std::shared_ptr< AssemblyMap > &  locToGloMap)
private

Matrix Storage type for known matrices.

Definition at line 121 of file GlobalLinSysDirectStaticCond.cpp.

123{
124 int nBndDofs = pLocToGloMap->GetNumGlobalBndCoeffs();
125 int NumDirBCs = pLocToGloMap->GetNumGlobalDirBndCoeffs();
126 unsigned int rows = nBndDofs - NumDirBCs;
127 int bwidth = pLocToGloMap->GetBndSystemBandWidth();
128
129 MatrixStorage matStorage;
130
131 switch (m_linSysKey.GetMatrixType())
132 {
133 // case for all symmetric matices
138 {
139 if ((2 * (bwidth + 1)) < rows)
140 {
142 }
143 else
144 {
145 matStorage = ePOSITIVE_DEFINITE_SYMMETRIC;
146 }
147 }
148 break;
152 default:
153 {
154 // Current inversion techniques do not seem to
155 // allow banded matrices to be used as a linear
156 // system
157 matStorage = eFULL;
158 }
159 break;
160 }
161
162 return matStorage;
163}
const GlobalLinSysKey m_linSysKey
Key associated with this linear system.
Definition: GlobalLinSys.h:120
StdRegions::MatrixType GetMatrixType() const
Return the matrix type.
@ ePOSITIVE_DEFINITE_SYMMETRIC_BANDED
@ ePOSITIVE_DEFINITE_SYMMETRIC

References Nektar::eFULL, Nektar::StdRegions::eHelmholtz, Nektar::StdRegions::eHybridDGHelmBndLam, Nektar::StdRegions::eLaplacian, Nektar::StdRegions::eLinearAdvection, Nektar::StdRegions::eLinearAdvectionDiffusionReaction, Nektar::StdRegions::eLinearAdvectionReaction, Nektar::StdRegions::eMass, Nektar::ePOSITIVE_DEFINITE_SYMMETRIC, Nektar::ePOSITIVE_DEFINITE_SYMMETRIC_BANDED, Nektar::MultiRegions::GlobalMatrixKey::GetMatrixType(), and Nektar::MultiRegions::GlobalLinSys::m_linSysKey.

Referenced by v_AssembleSchurComplement().

◆ v_AssembleSchurComplement()

void Nektar::MultiRegions::GlobalLinSysDirectStaticCond::v_AssembleSchurComplement ( std::shared_ptr< AssemblyMap pLocToGloMap)
overrideprotectedvirtual

Assemble the schur complement matrix from the block matrices stored in #m_blkMatrices and the given local to global mapping information.

Parameters
locToGloMapLocal to global mapping information.

Reimplemented from Nektar::MultiRegions::GlobalLinSysStaticCond.

Definition at line 170 of file GlobalLinSysDirectStaticCond.cpp.

172{
173 int i, j, n, cnt, gid1, gid2;
174 NekDouble sign1, sign2, value;
175
176 int nBndDofs = pLocToGloMap->GetNumGlobalBndCoeffs();
177 int NumDirBCs = pLocToGloMap->GetNumGlobalDirBndCoeffs();
178
183
184 unsigned int rows = nBndDofs - NumDirBCs;
185 unsigned int cols = nBndDofs - NumDirBCs;
186
187 DNekMatSharedPtr Gmat;
188 int bwidth = pLocToGloMap->GetBndSystemBandWidth();
189
190 MatrixStorage matStorage = DetermineMatrixStorage(pLocToGloMap);
191
192 switch (matStorage)
193 {
195 {
196 try
197 {
199 rows, cols, 0.0, matStorage, bwidth, bwidth);
200 }
201 catch (...)
202 {
204 "Insufficient memory for GlobalLinSys.");
205 }
206 break;
207 }
208
210 case eFULL:
211 {
212 Gmat = MemoryManager<DNekMat>::AllocateSharedPtr(rows, cols, 0.0,
213 matStorage);
214 break;
215 }
216
217 default:
218 {
220 "Unknown matrix storage type of type not set up");
221 }
222 }
223
224 // fill global matrix
225 DNekScalMatSharedPtr loc_mat;
226 int loc_lda;
227 for (n = cnt = 0; n < SchurCompl->GetNumberOfBlockRows(); ++n)
228 {
229 loc_mat = SchurCompl->GetBlock(n, n);
230 loc_lda = loc_mat->GetRows();
231
232 // Set up Matrix;
233 for (i = 0; i < loc_lda; ++i)
234 {
235 gid1 = pLocToGloMap->GetLocalToGlobalBndMap(cnt + i) - NumDirBCs;
236 sign1 = pLocToGloMap->GetLocalToGlobalBndSign(cnt + i);
237
238 if (gid1 >= 0)
239 {
240 for (j = 0; j < loc_lda; ++j)
241 {
242 gid2 = pLocToGloMap->GetLocalToGlobalBndMap(cnt + j) -
243 NumDirBCs;
244 sign2 = pLocToGloMap->GetLocalToGlobalBndSign(cnt + j);
245
246 if (gid2 >= 0)
247 {
248 // As the global matrix should be symmetric,
249 // only add the value for the upper triangular
250 // part in order to avoid entries to be entered
251 // twice
252 if ((matStorage == eFULL) || (gid2 >= gid1))
253 {
254 value = Gmat->GetValue(gid1, gid2) +
255 sign1 * sign2 * (*loc_mat)(i, j);
256 Gmat->SetValue(gid1, gid2, value);
257 }
258 }
259 }
260 }
261 }
262 cnt += loc_lda;
263 }
264
265 if (rows)
266 {
269 }
270}
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
Definition: ErrorUtil.hpp:202
DNekLinSysSharedPtr m_linSys
Basic linear system object.
MatrixStorage DetermineMatrixStorage(const std::shared_ptr< AssemblyMap > &locToGloMap)
Matrix Storage type for known matrices.
std::vector< double > w(NPUPPER)
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
Definition: NekTypeDefs.hpp:79
std::shared_ptr< DNekMat > DNekMatSharedPtr
Definition: NekTypeDefs.hpp:75
double NekDouble
PointerWrapper
Specifies if the pointer passed to a NekMatrix or NekVector is copied into an internal representation...

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), DetermineMatrixStorage(), Nektar::ErrorUtil::efatal, Nektar::eFULL, Nektar::ePOSITIVE_DEFINITE_SYMMETRIC, Nektar::ePOSITIVE_DEFINITE_SYMMETRIC_BANDED, Nektar::eWrapper, Nektar::MultiRegions::GlobalLinSysStaticCond::m_BinvD, Nektar::MultiRegions::GlobalLinSysStaticCond::m_C, Nektar::MultiRegions::GlobalLinSysStaticCond::m_invD, Nektar::MultiRegions::GlobalLinSysDirect::m_linSys, Nektar::MultiRegions::GlobalLinSysStaticCond::m_schurCompl, NEKERROR, and Nektar::UnitTests::w().

◆ v_Recurse()

GlobalLinSysStaticCondSharedPtr Nektar::MultiRegions::GlobalLinSysDirectStaticCond::v_Recurse ( const GlobalLinSysKey mkey,
const std::weak_ptr< ExpList > &  pExpList,
const DNekScalBlkMatSharedPtr  pSchurCompl,
const DNekScalBlkMatSharedPtr  pBinvD,
const DNekScalBlkMatSharedPtr  pC,
const DNekScalBlkMatSharedPtr  pInvD,
const std::shared_ptr< AssemblyMap > &  l2gMap 
)
overrideprotectedvirtual

Implements Nektar::MultiRegions::GlobalLinSysStaticCond.

Definition at line 272 of file GlobalLinSysDirectStaticCond.cpp.

278{
281 mkey, pExpList, pSchurCompl, pBinvD, pC, pInvD, l2gMap);
282 sys->Initialise(l2gMap);
283 return sys;
284}

References Nektar::MemoryManager< DataType >::AllocateSharedPtr().

◆ v_SolveLinearSystem()

void Nektar::MultiRegions::GlobalLinSysDirectStaticCond::v_SolveLinearSystem ( const int  pNumRows,
const Array< OneD, const NekDouble > &  pInput,
Array< OneD, NekDouble > &  pOutput,
const AssemblyMapSharedPtr locToGloMap,
const int  pNumDir 
)
overrideprivatevirtual

Solve the linear system for given input and output vectors.

Implements Nektar::MultiRegions::GlobalLinSys.

Definition at line 287 of file GlobalLinSysDirectStaticCond.cpp.

291{
292 Array<OneD, NekDouble> tmp(pNumRows);
293 Array<OneD, NekDouble> global(pNumRows, 0.0);
294
295 pLocToGloMap->AssembleBnd(pInput, tmp);
296
297 const int nHomDofs = pNumRows - pNumDir;
298 DNekVec Vin(nHomDofs, tmp + pNumDir);
299
300 Array<OneD, NekDouble> tmp1 = global + pNumDir;
301 DNekVec Vout(nHomDofs, tmp1, eWrapper);
302
303 m_linSys->Solve(Vin, Vout);
304
305 pLocToGloMap->GlobalToLocalBnd(global, pOutput);
306}
NekVector< NekDouble > DNekVec
Definition: NekTypeDefs.hpp:48

References Nektar::eWrapper, and Nektar::MultiRegions::GlobalLinSysDirect::m_linSys.

Member Data Documentation

◆ className

std::string Nektar::MultiRegions::GlobalLinSysDirectStaticCond::className
static
Initial value:
=
"Direct static condensation.")
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
Definition: NekFactory.hpp:197
static GlobalLinSysSharedPtr create(const GlobalLinSysKey &pLinSysKey, const std::weak_ptr< ExpList > &pExpList, const std::shared_ptr< AssemblyMap > &pLocToGloMap)
Creates an instance of this class.
GlobalLinSysFactory & GetGlobalLinSysFactory()

Name of class.

Registers the class with the Factory.

Definition at line 69 of file GlobalLinSysDirectStaticCond.h.

◆ className2

std::string Nektar::MultiRegions::GlobalLinSysDirectStaticCond::className2
static
Initial value:
=
"DirectMultiLevelStaticCond", GlobalLinSysDirectStaticCond::create,
"Direct multi-level static condensation.")

Definition at line 70 of file GlobalLinSysDirectStaticCond.h.