90 return wordHashSet(*fileExtensionConstructorTablePtr_);
96 return wordHashSet(*writefileExtensionMemberFunctionTablePtr_);
109 return edgeMeshFormatsCore::checkSupport
125 return edgeMeshFormatsCore::checkSupport
144 ext =
name.lessExt().ext();
146 return canReadType(ext, verbose);
158 const labelList& ptEds(pointEdges()[ptI]);
174 if (edStat == EXTERNAL)
178 else if (edStat == INTERNAL)
184 if (nExternal == nPtEds)
188 else if (nInternal == nPtEds)
213 else if (nEdNorms == 2)
215 const vector& n0(norms[edNorms[0]]);
216 const vector& n1(norms[edNorms[1]]);
218 if ((n0 & n1) > cosNormalAngleTol_)
222 else if ((fC0tofC1 & n0) > 0.0)
231 else if (nEdNorms > 2)
256 normalVolumeTypes_(0),
258 normalDirections_(0),
260 featurePointNormals_(0),
261 featurePointEdges_(0),
272 concaveStart_(fem.concaveStart()),
273 mixedStart_(fem.mixedStart()),
274 nonFeatureStart_(fem.nonFeatureStart()),
275 internalStart_(fem.internalStart()),
276 flatStart_(fem.flatStart()),
277 openStart_(fem.openStart()),
278 multipleStart_(fem.multipleStart()),
279 normals_(fem.normals()),
280 normalVolumeTypes_(fem.normalVolumeTypes()),
281 edgeDirections_(fem.edgeDirections()),
282 normalDirections_(fem.normalDirections()),
283 edgeNormals_(fem.edgeNormals()),
284 featurePointNormals_(fem.featurePointNormals()),
285 featurePointEdges_(fem.featurePointEdges()),
286 regionEdges_(fem.regionEdges()),
296 concaveStart_(fem.concaveStart()),
297 mixedStart_(fem.mixedStart()),
298 nonFeatureStart_(fem.nonFeatureStart()),
299 internalStart_(fem.internalStart()),
300 flatStart_(fem.flatStart()),
301 openStart_(fem.openStart()),
302 multipleStart_(fem.multipleStart()),
303 normals_(move(fem.normals())),
304 normalVolumeTypes_(move(fem.normalVolumeTypes())),
305 edgeDirections_(move(fem.edgeDirections())),
306 normalDirections_(move(fem.normalDirections())),
307 edgeNormals_(move(fem.edgeNormals())),
308 featurePointNormals_(move(fem.featurePointNormals())),
309 featurePointEdges_(move(fem.featurePointEdges())),
310 regionEdges_(move(fem.regionEdges())),
329 edgeMesh(move(pointLst), move(edgeLst)),
338 normalVolumeTypes_(0),
340 normalDirections_(0),
342 featurePointNormals_(0),
343 featurePointEdges_(0),
360 nonFeatureStart_(-1),
366 normalVolumeTypes_(0),
368 normalDirections_(0),
370 featurePointNormals_(0),
371 featurePointEdges_(0),
404 label sFEI = featureEdges[i];
407 const labelList& eFaces = edgeFaces[sFEI];
411 label eFI = eFaces[j];
418 surfBaffleRegions[surf[eFI].region()]
441 nonFeatureStart_(-1),
447 normalVolumeTypes_(0),
449 normalDirections_(0),
451 featurePointNormals_(0),
452 featurePointEdges_(0),
474 label nonFeatureStart,
490 concaveStart_(concaveStart),
491 mixedStart_(mixedStart),
492 nonFeatureStart_(nonFeatureStart),
493 internalStart_(internalStart),
494 flatStart_(flatStart),
495 openStart_(openStart),
496 multipleStart_(multipleStart),
498 normalVolumeTypes_(normalVolumeTypes),
499 edgeDirections_(edgeDirections),
500 normalDirections_(normalDirections),
501 edgeNormals_(edgeNormals),
502 featurePointNormals_(featurePointNormals),
503 featurePointEdges_(featurePointEdges),
504 regionEdges_(regionEdges),
526 normalVolumeTypes_(0),
528 normalDirections_(0),
530 featurePointNormals_(0),
531 featurePointEdges_(0),
552 normalVolumeTypes_(0),
554 normalDirections_(0),
556 featurePointNormals_(0),
557 featurePointEdges_(0),
581 return read(unzipName, unzipName.
ext());
606 scalar searchDistSqr,
610 info = pointTree().findNearest
621 scalar searchDistSqr,
625 info = edgeTree().findNearest
667 sliceStarts[0] = externalStart_;
668 sliceStarts[1] = internalStart_;
669 sliceStarts[2] = flatStart_;
670 sliceStarts[3] = openStart_;
671 sliceStarts[4] = multipleStart_;
675 info[i] = edgeTrees[i].findNearest
685 info[i].setIndex(info[i].index() + sliceStarts[i]);
693 scalar searchRadiusSqr,
708 label index = elems[elemI];
709 label ptI = pointTree().shapes().pointLabels()[index];
714 dynPointHit.
append(nearHit);
724 const scalar searchRadiusSqr,
734 sliceStarts[0] = externalStart_;
735 sliceStarts[1] = internalStart_;
736 sliceStarts[2] = flatStart_;
737 sliceStarts[3] = openStart_;
738 sliceStarts[4] = multipleStart_;
746 labelList elems = edgeTrees[i].findSphere
754 label index = elems[elemI];
755 label edgeI = edgeTrees[i].shapes().edgeLabels()[index];
756 const edge&
e = edges()[edgeI];
760 label hitIndex = index + sliceStarts[i];
769 dynEdgeHit.
append(nearHit);
787 hi1 < hitList.
size() - 1;
800 hi2 < hitList.
size();
830 if (pointTree_.empty())
862 if (edgeTree_.empty())
896 if (edgeTreesByType_.size() == 0)
898 edgeTreesByType_.setSize(nEdgeTypes);
908 identityMap(internalStart_ - externalStart_) + externalStart_;
912 identityMap(flatStart_ - internalStart_) + internalStart_;
915 sliceEdges[2] =
identityMap(openStart_ - flatStart_) + flatStart_;
918 sliceEdges[3] =
identityMap(multipleStart_ - openStart_) + openStart_;
922 identityMap(edges().size() - multipleStart_) + multipleStart_;
924 forAll(edgeTreesByType_, i)
947 return edgeTreesByType_;
955 concaveStart_ =
mesh.concaveStart_;
956 mixedStart_ =
mesh.mixedStart_;
957 nonFeatureStart_ =
mesh.nonFeatureStart_;
958 internalStart_ =
mesh.internalStart_;
959 flatStart_ =
mesh.flatStart_;
960 openStart_ =
mesh.openStart_;
961 multipleStart_ =
mesh.multipleStart_;
963 normalVolumeTypes_.transfer(
mesh.normalVolumeTypes_);
964 edgeDirections_.transfer(
mesh.edgeDirections_);
965 normalDirections_.transfer(
mesh.normalDirections_);
966 edgeNormals_.transfer(
mesh.edgeNormals_);
967 featurePointNormals_.transfer(
mesh.featurePointNormals_);
968 featurePointEdges_.transfer(
mesh.featurePointEdges_);
969 regionEdges_.transfer(
mesh.regionEdges_);
970 pointTree_ =
mesh.pointTree_;
971 edgeTree_ =
mesh.edgeTree_;
981 nonFeatureStart_ = 0;
987 normalVolumeTypes_.clear();
988 edgeDirections_.clear();
989 normalDirections_.clear();
990 edgeNormals_.clear();
991 featurePointNormals_.clear();
992 featurePointEdges_.clear();
993 regionEdges_.clear();
996 edgeTreesByType_.clear();
1010 for (
label i = 0; i < concaveStart(); i++)
1021 for (
label i = concaveStart(); i < mixedStart(); i++)
1032 for (
label i = mixedStart(); i < nonFeatureStart(); i++)
1054 newPoints.
rmap(fem.
points(), reverseFemPointMap);
1061 labelList reverseEdgeMap(edges().size());
1066 for (
label i = 0; i < internalStart(); i++)
1068 reverseEdgeMap[i] = newEdgeI++;
1072 reverseFemEdgeMap[i] = newEdgeI++;
1076 label newInternalStart = newEdgeI;
1077 for (
label i = internalStart(); i < flatStart(); i++)
1079 reverseEdgeMap[i] = newEdgeI++;
1083 reverseFemEdgeMap[i] = newEdgeI++;
1087 label newFlatStart = newEdgeI;
1088 for (
label i = flatStart(); i < openStart(); i++)
1090 reverseEdgeMap[i] = newEdgeI++;
1094 reverseFemEdgeMap[i] = newEdgeI++;
1098 label newOpenStart = newEdgeI;
1099 for (
label i = openStart(); i < multipleStart(); i++)
1101 reverseEdgeMap[i] = newEdgeI++;
1105 reverseFemEdgeMap[i] = newEdgeI++;
1109 label newMultipleStart = newEdgeI;
1110 for (
label i = multipleStart(); i < edges().size(); i++)
1112 reverseEdgeMap[i] = newEdgeI++;
1116 reverseFemEdgeMap[i] = newEdgeI++;
1122 const edge&
e = edges()[i];
1123 newEdges[reverseEdgeMap[i]] =
edge
1125 reversePointMap[
e[0]],
1126 reversePointMap[
e[1]]
1132 newEdges[reverseFemEdgeMap[i]] =
edge
1134 reverseFemPointMap[
e[0]],
1135 reverseFemPointMap[
e[1]]
1140 newEdgeDirections.
rmap(edgeDirections(), reverseEdgeMap);
1151 newNormals.
append(normals());
1161 forAll(reverseFemEdgeMap, i)
1163 label mapI = reverseFemEdgeMap[i];
1167 en[j] += normals().
size();
1175 featurePointNormals().size()
1182 newFeaturePointNormals,
1184 ) = featurePointNormals();
1187 newFeaturePointNormals,
1192 label mapI = reverseFemPointMap[i];
1193 labelList& fn = newFeaturePointNormals[mapI];
1196 fn[j] += normals().
size();
1204 regionEdges().size()
1209 newRegionEdges.
append(reverseEdgeMap[regionEdges()[i]]);
1221 concaveStart_ = newConcaveStart;
1222 mixedStart_ = newMixedStart;
1223 nonFeatureStart_ = newNonFeatureStart;
1226 reset(move(newPoints), move(newEdges));
1229 internalStart_ = newInternalStart;
1230 flatStart_ = newFlatStart;
1231 openStart_ = newOpenStart;
1232 multipleStart_ = newMultipleStart;
1234 edgeDirections_.transfer(newEdgeDirections);
1236 normals_.transfer(newNormals);
1237 edgeNormals_.transfer(newEdgeNormals);
1238 featurePointNormals_.transfer(newFeaturePointNormals);
1240 regionEdges_.transfer(newRegionEdges);
1244 edgeTreesByType_.clear();
1260 for (
label i = concaveStart(); i < mixedStart(); i++)
1266 for (
label i = 0; i < concaveStart(); i++)
1282 for (
label i = internalStart(); i < flatStart(); i++)
1284 reverseEdgeMap[i] = newEdgeI++;
1287 label newInternalStart = newEdgeI;
1288 for (
label i = 0; i < internalStart(); i++)
1290 reverseEdgeMap[i] = newEdgeI++;
1300 const edge&
e = edges()[i];
1301 newEdges[reverseEdgeMap[i]] =
edge
1303 reversePointMap[
e[0]],
1304 reversePointMap[
e[1]]
1312 pointField newEdgeDirections(edges().size());
1313 newEdgeDirections.
rmap(-1.0*edgeDirections(), reverseEdgeMap);
1320 labelListList newFeaturePointNormals(featurePointNormals().size());
1325 newFeaturePointNormals,
1327 ) = featurePointNormals();
1329 labelList newRegionEdges(regionEdges().size());
1332 newRegionEdges[i] = reverseEdgeMap[regionEdges()[i]];
1336 concaveStart_ = newConcaveStart;
1339 reset(move(newPoints), move(newEdges));
1342 internalStart_ = newInternalStart;
1344 edgeDirections_.transfer(newEdgeDirections);
1345 normals_.transfer(newNormals);
1346 edgeNormals_.transfer(newEdgeNormals);
1347 featurePointNormals_.transfer(newFeaturePointNormals);
1348 regionEdges_.transfer(newRegionEdges);
1352 edgeTreesByType_.clear();
1362 Info<<
nl <<
"Writing extendedEdgeMesh components to " << prefix
1367 if (!verbose)
return;
1369 OBJstream convexFtPtStr(prefix +
"_convexFeaturePts.obj");
1370 Info<<
"Writing convex feature points to " << convexFtPtStr.
name() <<
endl;
1372 for(
label i = 0; i < concaveStart_; i++)
1377 OBJstream concaveFtPtStr(prefix +
"_concaveFeaturePts.obj");
1378 Info<<
"Writing concave feature points to "
1381 for(
label i = concaveStart_; i < mixedStart_; i++)
1386 OBJstream mixedFtPtStr(prefix +
"_mixedFeaturePts.obj");
1387 Info<<
"Writing mixed feature points to " << mixedFtPtStr.
name() <<
endl;
1389 for(
label i = mixedStart_; i < nonFeatureStart_; i++)
1394 OBJstream mixedFtPtStructureStr(prefix +
"_mixedFeaturePtsStructure.obj");
1395 Info<<
"Writing mixed feature point structure to "
1396 << mixedFtPtStructureStr.
name() <<
endl;
1398 for(
label i = mixedStart_; i < nonFeatureStart_; i++)
1400 const labelList& ptEds = pointEdges()[i];
1404 const edge&
e = edges()[ptEds[j]];
1405 mixedFtPtStructureStr.
write
1413 OBJstream externalStr(prefix +
"_externalEdges.obj");
1414 Info<<
"Writing external edges to " << externalStr.
name() <<
endl;
1416 for (
label i = externalStart_; i < internalStart_; i++)
1418 const edge&
e = edges()[i];
1422 OBJstream internalStr(prefix +
"_internalEdges.obj");
1423 Info<<
"Writing internal edges to " << internalStr.
name() <<
endl;
1425 for (
label i = internalStart_; i < flatStart_; i++)
1427 const edge&
e = edges()[i];
1431 OBJstream flatStr(prefix +
"_flatEdges.obj");
1432 Info<<
"Writing flat edges to " << flatStr.
name() <<
endl;
1434 for (
label i = flatStart_; i < openStart_; i++)
1436 const edge&
e = edges()[i];
1440 OBJstream openStr(prefix +
"_openEdges.obj");
1441 Info<<
"Writing open edges to " << openStr.
name() <<
endl;
1443 for (
label i = openStart_; i < multipleStart_; i++)
1445 const edge&
e = edges()[i];
1449 OBJstream multipleStr(prefix +
"_multipleEdges.obj");
1450 Info<<
"Writing multiple edges to " << multipleStr.
name() <<
endl;
1452 for (
label i = multipleStart_; i < edges().size(); i++)
1454 const edge&
e = edges()[i];
1458 OBJstream regionStr(prefix +
"_regionEdges.obj");
1459 Info<<
"Writing region edges to " << regionStr.
name() <<
endl;
1463 const edge&
e = edges()[regionEdges_[i]];
1467 OBJstream edgeDirsStr(prefix +
"_edgeDirections.obj");
1468 Info<<
"Writing edge directions to " << edgeDirsStr.
name() <<
endl;
1470 forAll(edgeDirections_, i)
1472 const vector& eVec = edgeDirections_[i];
1473 const edge&
e = edges()[i];
1487 os <<
indent <<
"point classification :" <<
nl;
1489 os <<
indent <<
"convex feature points : "
1490 <<
setw(8) << concaveStart_-convexStart_
1492 os <<
indent <<
"concave feature points : "
1493 <<
setw(8) << mixedStart_-concaveStart_
1495 os <<
indent <<
"mixed feature points : "
1496 <<
setw(8) << nonFeatureStart_-mixedStart_
1498 os <<
indent <<
"other (non-feature) points : "
1503 os <<
indent <<
"edge classification :" <<
nl;
1505 os <<
indent <<
"external (convex angle) edges : "
1506 <<
setw(8) << internalStart_-externalStart_
1508 os <<
indent <<
"internal (concave angle) edges : "
1509 <<
setw(8) << flatStart_-internalStart_
1511 os <<
indent <<
"flat region edges : "
1512 <<
setw(8) << openStart_-flatStart_
1514 os <<
indent <<
"open edges : "
1515 <<
setw(8) << multipleStart_-openStart_
1517 os <<
indent <<
"multiply connected edges : "
1518 <<
setw(8) << edges().size()-multipleStart_
1538 is.check(
"operator>>(Istream&, sideVolumeType&)");
1550 os << static_cast<label>(vt);
1559 os <<
"// points" <<
nl
1563 <<
"// concaveStart mixedStart nonFeatureStart" <<
nl
1567 <<
"// internalStart flatStart openStart multipleStart" <<
nl
1572 <<
"// normals" <<
nl
1574 <<
"// normal volume types" <<
nl
1576 <<
"// normalDirections" <<
nl
1578 <<
"// edgeNormals" <<
nl
1580 <<
"// featurePointNormals" <<
nl
1582 <<
"// featurePointEdges" <<
nl
1584 <<
"// regionEdges" <<
nl
1589 os.
check(
"Ostream& operator<<(Ostream&, const extendedEdgeMesh&)");
1615 is.
check(
"Istream& operator>>(Istream&, extendedEdgeMesh&)");
Istream and Ostream manipulators taking arguments.
#define forAll(list, i)
Loop across all elements in list.
DynamicField< T, SizeInc, SizeMult, SizeDiv > & append(const T &)
Append an element at the end of the list.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
DynamicList< T, SizeInc, SizeMult, SizeDiv > & append(const T &)
Append an element at the end of the list.
void rmap(const UList< Type > &mapF, const labelUList &mapAddressing)
1 to 1 reverse-map from the given field
A HashTable with keys but without contents.
void transfer(HashTable< T, Key, Hash > &)
Transfer the contents of the argument table into this table.
virtual bool check(const char *operation) const
Check IOstream status for given operation.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
void transfer(List< T > &)
Transfer the contents of the argument List into this list.
void size(const label)
Override size to be inconsistent with allocated storage.
void setSize(const label)
Reset size of List.
Initialise the NamedEnum HashTable from the static list of names.
OFstream which keeps track of vertices.
virtual Ostream & write(const char)
Write character.
const fileName & name() const
Return the name of the stream.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
const Point & rawPoint() const
Return point with no checking.
bool hit() const
Is there a hit.
This class describes the interaction of (usually) a face and a point. It carries the info of a succes...
const Point & hitPoint() const
Return hit point.
label index() const
Return index.
bool hit() const
Is there a hit.
A list of faces which address into the list of points.
const labelListList & edgeFaces() const
Return edge-face addressing.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
A List obtained as a section of another List.
A List with indirect addressing.
label size() const
Return the number of elements in the UPtrList.
Points connected by edges.
const edgeList & edges() const
Return edges.
void transfer(edgeMesh &)
Transfer the contents of the argument and annul the argument.
virtual void writeStats(Ostream &) const
const pointField & points() const
Return points.
virtual void clear()
Clear all storage.
static void write(const fileName &, const edgeMesh &)
Write to file.
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
bool connected(const edge &a) const
Return true if connected to given edge.
Description of feature edges and points.
void allNearestFeatureEdges(const point &sample, const scalar searchRadiusSqr, pointIndexHitList &info) const
Find all the feature edges within searchDistSqr of sample.
void writeObj(const fileName &prefix, const bool verbose=true) const
Write all components of the extendedEdgeMesh as obj files.
labelList regionEdges_
Feature edges which are on the boundary between regions.
extendedEdgeMesh()
Construct null.
static const Foam::NamedEnum< sideVolumeType, 4 > sideVolumeTypeNames_
labelListList edgeNormals_
Indices of the normals that are adjacent to the feature edges.
static label nEdgeTypes
Number of possible feature edge types (i.e. number of slices)
void sortPointsAndEdges(const Patch &, const labelList &featureEdges, const labelList ®ionFeatureEdges, const labelList &feaurePoints)
const indexedOctree< treeDataEdge > & edgeTree() const
Demand driven construction of octree for boundary edges.
label openStart() const
Return the index of the start of the open feature edges.
label nonFeatureStart() const
Return the index of the start of the non-feature points.
const vectorField & edgeDirections() const
Return the edgeDirection vectors.
static wordHashSet writeTypes()
pointStatus classifyFeaturePoint(label ptI) const
Classify the type of feature point. Requires valid stored member.
static const Foam::NamedEnum< edgeStatus, 6 > edgeStatusNames_
void nearestFeaturePoint(const point &sample, scalar searchDistSqr, pointIndexHit &info) const
Find nearest surface edge for the sample point.
label flatStart() const
Return the index of the start of the flat feature edges.
label nonFeatureStart_
Index of the start of the non-feature points.
const labelList & regionEdges() const
Return the feature edges which are on the boundary between.
const labelListList & edgeNormals() const
Return the indices of the normals that are adjacent to the.
label openStart_
Index of the start of the open feature edges.
labelListList featurePointEdges_
Indices of feature edges attached to feature points. The edges are.
label flatStart_
Index of the start of the flat feature edges.
static const Foam::NamedEnum< pointStatus, 4 > pointStatusNames_
static label nPointTypes
Number of possible point types (i.e. number of slices)
List< sideVolumeType > normalVolumeTypes_
Type per normal: which side of normal to mesh.
bool read(const fileName &, const word &ext)
Read from file. Chooses reader based on explicit extension.
static label externalStart_
Index of the start of the external feature edges - static as 0.
static edgeStatus classifyEdge(const List< vector > &norms, const labelList &edNorms, const vector &fC0tofC1)
Classify the type of feature edge. Requires face centre 0 to face.
scalar minDisconnectedDist(const pointIndexHitList &hitList) const
Return the minimum distance between disconnected edges.
static bool canWriteType(const word &ext, const bool verbose=false)
Can we write this file format type?
label internalStart_
Index of the start of the internal feature edges.
const vectorField & normals() const
Return the normals of the surfaces adjacent to the feature edges.
label multipleStart() const
Return the index of the start of the multiply-connected feature.
sideVolumeType
Normals point to the outside.
vectorField normals_
Normals of the features, to be referred to by index by both feature.
static label convexStart_
Index of the start of the convex feature points - static as 0.
label internalStart() const
Return the index of the start of the internal feature edges.
static bool canRead(const fileName &, const bool verbose=false)
Can we read this file format?
void allNearestFeaturePoints(const point &sample, scalar searchRadiusSqr, pointIndexHitList &info) const
Find all the feature points within searchDistSqr of sample.
static bool canReadType(const word &ext, const bool verbose=false)
Can we read this file format?
void nearestFeatureEdge(const point &sample, scalar searchDistSqr, pointIndexHit &info) const
Find nearest surface edge for the sample point.
virtual void writeStats(Ostream &os) const
Dump some information.
virtual void clear()
Clear all storage.
label mixedStart_
Index of the start of the mixed type feature points.
void flipNormals()
Flip normals. All concave become convex, all internal external.
labelListList normalDirections_
Starting directions for the edges.
~extendedEdgeMesh()
Destructor.
void transfer(extendedEdgeMesh &)
Transfer the contents of the argument and annul the argument.
const indexedOctree< treeDataPoint > & pointTree() const
Demand driven construction of octree for feature points.
const labelListList & featurePointNormals() const
Return the indices of the normals that are adjacent to the.
void add(const extendedEdgeMesh &)
Add extendedEdgeMesh. No filtering of duplicates.
label mixedStart() const
Return the index of the start of the mixed type feature points.
label multipleStart_
Index of the start of the multiply-connected feature edges.
void nearestFeatureEdgeByType(const point &sample, const scalarField &searchDistSqr, pointIndexHitList &info) const
Find the nearest point on each type of feature edge.
label concaveStart() const
Return the index of the start of the concave feature points.
labelListList featurePointNormals_
Indices of the normals that are adjacent to the feature points.
static scalar cosNormalAngleTol_
Angular closeness tolerance for treating normals as the same.
const PtrList< indexedOctree< treeDataEdge > > & edgeTreesByType() const
Demand driven construction of octree for boundary edges by type.
static wordHashSet readTypes()
label concaveStart_
Index of the start of the concave feature points.
A class for handling file names.
word ext() const
Return file name extension (part after last .)
Holds feature edges/points of surface.
const labelList & featureEdges() const
Return feature edge list.
const labelList & featurePoints() const
Return feature point list.
label nRegionEdges() const
Return number of region edges.
const triSurface & surface() const
Standard boundBox + extra functionality for use in octree.
Holds data for octree to work on an edges subset.
Holds (reference to) pointField. Encapsulation of data needed for octree searches....
Triangulated surface description with patch information.
A class for handling words, derived from string.
Foam::fvMesh mesh(Foam::IOobject(regionName, runTime.name(), runTime, Foam::IOobject::MUST_READ), false)
scalar minDist(const List< pointIndexHit > &hitList)
bool read(const char *, int32_t &)
scalar degToRad(const scalar deg)
Convert degrees to radians.
Ostream & decrIndent(Ostream &os)
Decrement the indent level.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.
line< point, const point & > linePointRef
Line using referred points.
Omanip< int > setw(const int i)
Ostream & incrIndent(Ostream &os)
Increment the indent level.
void mag(LagrangianPatchField< scalar > &f, const LagrangianPatchField< Type > &f1)
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
Istream & operator>>(Istream &, pistonPointEdgeData &)
defineTypeNameAndDebug(combustionModel, 0)
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
word name(const LagrangianState state)
Return a string representation of a Lagrangian state enumeration.
HashSet wordHashSet
A HashSet with word keys.
static const scalar GREAT
Ostream & operator<<(Ostream &os, const fvConstraints &constraints)
labelList identityMap(const label len)
Create identity map (map[i] == i) of given length.
Ostream & indent(Ostream &os)
Indent stream.
tmp< DimensionedField< TypeR, GeoMesh, Field > > New(const tmp< DimensionedField< TypeR, GeoMesh, Field >> &tdf1, const word &name, const dimensionSet &dimensions)
dimensionedScalar cos(const dimensionedScalar &ds)
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
scalarField samples(nIntervals, 0)