Go to the documentation of this file.
49 return wordHashSet(*fileExtensionConstructorTablePtr_);
55 return wordHashSet(*writefileExtensionMemberFunctionTablePtr_);
92 return canReadType(ext, verbose);
98 void Foam::edgeMesh::calcPointEdges()
const
100 if (pointEdgesPtr_.valid())
119 pointEdgesPtr_.clear();
125 points_.transfer(
mesh.points_);
126 edges_.transfer(
mesh.edges_);
127 pointEdgesPtr_ = std::move(
mesh.pointEdgesPtr_);
133 edgeRegion.
setSize(edges_.size());
136 label startEdgeI = 0;
137 label currentRegion = 0;
141 while (startEdgeI < edges_.size() && edgeRegion[startEdgeI] != -1)
146 if (startEdgeI == edges_.size())
154 edgeRegion[startEdgeI] = currentRegion;
157 while (edgesToVisit.size())
165 label edgeI = edgesToVisit[i];
168 const edge&
e = edges_[edgeI];
172 const labelList& pEdges = pointEdges()[
e[fp]];
176 label nbrEdgeI = pEdges[pEdgeI];
178 if (edgeRegion[nbrEdgeI] == -1)
180 edgeRegion[nbrEdgeI] = currentRegion;
181 newEdgesToVisit.
append(nbrEdgeI);
187 edgesToVisit.
transfer(newEdgesToVisit);
192 return currentRegion;
199 if (scaleFactor > 0 && scaleFactor != 1.0)
201 points_ *= scaleFactor;
223 pointEdgesPtr_.clear();
225 points_.transfer(newPoints);
229 edge&
e = edges_[edgeI];
231 e[0] = pointMap[
e[0]];
232 e[1] = pointMap[
e[1]];
243 bitSet pointIsUsed(points_.size());
245 label nUniqEdges = 0;
246 label nUniqPoints = 0;
249 const edge&
e = edges_[edgeI];
253 if (
e[0] !=
e[1] && uniqEdges.insert(
e))
255 if (nUniqEdges != edgeI)
257 edges_[nUniqEdges] =
e;
259 edges_[nUniqEdges].sort();
262 if (pointIsUsed.set(
e[0]))
266 if (pointIsUsed.set(
e[1]))
275 Info<<
"Merging duplicate edges: "
276 << (edges_.size() - nUniqEdges)
277 <<
" edges will be deleted, "
278 << (points_.size() - nUniqPoints)
279 <<
" unused points will be removed." <<
endl;
282 if (nUniqEdges < edges_.size())
284 pointEdgesPtr_.clear();
285 edges_.setSize(nUniqEdges);
288 if (nUniqPoints < points_.size())
290 pointEdgesPtr_.clear();
300 if (pointIsUsed.test(pointi))
302 pointMap[pointi] = newId;
307 points_[newId] = points_[pointi];
312 points_.setSize(newId);
317 edge&
e = edges_[edgeI];
319 e[0] = pointMap[
e[0]];
320 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.
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)
static bool canReadType(const word &ext, bool verbose=false)
Can we read this file format?
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.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
static wordHashSet writeTypes()
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()
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.
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< scalar > zero
static bool canWriteType(const word &ext, bool verbose=false)
Can we write this file format type?
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.