35 #ifndef MULTIREGIONS_ASSEMBLY_MAP_H 
   36 #define MULTIREGIONS_ASSEMBLY_MAP_H 
   48     namespace MultiRegions
 
   66                     const std::string variable = 
"DefaultVar");
 
   99                     bool useComm = 
true) 
const;
 
  104                     bool useComm = 
true) 
const;
 
  209                     int offset, 
bool UseComm = 
true) 
const;
 
#define MULTI_REGIONS_EXPORT
 
Base class for constructing local to global mapping of degrees of freedom.
 
int m_lowestStaticCondLevel
Lowest static condensation level.
 
void PatchLocalToGlobal(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global) const
 
const Array< OneD, const int > & GetExtraDirEdges()
 
GlobalSysSolnType m_solnType
The solution type of the global system.
 
int GetNumPatches() const
Returns the number of patches in this static condensation level.
 
PreconditionerType m_preconType
Type type of preconditioner to use in iterative solver.
 
const Array< OneD, const int > & GetGlobalToUniversalMapUnique()
 
int GetNumGlobalCoeffs() const
Returns the total number of global coefficients.
 
int m_numLocalCoeffs
Total number of local coefficients.
 
void SetNextLevelLocalToGlobalMap(AssemblyMapSharedPtr pNextLevelLocalToGlobalMap)
 
const Array< OneD, const unsigned int > & GetNumLocalBndCoeffsPerPatch()
Returns the number of local boundary coefficients in each patch.
 
virtual const Array< OneD, const int > & v_GetExtraDirEdges()
 
int GetNumDirFaces() const
 
int GetNumLocalCoeffs() const
Returns the total number of local coefficients.
 
const Array< OneD, const unsigned int > & GetNumLocalIntCoeffsPerPatch()
Returns the number of local interior coefficients in each patch.
 
int GetNumNonDirFaceModes() const
 
virtual void v_Assemble(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global) const
 
Array< OneD, int > m_globalToUniversalBndMap
Integer map of process coeffs to universal space.
 
bool m_signChange
Flag indicating if modes require sign reversal.
 
void Assemble(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global) const
 
virtual std::shared_ptr< AssemblyMap > v_LinearSpaceMap(const ExpList &locexp, GlobalSysSolnType solnType)
Generate a linear space mapping from existing mapping.
 
void AssembleBnd(const NekVector< NekDouble > &loc, NekVector< NekDouble > &global, int offset) const
 
virtual void v_LocalToGlobal(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global, bool useComm) const
 
PreconditionerType GetPreconType() const
 
Array< OneD, int > m_bndCondCoeffsToLocalCoeffsMap
Integer map of bnd cond coeffs to local coefficients.
 
PatchMapSharedPtr m_patchMapFromPrevLevel
Mapping information for previous level in MultiLevel Solver.
 
int m_maxIterations
Maximum iterations for iterative solver.
 
virtual const Array< OneD, const int > & v_GetGlobalToUniversalMapUnique()
 
NekDouble m_iterativeTolerance
Tolerance for iterative solver.
 
NekDouble GetIterativeTolerance() const
 
int m_numGlobalCoeffs
Total number of global coefficients.
 
std::string m_linSysIterSolver
Iterative solver: Conjugate Gradient, GMRES.
 
bool AtLastLevel() const
Returns true if this is the last level in the multi-level static condensation.
 
Array< OneD, int > m_localToGlobalBndMap
Integer map of local coeffs to global Boundary Dofs.
 
void UniversalAssembleBnd(Array< OneD, NekDouble > &pGlobal) const
 
const Array< OneD, const int > & GetLocalToGlobalMap()
 
const Array< OneD, const int > & GetBndCondCoeffsToLocalTraceMap()
Retrieves the local indices corresponding to the boundary expansion modes to global trace.
 
int GetNumNonDirEdgeModes() const
 
virtual const Array< OneD, const int > & v_GetGlobalToUniversalMap()
 
void PatchAssemble(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global) const
 
int m_successiveRHS
sucessive RHS for iterative solver
 
std::shared_ptr< AssemblyMap > LinearSpaceMap(const ExpList &locexp, GlobalSysSolnType solnType)
 
virtual int v_GetNumNonDirVertexModes() const
 
void CalculateBndSystemBandWidth()
Calculates the bandwidth of the boundary system.
 
void LocalToGlobal(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global, bool useComm=true) const
 
int GetNumNonDirEdges() const
 
void UniversalAbsMaxBnd(Array< OneD, NekDouble > &bndvals)
 
Array< OneD, unsigned int > m_numLocalBndCoeffsPerPatch
The number of bnd dofs per patch.
 
virtual const Array< OneD, const int > & v_GetLocalToGlobalMap()
 
const Array< OneD, const int > & GetGlobalToUniversalMap()
 
int GetNumNonDirFaces() const
 
std::string GetLinSysIterSolver() const
 
virtual int v_GetNumNonDirEdgeModes() const
 
virtual int v_GetNumDirFaces() const
 
LibUtilities::SessionReaderSharedPtr m_session
Session object.
 
virtual const Array< OneD, NekDouble > & v_GetLocalToGlobalSign() const
 
int GetNumGlobalDirBndCoeffs() const
Returns the number of global Dirichlet boundary coefficients.
 
const Array< OneD, NekDouble > & GetBndCondCoeffsToLocalCoeffsSign()
Returns the modal sign associated with a given boundary expansion mode.
 
int m_numLocalBndCoeffs
Number of local boundary coefficients.
 
void LocalToLocalBnd(const Array< OneD, const NekDouble > &local, Array< OneD, NekDouble > &locbnd) const
 
int GetLowestStaticCondLevel() const
 
const Array< OneD, const int > & GetBndCondCoeffsToLocalCoeffsMap()
Retrieves the local indices corresponding to the boundary expansion modes.
 
void PrintStats(std::ostream &out, std::string variable, bool printHeader=true) const
 
AssemblyMapSharedPtr m_nextLevelLocalToGlobalMap
Map from the patches of the previous level to the patches of the current level.
 
const Array< OneD, const int > & GetLocalToGlobalBndMap()
Retrieve the global indices of the local boundary modes.
 
int m_staticCondLevel
The level of recursion in the case of multi-level static condensation.
 
int GetSuccessiveRHS() const
 
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
 
int m_bndSystemBandWidth
The bandwith of the global bnd system.
 
Array< OneD, int > m_localToLocalIntMap
Integer map of local boundary coeffs to local interior system numbering.
 
const Array< OneD, const int > & GetGlobalToUniversalBndMapUnique()
 
void GlobalToLocal(const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc) const
 
GlobalSysSolnType GetGlobalSysSolnType() const
Returns the method of solving global systems.
 
int GetMaxIterations() const
 
int m_numLocalDirBndCoeffs
Number of Local Dirichlet Boundary Coefficients.
 
bool GetSingularSystem() const
Retrieves if the system is singular (true) or not (false)
 
virtual int v_GetNumNonDirFaceModes() const
 
void PatchGlobalToLocal(const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc) const
 
virtual int v_GetFullSystemBandWidth() const
 
int m_numGlobalDirBndCoeffs
Number of Global Dirichlet Boundary Coefficients.
 
LibUtilities::CommSharedPtr GetComm()
Retrieves the communicator.
 
Array< OneD, unsigned int > m_numLocalIntCoeffsPerPatch
The number of int dofs per patch.
 
const AssemblyMapSharedPtr GetNextLevelLocalToGlobalMap() const
Returns the local to global mapping for the next level in the multi-level static condensation.
 
int GetBndSystemBandWidth() const
Returns the bandwidth of the boundary system.
 
virtual void v_UniversalAssemble(Array< OneD, NekDouble > &pGlobal) const
 
int GetStaticCondLevel() const
Returns the level of static condensation for this map.
 
void GlobalToLocalBndWithoutSign(const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc)
 
int GetNumNonDirVertexModes() const
 
bool m_systemSingular
Flag indicating if the system is singular or not.
 
size_t GetHash() const
Retrieves the hash of this map.
 
virtual ~AssemblyMap()
Destructor.
 
Gs::gs_data * m_dirBndGsh
gs gather communication to impose Dirhichlet BCs.
 
virtual void v_GlobalToLocal(const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &loc) const
 
const Array< OneD, NekDouble > & GetLocalToGlobalSign() const
 
int GetNumLocalDirBndCoeffs() const
Returns the number of local Dirichlet boundary coefficients.
 
int GetNumDirEdges() const
 
size_t m_hash
Hash for map.
 
Array< OneD, const NekDouble > GetLocalToGlobalBndSign() const
Retrieve the sign change for all local boundary modes.
 
void LocalBndToLocal(const Array< OneD, const NekDouble > &locbnd, Array< OneD, NekDouble > &local) const
 
AssemblyMap()
Default constructor.
 
Array< OneD, NekDouble > m_bndCondCoeffsToLocalCoeffsSign
Integer map of sign of bnd cond coeffs to local coefficients.
 
virtual int v_GetNumNonDirEdges() const
 
virtual int v_GetNumDirEdges() const
 
const PatchMapSharedPtr & GetPatchMapFromPrevLevel(void) const
Returns the patch map from the previous level of the multi-level static condensation.
 
LibUtilities::CommSharedPtr m_comm
Communicator.
 
int GetNumGlobalBndCoeffs() const
Returns the total number of global boundary coefficients.
 
Array< OneD, int > m_localToLocalBndMap
Integer map of local boundary coeffs to local boundary system numbering.
 
Array< OneD, int > m_globalToUniversalBndMapUnique
Integer map of unique process coeffs to universal space (signed)
 
int GetFullSystemBandWidth() const
 
const Array< OneD, const int > & GetGlobalToUniversalBndMap()
 
const Array< OneD, const int > & GetBndCondIDToGlobalTraceID()
 
void LocalBndToGlobal(const Array< OneD, const NekDouble > &loc, Array< OneD, NekDouble > &global, int offset, bool UseComm=true) const
 
void UniversalAssemble(Array< OneD, NekDouble > &pGlobal) const
 
int m_numPatches
The number of patches (~elements) in the current level.
 
void LocalToLocalInt(const Array< OneD, const NekDouble > &local, Array< OneD, NekDouble > &locint) const
 
Array< OneD, int > m_bndCondIDToGlobalTraceID
Integer map of bnd cond trace number to global trace number.
 
virtual int v_GetNumNonDirFaces() const
 
bool GetSignChange()
Returns true if using a modal expansion requiring a change of sign of some modes.
 
Array< OneD, int > m_bndCondCoeffsToLocalTraceMap
Integer map of bnd cond coeff to local trace coeff.
 
void LocalIntToLocal(const Array< OneD, const NekDouble > &locbnd, Array< OneD, NekDouble > &local) const
 
void GlobalToLocalBnd(const NekVector< NekDouble > &global, NekVector< NekDouble > &loc, int offset) const
 
int GetNumLocalBndCoeffs() const
Returns the total number of local boundary coefficients.
 
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
 
Base class for all multi-elemental spectral/hp expansions.
 
std::shared_ptr< SessionReader > SessionReaderSharedPtr
 
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
 
static AssemblyMapSharedPtr NullAssemblyMapSharedPtr
 
std::shared_ptr< BottomUpSubStructuredGraph > BottomUpSubStructuredGraphSharedPtr
 
std::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
 
std::shared_ptr< PatchMap > PatchMapSharedPtr
 
The above copyright notice and this permission notice shall be included.