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 > VSMALL && !
equal(scaleFactor, 1))
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 (stdout output on master, null elsewhere)
void setSize(const label n)
Alias for resize()
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, Hash< word > > wordHashSet
A HashSet of words, uses string hasher.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
static const Vector< scalar > zero
Various functions to operate on Lists.
bool equal(const T &s1, const T &s2)
Compare two values for equality.
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.