surfaceFieldValue.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2017 OpenFOAM Foundation
9  Copyright (C) 2015-2023 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::functionObjects::fieldValues::surfaceFieldValue
29 
30 Group
31  grpFieldFunctionObjects
32 
33 Description
34  A \c face regionType variant of the \c fieldValues function object.
35 
36  Given a list of user-specified fields and a selection of mesh (or general
37  surface) faces, a number of operations can be performed, such as sums,
38  averages and integrations.
39 
40  For example, to calculate the volumetric or mass flux across a patch,
41  apply the \c sum operator to the flux field (typically \c phi).
42 
43 Usage
44  A minimal example:
45  \verbatim
46  surfaceFieldValuePatch1
47  {
48  // Mandatory entries (unmodifiable)
49  type surfaceFieldValue;
50  libs (fieldFunctionObjects);
51 
52  // Mandatory entries (runtime modifiable)
53  fields (<field1> <field2> ... <fieldN>);
54  operation <operationType>;
55  regionType patch;
56  name <patch>;
57 
58  // Optional entries (runtime modifiable)
59  names (<patch-name> <patch-regex>);
60 
61  postOperation none;
62  weightField alpha1;
63  scaleFactor 1.0;
64  writeArea false;
65  surfaceFormat none;
66 
67  // Optional (inherited) entries
68  ...
69  }
70 
71  surfaceFieldValueFaceZone1
72  {
73  // Mandatory entries (unmodifiable)
74  type surfaceFieldValue;
75  libs (fieldFunctionObjects);
76 
77  // Mandatory entries (runtime modifiable)
78  fields (<field1> <field2> ... <fieldN>);
79  operation <operationType>;
80  regionType faceZone;
81  name <faceZone>;
82 
83  // Optional entries (runtime modifiable)
84  names (<zone-name> <zone-regex>);
85 
86  postOperation none;
87  weightFields (rho U);
88  scaleFactor 1.0;
89  writeArea false;
90  surfaceFormat none;
91  empty-surface warn; // default | warn | ignore | strict
92 
93  // Optional (inherited) entries
94  ...
95  }
96  \endverbatim
97 
98  where the entries mean:
99  \table
100  Property | Description | Type | Reqd | Dflt
101  type | Type name: surfaceFieldValue | word | yes | -
102  libs | Libraries: fieldFunctionObjects | wordList | yes | -
103  regionType | Face regionType: see below | word | yes | -
104  fields | Names of operand fields | wordList | yes | -
105  name | Name of the regionType | word | yes | -
106  names | Extended selection | word/regex list | no | -
107  operation | Operation type: see below | word | yes | -
108  postOperation | Post-operation type: see below | word | no | none
109  weightField | Name of field to apply weighting | word | maybe |
110  weightFields | Names of fields to apply weighting | wordList | maybe |
111  scaleFactor | Output value scaling factor | scalar | no | 1.0
112  writeArea | Write the surface area | bool | no | false
113  surfaceFormat | Output value format | word <!--
114  --> | conditional on writeFields | none
115  empty-surface | Error handling for empty surfaces | enum | no | default
116  \endtable
117 
118  The inherited entries are elaborated in:
119  - \link fieldValue.H \endlink
120 
121  Options for the \c regionType entry:
122  \plaintable
123  faceZone | The \b name entry specifies a faceZone. Supports \b names
124  patch | The \b name entry specifies a patch. Supports \b names
125  functionObjectSurface | The \b name entry specifies a polySurface
126  sampledSurface | A \b sampledSurfaceDict sub-dictionary and \b name
127  \endplaintable
128 
129  Options for the \c operation entry:
130  \plaintable
131  none | no operation
132  min | minimum
133  max | maximum
134  sum | sum
135  sumMag | sum of component magnitudes
136  sumDirection | sum values that are positive in given direction
137  sumDirectionBalance | sum of balance of values in given direction
138  average | ensemble average
139  areaAverage | area-weighted average
140  areaIntegrate | area integral
141  CoV | coefficient of variation: standard deviation/mean
142  areaNormalAverage | area-weighted average in face normal direction
143  areaNormalIntegrate | area-weighted integral in face normal directon
144  uniformity | uniformity index
145  weightedSum | weighted sum
146  weightedAverage | weighted average
147  weightedAreaAverage | weighted area average
148  weightedAreaIntegrate | weighted area integral
149  weightedUniformity | weighted uniformity index
150  absWeightedSum | sum using absolute weighting
151  absWeightedAverage | average using absolute weighting
152  absWeightedAreaAverage | area average using absolute weighting
153  absWeightedAreaIntegrate | area integral using absolute weighting
154  absWeightedUniformity | uniformity index using absolute weighting
155  \endplaintable
156 
157  Options for the \c postOperation entry:
158  \plaintable
159  none | No additional operation after calculation
160  mag | Component-wise \c mag() after normal operation
161  sqrt | Component-wise \c sqrt() after normal operation
162  \endplaintable
163 
164  Usage by the \c postProcess utility is not available.
165 
166 Note
167  - Some types (eg, patch or faceZone) support the selection of multiple
168  entries, which can be specified as list of words or regular expressions
169  by \b names entry.<br>
170  If the \b names enty exists \em and contains a literal that can be used
171  as a suitable value for \b name, the \b name entry becomes optional
172  instead of being mandatory.
173  - The values reported by the \c areaNormalAverage and \c areaNormalIntegrate
174  operations are written as the first component of a field with the same
175  rank as the input field.
176  - Faces on empty patches are ignored.
177  - Using \c functionObjectSurface:
178  - The keyword %subRegion should not be used to select surfaces.
179  Instead specify the regionType 'functionObjectSurface' and provide
180  the name.
181  - Using \c sampledSurface:
182  - surface fields only supported by some surfaces
183  - default uses sampleScheme \c cell
184  - each face in \c sampledSurface is logically only in one cell
185  so sampling will be wrong when they are larger than cells.
186  This can only happen for sampling on a \c triSurfaceMesh
187  - take care when using isoSurfaces - these might have duplicate
188  triangles and so integration might be wrong
189 
190  Uniformity:
191  \f[
192  UI(\phi) = 1 - \frac{1}{2 \overline{\phi} A}
193  \int{\left| W \phi \cdot \hat{n} - \bar{W} \bar{\phi}\right| d\vec{A}}
194  \,,\;
195  \bar{\phi} = \frac{\int{W \phi \cdot d\vec{A}}}{\int{W \cdot d\vec{A}}}
196  \f]
197 
198  A velocity uniformity index is calculated with no weighting (W=1) and
199  \f$ \phi = \vec{U} \f$.
200 
201  A scalar concentration uniformity index is calculated with either
202  \f$ \rho \vec U \f$ or \f$ \vec U \f$ for weighting and
203  \f$ \phi = conc \f$.
204 
205 See also
206  - Foam::functionObject
207  - Foam::functionObjects::fieldValues::fieldValue
208  - ExtendedCodeGuide::functionObjects::field::surfaceFieldValue
209 
210 SourceFiles
211  surfaceFieldValue.C
212  surfaceFieldValueTemplates.C
213 
214 \*---------------------------------------------------------------------------*/
215 
216 #ifndef functionObjects_surfaceFieldValue_H
217 #define functionObjects_surfaceFieldValue_H
218 
219 #include "fieldValue.H"
220 #include "Enum.H"
221 #include "surfaceMesh.H"
222 #include "polySurface.H"
223 #include "fvsPatchField.H"
224 #include "volFieldsFwd.H"
225 #include "polySurfaceFieldsFwd.H"
226 
227 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
228 
229 namespace Foam
230 {
231 
232 // Forward Declarations
233 class sampledSurface;
234 class surfaceWriter;
235 
236 namespace functionObjects
237 {
238 namespace fieldValues
239 {
240 
241 /*---------------------------------------------------------------------------*\
242  Class surfaceFieldValue Declaration
243 \*---------------------------------------------------------------------------*/
244 
245 class surfaceFieldValue
246 :
247  public fieldValue
248 {
249 public:
250 
251  // Public Data Types
252 
253  //- Region type enumeration
254  enum regionTypes
255  {
256  stFaceZone = 0x01,
257  stPatch = 0x02,
258  stObject = 0x11,
259  stSampled = 0x12
260  };
261 
262  //- Region type names
263  static const Enum<regionTypes> regionTypeNames_;
264 
265  //- Operation type enumeration
266  enum operationType
267  {
268  // Normal operations
269 
270  opNone = 0,
271  opMin,
272  opMax,
273  opSum,
274  opSumMag,
276 
279 
280  opAverage,
281  opAreaAverage,
283  opCoV,
284 
285  // Operations returning scalar - bitmask value
286  typeScalar = 0x100,
287 
290 
293 
295  opUniformity,
296 
297  // Weighted variants
298  // Operations using weighting - bitmask value
299  typeWeighted = 0x200,
300 
303 
306 
309 
312 
315 
316  // Variants using absolute weighting
317  // Operation using mag (eg, for weighting) - bitmask value
318  typeAbsolute = 0x400,
319 
322 
325 
328 
332 
336  };
337 
338  //- Operation type names
339  static const Enum<operationType> operationTypeNames_;
340 
341 
342  //- Post-operation type enumeration
343  enum postOperationType
344  {
345  postOpNone,
346  postOpMag,
347  postOpSqrt
348  };
349 
350  //- Operation type names
351  static const Enum<postOperationType> postOperationTypeNames_;
352 
353 
354 private:
355 
356  // Private Member Functions
357 
358  //- Set faces to evaluate based on a face zone
359  void setFaceZoneFaces();
360 
361  //- Set faces to evaluate based on a patch
362  void setPatchFaces();
363 
364  //- Combine mesh faces and points from multiple processors
365  void combineMeshGeometry
366  (
367  faceList& faces,
369  ) const;
370 
371  //- Combine surface faces and points from multiple processors
372  void combineSurfaceGeometry
373  (
374  faceList& faces,
376  ) const;
377 
378  //- Calculate and return total area of the surfaceFieldValue: sum(magSf)
379  scalar totalArea() const;
380 
381 
382 protected:
383 
384  // Protected Data
385 
386  //- Region type
388 
389  //- Operation to apply to values
391 
392  //- Optional post-evaluation operation
394 
395  //- Track if the surface needs an update
396  bool needsUpdate_;
397 
398  //- Optionally write the area of the surfaceFieldValue
399  bool writeArea_;
400 
401  //- Handling of empty surfaces (nFaces = 0). Default is Fatal.
403 
404  //- Extended selections
405  wordRes selectionNames_;
406 
407  //- Weight field name(s) - optional
409 
410  //- Total area of the surfaceFieldValue
411  scalar totalArea_;
412 
413  //- Global number of faces
414  label nFaces_;
415 
416  //- Number of warnings emitted since the last valid update
417  unsigned nWarnings_;
418 
419 
420  // If operating on mesh faces (faceZone, patch)
421 
422  //- Local list of face IDs
424 
425  //- Local list of patch ID per face
427 
428  //- List representing the face flip map
429  // (false: use as-is, true: negate)
431 
432 
433  // Demand-driven
434 
435  //- The sampledSurface (when operating on sampledSurface)
436  autoPtr<sampledSurface> sampledPtr_;
437 
438  //- Surface writer
439  autoPtr<surfaceWriter> surfaceWriterPtr_;
440 
441 
442  // Static Member Functions
443 
444  //- Weighting factor.
445  // Possibly applies mag() depending on the operation type.
446  template<class WeightType>
447  static tmp<scalarField> weightingFactor
448  (
449  const Field<WeightType>& weightField,
450  const bool useMag
451  );
452 
453  //- Weighting factor, weight field projected onto unit-normal.
454  // Possibly applies mag() depending on the operation type.
455  // Reverts to 'one' if the weight field is unavailable.
456  template<class WeightType>
458  (
459  const Field<WeightType>& weightField,
460  const vectorField& Sf,
461  const bool useMag
462  );
463 
464  //- Weighting factor, weight field with area factor.
465  // Possibly applies mag() depending on the operation type.
466  // Reverts to mag(Sf) if the weight field is unavailable.
467  template<class WeightType>
469  (
470  const Field<WeightType>& weightField,
471  const vectorField& Sf,
472  const bool useMag
473  );
474 
475 
476  // Protected Member Functions
477 
478  //- The volume mesh or surface registry being used
479  const objectRegistry& obr() const;
480 
481  //- Can the surface definition sample surface-fields?
482  inline bool withSurfaceFields() const;
484  //- Can use mesh topological merge?
485  inline bool withTopologicalMerge() const noexcept;
486 
487  //- Return the local list of face IDs
488  inline const labelList& faceId() const noexcept;
490  //- Return the local list of patch ID per face
491  inline const labelList& facePatch() const noexcept;
493  //- Return the local true/false list representing the face flip map
494  inline const boolList& faceFlip() const noexcept;
496  //- True if the operation needs a surface Sf
497  bool usesSf() const noexcept;
499  //- True if the operation variant uses mag
500  inline bool is_magOp() const noexcept;
501 
502  //- True if the operation variant uses a weight-field
503  inline bool is_weightedOp() const noexcept;
504 
505  //- True if field is non-empty on any processor.
506  template<class WeightType>
507  inline bool canWeight(const Field<WeightType>& fld) const;
508 
509  //- Update the surface and surface information as required.
510  // Do nothing (and return false) if no update was required
511  bool update();
513  //- Return true if the field name is known and a valid type
514  template<class Type>
515  bool validField(const word& fieldName) const;
517  //- Return field values by looking up field name
518  template<class Type>
520  (
521  const word& fieldName,
522  const bool mandatory = false
523  ) const;
524 
525  //- Apply the 'operation' to the values. Operation must preserve Type.
526  template<class Type, class WeightType>
528  (
529  const Field<Type>& values,
530  const vectorField& Sf,
531  const Field<WeightType>& weightField
532  ) const;
533 
534  //- Apply the 'operation' to the values. Wrapper around
535  // processSameTypeValues. See also template specialisation below.
536  template<class Type, class WeightType>
537  Type processValues
538  (
539  const Field<Type>& values,
540  const vectorField& Sf,
541  const Field<WeightType>& weightField
542  ) const;
543 
545  //- Filter a surface field according to faceIds
546  template<class Type>
548  (
550  ) const;
552  //- Filter a volume field according to faceIds
553  template<class Type>
554  tmp<Field<Type>> filterField
555  (
557  ) const;
559  //- Templated helper function to output field values
560  template<class WeightType>
561  label writeAll
562  (
563  const vectorField& Sf,
564  const Field<WeightType>& weightField,
565  const pointField& points,
566  const faceList& faces
567  );
569  //- Templated helper function to output field values
570  template<class Type, class WeightType>
571  bool writeValues
572  (
573  const word& fieldName,
574  const vectorField& Sf,
575  const Field<WeightType>& weightField,
576  const pointField& points,
577  const faceList& faces
578  );
579 
580 
581  //- Output file header information
582  virtual void writeFileHeader(Ostream& os);
583 
584 
585 public:
586 
587  //- Declare type-name, virtual type (with debug switch)
589 
590 
591  // Constructors
592 
593  //- Construct from name, Time and dictionary
595  (
596  const word& name,
597  const Time& runTime,
598  const dictionary& dict
599  );
600 
601  //- Construct from name, objectRegistry and dictionary
603  (
604  const word& name,
605  const objectRegistry& obr,
606  const dictionary& dict
607  );
608 
609  //- No copy construct
610  surfaceFieldValue(const surfaceFieldValue&) = delete;
611 
612  //- No copy assignment
613  void operator=(const surfaceFieldValue&) = delete;
614 
615 
616  //- Destructor
617  virtual ~surfaceFieldValue();
618 
619 
620  // Member Functions
621 
622  //- Return the region type
623  inline regionTypes regionType() const noexcept;
624 
625  //- Return the output directory
626  inline fileName outputDir() const;
628  //- Read from dictionary
629  virtual bool read(const dictionary& dict);
630 
631  //- Calculate and write
632  virtual bool write();
633 
634  //- Update for changes of mesh
635  virtual void updateMesh(const mapPolyMesh& mpm);
636 
637  //- Update for changes of mesh
638  virtual void movePoints(const polyMesh& mesh);
639 };
640 
641 
642 //- Specialisation for scalar fields
643 template<>
645 (
646  const Field<scalar>& values,
647  const vectorField& Sf,
648  const scalarField& weightField
649 ) const;
650 
651 
652 //- Specialisation for vector fields
653 template<>
655 (
656  const Field<vector>& values,
657  const vectorField& Sf,
658  const scalarField& weightField
659 ) const;
660 
661 
662 //- Specialisation for scalar - pass through
663 template<>
665 (
666  const Field<scalar>& weightField,
667  const bool useMag
668 );
669 
670 //- Specialisation for scalar - pass through
671 template<>
673 (
674  const Field<scalar>& weightField,
675  const vectorField& Sf /* unused */,
676  const bool useMag
677 );
678 
679 //- Specialisation for scalar - scalar * Area
680 template<>
682 (
683  const Field<scalar>& weightField,
684  const vectorField& Sf,
685  const bool useMag
686 );
687 
688 
689 //- Specialisation for vector - vector (dot) unit-normal
690 template<>
692 (
693  const Field<vector>& weightField,
694  const vectorField& Sf,
695  const bool useMag
696 );
697 
698 //- Specialisation for vector - vector (dot) Area
699 template<>
701 (
702  const Field<vector>& weightField,
703  const vectorField& Sf,
704  const bool useMag
705 );
706 
707 
708 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
709 
710 } // End namespace fieldValues
711 } // End namespace functionObjects
712 } // End namespace Foam
713 
714 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
715 
716 #include "surfaceFieldValueI.H"
717 
718 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
719 
720 #ifdef NoRepository
722 #endif
723 
724 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
725 
726 #endif
727 
728 // ************************************************************************* //
wordList weightFieldNames_
Weight field name(s) - optional.
static const Enum< regionTypes > regionTypeNames_
Region type names.
Area integral in normal direction (output is always scalar)
rDeltaTY field()
A class for handling file names.
Definition: fileName.H:72
boolList faceFlip_
List representing the face flip map.
handlerTypes
Handling of errors. The exact handling depends on the local context.
Definition: error.H:109
Mesh data needed to do the Finite Volume discretisation.
Definition: surfaceMesh.H:43
Forwards and collection of common volume field types.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
bool withSurfaceFields() const
Can the surface definition sample surface-fields?
fileName outputDir() const
Return the output directory.
static const Enum< postOperationType > postOperationTypeNames_
Operation type names.
regionTypes regionType() const noexcept
Return the region type.
engineTime & runTime
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
A face regionType variant of the fieldValues function object.
bool update()
Update the surface and surface information as required.
Generic GeometricField class.
Definition: areaFieldsFwd.H:50
virtual bool read(const dictionary &dict)
Read from dictionary.
error::handlerTypes emptySurfaceError_
Handling of empty surfaces (nFaces = 0). Default is Fatal.
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
Definition: Time.H:69
virtual void updateMesh(const mapPolyMesh &mpm)
Update for changes of mesh.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Definition: mapPolyMesh.H:157
tmp< Field< Type > > getFieldValues(const word &fieldName, const bool mandatory=false) const
Return field values by looking up field name.
const word & name() const noexcept
Return the name of this functionObject.
const dictionary & dict() const noexcept
Return the reference to the construction dictionary.
Definition: fieldValueI.H:24
const labelList & faceId() const noexcept
Return the local list of face IDs.
TypeName("surfaceFieldValue")
Declare type-name, virtual type (with debug switch)
scalar totalArea_
Total area of the surfaceFieldValue.
List< face > faceList
List of faces.
Definition: faceListFwd.H:39
List< T > values(const HashTable< T, Key, Hash > &tbl, const bool doSort=false)
List of values from HashTable, optionally sorted.
Definition: HashOps.H:164
postOperationType postOperation_
Optional post-evaluation operation.
const boolList & faceFlip() const noexcept
Return the local true/false list representing the face flip map.
Mesh data needed to do the Finite Volume discretisation.
Definition: volMesh.H:45
vectorField pointField
pointField is a vectorField.
Definition: pointFieldFwd.H:38
dynamicFvMesh & mesh
Type processSameTypeValues(const Field< Type > &values, const vectorField &Sf, const Field< WeightType > &weightField) const
Apply the &#39;operation&#39; to the values. Operation must preserve Type.
const pointField & points
label writeAll(const vectorField &Sf, const Field< WeightType > &weightField, const pointField &points, const faceList &faces)
Templated helper function to output field values.
Generic templated field type.
Definition: Field.H:62
A class for handling words, derived from Foam::string.
Definition: word.H:63
bool needsUpdate_
Track if the surface needs an update.
labelList facePatchId_
Local list of patch ID per face.
bool validField(const word &fieldName) const
Return true if the field name is known and a valid type.
Area average in normal direction (output is always scalar)
virtual void writeFileHeader(Ostream &os)
Output file header information.
tmp< Field< Type > > filterField(const GeometricField< Type, fvsPatchField, surfaceMesh > &field) const
Filter a surface field according to faceIds.
autoPtr< sampledSurface > sampledPtr_
The sampledSurface (when operating on sampledSurface)
static const Enum< operationType > operationTypeNames_
Operation type names.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:56
const direction noexcept
Definition: Scalar.H:258
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
bool withTopologicalMerge() const noexcept
Can use mesh topological merge?
OBJstream os(runTime.globalPath()/outputName)
bool is_magOp() const noexcept
True if the operation variant uses mag.
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().z()<< ' ';}gmvFile<< nl;for(const word &name :lagrangianScalarNames){ IOField< scalar > fld(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
autoPtr< surfaceWriter > surfaceWriterPtr_
Surface writer.
List< word > wordList
List of word.
Definition: fileName.H:59
static tmp< scalarField > areaWeightingFactor(const Field< WeightType > &weightField, const vectorField &Sf, const bool useMag)
Weighting factor, weight field with area factor.
bool writeValues(const word &fieldName, const vectorField &Sf, const Field< WeightType > &weightField, const pointField &points, const faceList &faces)
Templated helper function to output field values.
const objectRegistry & obr() const
The volume mesh or surface registry being used.
Type processValues(const Field< Type > &values, const vectorField &Sf, const Field< WeightType > &weightField) const
Apply the &#39;operation&#39; to the values. Wrapper around.
static tmp< scalarField > weightingFactor(const Field< WeightType > &weightField, const bool useMag)
Weighting factor.
bool is_weightedOp() const noexcept
True if the operation variant uses a weight-field.
bool usesSf() const noexcept
True if the operation needs a surface Sf.
const labelList & facePatch() const noexcept
Return the local list of patch ID per face.
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:74
operationType operation_
Operation to apply to values.
bool canWeight(const Field< WeightType > &fld) const
True if field is non-empty on any processor.
List< label > labelList
A List of labels.
Definition: List.H:62
bool writeArea_
Optionally write the area of the surfaceFieldValue.
A class for managing temporary objects.
Definition: HashPtrTable.H:50
Registry of regIOobjects.
virtual void movePoints(const polyMesh &mesh)
Update for changes of mesh.
List< bool > boolList
A List of bools.
Definition: List.H:60
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
unsigned nWarnings_
Number of warnings emitted since the last valid update.
Namespace for OpenFOAM.