faPatchField.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) 2016-2017 Wikki Ltd
9  Copyright (C) 2019-2024 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::faPatchField
29 
30 Description
31  faPatchField<Type> abstract base class. This class gives a fat-interface
32  to all derived classes covering all possible ways in which they might be
33  used. The first level of derivation is to basic patchFields which cover
34  zero-gradient, fixed-gradient, fixed-value and mixed conditions. The next
35  level of derivation covers all the specialised typed with specific
36  evaluation procedures, particularly with respect to specific fields.
37 
38 Author
39  Zeljko Tukovic, FMENA
40  Hrvoje Jasak, Wikki Ltd.
41 
42 SourceFiles
43  faPatchField.C
44  faPatchFieldBase.C
45  faPatchFieldNew.C
46 
47 \*---------------------------------------------------------------------------*/
48 
49 #ifndef Foam_faPatchField_H
50 #define Foam_faPatchField_H
51 
52 #include "faPatch.H"
53 #include "DimensionedField.H"
54 #include "fieldTypes.H"
55 #include "scalarField.H"
56 
57 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
58 
59 namespace Foam
60 {
61 
62 // Forward Declarations
63 class dictionary;
64 class objectRegistry;
65 class faPatchFieldMapper;
66 class areaMesh;
67 
68 template<class Type> class faPatchField;
69 template<class Type> class calculatedFaPatchField;
70 template<class Type> class zeroGradientFaPatchField;
71 
72 template<class Type>
73 Ostream& operator<<(Ostream&, const faPatchField<Type>&);
74 
75 /*---------------------------------------------------------------------------*\
76  Class faPatchFieldBase Declaration
77 \*---------------------------------------------------------------------------*/
78 
79 //- Template invariant parts for faPatchField
80 class faPatchFieldBase
81 {
82  // Private Data
83 
84  //- Reference to patch
85  const faPatch& patch_;
86 
87  //- Update index used so that updateCoeffs is called only once during
88  //- the construction of the matrix
89  bool updated_;
90 
91  //- Optional patch type
92  // Used to allow specified boundary conditions to be applied
93  // to constraint patches by providing the constraint
94  // patch type as 'patchType'
95  word patchType_;
96 
97 
98 protected:
99 
100  // Protected Member Functions
101 
102  //- Read dictionary entries.
103  // Useful when initially constructed without a dictionary
104  virtual void readDict(const dictionary& dict);
105 
106 
107 public:
108 
109  //- Debug switch to disallow the use of generic faPatchField
110  static int disallowGenericPatchField;
111 
112  //- Runtime type information
113  TypeName("faPatchField");
114 
115 
116  // Constructors
117 
118  //- Construct from patch
119  explicit faPatchFieldBase(const faPatch& p);
120 
121  //- Construct from patch and patch type
122  explicit faPatchFieldBase(const faPatch& p, const word& patchType);
123 
124  //- Construct from patch and dictionary
125  faPatchFieldBase(const faPatch& p, const dictionary& dict);
126 
127  //- Copy construct with new patch
128  faPatchFieldBase(const faPatchFieldBase& rhs, const faPatch& p);
129 
130  //- Copy construct
132 
133 
134  //- Destructor
135  virtual ~faPatchFieldBase() = default;
136 
137 
138  // Static Member Functions
139 
140  //- The type name for \c empty patch fields
141  static const word& emptyType() noexcept
142  {
144  }
145 
146  //- The type name for \c calculated patch fields
147  static const word& calculatedType() noexcept
148  {
150  }
151 
152  //- The type name for \c extrapolatedCalculated patch fields
153  //- combines \c zero-gradient and \c calculated
154  static const word& extrapolatedCalculatedType() noexcept
155  {
157  }
158 
159  //- The type name for \c zeroGradient patch fields
160  static const word& zeroGradientType() noexcept
161  {
163  }
164 
165 
166  // Member Functions
167 
168  // Attributes
169 
170  //- True if the patch field fixes a value.
171  // Needed to check if a level has to be specified while solving
172  // Poissons equations.
173  virtual bool fixesValue() const
174  {
175  return false;
176  }
177 
178  //- True if the patch field is coupled
179  virtual bool coupled() const
180  {
181  return false;
182  }
184 
185  // Access
186 
187  //- The associated objectRegistry
188  const objectRegistry& db() const;
189 
190  //- Return the patch
191  const faPatch& patch() const noexcept
192  {
193  return patch_;
194  }
195 
196  //- The optional patch type
197  const word& patchType() const noexcept
198  {
199  return patchType_;
200  }
201 
202  //- The optional patch type
203  word& patchType() noexcept
204  {
205  return patchType_;
206  }
208 
209  // Solution
210 
211  //- True if the boundary condition has already been updated
212  bool updated() const noexcept
213  {
214  return updated_;
215  }
216 
217  //- Set updated state
218  void setUpdated(bool state) noexcept
219  {
220  updated_ = state;
221  }
222 
223 
224  // Check
225 
226  //- Check that patches are identical
227  void checkPatch(const faPatchFieldBase& rhs) const;
228 };
229 
230 
231 /*---------------------------------------------------------------------------*\
232  Class faPatchField Declaration
233 \*---------------------------------------------------------------------------*/
234 
235 template<class Type>
236 class faPatchField
237 :
238  public faPatchFieldBase,
239  public Field<Type>
240 {
241 public:
242 
243  // Public Data Types
244 
245  //- The patch type for the patch field
246  typedef faPatch Patch;
248  //- The value_type for the patch field
249  typedef Type value_type;
250 
251  //- The internal field type associated with the patch field
253 
254  //- Type for a \em calculated patch
256 
257 
258 private:
259 
260  // Private Data
261 
262  //- Reference to internal field
263  const DimensionedField<Type, areaMesh>& internalField_;
264 
265 
266 protected:
267 
268  // Protected Member Functions
269 
270  //- Read the "value" entry into \c *this.
271  // The reading can be optional (default), mandatory etc.
272  // \returns True on success
273  bool readValueEntry
274  (
275  const dictionary& dict,
277  );
278 
279  //- Write *this field as a "value" entry
280  void writeValueEntry(Ostream& os) const
281  {
282  Field<Type>::writeEntry("value", os);
283  }
284 
285  //- Assign the patch field from the internal field
286  void extrapolateInternal();
287 
288 
289 public:
290 
291  // Declare run-time constructor selection tables
292 
294  (
295  tmp,
296  faPatchField,
297  patch,
298  (
299  const faPatch& p,
301  ),
302  (p, iF)
303  );
304 
306  (
307  tmp,
309  patchMapper,
310  (
311  const faPatchField<Type>& ptf,
312  const faPatch& p,
314  const faPatchFieldMapper& m
315  ),
316  (dynamic_cast<const faPatchFieldType&>(ptf), p, iF, m)
317  );
318 
320  (
321  tmp,
322  faPatchField,
323  dictionary,
324  (
325  const faPatch& p,
327  const dictionary& dict
328  ),
329  (p, iF, dict)
330  );
331 
332 
333  // Constructors
334 
335  //- Construct from patch and internal field
337  (
338  const faPatch&,
340  );
341 
342  //- Construct from patch, internal field and value
344  (
345  const faPatch&,
347  const Type& value
348  );
349 
350  //- Construct from patch, internal field and patch field
352  (
353  const faPatch&,
355  const Field<Type>& pfld
356  );
357 
358  //- Construct from patch, internal field and patch field
360  (
361  const faPatch&,
363  Field<Type>&& pfld
364  );
365 
366  //- Construct from patch, internal field and dictionary.
367  // \note older versions have always treated "value" as optional
369  (
370  const faPatch&,
372  const dictionary& dict,
375  );
376 
377  //- Construct by mapping the given faPatchField onto a new patch
379  (
380  const faPatchField<Type>&,
381  const faPatch&,
383  const faPatchFieldMapper&
384  );
385 
386  //- Construct as copy
388 
389  //- Construct as copy setting internal field reference
391  (
392  const faPatchField<Type>&,
394  );
395 
396  //- Clone patch field with its own internal field reference
397  virtual tmp<faPatchField<Type>> clone() const
398  {
399  return tmp<faPatchField<Type>>
400  (
401  new faPatchField<Type>(*this, this->internalField_)
402  );
403  }
404 
405  //- Clone with an internal field reference
407  (
409  ) const
410  {
411  return tmp<faPatchField<Type>>
412  (
413  new faPatchField<Type>(*this, iF)
414  );
415  }
416 
417 
418  // Factory Methods
419 
420  //- Clone a patch field with its own internal field reference
421  template<class DerivedPatchField>
422  static tmp<faPatchField<Type>> Clone
423  (
424  const DerivedPatchField& pf
425  )
426  {
427  return tmp<faPatchField<Type>>
428  (
429  new DerivedPatchField(pf)
430  );
431  }
432 
433  //- Clone a patch field with an internal field reference
434  template<class DerivedPatchField>
435  static tmp<faPatchField<Type>> Clone
436  (
437  const DerivedPatchField& pf,
438  const DimensionedField<Type, areaMesh>& iF
439  )
440  {
441  return tmp<faPatchField<Type>>
442  (
443  new DerivedPatchField(pf, iF)
444  );
445  }
446 
447  //- Return a pointer to a new patchField created on freestore given
448  //- patch and internal field
449  // (does not set the patch field values)
450  static tmp<faPatchField<Type>> New
451  (
452  const word& patchFieldType,
453  const word& actualPatchType,
454  const faPatch&,
455  const DimensionedField<Type, areaMesh>&
456  );
457 
458  //- Return a pointer to a new patchField created on freestore given
459  //- patch and internal field
460  // (does not set the patch field values)
461  static tmp<faPatchField<Type>> New
462  (
463  const word& patchFieldType,
464  const faPatch&,
465  const DimensionedField<Type, areaMesh>&
466  );
467 
468  //- Return a pointer to a new patchField created on freestore from
469  //- a given faPatchField mapped onto a new patch
470  static tmp<faPatchField<Type>> New
471  (
472  const faPatchField<Type>&,
473  const faPatch&,
474  const DimensionedField<Type, areaMesh>&,
475  const faPatchFieldMapper&
476  );
477 
478  //- Return a pointer to a new patchField created on freestore
479  //- from dictionary
480  static tmp<faPatchField<Type>> New
481  (
482  const faPatch&,
484  const dictionary&
485  );
486 
487  //- Return a pointer to a new calculatedFaPatchField created on
488  //- freestore without setting patchField values
490  (
491  const faPatch& p
492  );
493 
494  //- Return a pointer to a new calculatedFaPatchField created on
495  //- freestore without setting patchField values
496  template<class AnyType>
498  (
499  const faPatchField<AnyType>& pf
500  );
501 
502 
503  //- Destructor
504  virtual ~faPatchField() = default;
505 
506 
507  // Member Functions
508 
509  // Access
510 
511  //- Return const-reference to the dimensioned internal field
513  {
514  return internalField_;
515  }
516 
517  //- Return const-reference to the internal field values
518  const Field<Type>& primitiveField() const noexcept
519  {
520  return internalField_;
521  }
522 
523 
524  // Mapping
525 
526  //- Map (and resize as needed) from self given a mapping object
527  virtual void autoMap
528  (
529  const faPatchFieldMapper&
530  );
531 
532  //- Reverse map the given faPatchField onto this faPatchField
533  virtual void rmap
534  (
535  const faPatchField<Type>&,
536  const labelList&
537  );
538 
539 
540  // Evaluation
541 
542  //- Return patch-normal gradient
543  virtual tmp<Field<Type>> snGrad() const;
544 
545  //- Return internal field next to patch
546  virtual tmp<Field<Type>> patchInternalField() const;
547 
548  //- Extract internal field next to patch
549  // \param [out] pfld The extracted patch field.
550  virtual void patchInternalField(Field<Type>& pfld) const;
551 
552  //- Return patchField on the opposite patch of a coupled patch
553  virtual tmp<Field<Type>> patchNeighbourField() const
554  {
556  return *this;
557  }
558 
559  //- Update the coefficients associated with the patch field
560  // Sets Updated to true
561  virtual void updateCoeffs();
562 
563  //- Initialise the evaluation of the patch field
564  virtual void initEvaluate
565  (
566  const Pstream::commsTypes commsType =
568  )
569  {}
570 
571  //- Evaluate the patch field, sets updated() to false
572  virtual void evaluate
573  (
574  const Pstream::commsTypes commsType =
576  );
577 
578  //- Initialise the evaluation of the patch field after a local
579  // operation
580  virtual void initEvaluateLocal
581  (
582  const Pstream::commsTypes commsType =
584  )
585  {}
586 
587  //- Evaluate the patch field after a local operation (e.g. *=)
588  virtual void evaluateLocal
589  (
590  const Pstream::commsTypes commsType =
592  )
593  {}
594 
595  //- Return the matrix diagonal coefficients corresponding to the
596  //- evaluation of the value of this patchField with given weights
597  virtual tmp<Field<Type>> valueInternalCoeffs
598  (
599  const tmp<Field<scalar>>&
600  ) const
601  {
603  return *this;
604  }
605 
606  //- Return the matrix source coefficients corresponding to the
607  //- evaluation of the value of this patchField with given weights
608  virtual tmp<Field<Type>> valueBoundaryCoeffs
609  (
610  const tmp<Field<scalar>>&
611  ) const
612  {
614  return *this;
615  }
616 
617  //- Return the matrix diagonal coefficients corresponding to the
618  //- evaluation of the gradient of this patchField
619  virtual tmp<Field<Type>> gradientInternalCoeffs() const
620  {
622  return *this;
623  }
624 
625  //- Return the matrix source coefficients corresponding to the
626  //- evaluation of the gradient of this patchField
627  virtual tmp<Field<Type>> gradientBoundaryCoeffs() const
628  {
630  return *this;
631  }
632 
633 
634  // Other
635 
636  //- Write
637  virtual void write(Ostream& os) const;
638 
639  //- Check against given patch field
640  void check(const faPatchField<Type>&) const;
641 
642 
643  // Member Operators
644 
645  virtual void operator=(const UList<Type>&);
646 
647  virtual void operator=(const faPatchField<Type>&);
648  virtual void operator+=(const faPatchField<Type>&);
649  virtual void operator-=(const faPatchField<Type>&);
650  virtual void operator*=(const faPatchField<scalar>&);
651  virtual void operator/=(const faPatchField<scalar>&);
652 
653  virtual void operator+=(const Field<Type>&);
654  virtual void operator-=(const Field<Type>&);
655 
656  virtual void operator*=(const Field<scalar>&);
657  virtual void operator/=(const Field<scalar>&);
658 
659  virtual void operator=(const Type&);
660  virtual void operator+=(const Type&);
661  virtual void operator-=(const Type&);
662  virtual void operator*=(const scalar);
663  virtual void operator/=(const scalar);
664 
665 
666  // Force an assignment irrespective of form of patch
667 
668  virtual void operator==(const faPatchField<Type>&);
669  virtual void operator==(const Field<Type>&);
670  virtual void operator==(const Type&);
671 
672  // Prevent automatic comparison rewriting (c++20)
673  bool operator!=(const faPatchField<Type>&) const = delete;
674  bool operator!=(const Field<Type>&) const = delete;
675  bool operator!=(const Type&) const = delete;
676 
677 
678  // Ostream Operator
679 
680  friend Ostream& operator<< <Type>(Ostream&, const faPatchField<Type>&);
681 };
682 
683 
684 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
685 
686 } // End namespace Foam
687 
688 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
689 
690 #ifdef NoRepository
691  #include "faPatchField.C"
692  #include "faPatchFieldNew.C"
693  #include "calculatedFaPatchField.H"
694  #include "zeroGradientFaPatchField.H"
695 #endif
696 
697 // Runtime selection macros
698 #include "faPatchFieldMacros.H"
699 
700 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
701 
702 #endif
703 
704 // ************************************************************************* //
virtual void operator+=(const faPatchField< Type > &)
Definition: faPatchField.C:289
virtual void autoMap(const faPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
Definition: faPatchField.C:216
static tmp< faPatchField< Type > > New(const word &patchFieldType, const word &actualPatchType, const faPatch &, const DimensionedField< Type, areaMesh > &)
Return a pointer to a new patchField created on freestore given patch and internal field...
dictionary dict
faPatchFieldBase(const faPatch &p)
Construct from patch.
TypeName("faPatchField")
Runtime type information.
virtual void operator-=(const faPatchField< Type > &)
Definition: faPatchField.C:300
const faPatch & patch() const noexcept
Return the patch.
Definition: faPatchField.H:231
const word zeroGradientType
A zeroGradient patch field type.
void check(const faPatchField< Type > &) const
Check against given patch field.
Definition: faPatchField.C:187
virtual void write(Ostream &os) const
Write.
Definition: faPatchField.C:253
commsTypes
Communications types.
Definition: UPstream.H:77
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
virtual tmp< Field< Type > > snGrad() const
Return patch-normal gradient.
Definition: faPatchField.C:194
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Evaluate the patch field, sets updated() to false.
Definition: faPatchField.C:241
virtual tmp< faPatchField< Type > > clone() const
Clone patch field with its own internal field reference.
Definition: faPatchField.H:483
virtual void readDict(const dictionary &dict)
Read dictionary entries.
declareRunTimeSelectionTable(tmp, faPatchField, patch,(const faPatch &p, const DimensionedField< Type, areaMesh > &iF),(p, iF))
const DimensionedField< Type, areaMesh > & internalField() const noexcept
Return const-reference to the dimensioned internal field.
Definition: faPatchField.H:622
static const word & extrapolatedCalculatedType() noexcept
The type name for extrapolatedCalculated patch fields combines zero-gradient and calculated.
Definition: faPatchField.H:183
Template invariant parts for faPatchField.
Definition: faPatchField.H:77
void writeValueEntry(Ostream &os) const
Write *this field as a "value" entry.
Definition: faPatchField.H:345
void writeEntry(const word &keyword, Ostream &os) const
Write the field as a dictionary entry.
Definition: Field.C:720
void extrapolateInternal()
Assign the patch field from the internal field.
Definition: faPatchField.C:60
virtual tmp< Field< Type > > valueBoundaryCoeffs(const tmp< Field< scalar >> &) const
Return the matrix source coefficients corresponding to the evaluation of the value of this patchField...
Definition: faPatchField.H:750
Author Zeljko Tukovic, FMENA Hrvoje Jasak, Wikki Ltd.
faPatchField<Type> abstract base class. This class gives a fat-interface to all derived classes cover...
Definition: areaFieldsFwd.H:46
faPatch Patch
The patch type for the patch field.
Definition: faPatchField.H:298
virtual ~faPatchField()=default
Destructor.
static const word & zeroGradientType() noexcept
The type name for zeroGradient patch fields.
Definition: faPatchField.H:191
const objectRegistry & db() const
The associated objectRegistry.
const word calculatedType
A calculated patch field type.
void setUpdated(bool state) noexcept
Set updated state.
Definition: faPatchField.H:266
Macros for creating faPatchField types.
bool operator!=(const faPatchField< Type > &) const =delete
virtual void operator/=(const faPatchField< scalar > &)
Definition: faPatchField.C:322
virtual bool fixesValue() const
True if the patch field fixes a value.
Definition: faPatchField.H:207
Generic templated field type.
Definition: Field.H:62
A class for handling words, derived from Foam::string.
Definition: word.H:63
virtual tmp< Field< Type > > patchNeighbourField() const
Return patchField on the opposite patch of a coupled patch.
Definition: faPatchField.H:678
DimensionedField< Type, areaMesh > Internal
The internal field type associated with the patch field.
Definition: faPatchField.H:308
virtual tmp< Field< Type > > gradientInternalCoeffs() const
Return the matrix diagonal coefficients corresponding to the evaluation of the gradient of this patch...
Definition: faPatchField.H:762
virtual void initEvaluateLocal(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Initialise the evaluation of the patch field after a local.
Definition: faPatchField.H:716
const Field< Type > & primitiveField() const noexcept
Return const-reference to the internal field values.
Definition: faPatchField.H:630
const word & patchType() const noexcept
The optional patch type.
Definition: faPatchField.H:239
bool updated() const noexcept
True if the boundary condition has already been updated.
Definition: faPatchField.H:258
virtual tmp< Field< Type > > valueInternalCoeffs(const tmp< Field< scalar >> &) const
Return the matrix diagonal coefficients corresponding to the evaluation of the value of this patchFie...
Definition: faPatchField.H:737
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
static tmp< faPatchField< Type > > Clone(const DerivedPatchField &pf)
Clone a patch field with its own internal field reference.
Definition: faPatchField.H:513
static int disallowGenericPatchField
Debug switch to disallow the use of generic faPatchField.
Definition: faPatchField.H:119
const word emptyType
An empty patch field type.
OBJstream os(runTime.globalPath()/outputName)
Finite area patch class. Used for 2-D non-Euclidian finite area method.
Definition: faPatch.H:72
static tmp< faPatchField< Type > > NewCalculatedType(const faPatch &p)
Return a pointer to a new calculatedFaPatchField created on freestore without setting patchField valu...
static const word & calculatedType() noexcept
The type name for calculated patch fields.
Definition: faPatchField.H:174
virtual tmp< Field< Type > > patchInternalField() const
Return internal field next to patch.
Definition: faPatchField.C:202
void checkPatch(const faPatchFieldBase &rhs) const
Check that patches are identical.
static const word & emptyType() noexcept
The type name for empty patch fields.
Definition: faPatchField.H:166
virtual void rmap(const faPatchField< Type > &, const labelList &)
Reverse map the given faPatchField onto this faPatchField.
Definition: faPatchField.C:224
virtual tmp< Field< Type > > gradientBoundaryCoeffs() const
Return the matrix source coefficients corresponding to the evaluation of the gradient of this patchFi...
Definition: faPatchField.H:772
Type value_type
The value_type for the patch field.
Definition: faPatchField.H:303
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
Definition: faPatchField.C:234
virtual void operator=(const UList< Type > &)
Definition: faPatchField.C:268
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
virtual bool coupled() const
True if the patch field is coupled.
Definition: faPatchField.H:215
virtual void operator==(const faPatchField< Type > &)
Definition: faPatchField.C:423
Reading is optional [identical to READ_IF_PRESENT].
virtual ~faPatchFieldBase()=default
Destructor.
volScalarField & p
A class for managing temporary objects.
Definition: HashPtrTable.H:50
Registry of regIOobjects.
"buffered" : (MPI_Bsend, MPI_Recv)
A FieldMapper for finite-area patch fields.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
Definition: error.H:696
const word extrapolatedCalculatedType
A combined zero-gradient and calculated patch field type.
virtual void evaluateLocal(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Evaluate the patch field after a local operation (e.g. *=)
Definition: faPatchField.H:726
bool readValueEntry(const dictionary &dict, IOobjectOption::readOption readOpt=IOobjectOption::LAZY_READ)
Read the "value" entry into *this.
Definition: faPatchField.C:30
calculatedFaPatchField< Type > Calculated
Type for a calculated patch.
Definition: faPatchField.H:313
Namespace for OpenFOAM.
faPatchField(const faPatch &, const DimensionedField< Type, areaMesh > &)
Construct from patch and internal field.
Definition: faPatchField.C:70
virtual void operator*=(const faPatchField< scalar > &)
Definition: faPatchField.C:311
virtual void initEvaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Initialise the evaluation of the patch field.
Definition: faPatchField.H:695
readOption
Enumeration defining read preferences.