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>(2*
mp.size()));
135 auto& mpMap = *meshPointMapPtr_;
139 mpMap.insert(
mp[i], i);
146 template<
class FaceList,
class Po
intField>
156 <<
"localPointsPtr_ already allocated" 162 localPointsPtr_.reset(
new Field<point_type>(meshPts.size()));
163 auto& locPts = *localPointsPtr_;
167 locPts[pointi] = points_[meshPts[pointi]];
174 template<
class FaceList,
class Po
intField>
180 if (pointNormalsPtr_)
184 <<
"pointNormalsPtr_ already allocated" 188 const auto& faceUnitNormals = faceNormals();
192 pointNormalsPtr_.reset(
new Field<point_type>(meshPoints().size(),
Zero));
193 auto&
n = *pointNormalsPtr_;
197 point_type& curNormal =
n[pointi];
201 for (
const label facei : curFaces)
203 curNormal += faceUnitNormals[facei];
206 curNormal.normalise();
213 template<
class FaceList,
class Po
intField>
223 <<
"faceCentresPtr_ already allocated" 227 faceCentresPtr_.reset(
new Field<point_type>(this->size()));
228 auto&
c = *faceCentresPtr_;
232 c[facei] = this->operator[](facei).centre(points_);
239 template<
class FaceList,
class Po
intField>
245 if (magFaceAreasPtr_)
249 <<
"magFaceAreasPtr_ already allocated" 253 magFaceAreasPtr_.reset(
new Field<scalar>(this->size()));
254 auto& a = *magFaceAreasPtr_;
258 a[facei] = this->operator[](facei).mag(points_);
265 template<
class FaceList,
class Po
intField>
275 <<
"faceAreasPtr_ already allocated" 279 faceAreasPtr_.reset(
new Field<point_type>(this->size()));
280 auto&
n = *faceAreasPtr_;
284 n[facei] = this->operator[](facei).areaNormal(points_);
291 template<
class FaceList,
class Po
intField>
301 <<
"faceNormalsPtr_ already allocated" 305 faceNormalsPtr_.reset(
new Field<point_type>(this->size()));
306 auto&
n = *faceNormalsPtr_;
310 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.
const dimensionedScalar mp
Proton mass.
static constexpr const zero Zero
Global zero (0)