mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Update to sampleSets so that distance outputs cumulative distance
along sample path STYLE: Minor code formatting
This commit is contained in:
@ -151,20 +151,4 @@ Foam::cloudSet::~cloudSet()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
Foam::point Foam::cloudSet::getRefPoint(const List<point>& pts) const
|
||||
{
|
||||
if (pts.size())
|
||||
{
|
||||
// Use first samplePt as starting point
|
||||
return pts[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
return vector::zero;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -75,6 +75,7 @@ class cloudSet
|
||||
//- Uses calcSamples to obtain samples. Copies them into *this.
|
||||
void genSamples();
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
@ -104,14 +105,7 @@ public:
|
||||
|
||||
|
||||
// Destructor
|
||||
|
||||
virtual ~cloudSet();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Get reference point
|
||||
virtual point getRefPoint(const List<point>&) const;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -25,6 +25,22 @@ License
|
||||
|
||||
#include "coordSet.H"
|
||||
|
||||
// * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * * //
|
||||
|
||||
template<>
|
||||
const char* Foam::NamedEnum<Foam::coordSet::coordFormat, 5>::names[] =
|
||||
{
|
||||
"xyz",
|
||||
"x",
|
||||
"y",
|
||||
"z",
|
||||
"distance"
|
||||
};
|
||||
|
||||
const Foam::NamedEnum<Foam::coordSet::coordFormat, 5>
|
||||
Foam::coordSet::coordFormatNames_;
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
//- Construct from components
|
||||
@ -36,8 +52,8 @@ Foam::coordSet::coordSet
|
||||
:
|
||||
pointField(0),
|
||||
name_(name),
|
||||
axis_(axis),
|
||||
refPoint_(vector::zero)
|
||||
axis_(coordFormatNames_[axis]),
|
||||
curveDist_(0)
|
||||
{}
|
||||
|
||||
|
||||
@ -47,62 +63,21 @@ Foam::coordSet::coordSet
|
||||
const word& name,
|
||||
const word& axis,
|
||||
const List<point>& points,
|
||||
const point& refPoint
|
||||
const scalarList& curveDist
|
||||
)
|
||||
:
|
||||
pointField(points),
|
||||
name_(name),
|
||||
axis_(axis),
|
||||
refPoint_(refPoint)
|
||||
axis_(coordFormatNames_[axis]),
|
||||
curveDist_(curveDist)
|
||||
{}
|
||||
|
||||
|
||||
//- Construct from components
|
||||
Foam::coordSet::coordSet
|
||||
(
|
||||
const word& name,
|
||||
const word& axis,
|
||||
const scalarField& points,
|
||||
const scalar refPoint
|
||||
)
|
||||
:
|
||||
pointField(points.size(), point::zero),
|
||||
name_(name),
|
||||
axis_(axis),
|
||||
refPoint_(point::zero)
|
||||
{
|
||||
if (axis_ == "x" || axis_ == "distance")
|
||||
{
|
||||
refPoint_.x() = refPoint;
|
||||
replace(point::X, points);
|
||||
}
|
||||
else if (axis_ == "y")
|
||||
{
|
||||
replace(point::Y, points);
|
||||
}
|
||||
else if (axis_ == "z")
|
||||
{
|
||||
replace(point::Z, points);
|
||||
}
|
||||
else
|
||||
{
|
||||
FatalErrorIn
|
||||
(
|
||||
"coordSet::coordSet(const word& name,"
|
||||
"const word& axis, const List<scalar>& points,"
|
||||
"const scalar refPoint)"
|
||||
) << "Illegal axis specification " << axis_
|
||||
<< " for sampling line " << name_
|
||||
<< exit(FatalError);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
bool Foam::coordSet::hasVectorAxis() const
|
||||
{
|
||||
return axis_ == "xyz";
|
||||
return axis_ == XYZ;
|
||||
}
|
||||
|
||||
|
||||
@ -113,22 +88,22 @@ Foam::scalar Foam::coordSet::scalarCoord
|
||||
{
|
||||
const point& p = operator[](index);
|
||||
|
||||
if (axis_ == "x")
|
||||
if (axis_ == X)
|
||||
{
|
||||
return p.x();
|
||||
}
|
||||
else if (axis_ == "y")
|
||||
else if (axis_ == Y)
|
||||
{
|
||||
return p.y();
|
||||
}
|
||||
else if (axis_ == "z")
|
||||
else if (axis_ == Z)
|
||||
{
|
||||
return p.z();
|
||||
}
|
||||
else if (axis_ == "distance")
|
||||
else if (axis_ == DISTANCE)
|
||||
{
|
||||
// Use distance to reference point
|
||||
return mag(p - refPoint_);
|
||||
return curveDist_[index];
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -154,7 +129,7 @@ Foam::point Foam::coordSet::vectorCoord(const label index) const
|
||||
|
||||
Foam::Ostream& Foam::coordSet::write(Ostream& os) const
|
||||
{
|
||||
os << "name:" << name_ << " axis:" << axis_ << " reference:" << refPoint_
|
||||
os << "name:" << name_ << " axis:" << axis_
|
||||
<< endl
|
||||
<< endl << "\t(coord)"
|
||||
<< endl;
|
||||
|
||||
@ -52,16 +52,38 @@ class coordSet
|
||||
public pointField
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
// Public data types
|
||||
|
||||
//- Enumeration defining the output format for coordinates
|
||||
enum coordFormat
|
||||
{
|
||||
XYZ,
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
DISTANCE
|
||||
};
|
||||
|
||||
|
||||
private:
|
||||
|
||||
//- String representation of coordFormat enums
|
||||
static const NamedEnum<coordFormat, 5> coordFormatNames_;
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
//- Name
|
||||
const word name_;
|
||||
|
||||
//- Axis write type
|
||||
const word axis_;
|
||||
const coordFormat axis_;
|
||||
|
||||
//- Cumulative distance "distance" write specifier.
|
||||
scalarList curveDist_;
|
||||
|
||||
//- Reference point for "distance" write specifier.
|
||||
point refPoint_;
|
||||
|
||||
public:
|
||||
|
||||
@ -81,16 +103,7 @@ public:
|
||||
const word& name,
|
||||
const word& axis,
|
||||
const List<point>& points,
|
||||
const point& refPoint = point::zero
|
||||
);
|
||||
|
||||
//- Construct from components
|
||||
coordSet
|
||||
(
|
||||
const word& name,
|
||||
const word& axis,
|
||||
const scalarField& points,
|
||||
const scalar refPoint = 0.0
|
||||
const scalarList& curveDist
|
||||
);
|
||||
|
||||
|
||||
@ -101,33 +114,26 @@ public:
|
||||
return name_;
|
||||
}
|
||||
|
||||
const word& axis() const
|
||||
word axis() const
|
||||
{
|
||||
return axis_;
|
||||
return coordFormatNames_[axis_];
|
||||
}
|
||||
|
||||
const point& refPoint() const
|
||||
//- Cumulative distance
|
||||
const scalarList& curveDist() const
|
||||
{
|
||||
return refPoint_;
|
||||
return curveDist_;
|
||||
}
|
||||
|
||||
//- Is axis specification a vector
|
||||
bool hasVectorAxis() const;
|
||||
|
||||
//- Get coordinate of point according to axis specification.
|
||||
// If axis="distance" can be: -distance to starting point (e.g.
|
||||
// uniformSet) or -distance to first sampling point
|
||||
// (e.g. cloudSet)
|
||||
scalar scalarCoord
|
||||
(
|
||||
const label index
|
||||
) const;
|
||||
// If axis="distance" is the curveDist[index]
|
||||
scalar scalarCoord(const label index) const;
|
||||
|
||||
//- Get point according to axis="full" specification
|
||||
vector vectorCoord
|
||||
(
|
||||
const label index
|
||||
) const;
|
||||
//- Get point according to axis="xyz" specification
|
||||
vector vectorCoord(const label index) const;
|
||||
|
||||
Ostream& write(Ostream& os) const;
|
||||
};
|
||||
|
||||
@ -380,12 +380,4 @@ Foam::faceOnlySet::~faceOnlySet()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
Foam::point Foam::faceOnlySet::getRefPoint(const List<point>& pts) const
|
||||
{
|
||||
return start_;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -92,6 +92,7 @@ class faceOnlySet
|
||||
//- Uses calcSamples to obtain samples. Copies them into *this.
|
||||
void genSamples();
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
@ -121,7 +122,6 @@ public:
|
||||
|
||||
|
||||
// Destructor
|
||||
|
||||
virtual ~faceOnlySet();
|
||||
|
||||
|
||||
@ -136,9 +136,6 @@ public:
|
||||
{
|
||||
return end_;
|
||||
}
|
||||
|
||||
//- Get reference point
|
||||
virtual point getRefPoint(const List<point>&) const;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -58,6 +58,7 @@ class midPointSet
|
||||
|
||||
void genSamples();
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
@ -88,7 +89,6 @@ public:
|
||||
|
||||
|
||||
// Destructor
|
||||
|
||||
virtual ~midPointSet();
|
||||
};
|
||||
|
||||
|
||||
@ -59,6 +59,7 @@ class midPointAndFaceSet
|
||||
|
||||
void genSamples();
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
@ -89,7 +90,6 @@ public:
|
||||
|
||||
|
||||
// Destructor
|
||||
|
||||
virtual ~midPointAndFaceSet();
|
||||
};
|
||||
|
||||
|
||||
@ -394,20 +394,4 @@ Foam::polyLineSet::~polyLineSet()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
Foam::point Foam::polyLineSet::getRefPoint(const List<point>& pts) const
|
||||
{
|
||||
if (pts.size())
|
||||
{
|
||||
// Use first samplePt as starting point
|
||||
return pts[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
return vector::zero;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -121,12 +121,6 @@ public:
|
||||
|
||||
// Destructor
|
||||
virtual ~polyLineSet();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Get reference point
|
||||
virtual point getRefPoint(const List<point>&) const;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -354,10 +354,11 @@ void Foam::sampledSet::setSamples
|
||||
{
|
||||
operator[](sampleI) = samplingPts[sampleI];
|
||||
}
|
||||
curveDist_ = samplingCurveDist;
|
||||
|
||||
cells_ = samplingCells;
|
||||
faces_ = samplingFaces;
|
||||
segments_ = samplingSegments;
|
||||
curveDist_ = samplingCurveDist;
|
||||
}
|
||||
|
||||
|
||||
@ -375,7 +376,6 @@ Foam::sampledSet::sampledSet
|
||||
mesh_(mesh),
|
||||
searchEngine_(searchEngine),
|
||||
segments_(0),
|
||||
curveDist_(0),
|
||||
cells_(0),
|
||||
faces_(0)
|
||||
{}
|
||||
@ -393,7 +393,6 @@ Foam::sampledSet::sampledSet
|
||||
mesh_(mesh),
|
||||
searchEngine_(searchEngine),
|
||||
segments_(0),
|
||||
curveDist_(0),
|
||||
cells_(0),
|
||||
faces_(0)
|
||||
{}
|
||||
|
||||
@ -41,13 +41,10 @@ SourceFiles
|
||||
#ifndef sampledSet_H
|
||||
#define sampledSet_H
|
||||
|
||||
#include "pointField.H"
|
||||
#include "word.H"
|
||||
#include "labelList.H"
|
||||
#include "coordSet.H"
|
||||
#include "typeInfo.H"
|
||||
#include "runTimeSelectionTables.H"
|
||||
#include "autoPtr.H"
|
||||
#include "coordSet.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -80,10 +77,6 @@ protected:
|
||||
//- Segment numbers
|
||||
labelList segments_;
|
||||
|
||||
//- Parameter along sample curve. Uniquely identifies position
|
||||
// along sampling. Used for combining parallel results.
|
||||
scalarList curveDist_;
|
||||
|
||||
//- Cell numbers
|
||||
labelList cells_;
|
||||
|
||||
@ -245,7 +238,6 @@ public:
|
||||
|
||||
|
||||
// Destructor
|
||||
|
||||
virtual ~sampledSet();
|
||||
|
||||
|
||||
@ -266,11 +258,6 @@ public:
|
||||
return segments_;
|
||||
}
|
||||
|
||||
const scalarList& curveDist() const
|
||||
{
|
||||
return curveDist_;
|
||||
}
|
||||
|
||||
const labelList& cells() const
|
||||
{
|
||||
return cells_;
|
||||
@ -281,9 +268,6 @@ public:
|
||||
return faces_;
|
||||
}
|
||||
|
||||
//- Given all sampling points (on all processors) return reference point
|
||||
virtual point getRefPoint(const List<point>&) const = 0;
|
||||
|
||||
//- Output for debugging
|
||||
Ostream& write(Ostream&) const;
|
||||
};
|
||||
|
||||
@ -100,19 +100,6 @@ void Foam::sampledSets::combineSampledSets
|
||||
SortableList<scalar> sortedDist(allCurveDist);
|
||||
indexSets[setI] = sortedDist.indices();
|
||||
|
||||
// Get reference point (note: only master has all points)
|
||||
point refPt;
|
||||
|
||||
if (allPts.size())
|
||||
{
|
||||
refPt = samplePts.getRefPoint(allPts);
|
||||
}
|
||||
else
|
||||
{
|
||||
refPt = vector::zero;
|
||||
}
|
||||
|
||||
|
||||
masterSampledSets.set
|
||||
(
|
||||
setI,
|
||||
@ -121,7 +108,7 @@ void Foam::sampledSets::combineSampledSets
|
||||
samplePts.name(),
|
||||
samplePts.axis(),
|
||||
List<point>(UIndirectList<point>(allPts, indexSets[setI])),
|
||||
refPt
|
||||
allCurveDist
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@ -268,7 +268,6 @@ public:
|
||||
|
||||
|
||||
// Destructor
|
||||
|
||||
virtual ~sampledSets();
|
||||
|
||||
|
||||
|
||||
@ -57,7 +57,6 @@ class triSurfaceMeshPointSet
|
||||
//- Name of triSurfaceMesh
|
||||
const word surface_;
|
||||
|
||||
|
||||
//- Sampling points
|
||||
List<point> sampleCoords_;
|
||||
|
||||
@ -77,6 +76,7 @@ class triSurfaceMeshPointSet
|
||||
//- Uses calcSamples to obtain samples. Copies them into *this.
|
||||
void genSamples();
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
@ -96,7 +96,6 @@ public:
|
||||
|
||||
|
||||
// Destructor
|
||||
|
||||
virtual ~triSurfaceMeshPointSet();
|
||||
|
||||
|
||||
|
||||
@ -483,14 +483,4 @@ Foam::uniformSet::~uniformSet()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
Foam::point Foam::uniformSet::getRefPoint(const List<point>& pts) const
|
||||
{
|
||||
// Use start point as reference for 'distance'
|
||||
return start_;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -139,14 +139,7 @@ public:
|
||||
|
||||
|
||||
// Destructor
|
||||
|
||||
virtual ~uniformSet();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Get reference point
|
||||
virtual point getRefPoint(const List<point>&) const;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user