37 #include <boost/core/ignore_unused.hpp>
66 CoupledAssemblyMap::CoupledAssemblyMap(
74 boost::ignore_unused(graph, boundaryConditions);
76 int nVel = fields[0]->GetCoordim(0);
82 "Multi-level static condensation not supported.");
127 = *(fields[0]->GetExp());
129 map<int, int> newGlobalIds;
130 int i, j, n, cnt1, cnt2;
138 for (i = 0; i < locExpVector.size(); ++i)
140 const int nBndCoeffs = locExpVector[i]->NumBndryCoeffs();
142 for (n = 0; n < nVel; ++n)
145 for (j = 0; j < nBndCoeffs; ++j, ++cnt1)
147 const int l2g = cgMap->GetLocalToGlobalBndMap()[cnt2+j];
153 cgMap->GetLocalToGlobalBndSign()[cnt2+j];
159 if (newGlobalIds.count(l2g))
161 ASSERTL1(newGlobalIds[l2g] == l2gnew,
162 "Consistency error");
164 newGlobalIds[l2g] = l2gnew;
185 for (i = 0; i < locExpVector.size(); ++i)
187 const int nCoeffs = locExpVector[i]->GetNcoeffs();
188 const int nBndCoeffs = locExpVector[i]->NumBndryCoeffs();
190 for (n = 0; n < nVel; ++n)
192 for (j = 0; j < nBndCoeffs; ++j, ++cnt1, ++cnt2)
207 for (n = 0; n < nVel; ++n)
209 for (j = 0; j < nCoeffs - nBndCoeffs; ++j, ++cnt1)
232 for (i = 0; i < cgMap->GetNumGlobalBndCoeffs(); ++i)
234 for (n = 0; n < nVel; ++n)
237 cgMap->GetGlobalToUniversalBndMap()[i]*nVel + n;
239 cgMap->GetGlobalToUniversalBndMap()[i]*nVel + n;
#define ASSERTL0(condition, msg)
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Constructs mappings for the C0 scalar continuous Galerkin formulation.
Array< OneD, int > m_globalToUniversalMapUnique
Integer map of unique process coeffs to universal space (signed)
Array< OneD, int > m_globalToUniversalMap
Integer map of process coeffs to universal space.
Array< OneD, NekDouble > m_localToGlobalSign
Integer sign of local coeffs to global space.
Array< OneD, int > m_localToGlobalMap
Integer map of local coeffs to global space.
int m_lowestStaticCondLevel
Lowest static condensation level.
GlobalSysSolnType m_solnType
The solution type of the global system.
int m_numLocalCoeffs
Total number of local coefficients.
Array< OneD, int > m_globalToUniversalBndMap
Integer map of process coeffs to universal space.
bool m_signChange
Flag indicating if modes require sign reversal.
int m_numGlobalCoeffs
Total number of global coefficients.
Array< OneD, int > m_localToGlobalBndMap
Integer map of local coeffs to global Boundary Dofs.
Array< OneD, unsigned int > m_numLocalBndCoeffsPerPatch
The number of bnd dofs per patch.
int m_numLocalBndCoeffs
Number of local boundary coefficients.
int m_staticCondLevel
The level of recursion in the case of multi-level static condensation.
Array< OneD, NekDouble > m_localToGlobalBndSign
Integer sign of local boundary coeffs to global space.
Array< OneD, int > m_localToLocalIntMap
Integer map of local boundary coeffs to local interior system numbering.
int m_numLocalDirBndCoeffs
Number of Local Dirichlet Boundary Coefficients.
int m_numGlobalDirBndCoeffs
Number of Global Dirichlet Boundary Coefficients.
Array< OneD, unsigned int > m_numLocalIntCoeffsPerPatch
The number of int dofs per patch.
bool m_systemSingular
Flag indicating if the system is singular or not.
size_t m_hash
Hash for map.
LibUtilities::CommSharedPtr m_comm
Communicator.
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 m_numPatches
The number of patches (~elements) in the current level.
int m_numGlobalBndCoeffs
Total number of global boundary coefficients.
static gs_data * Init(const Nektar::Array< OneD, long > pId, const LibUtilities::CommSharedPtr &pComm, bool verbose=true)
Initialise Gather-Scatter map.
static void Unique(const Nektar::Array< OneD, long > pId, const LibUtilities::CommSharedPtr &pComm)
Updates pId to negate all-but-one references to each universal ID.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
std::vector< ExpansionSharedPtr > ExpansionVector
@ eIterativeMultiLevelStaticCond
@ eDirectMultiLevelStaticCond
@ eXxtMultiLevelStaticCond
std::shared_ptr< AssemblyMapCG > AssemblyMapCGSharedPtr
std::shared_ptr< BoundaryConditionBase > BoundaryConditionShPtr
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
The above copyright notice and this permission notice shall be included.
std::size_t hash_range(Iter first, Iter last)
static Array< OneD, NekDouble > NullNekDouble1DArray
void Zero(int n, T *x, const int incx)
Zero vector.