Go to the documentation of this file.
51 return wordHashSet(*fileExtensionConstructorTablePtr_);
57 return wordHashSet(*writefileExtensionMemberFunctionTablePtr_);
92 return canReadType(ext, verbose);
98 void Foam::edgeMesh::calcPointEdges()
const
103 <<
"pointEdges already calculated."
108 auto& pointEdges = *pointEdgesPtr_;
120 pointEdgesPtr_.reset(
nullptr);
131 points_.transfer(
mesh.points_);
132 edges_.transfer(
mesh.edges_);
133 pointEdgesPtr_ = std::move(
mesh.pointEdgesPtr_);
139 edgeRegion.
setSize(edges_.size());
142 label startEdgeI = 0;
143 label currentRegion = 0;
147 while (startEdgeI < edges_.size() && edgeRegion[startEdgeI] != -1)
152 if (startEdgeI == edges_.size())
160 edgeRegion[startEdgeI] = currentRegion;
163 while (edgesToVisit.size())
171 label edgeI = edgesToVisit[i];
174 const edge&
e = edges_[edgeI];
178 const labelList& pEdges = pointEdges()[
e[fp]];
182 label nbrEdgeI = pEdges[pEdgeI];
184 if (edgeRegion[nbrEdgeI] == -1)
186 edgeRegion[nbrEdgeI] = currentRegion;
187 newEdgesToVisit.
append(nbrEdgeI);
193 edgesToVisit.
transfer(newEdgesToVisit);
199 return currentRegion;
206 if (scaleFactor > 0 && scaleFactor != 1.0)
208 points_ *= scaleFactor;
230 pointEdgesPtr_.reset(
nullptr);
232 points_.transfer(newPoints);
236 edge&
e = edges_[edgeI];
238 e[0] = pointMap[
e[0]];
239 e[1] = pointMap[
e[1]];
250 bitSet pointIsUsed(points_.size());
252 label nUniqEdges = 0;
253 label nUniqPoints = 0;
256 const edge&
e = edges_[edgeI];
260 if (
e[0] !=
e[1] && uniqEdges.insert(
e))
262 if (nUniqEdges != edgeI)
264 edges_[nUniqEdges] =
e;
266 edges_[nUniqEdges].sort();
269 if (pointIsUsed.set(
e[0]))
273 if (pointIsUsed.set(
e[1]))
282 Info<<
"Merging duplicate edges: "
283 << (edges_.size() - nUniqEdges)
284 <<
" edges will be deleted, "
285 << (points_.size() - nUniqPoints)
286 <<
" unused points will be removed." <<
endl;
289 if (nUniqEdges < edges_.size())
291 pointEdgesPtr_.reset(
nullptr);
292 edges_.setSize(nUniqEdges);
295 if (nUniqPoints < points_.size())
297 pointEdgesPtr_.reset(
nullptr);
307 if (pointIsUsed.test(pointi))
309 pointMap[pointi] = newId;
314 points_[newId] = points_[pointi];
319 points_.setSize(newId);
324 edge&
e = edges_[edgeI];
326 e[0] = pointMap[
e[0]];
327 e[1] = pointMap[
e[1]];
int debug
Static debugging option.
word lessExt() const
Return word without extension (part before last .)
virtual void scalePoints(const scalar scaleFactor)
Scale points. A non-positive factor is ignored.
label regions(labelList &edgeRegion) const
Find connected regions. Set region number per edge.
A class for handling words, derived from Foam::string.
static bool canReadType(const word &fileType, bool verbose=false)
Can we read this file format?
A class for handling file names.
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
const Foam::Enum< fileTag > fileExtension
File extension (without ".") for some vtk XML file content types.
defineRunTimeSelectionTable(reactionRateFlameArea, dictionary)
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
void append(const T &val)
Append an element at the end of the list.
Ostream & endl(Ostream &os)
Add newline and flush stream.
word ext() const
Return file name extension (part after last .)
#define forAll(list, i)
Loop across all elements in list.
void invertManyToMany(const label len, const UList< InputIntListType > &input, List< OutputIntListType > &output)
Invert many-to-many.
static wordHashSet writeTypes()
Summary of supported write file types.
messageStream Info
Information stream (uses stdout - output is on the master only)
word name(const complex &c)
Return string representation of complex.
static wordHashSet readTypes()
Summary of supported read file types.
void transfer(List< T > &list)
Macros for easy insertion into member function selection tables.
defineMemberFunctionSelectionTable(edgeMesh, write, fileExtension)
Macros for easy insertion into run-time selection tables.
errorManip< error > abort(error &err)
label mergePoints(const PointList &points, const scalar mergeTol, const bool verbose, labelList &pointMap, typename PointList::const_reference origin=PointList::value_type::zero)
Sorts and merges points. All points closer than/equal mergeTol get merged.
virtual void mergeEdges()
Merge duplicate edges and eliminate unused points.
static bool canRead(const fileName &name, bool verbose=false)
Can we read this file format?
virtual void clear()
Clear all storage.
static bool canWriteType(const word &fileType, bool verbose=false)
Can we write this file format type?
List< labelList > labelListList
A List of labelList.
virtual void mergePoints(const scalar mergeDist)
Geometric merge points (points within mergeDist) prior to.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
const dimensionedScalar e
Elementary charge.
void write(vtk::formatter &fmt, const Type &val, const label n=1)
Component-wise write of a value (N times)
HashSet< word > wordHashSet
A HashSet with word keys.
static const Vector< Cmpt > zero
Various functions to operate on Lists.
void setSize(const label newSize)
Alias for resize(const label)
defineTypeNameAndDebug(combustionModel, 0)
Mesh data needed to do the Finite Area discretisation.
void transfer(edgeMesh &mesh)
Transfer the contents of the argument and annul the argument.