111 return wordHashSet(*fileExtensionConstructorTablePtr_);
117 return wordHashSet(*writefileExtensionMemberFunctionTablePtr_);
130 return edgeMeshFormatsCore::checkSupport
146 return edgeMeshFormatsCore::checkSupport
165 ext =
name.lessExt().ext();
167 return canReadType(ext, verbose);
179 const labelList& ptEds(pointEdges()[ptI]);
195 if (edStat == EXTERNAL)
199 else if (edStat == INTERNAL)
205 if (nExternal == nPtEds)
209 else if (nInternal == nPtEds)
234 else if (nEdNorms == 2)
236 const vector& n0(norms[edNorms[0]]);
237 const vector& n1(norms[edNorms[1]]);
239 if ((n0 & n1) > cosNormalAngleTol_)
243 else if ((fC0tofC1 & n0) > 0.0)
252 else if (nEdNorms > 2)
277 normalVolumeTypes_(0),
279 normalDirections_(0),
281 featurePointNormals_(0),
282 featurePointEdges_(0),
293 concaveStart_(fem.concaveStart()),
294 mixedStart_(fem.mixedStart()),
295 nonFeatureStart_(fem.nonFeatureStart()),
296 internalStart_(fem.internalStart()),
297 flatStart_(fem.flatStart()),
298 openStart_(fem.openStart()),
299 multipleStart_(fem.multipleStart()),
300 normals_(fem.normals()),
301 normalVolumeTypes_(fem.normalVolumeTypes()),
302 edgeDirections_(fem.edgeDirections()),
303 normalDirections_(fem.normalDirections()),
304 edgeNormals_(fem.edgeNormals()),
305 featurePointNormals_(fem.featurePointNormals()),
306 featurePointEdges_(fem.featurePointEdges()),
307 regionEdges_(fem.regionEdges()),
317 concaveStart_(fem.concaveStart()),
318 mixedStart_(fem.mixedStart()),
319 nonFeatureStart_(fem.nonFeatureStart()),
320 internalStart_(fem.internalStart()),
321 flatStart_(fem.flatStart()),
322 openStart_(fem.openStart()),
323 multipleStart_(fem.multipleStart()),
324 normals_(move(fem.normals())),
325 normalVolumeTypes_(move(fem.normalVolumeTypes())),
326 edgeDirections_(move(fem.edgeDirections())),
327 normalDirections_(move(fem.normalDirections())),
328 edgeNormals_(move(fem.edgeNormals())),
329 featurePointNormals_(move(fem.featurePointNormals())),
330 featurePointEdges_(move(fem.featurePointEdges())),
331 regionEdges_(move(fem.regionEdges())),
350 edgeMesh(move(pointLst), move(edgeLst)),
359 normalVolumeTypes_(0),
361 normalDirections_(0),
363 featurePointNormals_(0),
364 featurePointEdges_(0),
381 nonFeatureStart_(-1),
387 normalVolumeTypes_(0),
389 normalDirections_(0),
391 featurePointNormals_(0),
392 featurePointEdges_(0),
425 label sFEI = featureEdges[i];
428 const labelList& eFaces = edgeFaces[sFEI];
432 label eFI = eFaces[j];
439 surfBaffleRegions[surf[eFI].region()]
462 nonFeatureStart_(-1),
468 normalVolumeTypes_(0),
470 normalDirections_(0),
472 featurePointNormals_(0),
473 featurePointEdges_(0),
495 label nonFeatureStart,
511 concaveStart_(concaveStart),
512 mixedStart_(mixedStart),
513 nonFeatureStart_(nonFeatureStart),
514 internalStart_(internalStart),
515 flatStart_(flatStart),
516 openStart_(openStart),
517 multipleStart_(multipleStart),
519 normalVolumeTypes_(normalVolumeTypes),
520 edgeDirections_(edgeDirections),
521 normalDirections_(normalDirections),
522 edgeNormals_(edgeNormals),
523 featurePointNormals_(featurePointNormals),
524 featurePointEdges_(featurePointEdges),
525 regionEdges_(regionEdges),
547 normalVolumeTypes_(0),
549 normalDirections_(0),
551 featurePointNormals_(0),
552 featurePointEdges_(0),
573 normalVolumeTypes_(0),
575 normalDirections_(0),
577 featurePointNormals_(0),
578 featurePointEdges_(0),
602 return read(unzipName, unzipName.
ext());
627 scalar searchDistSqr,
631 info = pointTree().findNearest
642 scalar searchDistSqr,
646 info = edgeTree().findNearest
688 sliceStarts[0] = externalStart_;
689 sliceStarts[1] = internalStart_;
690 sliceStarts[2] = flatStart_;
691 sliceStarts[3] = openStart_;
692 sliceStarts[4] = multipleStart_;
696 info[i] = edgeTrees[i].findNearest
706 info[i].setIndex(info[i].index() + sliceStarts[i]);
714 scalar searchRadiusSqr,
729 label index = elems[elemI];
730 label ptI = pointTree().shapes().pointLabels()[index];
735 dynPointHit.
append(nearHit);
745 const scalar searchRadiusSqr,
755 sliceStarts[0] = externalStart_;
756 sliceStarts[1] = internalStart_;
757 sliceStarts[2] = flatStart_;
758 sliceStarts[3] = openStart_;
759 sliceStarts[4] = multipleStart_;
767 labelList elems = edgeTrees[i].findSphere
775 label index = elems[elemI];
776 label edgeI = edgeTrees[i].shapes().edgeLabels()[index];
777 const edge&
e = edges()[edgeI];
781 label hitIndex = index + sliceStarts[i];
790 dynEdgeHit.
append(nearHit);
808 hi1 < hitList.
size() - 1;
821 hi2 < hitList.
size();
851 if (pointTree_.empty())
883 if (edgeTree_.empty())
917 if (edgeTreesByType_.size() == 0)
919 edgeTreesByType_.setSize(nEdgeTypes);
929 identityMap(internalStart_ - externalStart_) + externalStart_;
933 identityMap(flatStart_ - internalStart_) + internalStart_;
936 sliceEdges[2] =
identityMap(openStart_ - flatStart_) + flatStart_;
939 sliceEdges[3] =
identityMap(multipleStart_ - openStart_) + openStart_;
943 identityMap(edges().size() - multipleStart_) + multipleStart_;
945 forAll(edgeTreesByType_, i)
968 return edgeTreesByType_;
1002 nonFeatureStart_ = 0;
1008 normalVolumeTypes_.clear();
1009 edgeDirections_.clear();
1010 normalDirections_.clear();
1011 edgeNormals_.clear();
1012 featurePointNormals_.clear();
1013 featurePointEdges_.clear();
1014 regionEdges_.clear();
1017 edgeTreesByType_.clear();
1031 for (
label i = 0; i < concaveStart(); i++)
1042 for (
label i = concaveStart(); i < mixedStart(); i++)
1053 for (
label i = mixedStart(); i < nonFeatureStart(); i++)
1075 newPoints.
rmap(fem.
points(), reverseFemPointMap);
1082 labelList reverseEdgeMap(edges().size());
1087 for (
label i = 0; i < internalStart(); i++)
1089 reverseEdgeMap[i] = newEdgeI++;
1093 reverseFemEdgeMap[i] = newEdgeI++;
1097 label newInternalStart = newEdgeI;
1098 for (
label i = internalStart(); i < flatStart(); i++)
1100 reverseEdgeMap[i] = newEdgeI++;
1104 reverseFemEdgeMap[i] = newEdgeI++;
1108 label newFlatStart = newEdgeI;
1109 for (
label i = flatStart(); i < openStart(); i++)
1111 reverseEdgeMap[i] = newEdgeI++;
1115 reverseFemEdgeMap[i] = newEdgeI++;
1119 label newOpenStart = newEdgeI;
1120 for (
label i = openStart(); i < multipleStart(); i++)
1122 reverseEdgeMap[i] = newEdgeI++;
1126 reverseFemEdgeMap[i] = newEdgeI++;
1130 label newMultipleStart = newEdgeI;
1131 for (
label i = multipleStart(); i < edges().size(); i++)
1133 reverseEdgeMap[i] = newEdgeI++;
1137 reverseFemEdgeMap[i] = newEdgeI++;
1143 const edge&
e = edges()[i];
1144 newEdges[reverseEdgeMap[i]] =
edge
1146 reversePointMap[
e[0]],
1147 reversePointMap[
e[1]]
1153 newEdges[reverseFemEdgeMap[i]] =
edge
1155 reverseFemPointMap[
e[0]],
1156 reverseFemPointMap[
e[1]]
1161 newEdgeDirections.
rmap(edgeDirections(), reverseEdgeMap);
1172 newNormals.
append(normals());
1182 forAll(reverseFemEdgeMap, i)
1184 label mapI = reverseFemEdgeMap[i];
1188 en[j] += normals().
size();
1196 featurePointNormals().size()
1203 newFeaturePointNormals,
1205 ) = featurePointNormals();
1208 newFeaturePointNormals,
1213 label mapI = reverseFemPointMap[i];
1214 labelList& fn = newFeaturePointNormals[mapI];
1217 fn[j] += normals().
size();
1225 regionEdges().size()
1230 newRegionEdges.
append(reverseEdgeMap[regionEdges()[i]]);
1242 concaveStart_ = newConcaveStart;
1243 mixedStart_ = newMixedStart;
1244 nonFeatureStart_ = newNonFeatureStart;
1247 reset(move(newPoints), move(newEdges));
1250 internalStart_ = newInternalStart;
1251 flatStart_ = newFlatStart;
1252 openStart_ = newOpenStart;
1253 multipleStart_ = newMultipleStart;
1255 edgeDirections_.transfer(newEdgeDirections);
1257 normals_.transfer(newNormals);
1258 edgeNormals_.transfer(newEdgeNormals);
1259 featurePointNormals_.transfer(newFeaturePointNormals);
1261 regionEdges_.transfer(newRegionEdges);
1265 edgeTreesByType_.clear();
1281 for (
label i = concaveStart(); i < mixedStart(); i++)
1287 for (
label i = 0; i < concaveStart(); i++)
1303 for (
label i = internalStart(); i < flatStart(); i++)
1305 reverseEdgeMap[i] = newEdgeI++;
1308 label newInternalStart = newEdgeI;
1309 for (
label i = 0; i < internalStart(); i++)
1311 reverseEdgeMap[i] = newEdgeI++;
1321 const edge&
e = edges()[i];
1322 newEdges[reverseEdgeMap[i]] =
edge
1324 reversePointMap[
e[0]],
1325 reversePointMap[
e[1]]
1333 pointField newEdgeDirections(edges().size());
1334 newEdgeDirections.
rmap(-1.0*edgeDirections(), reverseEdgeMap);
1341 labelListList newFeaturePointNormals(featurePointNormals().size());
1346 newFeaturePointNormals,
1348 ) = featurePointNormals();
1350 labelList newRegionEdges(regionEdges().size());
1353 newRegionEdges[i] = reverseEdgeMap[regionEdges()[i]];
1357 concaveStart_ = newConcaveStart;
1360 reset(move(newPoints), move(newEdges));
1363 internalStart_ = newInternalStart;
1365 edgeDirections_.transfer(newEdgeDirections);
1366 normals_.transfer(newNormals);
1367 edgeNormals_.transfer(newEdgeNormals);
1368 featurePointNormals_.transfer(newFeaturePointNormals);
1369 regionEdges_.transfer(newRegionEdges);
1373 edgeTreesByType_.clear();
1383 Info<<
nl <<
"Writing extendedEdgeMesh components to " << prefix
1388 if (!verbose)
return;
1390 OBJstream convexFtPtStr(prefix +
"_convexFeaturePts.obj");
1391 Info<<
"Writing convex feature points to " << convexFtPtStr.
name() <<
endl;
1393 for(
label i = 0; i < concaveStart_; i++)
1398 OBJstream concaveFtPtStr(prefix +
"_concaveFeaturePts.obj");
1399 Info<<
"Writing concave feature points to "
1402 for(
label i = concaveStart_; i < mixedStart_; i++)
1407 OBJstream mixedFtPtStr(prefix +
"_mixedFeaturePts.obj");
1408 Info<<
"Writing mixed feature points to " << mixedFtPtStr.
name() <<
endl;
1410 for(
label i = mixedStart_; i < nonFeatureStart_; i++)
1415 OBJstream mixedFtPtStructureStr(prefix +
"_mixedFeaturePtsStructure.obj");
1416 Info<<
"Writing mixed feature point structure to "
1417 << mixedFtPtStructureStr.
name() <<
endl;
1419 for(
label i = mixedStart_; i < nonFeatureStart_; i++)
1421 const labelList& ptEds = pointEdges()[i];
1425 const edge&
e = edges()[ptEds[j]];
1426 mixedFtPtStructureStr.
write
1434 OBJstream externalStr(prefix +
"_externalEdges.obj");
1435 Info<<
"Writing external edges to " << externalStr.
name() <<
endl;
1437 for (
label i = externalStart_; i < internalStart_; i++)
1439 const edge&
e = edges()[i];
1443 OBJstream internalStr(prefix +
"_internalEdges.obj");
1444 Info<<
"Writing internal edges to " << internalStr.
name() <<
endl;
1446 for (
label i = internalStart_; i < flatStart_; i++)
1448 const edge&
e = edges()[i];
1452 OBJstream flatStr(prefix +
"_flatEdges.obj");
1453 Info<<
"Writing flat edges to " << flatStr.
name() <<
endl;
1455 for (
label i = flatStart_; i < openStart_; i++)
1457 const edge&
e = edges()[i];
1461 OBJstream openStr(prefix +
"_openEdges.obj");
1462 Info<<
"Writing open edges to " << openStr.
name() <<
endl;
1464 for (
label i = openStart_; i < multipleStart_; i++)
1466 const edge&
e = edges()[i];
1470 OBJstream multipleStr(prefix +
"_multipleEdges.obj");
1471 Info<<
"Writing multiple edges to " << multipleStr.
name() <<
endl;
1473 for (
label i = multipleStart_; i < edges().size(); i++)
1475 const edge&
e = edges()[i];
1479 OBJstream regionStr(prefix +
"_regionEdges.obj");
1480 Info<<
"Writing region edges to " << regionStr.
name() <<
endl;
1484 const edge&
e = edges()[regionEdges_[i]];
1488 OBJstream edgeDirsStr(prefix +
"_edgeDirections.obj");
1489 Info<<
"Writing edge directions to " << edgeDirsStr.
name() <<
endl;
1491 forAll(edgeDirections_, i)
1493 const vector& eVec = edgeDirections_[i];
1494 const edge&
e = edges()[i];
1508 os <<
indent <<
"point classification :" <<
nl;
1510 os <<
indent <<
"convex feature points : "
1511 <<
setw(8) << concaveStart_-convexStart_
1513 os <<
indent <<
"concave feature points : "
1514 <<
setw(8) << mixedStart_-concaveStart_
1516 os <<
indent <<
"mixed feature points : "
1517 <<
setw(8) << nonFeatureStart_-mixedStart_
1519 os <<
indent <<
"other (non-feature) points : "
1524 os <<
indent <<
"edge classification :" <<
nl;
1526 os <<
indent <<
"external (convex angle) edges : "
1527 <<
setw(8) << internalStart_-externalStart_
1529 os <<
indent <<
"internal (concave angle) edges : "
1530 <<
setw(8) << flatStart_-internalStart_
1532 os <<
indent <<
"flat region edges : "
1533 <<
setw(8) << openStart_-flatStart_
1535 os <<
indent <<
"open edges : "
1536 <<
setw(8) << multipleStart_-openStart_
1538 os <<
indent <<
"multiply connected edges : "
1539 <<
setw(8) << edges().size()-multipleStart_
1559 is.check(
"operator>>(Istream&, sideVolumeType&)");
1571 os << static_cast<label>(vt);
1580 os <<
"// points" <<
nl
1584 <<
"// concaveStart mixedStart nonFeatureStart" <<
nl
1588 <<
"// internalStart flatStart openStart multipleStart" <<
nl
1593 <<
"// normals" <<
nl
1595 <<
"// normal volume types" <<
nl
1597 <<
"// normalDirections" <<
nl
1599 <<
"// edgeNormals" <<
nl
1601 <<
"// featurePointNormals" <<
nl
1603 <<
"// featurePointEdges" <<
nl
1605 <<
"// regionEdges" <<
nl
1610 os.
check(
"Ostream& operator<<(Ostream&, const extendedEdgeMesh&)");
1636 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.
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.
vectorField edgeDirections_
Flat and open edges require the direction of the edge.
label openStart_
Index of the start of the open feature edges.
autoPtr< indexedOctree< treeDataEdge > > edgeTree_
Search tree for all 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.
autoPtr< indexedOctree< treeDataPoint > > pointTree_
Search tree for all feature points.
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.
PtrList< indexedOctree< treeDataEdge > > edgeTreesByType_
Individual search trees for each type of edge.
~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.
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.
word name(const bool)
Return a word representation of a bool.
Omanip< int > setw(const int i)
Ostream & incrIndent(Ostream &os)
Increment the indent level.
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
Istream & operator>>(Istream &, pistonPointEdgeData &)
dimensioned< scalar > mag(const dimensioned< Type > &)
defineTypeNameAndDebug(combustionModel, 0)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
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.
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)