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

Base class for constructing local to global mapping of degrees of freedom. More...

#include <AssemblyMap.h>

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

Public Member Functions

 AssemblyMap ()
 Default constructor. More...
 
 AssemblyMap (const LibUtilities::SessionReaderSharedPtr &pSession, const std::string variable="DefaultVar")
 Constructor with a communicator. More...
 
 AssemblyMap (AssemblyMap *oldLevelMap, const BottomUpSubStructuredGraphSharedPtr &multiLevelGraph)
 Constructor for next level in multi-level static condensation. More...
 
virtual ~AssemblyMap ()
 Destructor. More...
 
LibUtilities::CommSharedPtr GetComm ()
 Retrieves the communicator. More...
 
size_t GetHash () const
 Retrieves the hash of this map. More...
 
int GetLocalToGlobalMap (const int i) const
 
int GetGlobalToUniversalMap (const int i) const
 
int GetGlobalToUniversalMapUnique (const int i) const
 
const Array< OneD, const int > & GetLocalToGlobalMap ()
 
const Array< OneD, const int > & GetGlobalToUniversalMap ()
 
const Array< OneD, const int > & GetGlobalToUniversalMapUnique ()
 
NekDouble GetLocalToGlobalSign (const int i) const
 
const Array< OneD, NekDouble > & GetLocalToGlobalSign () const
 
void LocalToGlobal (const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global, bool useComm=true) const
 
void LocalToGlobal (const NekVector< NekDouble > &loc, NekVector< NekDouble > &global, bool useComm=true) const
 
void GlobalToLocal (const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc) const
 
void GlobalToLocal (const NekVector< NekDouble > &global, NekVector< NekDouble > &loc) const
 
void Assemble (const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global) const
 
void Assemble (const NekVector< NekDouble > &loc, NekVector< NekDouble > &global) const
 
void UniversalAssemble (Array< OneD, NekDouble > &pGlobal) const
 
void UniversalAssemble (NekVector< NekDouble > &pGlobal) const
 
void UniversalAssemble (Array< OneD, NekDouble > &pGlobal, int offset) const
 
int GetLocalToGlobalBndMap (const int i) const
 Retrieve the global index of a given local boundary mode. More...
 
const Array< OneD, const int > & GetLocalToGlobalBndMap ()
 Retrieve the global indices of the local boundary modes. More...
 
const Array< OneD, const int > & GetGlobalToUniversalBndMap ()
 
const Array< OneD, const int > & GetGlobalToUniversalBndMapUnique ()
 
bool GetSignChange ()
 Returns true if using a modal expansion requiring a change of sign of some modes. More...
 
NekDouble GetLocalToGlobalBndSign (const int i) const
 Retrieve the sign change of a given local boundary mode. More...
 
Array< OneD, const NekDoubleGetLocalToGlobalBndSign () const
 Retrieve the sign change for all local boundary modes. More...
 
int GetBndCondCoeffsToGlobalCoeffsMap (const int i)
 Retrieves the global index corresponding to a boundary expansion mode. More...
 
const Array< OneD, const int > & GetBndCondCoeffsToGlobalCoeffsMap ()
 Retrieves the global indices corresponding to the boundary expansion modes. More...
 
NekDouble GetBndCondCoeffsToGlobalCoeffsSign (const int i)
 Returns the modal sign associated with a given boundary expansion mode. More...
 
int GetBndCondTraceToGlobalTraceMap (const int i)
 Returns the global index of the boundary trace giving the index on the boundary expansion. More...
 
const Array< OneD, const int > & GetBndCondTraceToGlobalTraceMap ()
 
int GetNumGlobalDirBndCoeffs () const
 Returns the number of global Dirichlet boundary coefficients. More...
 
int GetNumLocalDirBndCoeffs () const
 Returns the number of local Dirichlet boundary coefficients. More...
 
int GetNumGlobalBndCoeffs () const
 Returns the total number of global boundary coefficients. More...
 
int GetNumLocalBndCoeffs () const
 Returns the total number of local boundary coefficients. More...
 
int GetNumLocalCoeffs () const
 Returns the total number of local coefficients. More...
 
int GetNumGlobalCoeffs () const
 Returns the total number of global coefficients. More...
 
bool GetSingularSystem () const
 Retrieves if the system is singular (true) or not (false) More...
 
void GlobalToLocalBnd (const NekVector< NekDouble > &global, NekVector< NekDouble > &loc, int offset) const
 
void GlobalToLocalBnd (const NekVector< NekDouble > &global, NekVector< NekDouble > &loc) const
 
void GlobalToLocalBnd (const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc, int offset) const
 
void GlobalToLocalBnd (const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc) const
 
void LocalBndToGlobal (const NekVector< NekDouble > &loc, NekVector< NekDouble > &global, int offset) const
 
void LocalBndToGlobal (const NekVector< NekDouble > &loc, NekVector< NekDouble > &global) const
 
void LocalBndToGlobal (const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global, int offset) const
 
void LocalBndToGlobal (const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global) const
 
void AssembleBnd (const NekVector< NekDouble > &loc, NekVector< NekDouble > &global, int offset) const
 
void AssembleBnd (const NekVector< NekDouble > &loc, NekVector< NekDouble > &global) const
 
void AssembleBnd (const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global, int offset) const
 
void AssembleBnd (const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global) const
 
void UniversalAssembleBnd (Array< OneD, NekDouble > &pGlobal) const
 
void UniversalAssembleBnd (NekVector< NekDouble > &pGlobal) const
 
void UniversalAssembleBnd (Array< OneD, NekDouble > &pGlobal, int offset) const
 
int GetFullSystemBandWidth () const
 
int GetNumNonDirVertexModes () const
 
int GetNumNonDirEdgeModes () const
 
int GetNumNonDirFaceModes () const
 
int GetNumDirEdges () const
 
int GetNumDirFaces () const
 
int GetNumNonDirEdges () const
 
int GetNumNonDirFaces () const
 
void PrintStats (std::ostream &out, std::string variable, bool printHeader=true) const
 
const Array< OneD, const int > & GetExtraDirEdges ()
 
std::shared_ptr< AssemblyMapLinearSpaceMap (const ExpList &locexp, GlobalSysSolnType solnType)
 
int GetBndSystemBandWidth () const
 Returns the bandwidth of the boundary system. More...
 
int GetStaticCondLevel () const
 Returns the level of static condensation for this map. More...
 
int GetNumPatches () const
 Returns the number of patches in this static condensation level. More...
 
const Array< OneD, const unsigned int > & GetNumLocalBndCoeffsPerPatch ()
 Returns the number of local boundary coefficients in each patch. More...
 
const Array< OneD, const unsigned int > & GetNumLocalIntCoeffsPerPatch ()
 Returns the number of local interior coefficients in each patch. More...
 
const AssemblyMapSharedPtr GetNextLevelLocalToGlobalMap () const
 Returns the local to global mapping for the next level in the multi-level static condensation. More...
 
void SetNextLevelLocalToGlobalMap (AssemblyMapSharedPtr pNextLevelLocalToGlobalMap)
 
const PatchMapSharedPtrGetPatchMapFromPrevLevel (void) const
 Returns the patch map from the previous level of the multi-level static condensation. More...
 
bool AtLastLevel () const
 Returns true if this is the last level in the multi-level static condensation. More...
 
GlobalSysSolnType GetGlobalSysSolnType () const
 Returns the method of solving global systems. More...
 
PreconditionerType GetPreconType () const
 
NekDouble GetIterativeTolerance () const
 
int GetMaxIterations () const
 
int GetSuccessiveRHS () const
 
int GetLowestStaticCondLevel () const
 

Protected Member Functions

void CalculateBndSystemBandWidth ()
 Calculates the bandwidth of the boundary system. More...
 
void GlobalToLocalBndWithoutSign (const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc)
 

Protected Attributes

LibUtilities::SessionReaderSharedPtr m_session
 Session object. More...
 
LibUtilities::CommSharedPtr m_comm
 Communicator. More...
 
size_t m_hash
 Hash for map. More...
 
int m_numLocalBndCoeffs
 Number of local boundary coefficients. More...
 
int m_numGlobalBndCoeffs
 Total number of global boundary coefficients. More...
 
int m_numLocalDirBndCoeffs
 Number of Local Dirichlet Boundary Coefficients. More...
 
int m_numGlobalDirBndCoeffs
 Number of Global Dirichlet Boundary Coefficients. More...
 
bool m_systemSingular
 Flag indicating if the system is singular or not. More...
 
int m_numLocalCoeffs
 Total number of local coefficients. More...
 
int m_numGlobalCoeffs
 Total number of global coefficients. More...
 
bool m_signChange
 Flag indicating if modes require sign reversal. More...
 
Array< OneD, int > m_localToGlobalBndMap
 Integer map of local boundary coeffs to global space. More...
 
Array< OneD, NekDoublem_localToGlobalBndSign
 Integer sign of local boundary coeffs to global space. More...
 
Array< OneD, int > m_bndCondCoeffsToGlobalCoeffsMap
 Integer map of bnd cond coeffs to global coefficients. More...
 
Array< OneD, NekDoublem_bndCondCoeffsToGlobalCoeffsSign
 Integer map of bnd cond coeffs to global coefficients. More...
 
Array< OneD, int > m_bndCondTraceToGlobalTraceMap
 Integer map of bnd cond trace number to global trace number. More...
 
Array< OneD, int > m_globalToUniversalBndMap
 Integer map of process coeffs to universal space. More...
 
Array< OneD, int > m_globalToUniversalBndMapUnique
 Integer map of unique process coeffs to universal space (signed) More...
 
GlobalSysSolnType m_solnType
 The solution type of the global system. More...
 
int m_bndSystemBandWidth
 The bandwith of the global bnd system. More...
 
PreconditionerType m_preconType
 Type type of preconditioner to use in iterative solver. More...
 
int m_maxIterations
 Maximum iterations for iterative solver. More...
 
NekDouble m_iterativeTolerance
 Tolerance for iterative solver. More...
 
int m_successiveRHS
 sucessive RHS for iterative solver More...
 
Gs::gs_datam_gsh
 
Gs::gs_datam_bndGsh
 
int m_staticCondLevel
 The level of recursion in the case of multi-level static condensation. More...
 
int m_numPatches
 The number of patches (~elements) in the current level. More...
 
Array< OneD, unsigned int > m_numLocalBndCoeffsPerPatch
 The number of bnd dofs per patch. More...
 
Array< OneD, unsigned int > m_numLocalIntCoeffsPerPatch
 The number of int dofs per patch. More...
 
AssemblyMapSharedPtr m_nextLevelLocalToGlobalMap
 Map from the patches of the previous level to the patches of the current level. More...
 
int m_lowestStaticCondLevel
 Lowest static condensation level. More...
 

Private Member Functions

virtual int v_GetLocalToGlobalMap (const int i) const
 
virtual int v_GetGlobalToUniversalMap (const int i) const
 
virtual int v_GetGlobalToUniversalMapUnique (const int i) const
 
virtual const Array< OneD, const int > & v_GetLocalToGlobalMap ()
 
virtual const Array< OneD, const int > & v_GetGlobalToUniversalMap ()
 
virtual const Array< OneD, const int > & v_GetGlobalToUniversalMapUnique ()
 
virtual NekDouble v_GetLocalToGlobalSign (const int i) const
 
virtual const Array< OneD, NekDouble > & v_GetLocalToGlobalSign () const
 
virtual void v_LocalToGlobal (const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global, bool useComm) const
 
virtual void v_LocalToGlobal (const NekVector< NekDouble > &loc, NekVector< NekDouble > &global, bool useComm) const
 
virtual void v_GlobalToLocal (const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc) const
 
virtual void v_GlobalToLocal (const NekVector< NekDouble > &global, NekVector< NekDouble > &loc) const
 
virtual void v_Assemble (const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global) const
 
virtual void v_Assemble (const NekVector< NekDouble > &loc, NekVector< NekDouble > &global) const
 
virtual void v_UniversalAssemble (Array< OneD, NekDouble > &pGlobal) const
 
virtual void v_UniversalAssemble (NekVector< NekDouble > &pGlobal) const
 
virtual void v_UniversalAssemble (Array< OneD, NekDouble > &pGlobal, int offset) const
 
virtual int v_GetFullSystemBandWidth () const
 
virtual int v_GetNumNonDirVertexModes () const
 
virtual int v_GetNumNonDirEdgeModes () const
 
virtual int v_GetNumNonDirFaceModes () const
 
virtual int v_GetNumDirEdges () const
 
virtual int v_GetNumDirFaces () const
 
virtual int v_GetNumNonDirEdges () const
 
virtual int v_GetNumNonDirFaces () const
 
virtual const Array< OneD, const int > & v_GetExtraDirEdges ()
 
virtual std::shared_ptr< AssemblyMapv_LinearSpaceMap (const ExpList &locexp, GlobalSysSolnType solnType)
 Generate a linear space mapping from existing mapping. More...
 

Private Attributes

PatchMapSharedPtr m_patchMapFromPrevLevel
 Mapping information for previous level in MultiLevel Solver. More...
 

Detailed Description

Base class for constructing local to global mapping of degrees of freedom.

This class acts as a base class for constructing mappings between local, global and boundary degrees of freedom. It holds the storage for the maps and provides the accessors needed to retrieve them.

There are two derived classes: AssemblyMapCG and AssemblyMapDG. These perform the actual construction of the maps within their specific contexts.

Definition at line 58 of file AssemblyMap.h.

Constructor & Destructor Documentation

◆ AssemblyMap() [1/3]

Nektar::MultiRegions::AssemblyMap::AssemblyMap ( )

Default constructor.

Initialises an empty mapping.

Definition at line 80 of file AssemblyMap.cpp.

80  :
81  m_session(),
82  m_comm(),
83  m_hash(0),
90  m_successiveRHS(0),
91  m_gsh(0),
92  m_bndGsh(0)
93  {
94  }
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: AssemblyMap.h:307
int m_successiveRHS
sucessive RHS for iterative solver
Definition: AssemblyMap.h:378
size_t m_hash
Hash for map.
Definition: AssemblyMap.h:310
int m_bndSystemBandWidth
The bandwith of the global bnd system.
Definition: AssemblyMap.h:366
GlobalSysSolnType m_solnType
The solution type of the global system.
Definition: AssemblyMap.h:364
int m_numGlobalDirBndCoeffs
Number of Global Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:319
int m_numLocalDirBndCoeffs
Number of Local Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:317
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
LibUtilities::SessionReaderSharedPtr m_session
Session object.
Definition: AssemblyMap.h:304
No Solution type specified.

◆ AssemblyMap() [2/3]

Nektar::MultiRegions::AssemblyMap::AssemblyMap ( const LibUtilities::SessionReaderSharedPtr pSession,
const std::string  variable = "DefaultVar" 
)

Constructor with a communicator.

Definition at line 96 of file AssemblyMap.cpp.

References Nektar::NekConstants::kNekIterativeTol, m_iterativeTolerance, m_maxIterations, m_preconType, m_solnType, and m_successiveRHS.

98  :
99  m_session(pSession),
100  m_comm(pSession->GetComm()),
101  m_hash(0),
107  m_successiveRHS(0),
108  m_gsh(0),
109  m_bndGsh(0)
110  {
111  // Default value from Solver Info
112  m_solnType = pSession->GetSolverInfoAsEnum<GlobalSysSolnType>(
113  "GlobalSysSoln");
114  m_preconType = pSession->GetSolverInfoAsEnum<PreconditionerType>(
115  "Preconditioner");
116 
117  // Override values with data from GlobalSysSolnInfo section
118  if(pSession->DefinesGlobalSysSolnInfo(variable, "GlobalSysSoln"))
119  {
120  std::string sysSoln = pSession->GetGlobalSysSolnInfo(variable,
121  "GlobalSysSoln");
122  m_solnType = pSession->GetValueAsEnum<GlobalSysSolnType>(
123  "GlobalSysSoln", sysSoln);
124  }
125 
126  if(pSession->DefinesGlobalSysSolnInfo(variable, "Preconditioner"))
127  {
128  std::string precon = pSession->GetGlobalSysSolnInfo(variable,
129  "Preconditioner");
130  m_preconType = pSession->GetValueAsEnum<PreconditionerType>(
131  "Preconditioner", precon);
132  }
133 
134  if(pSession->DefinesGlobalSysSolnInfo(variable,
135  "IterativeSolverTolerance"))
136  {
137  m_iterativeTolerance = boost::lexical_cast<NekDouble>(
138  pSession->GetGlobalSysSolnInfo(variable,
139  "IterativeSolverTolerance").c_str());
140  }
141  else
142  {
143  pSession->LoadParameter("IterativeSolverTolerance",
146  }
147 
148 
149  if(pSession->DefinesGlobalSysSolnInfo(variable,
150  "MaxIterations"))
151  {
152  m_maxIterations = boost::lexical_cast<int>(
153  pSession->GetGlobalSysSolnInfo(variable,
154  "MaxIterations").c_str());
155  }
156  else
157  {
158  pSession->LoadParameter("MaxIterations",
160  5000);
161  }
162 
163 
164  if(pSession->DefinesGlobalSysSolnInfo(variable,"SuccessiveRHS"))
165  {
166  m_successiveRHS = boost::lexical_cast<int>(
167  pSession->GetGlobalSysSolnInfo(variable,
168  "SuccessiveRHS").c_str());
169  }
170  else
171  {
172  pSession->LoadParameter("SuccessiveRHS",
173  m_successiveRHS,0);
174  }
175 
176  }
PreconditionerType m_preconType
Type type of preconditioner to use in iterative solver.
Definition: AssemblyMap.h:369
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: AssemblyMap.h:307
static const NekDouble kNekIterativeTol
int m_successiveRHS
sucessive RHS for iterative solver
Definition: AssemblyMap.h:378
size_t m_hash
Hash for map.
Definition: AssemblyMap.h:310
int m_bndSystemBandWidth
The bandwith of the global bnd system.
Definition: AssemblyMap.h:366
NekDouble m_iterativeTolerance
Tolerance for iterative solver.
Definition: AssemblyMap.h:375
GlobalSysSolnType m_solnType
The solution type of the global system.
Definition: AssemblyMap.h:364
int m_numGlobalDirBndCoeffs
Number of Global Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:319
double NekDouble
int m_numLocalDirBndCoeffs
Number of Local Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:317
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
int m_maxIterations
Maximum iterations for iterative solver.
Definition: AssemblyMap.h:372
LibUtilities::SessionReaderSharedPtr m_session
Session object.
Definition: AssemblyMap.h:304

◆ AssemblyMap() [3/3]

Nektar::MultiRegions::AssemblyMap::AssemblyMap ( AssemblyMap oldLevelMap,
const BottomUpSubStructuredGraphSharedPtr multiLevelGraph 
)

Constructor for next level in multi-level static condensation.

Create a new level of mapping using the information in multiLevelGraph and performing the following steps:

  • STEP 1: setup a mask array to determine to which patch of the new level every patch of the current level belongs. To do so we make four arrays, #gloPatchMask, #globHomPatchMask, #locPatchMask_NekDouble and #locPatchMask. These arrays are then used to check which local dofs of the old level belong to which patch of the new level
  • STEP 2: We calculate how many local bnd dofs of the old level belong to the boundaries of each patch at the new level. We need this information to set up the mapping between different levels.

Definition at line 182 of file AssemblyMap.cpp.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, ASSERTL1, CalculateBndSystemBandWidth(), Nektar::MultiRegions::eDirectMultiLevelStaticCond, Nektar::MultiRegions::eIterativeMultiLevelStaticCond, Nektar::MultiRegions::ePETScMultiLevelStaticCond, Nektar::MultiRegions::eXxtMultiLevelStaticCond, GetGlobalSysSolnType(), GetGlobalToUniversalBndMap(), GetGlobalToUniversalBndMapUnique(), GetLocalToGlobalBndMap(), GetLocalToGlobalBndSign(), GetNumGlobalBndCoeffs(), GetNumGlobalDirBndCoeffs(), GetNumLocalBndCoeffs(), GetNumLocalBndCoeffsPerPatch(), GetNumLocalDirBndCoeffs(), GetNumPatches(), GetSignChange(), GetStaticCondLevel(), GlobalToLocalBndWithoutSign(), m_globalToUniversalBndMap, m_globalToUniversalBndMapUnique, m_localToGlobalBndMap, m_localToGlobalBndSign, m_nextLevelLocalToGlobalMap, m_numGlobalBndCoeffs, m_numGlobalCoeffs, m_numGlobalDirBndCoeffs, m_numLocalBndCoeffs, m_numLocalBndCoeffsPerPatch, m_numLocalDirBndCoeffs, m_numLocalIntCoeffsPerPatch, m_numPatches, m_patchMapFromPrevLevel, m_signChange, m_solnType, m_staticCondLevel, Nektar::MultiRegions::RoundNekDoubleToInt(), and sign.

184  :
185  m_session(oldLevelMap->m_session),
186  m_comm(oldLevelMap->GetComm()),
187  m_hash(0),
188  m_solnType(oldLevelMap->m_solnType),
189  m_preconType(oldLevelMap->m_preconType),
190  m_maxIterations(oldLevelMap->m_maxIterations),
191  m_iterativeTolerance(oldLevelMap->m_iterativeTolerance),
192  m_successiveRHS(oldLevelMap->m_successiveRHS),
193  m_gsh(oldLevelMap->m_gsh),
194  m_bndGsh(oldLevelMap->m_bndGsh),
195  m_lowestStaticCondLevel(oldLevelMap->m_lowestStaticCondLevel)
196  {
197  int i;
198  int j;
199  int cnt;
200 
201  //--------------------------------------------------------------
202  // -- Extract information from the input argument
203  int numGlobalBndCoeffsOld = oldLevelMap->GetNumGlobalBndCoeffs();
204  int numGlobalDirBndCoeffsOld = oldLevelMap->GetNumGlobalDirBndCoeffs();
205  int numLocalBndCoeffsOld = oldLevelMap->GetNumLocalBndCoeffs();
206  int numLocalDirBndCoeffsOld = oldLevelMap->GetNumLocalDirBndCoeffs();
207  bool signChangeOld = oldLevelMap->GetSignChange();
208 
209  int staticCondLevelOld = oldLevelMap->GetStaticCondLevel();
210  int numPatchesOld = oldLevelMap->GetNumPatches();
211  GlobalSysSolnType solnTypeOld = oldLevelMap->GetGlobalSysSolnType();
212  const Array<OneD, const unsigned int>& numLocalBndCoeffsPerPatchOld = oldLevelMap->GetNumLocalBndCoeffsPerPatch();
213  //--------------------------------------------------------------
214 
215  //--------------------------------------------------------------
216  int newLevel = staticCondLevelOld+1;
217  /** - STEP 1: setup a mask array to determine to which patch
218  * of the new level every patch of the current
219  * level belongs. To do so we make four arrays,
220  * #gloPatchMask, #globHomPatchMask,
221  * #locPatchMask_NekDouble and #locPatchMask.
222  * These arrays are then used to check which local
223  * dofs of the old level belong to which patch of
224  * the new level
225  */
226  Array<OneD, NekDouble> globPatchMask (numGlobalBndCoeffsOld,-1.0);
227  Array<OneD, NekDouble> globHomPatchMask (globPatchMask+numGlobalDirBndCoeffsOld);
228  Array<OneD, NekDouble> locPatchMask_NekDouble(numLocalBndCoeffsOld,-3.0);
229  Array<OneD, int> locPatchMask (numLocalBndCoeffsOld);
230 
231  // Fill the array globPatchMask as follows:
232  // - The first part (i.e. the glob bnd dofs) is filled with the
233  // value -1
234  // - The second part (i.e. the glob interior dofs) is numbered
235  // according to the patch it belongs to (i.e. dofs in first block
236  // all are numbered 0, the second block numbered are 1, etc...)
237  multiLevelGraph->MaskPatches(newLevel,globHomPatchMask);
238 
239  // Map from Global Dofs to Local Dofs
240  // As a result, we know for each local dof whether
241  // it is mapped to the boundary of the next level, or to which
242  // patch. Based upon this, we can than later associate every patch
243  // of the current level with a patch in the next level.
244  oldLevelMap->GlobalToLocalBndWithoutSign(globPatchMask,locPatchMask_NekDouble);
245 
246  // Convert the result to an array of integers rather than doubles
247  RoundNekDoubleToInt(locPatchMask_NekDouble,locPatchMask);
248 
249  /** - STEP 2: We calculate how many local bnd dofs of the
250  * old level belong to the boundaries of each patch at
251  * the new level. We need this information to set up the
252  * mapping between different levels.
253  */
254 
255  // Retrieve the number of patches at the next level
256  int numPatchesWithIntNew = multiLevelGraph->GetNpatchesWithInterior(newLevel);
257  int numPatchesNew = numPatchesWithIntNew;
258 
259  // Allocate memory to store the number of local dofs associated to
260  // each of elemental boundaries of these patches
261  std::map<int, int> numLocalBndCoeffsPerPatchNew;
262  for(int i = 0; i < numPatchesNew; i++)
263  {
264  numLocalBndCoeffsPerPatchNew[i] = 0;
265  }
266 
267  int minval;
268  int maxval;
269  int curPatch;
270  for(i = cnt = 0; i < numPatchesOld; i++)
271  {
272  // For every patch at the current level, the mask array
273  // locPatchMask should be filled with
274  // - the same (positive) number for each entry (which will
275  // correspond to the patch at the next level it belongs to)
276  // - the same (positive) number for each entry, except some
277  // entries that are -1 (the enties correspond to -1, will be
278  // mapped to the local boundary of the next level patch given
279  // by the positive number)
280  // - -1 for all entries. In this case, we will make an
281  // additional patch only consisting of boundaries at the next
282  // level
283  minval = *min_element(&locPatchMask[cnt],
284  &locPatchMask[cnt]+numLocalBndCoeffsPerPatchOld[i]);
285  maxval = *max_element(&locPatchMask[cnt],
286  &locPatchMask[cnt]+numLocalBndCoeffsPerPatchOld[i]);
287  ASSERTL0((minval==maxval)||(minval==-1),"These values should never be the same");
288 
289  if(maxval == -1)
290  {
291  curPatch = numPatchesNew;
292  numLocalBndCoeffsPerPatchNew[curPatch] = 0;
293  numPatchesNew++;
294  }
295  else
296  {
297  curPatch = maxval;
298  }
299 
300  for(j = 0; j < numLocalBndCoeffsPerPatchOld[i]; j++ )
301  {
302  ASSERTL0((locPatchMask[cnt]==maxval)||(locPatchMask[cnt]==minval),
303  "These values should never be the same");
304  if(locPatchMask[cnt] == -1)
305  {
306  ++numLocalBndCoeffsPerPatchNew[curPatch];
307  }
308  cnt++;
309  }
310  }
311 
312  // Count how many local dofs of the old level are mapped
313  // to the local boundary dofs of the new level
315  m_numPatches = numLocalBndCoeffsPerPatchNew.size();
316  m_numLocalBndCoeffsPerPatch = Array<OneD, unsigned int>(m_numPatches);
317  m_numLocalIntCoeffsPerPatch = Array<OneD, unsigned int>(m_numPatches,0u);
318  for(int i = 0; i < m_numPatches; i++)
319  {
320  m_numLocalBndCoeffsPerPatch[i] = (unsigned int) numLocalBndCoeffsPerPatchNew[i];
321  m_numLocalBndCoeffs += numLocalBndCoeffsPerPatchNew[i];
322  }
323  multiLevelGraph->GetNintDofsPerPatch(newLevel,m_numLocalIntCoeffsPerPatch);
324 
325  // Also initialise some more data members
326  m_solnType = solnTypeOld;
331  "This method should only be called for in "
332  "case of multi-level static condensation.");
333  m_staticCondLevel = newLevel;
334  m_signChange = signChangeOld;
335  m_numLocalDirBndCoeffs = numLocalDirBndCoeffsOld;
336  m_numGlobalDirBndCoeffs = numGlobalDirBndCoeffsOld;
337  m_numGlobalBndCoeffs = multiLevelGraph->GetInteriorOffset(newLevel) +
339  m_numGlobalCoeffs = multiLevelGraph->GetNumGlobalDofs(newLevel) +
341  m_localToGlobalBndMap = Array<OneD,int>(m_numLocalBndCoeffs);
342  if(m_signChange)
343  {
344  m_localToGlobalBndSign = Array<OneD,NekDouble>(m_numLocalBndCoeffs);
345  }
346 
348 
349  m_globalToUniversalBndMap = Array<OneD, int>(
350  m_numGlobalBndCoeffs, oldLevelMap->GetGlobalToUniversalBndMap());
351  m_globalToUniversalBndMapUnique = Array<OneD, int>(
352  m_numGlobalBndCoeffs, oldLevelMap->GetGlobalToUniversalBndMapUnique());
353 
354  // Set up an offset array that denotes the offset of the local
355  // boundary degrees of freedom of the next level
356  Array<OneD, int> numLocalBndCoeffsPerPatchOffset(m_numPatches+1,0);
357  for(int i = 1; i < m_numPatches+1; i++)
358  {
359  numLocalBndCoeffsPerPatchOffset[i] += numLocalBndCoeffsPerPatchOffset[i-1] + numLocalBndCoeffsPerPatchNew[i-1];
360  }
361 
362  int additionalPatchCnt = numPatchesWithIntNew;
363  int newid;
364  int blockid;
365  bool isBndDof;
366  NekDouble sign;
367  Array<OneD, int> bndDofPerPatchCnt(m_numPatches,0);
368  for(i = cnt = 0; i < numPatchesOld; i++)
369  {
370  minval = *min_element(&locPatchMask[cnt],&locPatchMask[cnt]+numLocalBndCoeffsPerPatchOld[i]);
371  maxval = *max_element(&locPatchMask[cnt],&locPatchMask[cnt]+numLocalBndCoeffsPerPatchOld[i]);
372  ASSERTL0((minval==maxval)||(minval==-1),"These values should never be the same");
373 
374  if(maxval == -1)
375  {
376  curPatch = additionalPatchCnt;
377  additionalPatchCnt++;
378  }
379  else
380  {
381  curPatch = maxval;
382  }
383 
384  for(j = 0; j < numLocalBndCoeffsPerPatchOld[i]; j++ )
385  {
386  ASSERTL0((locPatchMask[cnt]==maxval)||(locPatchMask[cnt]==minval),
387  "These values should never be the same");
388 
389  sign = oldLevelMap->GetLocalToGlobalBndSign(cnt);
390 
391  if(locPatchMask[cnt] == -1)
392  {
393  newid = numLocalBndCoeffsPerPatchOffset[curPatch];
394 
395  m_localToGlobalBndMap[newid] = oldLevelMap->GetLocalToGlobalBndMap(cnt);
396  if(m_signChange)
397  {
398  m_localToGlobalBndSign[ newid ] = sign;
399  }
400 
401  blockid = bndDofPerPatchCnt[curPatch];
402  isBndDof = true;
403 
404 
405  numLocalBndCoeffsPerPatchOffset[curPatch]++;
406  bndDofPerPatchCnt[curPatch]++;
407  }
408  else
409  {
410  newid = oldLevelMap->GetLocalToGlobalBndMap(cnt) -
411  m_numGlobalBndCoeffs+m_numLocalBndCoeffs;
412 
413  blockid = oldLevelMap->GetLocalToGlobalBndMap(cnt)-
414  m_numGlobalDirBndCoeffs - multiLevelGraph->GetInteriorOffset(newLevel,curPatch);
415  isBndDof = false;
416  }
417 
418  sign = isBndDof?1.0:sign;
419 
420  m_patchMapFromPrevLevel->SetPatchMap(cnt,curPatch,blockid,isBndDof,sign);
421 
422  cnt++;
423  }
424  }
426 
427  // Postprocess the computed information - Update the old
428  // level with the mapping to new evel
429  // oldLevelMap->SetLocalBndToNextLevelMap(oldLocalBndToNewLevelMap,oldLocalBndToNewLevelSign);
430  // - Construct the next level mapping object
431  if(m_staticCondLevel < (multiLevelGraph->GetNlevels()-1))
432  {
434  }
435  }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:216
bool m_signChange
Flag indicating if modes require sign reversal.
Definition: AssemblyMap.h:346
PreconditionerType m_preconType
Type type of preconditioner to use in iterative solver.
Definition: AssemblyMap.h:369
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: AssemblyMap.h:307
#define sign(a, b)
return the sign(b)*a
Definition: Polylib.cpp:16
PatchMapSharedPtr m_patchMapFromPrevLevel
Mapping information for previous level in MultiLevel Solver.
Definition: AssemblyMap.h:409
AssemblyMapSharedPtr m_nextLevelLocalToGlobalMap
Map from the patches of the previous level to the patches of the current level.
Definition: AssemblyMap.h:396
int m_successiveRHS
sucessive RHS for iterative solver
Definition: AssemblyMap.h:378
size_t m_hash
Hash for map.
Definition: AssemblyMap.h:310
NekDouble m_iterativeTolerance
Tolerance for iterative solver.
Definition: AssemblyMap.h:375
Array< OneD, unsigned int > m_numLocalBndCoeffsPerPatch
The number of bnd dofs per patch.
Definition: AssemblyMap.h:389
GlobalSysSolnType m_solnType
The solution type of the global system.
Definition: AssemblyMap.h:364
int m_numGlobalDirBndCoeffs
Number of Global Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:319
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
double NekDouble
Array< OneD, unsigned int > m_numLocalIntCoeffsPerPatch
The number of int dofs per patch.
Definition: AssemblyMap.h:391
int m_lowestStaticCondLevel
Lowest static condensation level.
Definition: AssemblyMap.h:398
void CalculateBndSystemBandWidth()
Calculates the bandwidth of the boundary system.
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349
int m_numLocalDirBndCoeffs
Number of Local Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:317
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
int m_staticCondLevel
The level of recursion in the case of multi-level static condensation.
Definition: AssemblyMap.h:385
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
Definition: AssemblyMap.h:351
int m_maxIterations
Maximum iterations for iterative solver.
Definition: AssemblyMap.h:372
int RoundNekDoubleToInt(NekDouble x)
Rounds a double precision number to an integer.
Definition: AssemblyMap.cpp:58
LibUtilities::SessionReaderSharedPtr m_session
Session object.
Definition: AssemblyMap.h:304
Array< OneD, int > m_globalToUniversalBndMap
Integer map of process coeffs to universal space.
Definition: AssemblyMap.h:359
Array< OneD, int > m_globalToUniversalBndMapUnique
Integer map of unique process coeffs to universal space (signed)
Definition: AssemblyMap.h:361
int m_numGlobalCoeffs
Total number of global coefficients.
Definition: AssemblyMap.h:343
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:250
int m_numPatches
The number of patches (~elements) in the current level.
Definition: AssemblyMap.h:387

◆ ~AssemblyMap()

Nektar::MultiRegions::AssemblyMap::~AssemblyMap ( void  )
virtual

Destructor.

Definition at line 438 of file AssemblyMap.cpp.

439  {
440  }

Member Function Documentation

◆ Assemble() [1/2]

void Nektar::MultiRegions::AssemblyMap::Assemble ( const Array< OneD, const NekDouble > &  loc,
Array< OneD, NekDouble > &  global 
) const

Definition at line 793 of file AssemblyMap.cpp.

References v_Assemble().

Referenced by Nektar::MultiRegions::AssemblyMapCG::v_Assemble().

796  {
797  v_Assemble(loc,global);
798  }
virtual void v_Assemble(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global) const

◆ Assemble() [2/2]

void Nektar::MultiRegions::AssemblyMap::Assemble ( const NekVector< NekDouble > &  loc,
NekVector< NekDouble > &  global 
) const

Definition at line 800 of file AssemblyMap.cpp.

References v_Assemble().

803  {
804  v_Assemble(loc,global);
805  }
virtual void v_Assemble(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global) const

◆ AssembleBnd() [1/4]

void Nektar::MultiRegions::AssemblyMap::AssembleBnd ( const NekVector< NekDouble > &  loc,
NekVector< NekDouble > &  global,
int  offset 
) const

Definition at line 1113 of file AssemblyMap.cpp.

References Nektar::NekVector< DataType >::GetPtr().

Referenced by AssembleBnd(), Nektar::MultiRegions::AssemblyMapDG::v_Assemble(), and Nektar::MultiRegions::AssemblyMapDG::v_LocalToGlobal().

1116  {
1117  AssembleBnd(loc.GetPtr(), global.GetPtr(), offset);
1118  }
void AssembleBnd(const NekVector< NekDouble > &loc, NekVector< NekDouble > &global, int offset) const
Array< OneD, DataType > & GetPtr()
Definition: NekVector.cpp:227

◆ AssembleBnd() [2/4]

void Nektar::MultiRegions::AssemblyMap::AssembleBnd ( const NekVector< NekDouble > &  loc,
NekVector< NekDouble > &  global 
) const

Definition at line 1121 of file AssemblyMap.cpp.

References AssembleBnd(), and Nektar::NekVector< DataType >::GetPtr().

1124  {
1125  AssembleBnd(loc.GetPtr(), global.GetPtr());
1126  }
void AssembleBnd(const NekVector< NekDouble > &loc, NekVector< NekDouble > &global, int offset) const
Array< OneD, DataType > & GetPtr()
Definition: NekVector.cpp:227

◆ AssembleBnd() [3/4]

void Nektar::MultiRegions::AssemblyMap::AssembleBnd ( const Array< OneD, const NekDouble > &  loc,
Array< OneD, NekDouble > &  global,
int  offset 
) const

Definition at line 1129 of file AssemblyMap.cpp.

References ASSERTL1, Vmath::Assmb(), m_localToGlobalBndMap, m_localToGlobalBndSign, m_numGlobalBndCoeffs, m_numLocalBndCoeffs, m_signChange, UniversalAssembleBnd(), and Vmath::Vcopy().

1132  {
1133  ASSERTL1(loc.num_elements() >= m_numLocalBndCoeffs,"Local array is not of correct dimension");
1134  ASSERTL1(global.num_elements() >= m_numGlobalBndCoeffs-offset,"Global array is not of correct dimension");
1135  Array<OneD,NekDouble> tmp(m_numGlobalBndCoeffs,0.0);
1136 
1137  if(m_signChange)
1138  {
1140  }
1141  else
1142  {
1143  Vmath::Assmb(m_numLocalBndCoeffs,loc.get(), m_localToGlobalBndMap.get(), tmp.get());
1144  }
1145  UniversalAssembleBnd(tmp);
1146  Vmath::Vcopy(m_numGlobalBndCoeffs-offset, tmp.get() + offset, 1, global.get(), 1);
1147  }
bool m_signChange
Flag indicating if modes require sign reversal.
Definition: AssemblyMap.h:346
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
void UniversalAssembleBnd(Array< OneD, NekDouble > &pGlobal) const
void Assmb(int n, const T *x, const int *y, T *z)
Assemble z[y[i]] += x[i]; z should be zero&#39;d first.
Definition: Vmath.cpp:712
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
Definition: AssemblyMap.h:351
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:250
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1064

◆ AssembleBnd() [4/4]

void Nektar::MultiRegions::AssemblyMap::AssembleBnd ( const Array< OneD, const NekDouble > &  loc,
Array< OneD, NekDouble > &  global 
) const

Definition at line 1150 of file AssemblyMap.cpp.

References ASSERTL1, Vmath::Assmb(), m_localToGlobalBndMap, m_localToGlobalBndSign, m_numGlobalBndCoeffs, m_numLocalBndCoeffs, m_signChange, UniversalAssembleBnd(), and Vmath::Zero().

1153  {
1154  ASSERTL1(loc.num_elements() >= m_numLocalBndCoeffs,"Local vector is not of correct dimension");
1155  ASSERTL1(global.num_elements() >= m_numGlobalBndCoeffs,"Global vector is not of correct dimension");
1156 
1157  Vmath::Zero(m_numGlobalBndCoeffs, global.get(), 1);
1158 
1159  if(m_signChange)
1160  {
1162  loc.get(), m_localToGlobalBndMap.get(), global.get());
1163  }
1164  else
1165  {
1166  Vmath::Assmb(m_numLocalBndCoeffs,loc.get(), m_localToGlobalBndMap.get(), global.get());
1167  }
1168  UniversalAssembleBnd(global);
1169  }
bool m_signChange
Flag indicating if modes require sign reversal.
Definition: AssemblyMap.h:346
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
void UniversalAssembleBnd(Array< OneD, NekDouble > &pGlobal) const
void Assmb(int n, const T *x, const int *y, T *z)
Assemble z[y[i]] += x[i]; z should be zero&#39;d first.
Definition: Vmath.cpp:712
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
Definition: AssemblyMap.h:351
void Zero(int n, T *x, const int incx)
Zero vector.
Definition: Vmath.cpp:376
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:250

◆ AtLastLevel()

bool Nektar::MultiRegions::AssemblyMap::AtLastLevel ( ) const

Returns true if this is the last level in the multi-level static condensation.

Definition at line 1236 of file AssemblyMap.cpp.

References m_nextLevelLocalToGlobalMap.

1237  {
1238  return !( m_nextLevelLocalToGlobalMap.get() );
1239  }
AssemblyMapSharedPtr m_nextLevelLocalToGlobalMap
Map from the patches of the previous level to the patches of the current level.
Definition: AssemblyMap.h:396

◆ CalculateBndSystemBandWidth()

void Nektar::MultiRegions::AssemblyMap::CalculateBndSystemBandWidth ( )
protected

Calculates the bandwidth of the boundary system.

The bandwidth calculated corresponds to what is referred to as half-bandwidth. If the elements of the matrix are designated as a_ij, it corresponds to the maximum value of |i-j| for non-zero a_ij. As a result, the value also corresponds to the number of sub- or super-diagonals.

The bandwith can be calculated elementally as it corresponds to the maximal elemental bandwith (i.e. the maximal difference in global DOF index for every element).

We here calculate the bandwith of the global boundary system (as used for static condensation).

Definition at line 457 of file AssemblyMap.cpp.

References m_bndSystemBandWidth, m_localToGlobalBndMap, m_numGlobalDirBndCoeffs, m_numLocalBndCoeffs, m_numLocalBndCoeffsPerPatch, and m_numPatches.

Referenced by AssemblyMap(), Nektar::MultiRegions::AssemblyMapCG::AssemblyMapCG(), and Nektar::MultiRegions::AssemblyMapDG::AssemblyMapDG().

458  {
459  int i,j;
460  int cnt = 0;
461  int locSize;
462  int maxId;
463  int minId;
464  int bwidth = -1;
465  for(i = 0; i < m_numPatches; ++i)
466  {
467  locSize = m_numLocalBndCoeffsPerPatch[i];
468  maxId = -1;
469  minId = m_numLocalBndCoeffs+1;
470  for(j = 0; j < locSize; j++)
471  {
473  {
474  if(m_localToGlobalBndMap[cnt+j] > maxId)
475  {
476  maxId = m_localToGlobalBndMap[cnt+j];
477  }
478 
479  if(m_localToGlobalBndMap[cnt+j] < minId)
480  {
481  minId = m_localToGlobalBndMap[cnt+j];
482  }
483  }
484  }
485  bwidth = (bwidth>(maxId-minId))?bwidth:(maxId-minId);
486 
487  cnt+=locSize;
488  }
489 
490  m_bndSystemBandWidth = bwidth;
491  }
int m_bndSystemBandWidth
The bandwith of the global bnd system.
Definition: AssemblyMap.h:366
Array< OneD, unsigned int > m_numLocalBndCoeffsPerPatch
The number of bnd dofs per patch.
Definition: AssemblyMap.h:389
int m_numGlobalDirBndCoeffs
Number of Global Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:319
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
int m_numPatches
The number of patches (~elements) in the current level.
Definition: AssemblyMap.h:387

◆ GetBndCondCoeffsToGlobalCoeffsMap() [1/2]

int Nektar::MultiRegions::AssemblyMap::GetBndCondCoeffsToGlobalCoeffsMap ( const int  i)

Retrieves the global index corresponding to a boundary expansion mode.

Definition at line 922 of file AssemblyMap.cpp.

References m_bndCondCoeffsToGlobalCoeffsMap.

924  {
926  }
Array< OneD, int > m_bndCondCoeffsToGlobalCoeffsMap
Integer map of bnd cond coeffs to global coefficients.
Definition: AssemblyMap.h:353

◆ GetBndCondCoeffsToGlobalCoeffsMap() [2/2]

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::GetBndCondCoeffsToGlobalCoeffsMap ( )

Retrieves the global indices corresponding to the boundary expansion modes.

Definition at line 956 of file AssemblyMap.cpp.

References m_bndCondCoeffsToGlobalCoeffsMap.

Referenced by Nektar::CoupledAssemblyMap::CoupledAssemblyMap().

957  {
959  }
Array< OneD, int > m_bndCondCoeffsToGlobalCoeffsMap
Integer map of bnd cond coeffs to global coefficients.
Definition: AssemblyMap.h:353

◆ GetBndCondCoeffsToGlobalCoeffsSign()

NekDouble Nektar::MultiRegions::AssemblyMap::GetBndCondCoeffsToGlobalCoeffsSign ( const int  i)

Returns the modal sign associated with a given boundary expansion mode.

Definition at line 943 of file AssemblyMap.cpp.

References m_bndCondCoeffsToGlobalCoeffsSign, and m_signChange.

944  {
945  if(m_signChange)
946  {
948  }
949  else
950  {
951  return 1.0;
952  }
953  }
bool m_signChange
Flag indicating if modes require sign reversal.
Definition: AssemblyMap.h:346
Array< OneD, NekDouble > m_bndCondCoeffsToGlobalCoeffsSign
Integer map of bnd cond coeffs to global coefficients.
Definition: AssemblyMap.h:355

◆ GetBndCondTraceToGlobalTraceMap() [1/2]

int Nektar::MultiRegions::AssemblyMap::GetBndCondTraceToGlobalTraceMap ( const int  i)

Returns the global index of the boundary trace giving the index on the boundary expansion.

Definition at line 929 of file AssemblyMap.cpp.

References ASSERTL1, GetBndCondTraceToGlobalTraceMap(), and m_bndCondTraceToGlobalTraceMap.

931  {
932  ASSERTL1(i < m_bndCondTraceToGlobalTraceMap.num_elements(),
933  "Index out of range.");
935  }
Array< OneD, int > m_bndCondTraceToGlobalTraceMap
Integer map of bnd cond trace number to global trace number.
Definition: AssemblyMap.h:357
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:250

◆ GetBndCondTraceToGlobalTraceMap() [2/2]

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::GetBndCondTraceToGlobalTraceMap ( )

Definition at line 938 of file AssemblyMap.cpp.

References m_bndCondTraceToGlobalTraceMap.

Referenced by GetBndCondTraceToGlobalTraceMap().

939  {
941  }
Array< OneD, int > m_bndCondTraceToGlobalTraceMap
Integer map of bnd cond trace number to global trace number.
Definition: AssemblyMap.h:357

◆ GetBndSystemBandWidth()

int Nektar::MultiRegions::AssemblyMap::GetBndSystemBandWidth ( ) const

Returns the bandwidth of the boundary system.

Definition at line 1195 of file AssemblyMap.cpp.

References m_bndSystemBandWidth.

Referenced by Nektar::MultiRegions::AssemblyMapDG::v_GetFullSystemBandWidth().

1196  {
1197  return m_bndSystemBandWidth;
1198  }
int m_bndSystemBandWidth
The bandwith of the global bnd system.
Definition: AssemblyMap.h:366

◆ GetComm()

LibUtilities::CommSharedPtr Nektar::MultiRegions::AssemblyMap::GetComm ( )

Retrieves the communicator.

Definition at line 713 of file AssemblyMap.cpp.

References m_comm.

714  {
715  return m_comm;
716  }
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: AssemblyMap.h:307

◆ GetExtraDirEdges()

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::GetExtraDirEdges ( )

Definition at line 866 of file AssemblyMap.cpp.

References v_GetExtraDirEdges().

867  {
868  return v_GetExtraDirEdges();
869  }
virtual const Array< OneD, const int > & v_GetExtraDirEdges()

◆ GetFullSystemBandWidth()

int Nektar::MultiRegions::AssemblyMap::GetFullSystemBandWidth ( ) const

Definition at line 826 of file AssemblyMap.cpp.

References v_GetFullSystemBandWidth().

827  {
828  return v_GetFullSystemBandWidth();
829  }
virtual int v_GetFullSystemBandWidth() const

◆ GetGlobalSysSolnType()

GlobalSysSolnType Nektar::MultiRegions::AssemblyMap::GetGlobalSysSolnType ( ) const

Returns the method of solving global systems.

Definition at line 1242 of file AssemblyMap.cpp.

References m_solnType.

Referenced by AssemblyMap().

1243  {
1244  return m_solnType;
1245  }
GlobalSysSolnType m_solnType
The solution type of the global system.
Definition: AssemblyMap.h:364

◆ GetGlobalToUniversalBndMap()

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::GetGlobalToUniversalBndMap ( )

Definition at line 899 of file AssemblyMap.cpp.

References m_globalToUniversalBndMap.

Referenced by AssemblyMap().

900  {
902  }
Array< OneD, int > m_globalToUniversalBndMap
Integer map of process coeffs to universal space.
Definition: AssemblyMap.h:359

◆ GetGlobalToUniversalBndMapUnique()

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::GetGlobalToUniversalBndMapUnique ( )

Definition at line 904 of file AssemblyMap.cpp.

References m_globalToUniversalBndMapUnique.

Referenced by AssemblyMap().

905  {
907  }
Array< OneD, int > m_globalToUniversalBndMapUnique
Integer map of unique process coeffs to universal space (signed)
Definition: AssemblyMap.h:361

◆ GetGlobalToUniversalMap() [1/2]

int Nektar::MultiRegions::AssemblyMap::GetGlobalToUniversalMap ( const int  i) const

Definition at line 728 of file AssemblyMap.cpp.

References v_GetGlobalToUniversalMap().

729  {
730  return v_GetGlobalToUniversalMap(i);
731  }
virtual const Array< OneD, const int > & v_GetGlobalToUniversalMap()

◆ GetGlobalToUniversalMap() [2/2]

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::GetGlobalToUniversalMap ( )

Definition at line 743 of file AssemblyMap.cpp.

References v_GetGlobalToUniversalMap().

744  {
745  return v_GetGlobalToUniversalMap();
746  }
virtual const Array< OneD, const int > & v_GetGlobalToUniversalMap()

◆ GetGlobalToUniversalMapUnique() [1/2]

int Nektar::MultiRegions::AssemblyMap::GetGlobalToUniversalMapUnique ( const int  i) const

Definition at line 733 of file AssemblyMap.cpp.

References v_GetGlobalToUniversalMapUnique().

734  {
736  }
virtual const Array< OneD, const int > & v_GetGlobalToUniversalMapUnique()

◆ GetGlobalToUniversalMapUnique() [2/2]

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::GetGlobalToUniversalMapUnique ( )

Definition at line 748 of file AssemblyMap.cpp.

References v_GetGlobalToUniversalMapUnique().

749  {
751  }
virtual const Array< OneD, const int > & v_GetGlobalToUniversalMapUnique()

◆ GetHash()

size_t Nektar::MultiRegions::AssemblyMap::GetHash ( ) const

Retrieves the hash of this map.

Definition at line 718 of file AssemblyMap.cpp.

References m_hash.

719  {
720  return m_hash;
721  }
size_t m_hash
Hash for map.
Definition: AssemblyMap.h:310

◆ GetIterativeTolerance()

NekDouble Nektar::MultiRegions::AssemblyMap::GetIterativeTolerance ( ) const

Definition at line 1252 of file AssemblyMap.cpp.

References m_iterativeTolerance.

1253  {
1254  return m_iterativeTolerance;
1255  }
NekDouble m_iterativeTolerance
Tolerance for iterative solver.
Definition: AssemblyMap.h:375

◆ GetLocalToGlobalBndMap() [1/2]

int Nektar::MultiRegions::AssemblyMap::GetLocalToGlobalBndMap ( const int  i) const

Retrieve the global index of a given local boundary mode.

Definition at line 876 of file AssemblyMap.cpp.

References m_localToGlobalBndMap.

Referenced by AssemblyMap().

877  {
878  return m_localToGlobalBndMap[i];
879  }
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349

◆ GetLocalToGlobalBndMap() [2/2]

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::GetLocalToGlobalBndMap ( void  )

Retrieve the global indices of the local boundary modes.

Definition at line 882 of file AssemblyMap.cpp.

References m_localToGlobalBndMap.

883  {
884  return m_localToGlobalBndMap;
885  }
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349

◆ GetLocalToGlobalBndSign() [1/2]

NekDouble Nektar::MultiRegions::AssemblyMap::GetLocalToGlobalBndSign ( const int  i) const

Retrieve the sign change of a given local boundary mode.

Definition at line 909 of file AssemblyMap.cpp.

References m_localToGlobalBndSign, and m_signChange.

Referenced by AssemblyMap().

910  {
911  if(m_signChange)
912  {
913  return m_localToGlobalBndSign[i];
914  }
915  else
916  {
917  return 1.0;
918  }
919  }
bool m_signChange
Flag indicating if modes require sign reversal.
Definition: AssemblyMap.h:346
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
Definition: AssemblyMap.h:351

◆ GetLocalToGlobalBndSign() [2/2]

Array< OneD, const NekDouble > Nektar::MultiRegions::AssemblyMap::GetLocalToGlobalBndSign ( void  ) const

Retrieve the sign change for all local boundary modes.

Definition at line 894 of file AssemblyMap.cpp.

References m_localToGlobalBndSign.

Referenced by Nektar::MultiRegions::AssemblyMapDG::v_GetLocalToGlobalSign().

895  {
896  return m_localToGlobalBndSign;
897  }
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
Definition: AssemblyMap.h:351

◆ GetLocalToGlobalMap() [1/2]

int Nektar::MultiRegions::AssemblyMap::GetLocalToGlobalMap ( const int  i) const

Definition at line 723 of file AssemblyMap.cpp.

References v_GetLocalToGlobalMap().

724  {
725  return v_GetLocalToGlobalMap(i);
726  }
virtual const Array< OneD, const int > & v_GetLocalToGlobalMap()

◆ GetLocalToGlobalMap() [2/2]

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::GetLocalToGlobalMap ( )

Definition at line 738 of file AssemblyMap.cpp.

References v_GetLocalToGlobalMap().

739  {
740  return v_GetLocalToGlobalMap();
741  }
virtual const Array< OneD, const int > & v_GetLocalToGlobalMap()

◆ GetLocalToGlobalSign() [1/2]

NekDouble Nektar::MultiRegions::AssemblyMap::GetLocalToGlobalSign ( const int  i) const

Definition at line 753 of file AssemblyMap.cpp.

References v_GetLocalToGlobalSign().

754  {
755  return v_GetLocalToGlobalSign(i);
756  }
virtual const Array< OneD, NekDouble > & v_GetLocalToGlobalSign() const

◆ GetLocalToGlobalSign() [2/2]

const Array< OneD, NekDouble > & Nektar::MultiRegions::AssemblyMap::GetLocalToGlobalSign ( ) const

Definition at line 758 of file AssemblyMap.cpp.

References v_GetLocalToGlobalSign().

759  {
760  return v_GetLocalToGlobalSign();
761  }
virtual const Array< OneD, NekDouble > & v_GetLocalToGlobalSign() const

◆ GetLowestStaticCondLevel()

int Nektar::MultiRegions::AssemblyMap::GetLowestStaticCondLevel ( ) const
inline

Definition at line 297 of file AssemblyMap.h.

References m_lowestStaticCondLevel.

298  {
300  }
int m_lowestStaticCondLevel
Lowest static condensation level.
Definition: AssemblyMap.h:398

◆ GetMaxIterations()

int Nektar::MultiRegions::AssemblyMap::GetMaxIterations ( ) const

Definition at line 1257 of file AssemblyMap.cpp.

References m_maxIterations.

1258  {
1259  return m_maxIterations;
1260  }
int m_maxIterations
Maximum iterations for iterative solver.
Definition: AssemblyMap.h:372

◆ GetNextLevelLocalToGlobalMap()

const AssemblyMapSharedPtr Nektar::MultiRegions::AssemblyMap::GetNextLevelLocalToGlobalMap ( ) const

Returns the local to global mapping for the next level in the multi-level static condensation.

Definition at line 1224 of file AssemblyMap.cpp.

References m_nextLevelLocalToGlobalMap.

1225  {
1227  }
AssemblyMapSharedPtr m_nextLevelLocalToGlobalMap
Map from the patches of the previous level to the patches of the current level.
Definition: AssemblyMap.h:396

◆ GetNumDirEdges()

int Nektar::MultiRegions::AssemblyMap::GetNumDirEdges ( ) const

Definition at line 846 of file AssemblyMap.cpp.

References v_GetNumDirEdges().

847  {
848  return v_GetNumDirEdges();
849  }
virtual int v_GetNumDirEdges() const

◆ GetNumDirFaces()

int Nektar::MultiRegions::AssemblyMap::GetNumDirFaces ( ) const

Definition at line 851 of file AssemblyMap.cpp.

References v_GetNumDirFaces().

852  {
853  return v_GetNumDirFaces();
854  }
virtual int v_GetNumDirFaces() const

◆ GetNumGlobalBndCoeffs()

int Nektar::MultiRegions::AssemblyMap::GetNumGlobalBndCoeffs ( ) const

Returns the total number of global boundary coefficients.

Definition at line 978 of file AssemblyMap.cpp.

References m_numGlobalBndCoeffs.

Referenced by AssemblyMap().

979  {
980  return m_numGlobalBndCoeffs;
981  }
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315

◆ GetNumGlobalCoeffs()

int Nektar::MultiRegions::AssemblyMap::GetNumGlobalCoeffs ( ) const

Returns the total number of global coefficients.

Definition at line 988 of file AssemblyMap.cpp.

References m_numGlobalCoeffs.

989  {
990  return m_numGlobalCoeffs;
991  }
int m_numGlobalCoeffs
Total number of global coefficients.
Definition: AssemblyMap.h:343

◆ GetNumGlobalDirBndCoeffs()

int Nektar::MultiRegions::AssemblyMap::GetNumGlobalDirBndCoeffs ( ) const

Returns the number of global Dirichlet boundary coefficients.

Definition at line 962 of file AssemblyMap.cpp.

References m_numGlobalDirBndCoeffs.

Referenced by AssemblyMap(), and Nektar::MultiRegions::PreconditionerBlock::BlockPreconditionerHDG().

963  {
965  }
int m_numGlobalDirBndCoeffs
Number of Global Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:319

◆ GetNumLocalBndCoeffs()

int Nektar::MultiRegions::AssemblyMap::GetNumLocalBndCoeffs ( ) const

Returns the total number of local boundary coefficients.

Definition at line 973 of file AssemblyMap.cpp.

References m_numLocalBndCoeffs.

Referenced by AssemblyMap().

974  {
975  return m_numLocalBndCoeffs;
976  }
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313

◆ GetNumLocalBndCoeffsPerPatch()

const Array< OneD, const unsigned int > & Nektar::MultiRegions::AssemblyMap::GetNumLocalBndCoeffsPerPatch ( )

Returns the number of local boundary coefficients in each patch.

Definition at line 1211 of file AssemblyMap.cpp.

References m_numLocalBndCoeffsPerPatch.

Referenced by AssemblyMap().

1212  {
1214  }
Array< OneD, unsigned int > m_numLocalBndCoeffsPerPatch
The number of bnd dofs per patch.
Definition: AssemblyMap.h:389

◆ GetNumLocalCoeffs()

int Nektar::MultiRegions::AssemblyMap::GetNumLocalCoeffs ( ) const

Returns the total number of local coefficients.

Definition at line 983 of file AssemblyMap.cpp.

References m_numLocalCoeffs.

984  {
985  return m_numLocalCoeffs;
986  }
int m_numLocalCoeffs
Total number of local coefficients.
Definition: AssemblyMap.h:332

◆ GetNumLocalDirBndCoeffs()

int Nektar::MultiRegions::AssemblyMap::GetNumLocalDirBndCoeffs ( ) const

Returns the number of local Dirichlet boundary coefficients.

Definition at line 968 of file AssemblyMap.cpp.

References m_numLocalDirBndCoeffs.

Referenced by AssemblyMap().

969  {
970  return m_numLocalDirBndCoeffs;
971  }
int m_numLocalDirBndCoeffs
Number of Local Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:317

◆ GetNumLocalIntCoeffsPerPatch()

const Array< OneD, const unsigned int > & Nektar::MultiRegions::AssemblyMap::GetNumLocalIntCoeffsPerPatch ( )

Returns the number of local interior coefficients in each patch.

Definition at line 1218 of file AssemblyMap.cpp.

References m_numLocalIntCoeffsPerPatch.

1219  {
1221  }
Array< OneD, unsigned int > m_numLocalIntCoeffsPerPatch
The number of int dofs per patch.
Definition: AssemblyMap.h:391

◆ GetNumNonDirEdgeModes()

int Nektar::MultiRegions::AssemblyMap::GetNumNonDirEdgeModes ( ) const

Definition at line 836 of file AssemblyMap.cpp.

References v_GetNumNonDirEdgeModes().

837  {
838  return v_GetNumNonDirEdgeModes();
839  }
virtual int v_GetNumNonDirEdgeModes() const

◆ GetNumNonDirEdges()

int Nektar::MultiRegions::AssemblyMap::GetNumNonDirEdges ( ) const

Definition at line 856 of file AssemblyMap.cpp.

References v_GetNumNonDirEdges().

857  {
858  return v_GetNumNonDirEdges();
859  }
virtual int v_GetNumNonDirEdges() const

◆ GetNumNonDirFaceModes()

int Nektar::MultiRegions::AssemblyMap::GetNumNonDirFaceModes ( ) const

Definition at line 841 of file AssemblyMap.cpp.

References v_GetNumNonDirFaceModes().

842  {
843  return v_GetNumNonDirFaceModes();
844  }
virtual int v_GetNumNonDirFaceModes() const

◆ GetNumNonDirFaces()

int Nektar::MultiRegions::AssemblyMap::GetNumNonDirFaces ( ) const

Definition at line 861 of file AssemblyMap.cpp.

References v_GetNumNonDirFaces().

862  {
863  return v_GetNumNonDirFaces();
864  }
virtual int v_GetNumNonDirFaces() const

◆ GetNumNonDirVertexModes()

int Nektar::MultiRegions::AssemblyMap::GetNumNonDirVertexModes ( ) const

Definition at line 831 of file AssemblyMap.cpp.

References v_GetNumNonDirVertexModes().

832  {
833  return v_GetNumNonDirVertexModes();
834  }
virtual int v_GetNumNonDirVertexModes() const

◆ GetNumPatches()

int Nektar::MultiRegions::AssemblyMap::GetNumPatches ( ) const

Returns the number of patches in this static condensation level.

Definition at line 1205 of file AssemblyMap.cpp.

References m_numPatches.

Referenced by AssemblyMap().

1206  {
1207  return m_numPatches;
1208  }
int m_numPatches
The number of patches (~elements) in the current level.
Definition: AssemblyMap.h:387

◆ GetPatchMapFromPrevLevel()

const PatchMapSharedPtr & Nektar::MultiRegions::AssemblyMap::GetPatchMapFromPrevLevel ( void  ) const

Returns the patch map from the previous level of the multi-level static condensation.

Definition at line 1230 of file AssemblyMap.cpp.

References m_patchMapFromPrevLevel.

1232  {
1233  return m_patchMapFromPrevLevel;
1234  }
PatchMapSharedPtr m_patchMapFromPrevLevel
Mapping information for previous level in MultiLevel Solver.
Definition: AssemblyMap.h:409

◆ GetPreconType()

PreconditionerType Nektar::MultiRegions::AssemblyMap::GetPreconType ( ) const

Definition at line 1247 of file AssemblyMap.cpp.

References m_preconType.

1248  {
1249  return m_preconType;
1250  }
PreconditionerType m_preconType
Type type of preconditioner to use in iterative solver.
Definition: AssemblyMap.h:369

◆ GetSignChange()

bool Nektar::MultiRegions::AssemblyMap::GetSignChange ( )

Returns true if using a modal expansion requiring a change of sign of some modes.

Definition at line 887 of file AssemblyMap.cpp.

References m_signChange.

Referenced by AssemblyMap().

888  {
889  return m_signChange;
890  }
bool m_signChange
Flag indicating if modes require sign reversal.
Definition: AssemblyMap.h:346

◆ GetSingularSystem()

bool Nektar::MultiRegions::AssemblyMap::GetSingularSystem ( ) const

Retrieves if the system is singular (true) or not (false)

Definition at line 993 of file AssemblyMap.cpp.

References m_systemSingular.

994  {
995  return m_systemSingular;
996  }
bool m_systemSingular
Flag indicating if the system is singular or not.
Definition: AssemblyMap.h:321

◆ GetStaticCondLevel()

int Nektar::MultiRegions::AssemblyMap::GetStaticCondLevel ( ) const

Returns the level of static condensation for this map.

Definition at line 1200 of file AssemblyMap.cpp.

References m_staticCondLevel.

Referenced by AssemblyMap().

1201  {
1202  return m_staticCondLevel;
1203  }
int m_staticCondLevel
The level of recursion in the case of multi-level static condensation.
Definition: AssemblyMap.h:385

◆ GetSuccessiveRHS()

int Nektar::MultiRegions::AssemblyMap::GetSuccessiveRHS ( ) const

Definition at line 1262 of file AssemblyMap.cpp.

References m_successiveRHS.

1263  {
1264  return m_successiveRHS;
1265  }
int m_successiveRHS
sucessive RHS for iterative solver
Definition: AssemblyMap.h:378

◆ GlobalToLocal() [1/2]

void Nektar::MultiRegions::AssemblyMap::GlobalToLocal ( const Array< OneD, const NekDouble > &  global,
Array< OneD, NekDouble > &  loc 
) const

Definition at line 779 of file AssemblyMap.cpp.

References v_GlobalToLocal().

Referenced by Nektar::MultiRegions::AssemblyMapCG::v_GlobalToLocal().

782  {
783  v_GlobalToLocal(global,loc);
784  }
virtual void v_GlobalToLocal(const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc) const

◆ GlobalToLocal() [2/2]

void Nektar::MultiRegions::AssemblyMap::GlobalToLocal ( const NekVector< NekDouble > &  global,
NekVector< NekDouble > &  loc 
) const

Definition at line 786 of file AssemblyMap.cpp.

References v_GlobalToLocal().

789  {
790  v_GlobalToLocal(global,loc);
791  }
virtual void v_GlobalToLocal(const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc) const

◆ GlobalToLocalBnd() [1/4]

void Nektar::MultiRegions::AssemblyMap::GlobalToLocalBnd ( const NekVector< NekDouble > &  global,
NekVector< NekDouble > &  loc,
int  offset 
) const

Definition at line 998 of file AssemblyMap.cpp.

References Nektar::NekVector< DataType >::GetPtr().

Referenced by GlobalToLocalBnd(), and Nektar::MultiRegions::AssemblyMapDG::v_GlobalToLocal().

1002  {
1003  GlobalToLocalBnd(global.GetPtr(), loc.GetPtr(), offset);
1004  }
void GlobalToLocalBnd(const NekVector< NekDouble > &global, NekVector< NekDouble > &loc, int offset) const
Array< OneD, DataType > & GetPtr()
Definition: NekVector.cpp:227

◆ GlobalToLocalBnd() [2/4]

void Nektar::MultiRegions::AssemblyMap::GlobalToLocalBnd ( const NekVector< NekDouble > &  global,
NekVector< NekDouble > &  loc 
) const

Definition at line 1007 of file AssemblyMap.cpp.

References Nektar::NekVector< DataType >::GetPtr(), and GlobalToLocalBnd().

1010  {
1011  GlobalToLocalBnd(global.GetPtr(), loc.GetPtr());
1012  }
void GlobalToLocalBnd(const NekVector< NekDouble > &global, NekVector< NekDouble > &loc, int offset) const
Array< OneD, DataType > & GetPtr()
Definition: NekVector.cpp:227

◆ GlobalToLocalBnd() [3/4]

void Nektar::MultiRegions::AssemblyMap::GlobalToLocalBnd ( const Array< OneD, const NekDouble > &  global,
Array< OneD, NekDouble > &  loc,
int  offset 
) const

Definition at line 1015 of file AssemblyMap.cpp.

References ASSERTL1, Vmath::Gathr(), m_localToGlobalBndMap, m_localToGlobalBndSign, m_numGlobalBndCoeffs, m_numLocalBndCoeffs, m_signChange, and Vmath::Vcopy().

1018  {
1019  ASSERTL1(loc.num_elements() >= m_numLocalBndCoeffs,"Local vector is not of correct dimension");
1020  ASSERTL1(global.num_elements() >= m_numGlobalBndCoeffs-offset,"Global vector is not of correct dimension");
1021 
1022  // offset input data by length "offset" for Dirichlet boundary conditions.
1023  Array<OneD,NekDouble> tmp(m_numGlobalBndCoeffs,0.0);
1024  Vmath::Vcopy(m_numGlobalBndCoeffs-offset, global.get(), 1, tmp.get() + offset, 1);
1025 
1026  if(m_signChange)
1027  {
1029  }
1030  else
1031  {
1032  Vmath::Gathr(m_numLocalBndCoeffs, tmp.get(), m_localToGlobalBndMap.get(), loc.get());
1033  }
1034  }
bool m_signChange
Flag indicating if modes require sign reversal.
Definition: AssemblyMap.h:346
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
void Gathr(int n, const T *x, const int *y, T *z)
Gather vector z[i] = x[y[i]].
Definition: Vmath.cpp:647
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
Definition: AssemblyMap.h:351
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:250
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1064

◆ GlobalToLocalBnd() [4/4]

void Nektar::MultiRegions::AssemblyMap::GlobalToLocalBnd ( const Array< OneD, const NekDouble > &  global,
Array< OneD, NekDouble > &  loc 
) const

Definition at line 1037 of file AssemblyMap.cpp.

References ASSERTL1, Vmath::Gathr(), m_localToGlobalBndMap, m_localToGlobalBndSign, m_numGlobalBndCoeffs, m_numLocalBndCoeffs, and m_signChange.

1040  {
1041  ASSERTL1(loc.num_elements() >= m_numLocalBndCoeffs,"Local vector is not of correct dimension");
1042  ASSERTL1(global.num_elements() >= m_numGlobalBndCoeffs,"Global vector is not of correct dimension");
1043 
1044  if(m_signChange)
1045  {
1046  Vmath::Gathr(m_numLocalBndCoeffs, m_localToGlobalBndSign.get(), global.get(), m_localToGlobalBndMap.get(), loc.get());
1047  }
1048  else
1049  {
1050  Vmath::Gathr(m_numLocalBndCoeffs, global.get(), m_localToGlobalBndMap.get(), loc.get());
1051  }
1052  }
bool m_signChange
Flag indicating if modes require sign reversal.
Definition: AssemblyMap.h:346
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
void Gathr(int n, const T *x, const int *y, T *z)
Gather vector z[i] = x[y[i]].
Definition: Vmath.cpp:647
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
Definition: AssemblyMap.h:351
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:250

◆ GlobalToLocalBndWithoutSign()

void Nektar::MultiRegions::AssemblyMap::GlobalToLocalBndWithoutSign ( const Array< OneD, const NekDouble > &  global,
Array< OneD, NekDouble > &  loc 
)
protected

Definition at line 1267 of file AssemblyMap.cpp.

References ASSERTL1, Vmath::Gathr(), m_localToGlobalBndMap, m_numGlobalBndCoeffs, and m_numLocalBndCoeffs.

Referenced by AssemblyMap().

1270  {
1271  ASSERTL1(loc.num_elements() >= m_numLocalBndCoeffs,"Local vector is not of correct dimension");
1272  ASSERTL1(global.num_elements() >= m_numGlobalBndCoeffs,"Global vector is not of correct dimension");
1273 
1274  Vmath::Gathr(m_numLocalBndCoeffs, global.get(), m_localToGlobalBndMap.get(), loc.get());
1275  }
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
void Gathr(int n, const T *x, const int *y, T *z)
Gather vector z[i] = x[y[i]].
Definition: Vmath.cpp:647
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:250

◆ LinearSpaceMap()

std::shared_ptr< AssemblyMap > Nektar::MultiRegions::AssemblyMap::LinearSpaceMap ( const ExpList locexp,
GlobalSysSolnType  solnType 
)

Definition at line 871 of file AssemblyMap.cpp.

References v_LinearSpaceMap().

872  {
873  return v_LinearSpaceMap(locexp, solnType);
874  }
virtual std::shared_ptr< AssemblyMap > v_LinearSpaceMap(const ExpList &locexp, GlobalSysSolnType solnType)
Generate a linear space mapping from existing mapping.

◆ LocalBndToGlobal() [1/4]

void Nektar::MultiRegions::AssemblyMap::LocalBndToGlobal ( const NekVector< NekDouble > &  loc,
NekVector< NekDouble > &  global,
int  offset 
) const

Definition at line 1054 of file AssemblyMap.cpp.

References Nektar::NekVector< DataType >::GetPtr().

Referenced by LocalBndToGlobal().

1058  {
1059  LocalBndToGlobal(loc.GetPtr(), global.GetPtr(), offset);
1060  }
void LocalBndToGlobal(const NekVector< NekDouble > &loc, NekVector< NekDouble > &global, int offset) const
Array< OneD, DataType > & GetPtr()
Definition: NekVector.cpp:227

◆ LocalBndToGlobal() [2/4]

void Nektar::MultiRegions::AssemblyMap::LocalBndToGlobal ( const NekVector< NekDouble > &  loc,
NekVector< NekDouble > &  global 
) const

Definition at line 1087 of file AssemblyMap.cpp.

References Nektar::NekVector< DataType >::GetPtr(), and LocalBndToGlobal().

1090  {
1091  LocalBndToGlobal(loc.GetPtr(), global.GetPtr());
1092  }
void LocalBndToGlobal(const NekVector< NekDouble > &loc, NekVector< NekDouble > &global, int offset) const
Array< OneD, DataType > & GetPtr()
Definition: NekVector.cpp:227

◆ LocalBndToGlobal() [3/4]

void Nektar::MultiRegions::AssemblyMap::LocalBndToGlobal ( const Array< OneD, const NekDouble > &  loc,
Array< OneD, NekDouble > &  global,
int  offset 
) const

Definition at line 1063 of file AssemblyMap.cpp.

References ASSERTL1, m_localToGlobalBndMap, m_localToGlobalBndSign, m_numGlobalBndCoeffs, m_numLocalBndCoeffs, m_signChange, Vmath::Scatr(), UniversalAssembleBnd(), and Vmath::Vcopy().

1067  {
1068  ASSERTL1(loc.num_elements() >= m_numLocalBndCoeffs,"Local vector is not of correct dimension");
1069  ASSERTL1(global.num_elements() >= m_numGlobalBndCoeffs-offset,"Global vector is not of correct dimension");
1070 
1071  // offset input data by length "offset" for Dirichlet boundary conditions.
1072  Array<OneD,NekDouble> tmp(m_numGlobalBndCoeffs,0.0);
1073 
1074  if(m_signChange)
1075  {
1077  }
1078  else
1079  {
1080  Vmath::Scatr(m_numLocalBndCoeffs, loc.get(), m_localToGlobalBndMap.get(), tmp.get());
1081  }
1082 
1083  UniversalAssembleBnd(tmp);
1084  Vmath::Vcopy(m_numGlobalBndCoeffs-offset, tmp.get()+offset, 1, global.get(), 1);
1085  }
bool m_signChange
Flag indicating if modes require sign reversal.
Definition: AssemblyMap.h:346
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
void Scatr(int n, const T *x, const int *y, T *z)
Scatter vector z[y[i]] = x[i].
Definition: Vmath.cpp:676
void UniversalAssembleBnd(Array< OneD, NekDouble > &pGlobal) const
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
Definition: AssemblyMap.h:351
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:250
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1064

◆ LocalBndToGlobal() [4/4]

void Nektar::MultiRegions::AssemblyMap::LocalBndToGlobal ( const Array< OneD, const NekDouble > &  loc,
Array< OneD, NekDouble > &  global 
) const

Definition at line 1095 of file AssemblyMap.cpp.

References ASSERTL1, m_localToGlobalBndMap, m_localToGlobalBndSign, m_numGlobalBndCoeffs, m_numLocalBndCoeffs, m_signChange, and Vmath::Scatr().

1098  {
1099  ASSERTL1(loc.num_elements() >= m_numLocalBndCoeffs,"Local vector is not of correct dimension");
1100  ASSERTL1(global.num_elements() >= m_numGlobalBndCoeffs,"Global vector is not of correct dimension");
1101 
1102  if(m_signChange)
1103  {
1105  }
1106  else
1107  {
1108  Vmath::Scatr(m_numLocalBndCoeffs, loc.get(), m_localToGlobalBndMap.get(), global.get());
1109  }
1110  }
bool m_signChange
Flag indicating if modes require sign reversal.
Definition: AssemblyMap.h:346
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
void Scatr(int n, const T *x, const int *y, T *z)
Scatter vector z[y[i]] = x[i].
Definition: Vmath.cpp:676
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
Definition: AssemblyMap.h:351
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:250

◆ LocalToGlobal() [1/2]

void Nektar::MultiRegions::AssemblyMap::LocalToGlobal ( const Array< OneD, const NekDouble > &  loc,
Array< OneD, NekDouble > &  global,
bool  useComm = true 
) const

Definition at line 763 of file AssemblyMap.cpp.

References v_LocalToGlobal().

Referenced by Nektar::MultiRegions::AssemblyMapCG::v_LocalToGlobal().

767  {
768  v_LocalToGlobal(loc,global,useComm);
769  }
virtual void v_LocalToGlobal(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global, bool useComm) const

◆ LocalToGlobal() [2/2]

void Nektar::MultiRegions::AssemblyMap::LocalToGlobal ( const NekVector< NekDouble > &  loc,
NekVector< NekDouble > &  global,
bool  useComm = true 
) const

Definition at line 771 of file AssemblyMap.cpp.

References v_LocalToGlobal().

775  {
776  v_LocalToGlobal(loc,global,useComm);
777  }
virtual void v_LocalToGlobal(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global, bool useComm) const

◆ PrintStats()

void Nektar::MultiRegions::AssemblyMap::PrintStats ( std::ostream &  out,
std::string  variable,
bool  printHeader = true 
) const

Definition at line 1277 of file AssemblyMap.cpp.

References Vmath::Assmb(), CellMLToNektar.pycml::level, m_globalToUniversalBndMapUnique, m_localToGlobalBndMap, m_nextLevelLocalToGlobalMap, m_numGlobalBndCoeffs, m_numGlobalCoeffs, m_numGlobalDirBndCoeffs, m_numLocalBndCoeffs, m_numLocalCoeffs, m_numLocalDirBndCoeffs, m_session, Nektar::LibUtilities::ReduceMax, Nektar::LibUtilities::ReduceMin, Nektar::LibUtilities::ReduceSum, and UniversalAssembleBnd().

1279  {
1281  = m_session->GetComm()->GetRowComm();
1282  bool isRoot = vRowComm->GetRank() == 0;
1283  int n = vRowComm->GetSize();
1284  int i;
1285 
1286  // Determine number of global degrees of freedom.
1287  int globBndCnt = 0, globDirCnt = 0;
1288 
1289  for (i = 0; i < m_numGlobalBndCoeffs; ++i)
1290  {
1292  {
1293  globBndCnt++;
1294 
1295  if (i < m_numGlobalDirBndCoeffs)
1296  {
1297  globDirCnt++;
1298  }
1299  }
1300  }
1301 
1302  int globCnt = m_numGlobalCoeffs - m_numGlobalBndCoeffs + globBndCnt;
1303 
1304  // Calculate maximum valency
1305  Array<OneD, NekDouble> tmpLoc (m_numLocalBndCoeffs, 1.0);
1306  Array<OneD, NekDouble> tmpGlob(m_numGlobalBndCoeffs, 0.0);
1307 
1308  Vmath::Assmb(
1309  m_numLocalBndCoeffs, tmpLoc.get(),
1310  m_localToGlobalBndMap.get(), tmpGlob.get());
1311  UniversalAssembleBnd(tmpGlob);
1312 
1313  int totGlobDof = globCnt;
1314  int totGlobBndDof = globBndCnt;
1315  int totGlobDirDof = globDirCnt;
1316  int totLocalDof = m_numLocalCoeffs;
1317  int totLocalBndDof = m_numLocalBndCoeffs;
1318  int totLocalDirDof = m_numLocalDirBndCoeffs;
1319 
1320  int meanValence = 0;
1321  int maxValence = 0;
1322  int minValence = 10000000;
1323  for (int i = 0; i < m_numGlobalBndCoeffs; ++i)
1324  {
1326  {
1327  continue;
1328  }
1329 
1330  if (tmpGlob[i] > maxValence)
1331  {
1332  maxValence = tmpGlob[i];
1333  }
1334  if (tmpGlob[i] < minValence)
1335  {
1336  minValence = tmpGlob[i];
1337  }
1338  meanValence += tmpGlob[i];
1339  }
1340 
1341  vRowComm->AllReduce(maxValence, LibUtilities::ReduceMax);
1342  vRowComm->AllReduce(minValence, LibUtilities::ReduceMin);
1343  vRowComm->AllReduce(meanValence, LibUtilities::ReduceSum);
1344  vRowComm->AllReduce(totGlobDof, LibUtilities::ReduceSum);
1345  vRowComm->AllReduce(totGlobBndDof, LibUtilities::ReduceSum);
1346  vRowComm->AllReduce(totGlobDirDof, LibUtilities::ReduceSum);
1347  vRowComm->AllReduce(totLocalDof, LibUtilities::ReduceSum);
1348  vRowComm->AllReduce(totLocalBndDof, LibUtilities::ReduceSum);
1349  vRowComm->AllReduce(totLocalDirDof, LibUtilities::ReduceSum);
1350 
1351  meanValence /= totGlobBndDof;
1352 
1353  if (isRoot)
1354  {
1355  if (printHeader)
1356  {
1357  out << "Assembly map statistics for field " << variable
1358  << ":" << endl;
1359  }
1360 
1361  out << " - Number of local/global dof : "
1362  << totLocalDof << " " << totGlobDof << endl;
1363  out << " - Number of local/global boundary dof : "
1364  << totLocalBndDof << " " << totGlobBndDof << endl;
1365  out << " - Number of local/global Dirichlet dof : "
1366  << totLocalDirDof << " " << totGlobDirDof << endl;
1367  out << " - dof valency (min/max/mean) : "
1368  << minValence << " " << maxValence << " " << meanValence
1369  << endl;
1370 
1371  if (n > 1)
1372  {
1373  NekDouble mean = m_numLocalCoeffs, mean2 = mean * mean;
1374  NekDouble minval = mean, maxval = mean;
1375  Array<OneD, NekDouble> tmp(1);
1376 
1377  for (i = 1; i < n; ++i)
1378  {
1379  vRowComm->Recv(i, tmp);
1380  mean += tmp[0];
1381  mean2 += tmp[0]*tmp[0];
1382 
1383  if (tmp[0] > maxval)
1384  {
1385  maxval = tmp[0];
1386  }
1387  if (tmp[0] < minval)
1388  {
1389  minval = tmp[0];
1390  }
1391  }
1392 
1393  if (maxval > 0.1)
1394  {
1395  out << " - Local dof dist. (min/max/mean/dev) : "
1396  << minval << " " << maxval << " " << (mean / n)
1397  << " " << sqrt(mean2/n - mean*mean/n/n) << endl;
1398  }
1399 
1400  vRowComm->Block();
1401 
1402  mean = minval = maxval = m_numLocalBndCoeffs;
1403  mean2 = mean * mean;
1404 
1405  for (i = 1; i < n; ++i)
1406  {
1407  vRowComm->Recv(i, tmp);
1408  mean += tmp[0];
1409  mean2 += tmp[0]*tmp[0];
1410 
1411  if (tmp[0] > maxval)
1412  {
1413  maxval = tmp[0];
1414  }
1415  if (tmp[0] < minval)
1416  {
1417  minval = tmp[0];
1418  }
1419  }
1420 
1421  out << " - Local bnd dof dist. (min/max/mean/dev) : "
1422  << minval << " " << maxval << " " << (mean / n) << " "
1423  << sqrt(mean2/n - mean*mean/n/n) << endl;
1424  }
1425  }
1426  else
1427  {
1428  Array<OneD, NekDouble> tmp(1);
1429  tmp[0] = m_numLocalCoeffs;
1430  vRowComm->Send(0, tmp);
1431  vRowComm->Block();
1432  tmp[0] = m_numLocalBndCoeffs;
1433  vRowComm->Send(0, tmp);
1434  }
1435 
1436  // Either we have no more levels in the static condensation, or we
1437  // are not multi-level.
1439  {
1440  return;
1441  }
1442 
1443  int level = 2;
1445  while (tmp->m_nextLevelLocalToGlobalMap)
1446  {
1447  tmp = tmp->m_nextLevelLocalToGlobalMap;
1448  ++level;
1449  }
1450 
1451  // Print out multi-level static condensation information.
1452  if (n > 1)
1453  {
1454  if (isRoot)
1455  {
1456  NekDouble mean = level, mean2 = mean * mean;
1457  int minval = level, maxval = level;
1458 
1459  Array<OneD, NekDouble> tmpRecv(1);
1460  for (i = 1; i < n; ++i)
1461  {
1462  vRowComm->Recv(i, tmpRecv);
1463  mean += tmpRecv[0];
1464  mean2 += tmpRecv[0]*tmpRecv[0];
1465 
1466  if (tmpRecv[0] > maxval)
1467  {
1468  maxval = (int)(tmpRecv[0] + 0.5);
1469  }
1470  if (tmpRecv[0] < minval)
1471  {
1472  minval = (int)(tmpRecv[0] + 0.5);
1473  }
1474  }
1475 
1476  out << " - M-level sc. dist. (min/max/mean/dev) : "
1477  << minval << " " << maxval << " " << (mean / n) << " "
1478  << sqrt(mean2/n - mean*mean/n/n) << endl;
1479  }
1480  else
1481  {
1482  Array<OneD, NekDouble> tmpSend(1);
1483  tmpSend[0] = level;
1484  vRowComm->Send(0, tmpSend);
1485  }
1486  }
1487  else
1488  {
1489  out << " - Number of static cond. levels : "
1490  << level << endl;
1491  }
1492 
1493  if (isRoot)
1494  {
1495  out << "Stats at lowest static cond. level:" << endl;
1496  }
1497  tmp->PrintStats(out, variable, false);
1498  }
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
Definition: Comm.h:53
int m_numLocalCoeffs
Total number of local coefficients.
Definition: AssemblyMap.h:332
std::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
Definition: AssemblyMap.h:52
AssemblyMapSharedPtr m_nextLevelLocalToGlobalMap
Map from the patches of the previous level to the patches of the current level.
Definition: AssemblyMap.h:396
int m_numGlobalDirBndCoeffs
Number of Global Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:319
void UniversalAssembleBnd(Array< OneD, NekDouble > &pGlobal) const
double NekDouble
void Assmb(int n, const T *x, const int *y, T *z)
Assemble z[y[i]] += x[i]; z should be zero&#39;d first.
Definition: Vmath.cpp:712
Array< OneD, int > m_localToGlobalBndMap
Integer map of local boundary coeffs to global space.
Definition: AssemblyMap.h:349
int m_numLocalDirBndCoeffs
Number of Local Dirichlet Boundary Coefficients.
Definition: AssemblyMap.h:317
int m_numLocalBndCoeffs
Number of local boundary coefficients.
Definition: AssemblyMap.h:313
LibUtilities::SessionReaderSharedPtr m_session
Session object.
Definition: AssemblyMap.h:304
Array< OneD, int > m_globalToUniversalBndMapUnique
Integer map of unique process coeffs to universal space (signed)
Definition: AssemblyMap.h:361
int m_numGlobalCoeffs
Total number of global coefficients.
Definition: AssemblyMap.h:343

◆ SetNextLevelLocalToGlobalMap()

void Nektar::MultiRegions::AssemblyMap::SetNextLevelLocalToGlobalMap ( AssemblyMapSharedPtr  pNextLevelLocalToGlobalMap)

◆ UniversalAssemble() [1/3]

void Nektar::MultiRegions::AssemblyMap::UniversalAssemble ( Array< OneD, NekDouble > &  pGlobal) const

◆ UniversalAssemble() [2/3]

void Nektar::MultiRegions::AssemblyMap::UniversalAssemble ( NekVector< NekDouble > &  pGlobal) const

Definition at line 813 of file AssemblyMap.cpp.

References v_UniversalAssemble().

815  {
816  v_UniversalAssemble(pGlobal);
817  }
virtual void v_UniversalAssemble(Array< OneD, NekDouble > &pGlobal) const

◆ UniversalAssemble() [3/3]

void Nektar::MultiRegions::AssemblyMap::UniversalAssemble ( Array< OneD, NekDouble > &  pGlobal,
int  offset 
) const

Definition at line 819 of file AssemblyMap.cpp.

References v_UniversalAssemble().

822  {
823  v_UniversalAssemble(pGlobal, offset);
824  }
virtual void v_UniversalAssemble(Array< OneD, NekDouble > &pGlobal) const

◆ UniversalAssembleBnd() [1/3]

void Nektar::MultiRegions::AssemblyMap::UniversalAssembleBnd ( Array< OneD, NekDouble > &  pGlobal) const

Definition at line 1171 of file AssemblyMap.cpp.

References ASSERTL1, Gs::Gather(), Gs::gs_add, m_bndGsh, and m_numGlobalBndCoeffs.

Referenced by AssembleBnd(), Nektar::MultiRegions::AssemblyMapCG::AssemblyMapCG(), LocalBndToGlobal(), PrintStats(), and UniversalAssembleBnd().

1173  {
1174  ASSERTL1(pGlobal.num_elements() == m_numGlobalBndCoeffs,
1175  "Wrong size.");
1176  Gs::Gather(pGlobal, Gs::gs_add, m_bndGsh);
1177  }
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
Definition: AssemblyMap.h:315
static void Gather(Nektar::Array< OneD, NekDouble > pU, gs_op pOp, gs_data *pGsh, Nektar::Array< OneD, NekDouble > pBuffer=NullNekDouble1DArray)
Performs a gather-scatter operation of the provided values.
Definition: GsLib.hpp:245
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:250

◆ UniversalAssembleBnd() [2/3]

void Nektar::MultiRegions::AssemblyMap::UniversalAssembleBnd ( NekVector< NekDouble > &  pGlobal) const

Definition at line 1179 of file AssemblyMap.cpp.

References Nektar::NekVector< DataType >::GetPtr(), and UniversalAssembleBnd().

1181  {
1182  UniversalAssembleBnd(pGlobal.GetPtr());
1183  }
void UniversalAssembleBnd(Array< OneD, NekDouble > &pGlobal) const
Array< OneD, DataType > & GetPtr()
Definition: NekVector.cpp:227

◆ UniversalAssembleBnd() [3/3]

void Nektar::MultiRegions::AssemblyMap::UniversalAssembleBnd ( Array< OneD, NekDouble > &  pGlobal,
int  offset 
) const

Definition at line 1185 of file AssemblyMap.cpp.

References UniversalAssembleBnd(), and Vmath::Vcopy().

1188  {
1189  Array<OneD, NekDouble> tmp(offset);
1190  if (offset > 0) Vmath::Vcopy(offset, pGlobal, 1, tmp, 1);
1191  UniversalAssembleBnd(pGlobal);
1192  if (offset > 0) Vmath::Vcopy(offset, tmp, 1, pGlobal, 1);
1193  }
void UniversalAssembleBnd(Array< OneD, NekDouble > &pGlobal) const
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1064

◆ v_Assemble() [1/2]

void Nektar::MultiRegions::AssemblyMap::v_Assemble ( const Array< OneD, const NekDouble > &  loc,
Array< OneD, NekDouble > &  global 
) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 596 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by Assemble().

599  {
600  boost::ignore_unused(loc, global);
602  "Not defined for this type of mapping.");
603  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_Assemble() [2/2]

void Nektar::MultiRegions::AssemblyMap::v_Assemble ( const NekVector< NekDouble > &  loc,
NekVector< NekDouble > &  global 
) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 605 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

608  {
609  boost::ignore_unused(loc, global);
611  "Not defined for this type of mapping.");
612  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetExtraDirEdges()

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::v_GetExtraDirEdges ( )
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 695 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetExtraDirEdges().

696  {
698  "Not defined for this type of mapping.");
699  static Array<OneD, const int> result;
700  return result;
701  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetFullSystemBandWidth()

int Nektar::MultiRegions::AssemblyMap::v_GetFullSystemBandWidth ( ) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 639 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetFullSystemBandWidth().

640  {
642  "Not defined for this type of mapping.");
643  return 0;
644  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetGlobalToUniversalMap() [1/2]

int Nektar::MultiRegions::AssemblyMap::v_GetGlobalToUniversalMap ( const int  i) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 502 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

503  {
504  boost::ignore_unused(i);
506  "Not defined for this type of mapping.");
507  return 0;
508  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetGlobalToUniversalMap() [2/2]

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::v_GetGlobalToUniversalMap ( void  )
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 526 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetGlobalToUniversalMap().

527  {
529  "Not defined for this type of mapping.");
530  static Array<OneD, const int> result;
531  return result;
532  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetGlobalToUniversalMapUnique() [1/2]

int Nektar::MultiRegions::AssemblyMap::v_GetGlobalToUniversalMapUnique ( const int  i) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 510 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

511  {
512  boost::ignore_unused(i);
514  "Not defined for this type of mapping.");
515  return 0;
516  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetGlobalToUniversalMapUnique() [2/2]

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::v_GetGlobalToUniversalMapUnique ( void  )
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 534 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetGlobalToUniversalMapUnique().

535  {
537  "Not defined for this type of mapping.");
538  static Array<OneD, const int> result;
539  return result;
540  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetLocalToGlobalMap() [1/2]

int Nektar::MultiRegions::AssemblyMap::v_GetLocalToGlobalMap ( const int  i) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 494 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

495  {
496  boost::ignore_unused(i);
498  "Not defined for this type of mapping.");
499  return 0;
500  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetLocalToGlobalMap() [2/2]

const Array< OneD, const int > & Nektar::MultiRegions::AssemblyMap::v_GetLocalToGlobalMap ( void  )
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 518 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetLocalToGlobalMap().

519  {
521  "Not defined for this type of mapping.");
522  static Array<OneD,const int> result;
523  return result;
524  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetLocalToGlobalSign() [1/2]

NekDouble Nektar::MultiRegions::AssemblyMap::v_GetLocalToGlobalSign ( const int  i) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 542 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

543  {
544  boost::ignore_unused(i);
546  "Not defined for this type of mapping.");
547  return 0.0;
548  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetLocalToGlobalSign() [2/2]

const Array< OneD, NekDouble > & Nektar::MultiRegions::AssemblyMap::v_GetLocalToGlobalSign ( ) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 550 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetLocalToGlobalSign().

551  {
553  "Not defined for this type of mapping.");
554  static Array<OneD, NekDouble> result;
555  return result;
556  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetNumDirEdges()

int Nektar::MultiRegions::AssemblyMap::v_GetNumDirEdges ( ) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 667 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetNumDirEdges().

668  {
670  "Not defined for this type of mapping.");
671  return 0;
672  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetNumDirFaces()

int Nektar::MultiRegions::AssemblyMap::v_GetNumDirFaces ( ) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 674 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetNumDirFaces().

675  {
677  "Not defined for this type of mapping.");
678  return 0;
679  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetNumNonDirEdgeModes()

int Nektar::MultiRegions::AssemblyMap::v_GetNumNonDirEdgeModes ( ) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 653 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetNumNonDirEdgeModes().

654  {
656  "Not defined for this type of mapping.");
657  return 0;
658  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetNumNonDirEdges()

int Nektar::MultiRegions::AssemblyMap::v_GetNumNonDirEdges ( ) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 681 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetNumNonDirEdges().

682  {
684  "Not defined for this type of mapping.");
685  return 0;
686  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetNumNonDirFaceModes()

int Nektar::MultiRegions::AssemblyMap::v_GetNumNonDirFaceModes ( ) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 660 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetNumNonDirFaceModes().

661  {
663  "Not defined for this type of mapping.");
664  return 0;
665  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetNumNonDirFaces()

int Nektar::MultiRegions::AssemblyMap::v_GetNumNonDirFaces ( ) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 688 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetNumNonDirFaces().

689  {
691  "Not defined for this type of mapping.");
692  return 0;
693  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GetNumNonDirVertexModes()

int Nektar::MultiRegions::AssemblyMap::v_GetNumNonDirVertexModes ( ) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 646 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GetNumNonDirVertexModes().

647  {
649  "Not defined for this type of mapping.");
650  return 0;
651  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GlobalToLocal() [1/2]

void Nektar::MultiRegions::AssemblyMap::v_GlobalToLocal ( const Array< OneD, const NekDouble > &  global,
Array< OneD, NekDouble > &  loc 
) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 578 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by GlobalToLocal().

581  {
582  boost::ignore_unused(loc, global);
584  "Not defined for this type of mapping.");
585  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_GlobalToLocal() [2/2]

void Nektar::MultiRegions::AssemblyMap::v_GlobalToLocal ( const NekVector< NekDouble > &  global,
NekVector< NekDouble > &  loc 
) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 587 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

590  {
591  boost::ignore_unused(loc, global);
593  "Not defined for this type of mapping.");
594  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_LinearSpaceMap()

std::shared_ptr< AssemblyMap > Nektar::MultiRegions::AssemblyMap::v_LinearSpaceMap ( const ExpList locexp,
GlobalSysSolnType  solnType 
)
privatevirtual

Generate a linear space mapping from existing mapping.

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 703 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by LinearSpaceMap().

705  {
706  boost::ignore_unused(locexp, solnType);
708  "Not defined for this type of mapping.");
709  static std::shared_ptr<AssemblyMap> result;
710  return result;
711  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_LocalToGlobal() [1/2]

void Nektar::MultiRegions::AssemblyMap::v_LocalToGlobal ( const Array< OneD, const NekDouble > &  loc,
Array< OneD, NekDouble > &  global,
bool  useComm 
) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 558 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

Referenced by LocalToGlobal().

562  {
563  boost::ignore_unused(loc, global, useComm);
565  "Not defined for this type of mapping.");
566  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_LocalToGlobal() [2/2]

void Nektar::MultiRegions::AssemblyMap::v_LocalToGlobal ( const NekVector< NekDouble > &  loc,
NekVector< NekDouble > &  global,
bool  useComm 
) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 568 of file AssemblyMap.cpp.

References Nektar::ErrorUtil::efatal, and NEKERROR.

572  {
573  boost::ignore_unused(loc, global, useComm);
575  "Not defined for this type of mapping.");
576  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
Definition: ErrorUtil.hpp:209

◆ v_UniversalAssemble() [1/3]

void Nektar::MultiRegions::AssemblyMap::v_UniversalAssemble ( Array< OneD, NekDouble > &  pGlobal) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 614 of file AssemblyMap.cpp.

Referenced by UniversalAssemble().

616  {
617  boost::ignore_unused(pGlobal);
618  // Do nothing here since multi-level static condensation uses a
619  // AssemblyMap and thus will call this routine in serial.
620  }

◆ v_UniversalAssemble() [2/3]

void Nektar::MultiRegions::AssemblyMap::v_UniversalAssemble ( NekVector< NekDouble > &  pGlobal) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG, and Nektar::MultiRegions::AssemblyMapDG.

Definition at line 622 of file AssemblyMap.cpp.

624  {
625  boost::ignore_unused(pGlobal);
626  // Do nothing here since multi-level static condensation uses a
627  // AssemblyMap and thus will call this routine in serial.
628  }

◆ v_UniversalAssemble() [3/3]

void Nektar::MultiRegions::AssemblyMap::v_UniversalAssemble ( Array< OneD, NekDouble > &  pGlobal,
int  offset 
) const
privatevirtual

Reimplemented in Nektar::MultiRegions::AssemblyMapCG.

Definition at line 630 of file AssemblyMap.cpp.

633  {
634  boost::ignore_unused(pGlobal, offset);
635  // Do nothing here since multi-level static condensation uses a
636  // AssemblyMap and thus will call this routine in serial.
637  }

Member Data Documentation

◆ m_bndCondCoeffsToGlobalCoeffsMap

Array<OneD,int> Nektar::MultiRegions::AssemblyMap::m_bndCondCoeffsToGlobalCoeffsMap
protected

◆ m_bndCondCoeffsToGlobalCoeffsSign

Array<OneD,NekDouble> Nektar::MultiRegions::AssemblyMap::m_bndCondCoeffsToGlobalCoeffsSign
protected

Integer map of bnd cond coeffs to global coefficients.

Definition at line 355 of file AssemblyMap.h.

Referenced by Nektar::MultiRegions::AssemblyMapCG::AssemblyMapCG(), Nektar::CoupledAssemblyMap::CoupledAssemblyMap(), and GetBndCondCoeffsToGlobalCoeffsSign().

◆ m_bndCondTraceToGlobalTraceMap

Array<OneD,int> Nektar::MultiRegions::AssemblyMap::m_bndCondTraceToGlobalTraceMap
protected

Integer map of bnd cond trace number to global trace number.

Definition at line 357 of file AssemblyMap.h.

Referenced by Nektar::MultiRegions::AssemblyMapDG::AssemblyMapDG(), and GetBndCondTraceToGlobalTraceMap().

◆ m_bndGsh

Gs::gs_data* Nektar::MultiRegions::AssemblyMap::m_bndGsh
protected

◆ m_bndSystemBandWidth

int Nektar::MultiRegions::AssemblyMap::m_bndSystemBandWidth
protected

The bandwith of the global bnd system.

Definition at line 366 of file AssemblyMap.h.

Referenced by CalculateBndSystemBandWidth(), and GetBndSystemBandWidth().

◆ m_comm

LibUtilities::CommSharedPtr Nektar::MultiRegions::AssemblyMap::m_comm
protected

◆ m_globalToUniversalBndMap

Array<OneD,int> Nektar::MultiRegions::AssemblyMap::m_globalToUniversalBndMap
protected

◆ m_globalToUniversalBndMapUnique

Array<OneD,int> Nektar::MultiRegions::AssemblyMap::m_globalToUniversalBndMapUnique
protected

◆ m_gsh

Gs::gs_data* Nektar::MultiRegions::AssemblyMap::m_gsh
protected

◆ m_hash

size_t Nektar::MultiRegions::AssemblyMap::m_hash
protected

◆ m_iterativeTolerance

NekDouble Nektar::MultiRegions::AssemblyMap::m_iterativeTolerance
protected

Tolerance for iterative solver.

Definition at line 375 of file AssemblyMap.h.

Referenced by AssemblyMap(), and GetIterativeTolerance().

◆ m_localToGlobalBndMap

Array<OneD,int> Nektar::MultiRegions::AssemblyMap::m_localToGlobalBndMap
protected

◆ m_localToGlobalBndSign

Array<OneD,NekDouble> Nektar::MultiRegions::AssemblyMap::m_localToGlobalBndSign
protected

◆ m_lowestStaticCondLevel

int Nektar::MultiRegions::AssemblyMap::m_lowestStaticCondLevel
protected

◆ m_maxIterations

int Nektar::MultiRegions::AssemblyMap::m_maxIterations
protected

Maximum iterations for iterative solver.

Definition at line 372 of file AssemblyMap.h.

Referenced by AssemblyMap(), and GetMaxIterations().

◆ m_nextLevelLocalToGlobalMap

AssemblyMapSharedPtr Nektar::MultiRegions::AssemblyMap::m_nextLevelLocalToGlobalMap
protected

Map from the patches of the previous level to the patches of the current level.

The local to global mapping of the next level of recursion

Definition at line 396 of file AssemblyMap.h.

Referenced by AssemblyMap(), Nektar::MultiRegions::AssemblyMapCG::AssemblyMapCG(), Nektar::MultiRegions::AssemblyMapDG::AssemblyMapDG(), AtLastLevel(), Nektar::CoupledLocalToGlobalC0ContMap::CoupledLocalToGlobalC0ContMap(), GetNextLevelLocalToGlobalMap(), and PrintStats().

◆ m_numGlobalBndCoeffs

int Nektar::MultiRegions::AssemblyMap::m_numGlobalBndCoeffs
protected

◆ m_numGlobalCoeffs

int Nektar::MultiRegions::AssemblyMap::m_numGlobalCoeffs
protected

Total number of global coefficients.

This corresponds to the number of total number of coefficients

  • For CG this corresponds to the total of bnd + int DOFs.
  • For DG this corresponds to the number of bnd DOFs. This means that m_numGlobalCoeffs = m_numGlobalBndCoeffs This way, we can consider the trace-system solve as a statically condensed solve without interior DOFs. This allows us to use the same global system solver for both cases.

Definition at line 343 of file AssemblyMap.h.

Referenced by AssemblyMap(), Nektar::MultiRegions::AssemblyMapCG::AssemblyMapCG(), Nektar::MultiRegions::AssemblyMapDG::AssemblyMapDG(), Nektar::CoupledAssemblyMap::CoupledAssemblyMap(), Nektar::CoupledLocalToGlobalC0ContMap::CoupledLocalToGlobalC0ContMap(), GetNumGlobalCoeffs(), PrintStats(), Nektar::MultiRegions::AssemblyMapCG::SetUpUniversalC0ContMap(), Nektar::MultiRegions::AssemblyMapCG::v_Assemble(), and Nektar::MultiRegions::AssemblyMapCG::v_LinearSpaceMap().

◆ m_numGlobalDirBndCoeffs

int Nektar::MultiRegions::AssemblyMap::m_numGlobalDirBndCoeffs
protected

◆ m_numLocalBndCoeffs

int Nektar::MultiRegions::AssemblyMap::m_numLocalBndCoeffs
protected

◆ m_numLocalBndCoeffsPerPatch

Array<OneD, unsigned int> Nektar::MultiRegions::AssemblyMap::m_numLocalBndCoeffsPerPatch
protected

◆ m_numLocalCoeffs

int Nektar::MultiRegions::AssemblyMap::m_numLocalCoeffs
protected

Total number of local coefficients.

This corresponds to the number of total number of coefficients

  • For CG this corresponds to the total of bnd + int DOFs
  • For DG this corresponds to the number of bnd DOFs. This means that m_numLocalCoeffs = m_numLocalBndCoeffs This way, we can consider the trace-system solve as a statically condensed solve without interior DOFs. This allows us to use the same global system solver for both cases.

Definition at line 332 of file AssemblyMap.h.

Referenced by Nektar::MultiRegions::AssemblyMapCG::AssemblyMapCG(), Nektar::MultiRegions::AssemblyMapDG::AssemblyMapDG(), Nektar::MultiRegions::AssemblyMapCG::CalculateFullSystemBandWidth(), Nektar::CoupledAssemblyMap::CoupledAssemblyMap(), Nektar::CoupledLocalToGlobalC0ContMap::CoupledLocalToGlobalC0ContMap(), GetNumLocalCoeffs(), PrintStats(), Nektar::MultiRegions::AssemblyMapCG::v_Assemble(), Nektar::MultiRegions::AssemblyMapCG::v_GlobalToLocal(), and Nektar::MultiRegions::AssemblyMapCG::v_LocalToGlobal().

◆ m_numLocalDirBndCoeffs

int Nektar::MultiRegions::AssemblyMap::m_numLocalDirBndCoeffs
protected

◆ m_numLocalIntCoeffsPerPatch

Array<OneD, unsigned int> Nektar::MultiRegions::AssemblyMap::m_numLocalIntCoeffsPerPatch
protected

◆ m_numPatches

int Nektar::MultiRegions::AssemblyMap::m_numPatches
protected

◆ m_patchMapFromPrevLevel

PatchMapSharedPtr Nektar::MultiRegions::AssemblyMap::m_patchMapFromPrevLevel
private

Mapping information for previous level in MultiLevel Solver.

Definition at line 409 of file AssemblyMap.h.

Referenced by AssemblyMap(), and GetPatchMapFromPrevLevel().

◆ m_preconType

PreconditionerType Nektar::MultiRegions::AssemblyMap::m_preconType
protected

Type type of preconditioner to use in iterative solver.

Definition at line 369 of file AssemblyMap.h.

Referenced by AssemblyMap(), and GetPreconType().

◆ m_session

LibUtilities::SessionReaderSharedPtr Nektar::MultiRegions::AssemblyMap::m_session
protected

◆ m_signChange

bool Nektar::MultiRegions::AssemblyMap::m_signChange
protected

◆ m_solnType

GlobalSysSolnType Nektar::MultiRegions::AssemblyMap::m_solnType
protected

◆ m_staticCondLevel

int Nektar::MultiRegions::AssemblyMap::m_staticCondLevel
protected

◆ m_successiveRHS

int Nektar::MultiRegions::AssemblyMap::m_successiveRHS
protected

sucessive RHS for iterative solver

Definition at line 378 of file AssemblyMap.h.

Referenced by AssemblyMap(), and GetSuccessiveRHS().

◆ m_systemSingular

bool Nektar::MultiRegions::AssemblyMap::m_systemSingular
protected