GeometricField.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2011-2025 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Class
25  Foam::GeometricField
26 
27 Description
28  Generic GeometricField class.
29 
30 SourceFiles
31  GeometricFieldI.H
32  GeometricField.C
33  GeometricFieldFunctions.H
34  GeometricFieldFunctions.C
35 
36 \*---------------------------------------------------------------------------*/
37 
38 #ifndef GeometricField_H
39 #define GeometricField_H
40 
41 #include "GeometricFieldFwd.H"
42 #include "GeometricBoundaryField.H"
43 #include "GeometricFieldSources.H"
44 
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 
47 namespace Foam
48 {
49 
50 class dictionary;
51 
52 // Forward declaration of friend functions and operators
53 
54 template<class Type, class GeoMesh, template<class> class PrimitiveField>
55 Ostream& operator<<
56 (
57  Ostream&,
59 );
60 
61 template<class Type, class GeoMesh, template<class> class PrimitiveField>
62 Ostream& operator<<
63 (
64  Ostream&,
66 );
67 
68 
69 /*---------------------------------------------------------------------------*\
70  Class GeometricField Declaration
71 \*---------------------------------------------------------------------------*/
72 
73 template<class Type, class GeoMesh, template<class> class PrimitiveField>
74 class GeometricField
75 :
76  public DimensionedField<Type, GeoMesh, PrimitiveField>,
77  public OldTimeField<GeometricField<Type, GeoMesh, PrimitiveField>>
78 {
79  // Private Member Functions
80 
81  //- Read from file if it is present
82  bool readIfPresent();
83 
84 
85 public:
86 
87  // Public Typedefs
88 
89  //- Type of mesh on which this GeometricField is instantiated
90  typedef typename GeoMesh::Mesh Mesh;
91 
92  //- Type of the internal field from which this GeometricField is derived
94 
95  //- Type of the field from which this GeometricField is derived
97 
98  //- Type of the patch field of which the Boundary is composed
99  typedef typename GeoMesh::template PatchField<Type> Patch;
100 
101  //- Type of the boundary field
103 
104  //- Type of the field source of which the Sources is composed
105  typedef typename GeoMesh::template FieldSource<Type> Source;
106 
107  //- Type of the field sources
109 
110  //- Component type of the elements of the field
111  typedef typename Field<Type>::cmptType cmptType;
112 
113 
114 private:
115 
116  // Private Data
117 
118  //- Pointer to previous iteration (used for under-relaxation)
119  mutable GeometricField<Type, GeoMesh, Field>* fieldPrevIterPtr_;
120 
121  //- Boundary Type field containing boundary field values
122  Boundary boundaryField_;
123 
124  //- Type field sources containing field source values
125  Sources sources_;
126 
127 
128  // Private Member Functions
129 
130  //- Read the field from the dictionary
131  void readFields(const dictionary&);
132 
133  //- Read the field - create the field dictionary on-the-fly
134  void readFields();
135 
136 
137 public:
138 
139  //- Runtime type information
140  TypeName("GeometricField");
141 
142 
143  //- Declare friendship with other geometric fields
144  template<class Type2, class GeoMesh2, template<class> class PrimitiveField2>
145  friend class GeometricField;
146 
147 
148  // Static Member Functions
149 
150  //- Return a null geometric field
151  inline static const
153 
154 
155  // Constructors
156 
157  //- Constructor given IOobject, mesh, dimensions and patch field type.
158  // This allocates storage for the field but not values.
159  // Used only within this class to create TEMPORARY variables
161  (
162  const IOobject&,
163  const Mesh&,
164  const dimensionSet&,
165  const word& patchFieldType = Patch::calculatedType()
166  );
167 
168  //- Constructor given IOobject, mesh, dimensions and patch field types.
169  // This allocates storage for the field but not values.
170  // Used only within this class to create TEMPORARY variables
172  (
173  const IOobject&,
174  const Mesh&,
175  const dimensionSet&,
176  const wordList& wantedPatchTypes,
177  const wordList& actualPatchTypes = wordList(),
178  const HashTable<word>& fieldSourceTypes = HashTable<word>()
179  );
180 
181  //- Constructor given IOobject, mesh, dimensioned<Type>
182  // and patch field type.
184  (
185  const IOobject&,
186  const Mesh&,
187  const dimensioned<Type>&,
188  const word& patchFieldType = Patch::calculatedType()
189  );
190 
191  //- Constructor given IOobject, mesh, dimensioned<Type>
192  // and patch field types.
194  (
195  const IOobject&,
196  const Mesh&,
197  const dimensioned<Type>&,
198  const wordList& wantedPatchTypes,
199  const wordList& actualPatchTypes = wordList(),
200  const HashTable<word>& fieldSourceTypes = HashTable<word>()
201  );
202 
203  //- Constructor from components
205  (
206  const IOobject&,
207  const Internal&,
208  const PtrList<Patch>&,
210  );
211 
212  //- Constructor from components
214  (
215  const IOobject&,
216  const Mesh&,
217  const dimensionSet&,
218  const PrimitiveField<Type>&,
219  const PtrList<Patch>&,
221  );
222 
223  //- Construct and read given IOobject
224  GeometricField(const IOobject&, const Mesh&);
225 
226  //- Construct from dictionary
227  GeometricField(const IOobject&, const Mesh&, const dictionary&);
228 
229  //- Copy constructor
231 
232  //- Copy constructor
233  template<template<class> class PrimitiveField2>
234  explicit GeometricField
235  (
237  );
238 
239  //- Move constructor
241 
242  //- Construct as copy of tmp
244  (
246  );
247 
248  //- Construct as copy resetting IO parameters
249  template<template<class> class PrimitiveField2>
251  (
252  const IOobject&,
254  );
255 
256  //- Construct as copy of tmp resetting IO parameters
258  (
259  const IOobject&,
261  );
262 
263  //- Construct as copy resetting name
264  template<template<class> class PrimitiveField2>
266  (
267  const word& newName,
269  );
270 
271  //- Construct as copy of tmp resetting name
273  (
274  const word& newName,
276  );
277 
278  //- Construct as copy resetting IO parameters and patch field type
279  template<template<class> class PrimitiveField2>
281  (
282  const IOobject&,
284  const word& patchFieldType
285  );
286 
287  //- Construct as copy of tmp resetting IO parameters
288  // and patch field type
290  (
291  const IOobject&,
293  const word& patchFieldType
294  );
295 
296  //- Constructor from internal field and patch field type
297  template<template<class> class PrimitiveField2>
299  (
300  const IOobject&,
302  const word& patchFieldType
303  );
304 
305  //- Constructor from temporary internal field and patch field type
307  (
308  const IOobject&,
309  const tmp<Internal>&,
310  const word& patchFieldType
311  );
312 
313  //- Construct as copy resetting IO parameters and patch field types
314  template<template<class> class PrimitiveField2>
316  (
317  const IOobject&,
319  const wordList& patchFieldTypes,
320  const wordList& actualPatchTypes = wordList(),
321  const HashTable<word>& fieldSourceTypes = HashTable<word>()
322  );
323 
324  //- Construct as copy of tmp resetting IO parameters
325  // and patch field types
327  (
328  const IOobject&,
330  const wordList& patchFieldTypes,
331  const wordList& actualPatchTypes = wordList(),
332  const HashTable<word>& fieldSourceTypes = HashTable<word>()
333  );
334 
335  //- Construct from IOobject, internal field and patch field types
336  template<template<class> class PrimitiveField2>
338  (
339  const IOobject&,
341  const wordList& patchFieldTypes,
342  const wordList& actualPatchTypes = wordList(),
343  const HashTable<word>& fieldSourceTypes = HashTable<word>()
344  );
345 
346  //- Construct from IOobject, tmp internal field and patch field types
348  (
349  const IOobject&,
350  const tmp<Internal>&,
351  const wordList& patchFieldTypes,
352  const wordList& actualPatchTypes = wordList(),
353  const HashTable<word>& fieldSourceTypes = HashTable<word>()
354  );
355 
356  //- Clone
358 
359  //- Clone un-sliced
361  cloneUnSliced() const;
362 
363  //- Return a temporary field constructed from name,
364  // internal field and list of patch fields
366  (
367  const word& name,
368  const Internal&,
369  const PtrList<Patch>&,
371  );
372 
373  //- Return a temporary field constructed from name, mesh, dimensionSet
374  // and patch field type
376  (
377  const word& name,
378  const Mesh&,
379  const dimensionSet&,
380  const word& patchFieldType = Patch::calculatedType()
381  );
382 
383  //- Return a temporary field constructed from mesh, dimensioned<Type>
384  // and patch field type
386  (
387  const word& name,
388  const Mesh&,
389  const dimensioned<Type>&,
390  const word& patchFieldType = Patch::calculatedType()
391  );
392 
393  //- Return a temporary field constructed from mesh, dimensioned<Type>
394  // and patch field types
396  (
397  const word& name,
398  const Mesh&,
399  const dimensioned<Type>&,
400  const wordList& patchFieldTypes,
401  const wordList& actualPatchTypes = wordList(),
402  const HashTable<word>& fieldSourceTypes = HashTable<word>()
403  );
404 
405  //- Rename temporary field and return
407  (
408  const word& newName,
410  );
411 
412  //- Rename field, reset patch field type and return
413  template<template<class> class PrimitiveField2>
415  (
416  const word& newName,
418  const word& patchFieldType
419  );
420 
421  //- Rename temporary field, reset patch field type and return
423  (
424  const word& newName,
426  const word& patchFieldType
427  );
428 
429  //- Return a temporary field constructed from name,
430  // internal field and patch field type
431  template<template<class> class PrimitiveField2>
433  (
434  const word& name,
436  const word& patchFieldType
437  );
438 
439  //- Return a temporary field constructed from name,
440  // temporary internal field and patch field type
442  (
443  const word& name,
444  const tmp<Internal>&,
445  const word& patchFieldType
446  );
447 
448  //- Rename and reset patch fields types of field and return
449  template<template<class> class PrimitiveField2>
451  (
452  const word& newName,
454  const wordList& patchFieldTypes,
455  const wordList& actualPatchTypes = wordList(),
456  const HashTable<word>& fieldSourceTypes = HashTable<word>()
457  );
458 
459  //- Rename and reset patch fields types of temporary field and return
461  (
462  const word& newName,
464  const wordList& patchFieldTypes,
465  const wordList& actualPatchTypes = wordList(),
466  const HashTable<word>& fieldSourceTypes = HashTable<word>()
467  );
468 
469  //- Return a temporary field constructed from IOobject,
470  // internal field and patch field types
471  template<template<class> class PrimitiveField2>
473  (
474  const word& newName,
476  const wordList& patchFieldTypes,
477  const wordList& actualPatchTypes = wordList(),
478  const HashTable<word>& fieldSourceTypes = HashTable<word>()
479  );
480 
481  //- Return a temporary field constructed from IOobject,
482  // temporary internal field and patch field types
484  (
485  const word& newName,
486  const tmp<Internal>&,
487  const wordList& patchFieldTypes,
488  const wordList& actualPatchTypes = wordList(),
489  const HashTable<word>& fieldSourceTypes = HashTable<word>()
490  );
491 
492 
493  //- Destructor
494  virtual ~GeometricField();
495 
496 
497  // Member Functions
498 
499  //- Return a reference to the dimensioned internal field
500  // Note: this increments the event counter and checks the
501  // old-time fields; avoid in loops.
503 
504  //- Return a const-reference to the dimensioned internal field
505  inline const Internal& internalField() const;
506 
507  //- Return a const-reference to the dimensioned internal field
508  // of a "vol" field. Useful in the formulation of source-terms
509  // for FV equations
510  inline const Internal& v() const;
511 
512  //- Return a reference to the primitive field
513  // Note: this increments the event counter and checks the
514  // old-time fields; avoid in loops.
516 
517  //- Return a const-reference to the primitive field
518  inline const typename Internal::FieldType& primitiveField() const;
519 
520  //- Return a reference to the boundary field
521  // Note: this increments the event counter and checks the
522  // old-time fields; avoid in loops.
524 
525  //- Return a reference to the boundary field without storing old times
526  // Note: this increments the event counter; avoid in loops.
528 
529  //- Return const-reference to the boundary field
530  inline const Boundary& boundaryField() const;
531 
532  //- Return a reference to the sources
533  // Note: this increments the event counter and checks the
534  // old-time fields; avoid in loops.
535  Sources& sourcesRef();
536 
537  //- Return const-reference to the sources
538  inline const Sources& sources() const;
539 
540  //- Store the field as the previous iteration value
541  void storePrevIter() const;
542 
543  //- Delete the previous iteration field
544  void clearPrevIter();
545 
546  //- Return previous iteration field
548 
549  //- Use old-time methods from the base class
551 
552  //- Correct boundary field
554 
555  //- Reset the field contents to the given field
556  // Used for mesh to mesh mapping
557  template<template<class> class PrimitiveField2>
559 
560  //- Reset the field contents to the given tmp-field
561  // Used for mesh to mesh mapping
563 
564  //- Reset the field contents to the given tmp-field
565  // Used for mesh to mesh mapping
566  template<template<class> class PrimitiveField2>
568 
569  //- Does the field need a reference level for solution
570  bool needReference() const;
571 
572  //- Return a component of the field
574  (
575  const direction
576  ) const;
577 
578  //- WriteData member function required by regIOobject
579  bool writeData(Ostream&) const;
580 
581  //- Return transpose (only if it is a tensor field)
583 
584  //- Relax field (for steady-state solution).
585  // alpha >= 1 : no relaxation
586  // alpha < 1 : relaxation
587  void relax(const scalar alpha);
588 
589  //- Return the field relaxation factor read from fvSolution
590  // or 1 if not specified
591  scalar relaxationFactor() const;
592 
593  //- Relax current field with respect to the cached previous iteration.
594  // Relaxation factor is read from fvSolution
595  void relax();
596 
597  //- Relax given field with respect to the current field
598  // and reset the field to the result
599  template<template<class> class PrimitiveField2>
600  void relax
601  (
603  const scalar alpha
604  );
605 
606  //- Relax given field with respect to the current field
607  // and reset the field to the result
608  // Relaxation factor is read from fvSolution
609  template<template<class> class PrimitiveField2>
611 
612  //- Select the final iteration parameters if `final' is true
613  // by returning the field name + "Final"
614  // otherwise the standard parameters by returning the field name
615  word select(bool final) const;
616 
617  //- Helper function to write the min and max to an Ostream
618  void writeMinMax(Ostream& os) const;
619 
620 
621  // Member function *this operators
622 
623  void negate();
624 
625  //- Replace a component field of the field
626  template<template<class> class PrimitiveField2>
627  void replace
628  (
629  const direction,
631  );
632 
633  //- Replace a component field of the field
634  template<template<class> class PrimitiveField2>
635  void replace
636  (
637  const direction,
639  );
640 
641  //- Replace a component field of the field
642  void replace(const direction, const dimensioned<cmptType>&);
643 
644  void max(const dimensioned<Type>&);
645 
646  void min(const dimensioned<Type>&);
647 
648  void maxMin
649  (
650  const dimensioned<Type>& minDt,
651  const dimensioned<Type>& maxDt
652  );
653 
654 
655  // Member Operators
656 
657  //- Return a const-reference to the dimensioned internal field
658  // Useful in the formulation of source-terms for FV equations
659  inline const Internal& operator()() const;
660 
661  void operator=
662  (
664  );
665  void operator=
666  (
668  );
669  template<template<class> class PrimitiveField2>
670  void operator=
671  (
673  );
674  void operator=
675  (
677  );
678  template<template<class> class PrimitiveField2>
679  void operator=
680  (
682  );
683  void operator=(const dimensioned<Type>&);
684  void operator=(const zero&);
685 
686  template<template<class> class PrimitiveField2>
687  void operator==
688  (
690  );
691  void operator==
692  (
694  );
695  template<template<class> class PrimitiveField2>
696  void operator==
697  (
699  );
700  void operator==(const dimensioned<Type>&);
701  void operator==(const zero&);
702 
703  template<template<class> class PrimitiveField2>
704  void operator+=
705  (
707  );
708  template<template<class> class PrimitiveField2>
709  void operator+=
710  (
712  );
713  void operator+=(const dimensioned<Type>&);
714 
715  template<template<class> class PrimitiveField2>
716  void operator-=
717  (
719  );
720  template<template<class> class PrimitiveField2>
721  void operator-=
722  (
724  );
725  void operator-=(const dimensioned<Type>&);
726 
727  template<template<class> class PrimitiveField2>
728  void operator*=
729  (
731  );
732  template<template<class> class PrimitiveField2>
733  void operator*=
734  (
736  );
737  void operator*=(const dimensioned<scalar>&);
738 
739  template<template<class> class PrimitiveField2>
740  void operator/=
741  (
743  );
744  template<template<class> class PrimitiveField2>
745  void operator/=
746  (
748  );
749  void operator/=(const dimensioned<scalar>&);
750 
751 
752  // Ostream operators
753 
754  friend Ostream& operator<< <Type, GeoMesh, PrimitiveField>
755  (
756  Ostream&,
758  );
759 
760  friend Ostream& operator<< <Type, GeoMesh, PrimitiveField>
761  (
762  Ostream&,
764  );
765 };
766 
767 
768 template<class Type, class GeoMesh, template<class> class PrimitiveField>
769 Ostream& operator<<
770 (
771  Ostream&,
773 );
774 
775 
776 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
777 
778 } // End namespace Foam
779 
780 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
781 
782 #include "GeometricFieldI.H"
783 
784 #ifdef NoRepository
785  #include "GeometricField.C"
786 #endif
787 
788 #include "GeometricFieldFunctions.H"
789 
790 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
791 
792 #endif
793 
794 // ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
GeoMesh::Mesh Mesh
Type of mesh on which this DimensionedField is instantiated.
PrimitiveField< Type > FieldType
Type of the field from which this DimensionedField is derived.
pTraits< Type >::cmptType cmptType
Component type.
Definition: Field.H:98
MESH Mesh
Mesh type.
Definition: GeoMesh.H:62
Generic GeometricBoundaryField class.
Part of a geometric field used for setting the values associated with optional sources.
Generic GeometricField class.
void max(const dimensioned< Type > &)
tmp< GeometricField< Type, GeoMesh, Field > > T() const
Return transpose (only if it is a tensor field)
Sources & sourcesRef()
Return a reference to the sources.
bool writeData(Ostream &) const
WriteData member function required by regIOobject.
void writeMinMax(Ostream &os) const
Helper function to write the min and max to an Ostream.
void relax()
Relax current field with respect to the cached previous iteration.
GeometricFieldSources< Type, GeoMesh, PrimitiveField > Sources
Type of the field sources.
TypeName("GeometricField")
Runtime type information.
void maxMin(const dimensioned< Type > &minDt, const dimensioned< Type > &maxDt)
GeoMesh::Mesh Mesh
Type of mesh on which this GeometricField is instantiated.
const GeometricField< Type, GeoMesh, Field > & prevIter() const
Return previous iteration field.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
Internal::FieldType & primitiveFieldRef()
Return a reference to the primitive field.
Boundary & boundaryFieldRefNoStoreOldTimes()
Return a reference to the boundary field without storing old times.
tmp< GeometricField< cmptType, GeoMesh, Field > > component(const direction) const
Return a component of the field.
const Sources & sources() const
Return const-reference to the sources.
void operator=(const GeometricField< Type, GeoMesh, PrimitiveField > &)
DimensionedField< Type, GeoMesh, PrimitiveField > Base
Type of the field from which this GeometricField is derived.
const Internal & internalField() const
Return a const-reference to the dimensioned internal field.
void operator+=(const GeometricField< Type, GeoMesh, PrimitiveField2 > &)
void operator==(const GeometricField< Type, GeoMesh, PrimitiveField2 > &)
DimensionedField< Type, GeoMesh, PrimitiveField > Internal
Type of the internal field from which this GeometricField is derived.
void min(const dimensioned< Type > &)
const Internal & operator()() const
Return a const-reference to the dimensioned internal field.
GeoMesh::template FieldSource< Type > Source
Type of the field source of which the Sources is composed.
friend class GeometricField
Declare friendship with other geometric fields.
Internal & internalFieldRef()
Return a reference to the dimensioned internal field.
Field< Type >::cmptType cmptType
Component type of the elements of the field.
void replace(const direction, const GeometricField< cmptType, GeoMesh, PrimitiveField2 > &)
Replace a component field of the field.
tmp< GeometricField< Type, GeoMesh, PrimitiveField > > clone() const
Clone.
bool needReference() const
Does the field need a reference level for solution.
GeometricBoundaryField< Type, GeoMesh, PrimitiveField > Boundary
Type of the boundary field.
Boundary & boundaryFieldRef()
Return a reference to the boundary field.
virtual ~GeometricField()
Destructor.
const Internal::FieldType & primitiveField() const
Return a const-reference to the primitive field.
void reset(const GeometricField< Type, GeoMesh, PrimitiveField2 > &)
Reset the field contents to the given field.
scalar relaxationFactor() const
Return the field relaxation factor read from fvSolution.
const Internal & v() const
Return a const-reference to the dimensioned internal field.
Definition: volFieldsI.H:29
void clearPrevIter()
Delete the previous iteration field.
void storePrevIter() const
Store the field as the previous iteration value.
word select(bool final) const
Select the final iteration parameters if `final' is true.
void operator-=(const GeometricField< Type, GeoMesh, PrimitiveField2 > &)
void correctBoundaryConditions()
Correct boundary field.
void operator/=(const GeometricField< scalar, GeoMesh, PrimitiveField2 > &)
USING_OLD_TIME_FIELD(GeometricField)
Use old-time methods from the base class.
GeoMesh::template PatchField< Type > Patch
Type of the patch field of which the Boundary is composed.
void operator*=(const GeometricField< scalar, GeoMesh, PrimitiveField2 > &)
static tmp< GeometricField< Type, GeoMesh, PrimitiveField > > New(const word &name, const Internal &, const PtrList< Patch > &, const HashPtrTable< Source > &=HashPtrTable< Source >())
Return a temporary field constructed from name,.
tmp< GeometricField< Type, GeoMesh, PrimitiveField > > cloneUnSliced() const
Clone un-sliced.
A HashTable specialisation for hashing pointers.
Definition: HashPtrTable.H:67
An STL-conforming hash table.
Definition: HashTable.H:127
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Definition: IOobject.H:99
const word & name() const
Return name.
Definition: IOobject.H:307
Class to add into field types to provide old-time storage and retrieval.
Definition: OldTimeField.H:113
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:57
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
Definition: PtrList.H:75
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
Definition: dictionary.H:162
Dimension set for the base types.
Definition: dimensionSet.H:125
Generic dimensioned Type class.
A class for managing temporary objects.
Definition: tmp.H:55
A class for handling words, derived from string.
Definition: word.H:62
A class representing the concept of 0 used to avoid unnecessary manipulations for objects that are kn...
Definition: zero.H:50
volScalarField alpha(IOobject("alpha", runTime.name(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE), lambda *max(Ua &U, zeroSensitivity))
Namespace for OpenFOAM.
List< word > wordList
A List of words.
Definition: fileName.H:54
word patchFieldType(const PatchField &pf)
uint8_t direction
Definition: direction.H:45