34 template<
class FaceList,
class Po
intField>
40 if (meshPointsPtr_ || localFacesPtr_)
44 <<
"meshPointsPtr_ or localFacesPtr_ already allocated" 50 Map<label> markedPoints(4*this->size());
86 DynamicList<label> meshPoints(2*this->size());
87 for (
const face_type&
f : *
this)
89 for (
const label pointi :
f)
91 if (markedPoints.insert(pointi, meshPoints.size()))
93 meshPoints.push_back(pointi);
98 meshPointsPtr_.reset(
new labelList(meshPoints,
true));
103 localFacesPtr_.reset(
new List<face_type>(*
this));
104 auto& locFaces = *localFacesPtr_;
106 for (face_type&
f : locFaces)
108 for (label& pointi :
f)
110 pointi = *(markedPoints.cfind(pointi));
118 template<
class FaceList,
class Po
intField>
124 if (meshPointMapPtr_)
128 <<
"meshPointMapPtr_ already allocated" 134 meshPointMapPtr_.reset(
new Map<label>(
invertToMap(meshPts)));
140 template<
class FaceList,
class Po
intField>
150 <<
"localPointsPtr_ already allocated" 156 localPointsPtr_.reset(
new Field<point_type>(meshPts.size()));
157 auto& locPts = *localPointsPtr_;
161 locPts[pointi] = points_[meshPts[pointi]];
168 template<
class FaceList,
class Po
intField>
174 if (pointNormalsPtr_)
178 <<
"pointNormalsPtr_ already allocated" 182 const auto& faceUnitNormals = faceNormals();
186 pointNormalsPtr_.reset(
new Field<point_type>(meshPoints().size(),
Zero));
187 auto&
n = *pointNormalsPtr_;
191 point_type& curNormal =
n[pointi];
195 for (
const label facei : curFaces)
197 curNormal += faceUnitNormals[facei];
200 curNormal.normalise();
207 template<
class FaceList,
class Po
intField>
217 <<
"faceCentresPtr_ already allocated" 221 faceCentresPtr_.reset(
new Field<point_type>(this->size()));
222 auto&
c = *faceCentresPtr_;
226 c[facei] = this->operator[](facei).centre(points_);
233 template<
class FaceList,
class Po
intField>
239 if (magFaceAreasPtr_)
243 <<
"magFaceAreasPtr_ already allocated" 247 magFaceAreasPtr_.reset(
new Field<scalar>(this->size()));
248 auto& a = *magFaceAreasPtr_;
252 a[facei] = this->operator[](facei).mag(points_);
259 template<
class FaceList,
class Po
intField>
269 <<
"faceAreasPtr_ already allocated" 273 faceAreasPtr_.reset(
new Field<point_type>(this->size()));
274 auto&
n = *faceAreasPtr_;
278 n[facei] = this->operator[](facei).areaNormal(points_);
285 template<
class FaceList,
class Po
intField>
295 <<
"faceNormalsPtr_ already allocated" 299 faceNormalsPtr_.reset(
new Field<point_type>(this->size()));
300 auto&
n = *faceNormalsPtr_;
304 n[facei] = this->operator[](facei).unitNormal(points_);
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Ostream & endl(Ostream &os)
Add newline and flush stream.
List< labelList > labelListList
List of labelList.
#define forAll(list, i)
Loop across all elements in list.
A list of faces which address into the list of points.
#define DebugInFunction
Report an information message using Foam::Info.
errorManip< error > abort(error &err)
#define DebugInfo
Report an information message using Foam::Info.
const dimensionedScalar c
Speed of light in a vacuum.
List< label > labelList
A List of labels.
Map< label > invertToMap(const labelUList &values)
Create inverse mapping, which is a lookup table into the given list.
static constexpr const zero Zero
Global zero (0)