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-2025 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  //- True if the type does not correspond to the constraint type
209  virtual bool constraintOverride() const
210  {
211  return !patchType_.empty() && patchType_ != type();
212  }
213 
214 
215  // Solution
216 
217  //- True if the boundary condition has already been updated
218  bool updated() const noexcept
219  {
220  return updated_;
221  }
222 
223  //- Set updated state
224  void setUpdated(bool state) noexcept
225  {
226  updated_ = state;
227  }
228 
229  //- True if the matrix has already been manipulated.
230  //- Currently always false for faPatchField
232  {
233  return false;
234  }
235 
236  //- Set matrix manipulated state. Currently a no-op for faPatchField
237  void setManipulated(bool state) noexcept
238  {}
240 
241  // Check
242 
243  //- Check that patches are identical
244  void checkPatch(const faPatchFieldBase& rhs) const;
245 };
246 
248 /*---------------------------------------------------------------------------*\
249  Class faPatchField Declaration
250 \*---------------------------------------------------------------------------*/
251 
252 template<class Type>
253 class faPatchField
254 :
256  public Field<Type>
257 {
258 public:
259 
260  // Public Data Types
261 
262  //- The patch type for the patch field
263  typedef faPatch Patch;
264 
265  //- The value_type for the patch field
266  typedef Type value_type;
267 
268  //- The component type for patch field
269  typedef typename pTraits<Type>::cmptType cmptType;
270 
271  //- The internal field type associated with the patch field
273 
274  //- Type for a \em calculated patch
276 
277 
278 private:
279 
280  // Private Data
281 
282  //- Reference to internal field
283  const DimensionedField<Type, areaMesh>& internalField_;
284 
285 
286 protected:
287 
288  // Protected Member Functions
289 
290  //- Read the "value" entry into \c *this.
291  // The reading can be optional (default), mandatory etc.
292  // \returns True on success
293  bool readValueEntry
294  (
295  const dictionary& dict,
297  );
298 
299  //- Write *this field as a "value" entry
300  void writeValueEntry(Ostream& os) const
301  {
302  Field<Type>::writeEntry("value", os);
303  }
304 
305  //- Assign the patch field from the internal field
306  void extrapolateInternal();
307 
308 
309 public:
310 
311  // Declare run-time constructor selection tables
312 
314  (
315  tmp,
316  faPatchField,
317  patch,
318  (
319  const faPatch& p,
321  ),
322  (p, iF)
323  );
324 
326  (
327  tmp,
328  faPatchField,
329  patchMapper,
330  (
331  const faPatchField<Type>& ptf,
332  const faPatch& p,
334  const faPatchFieldMapper& m
335  ),
336  (dynamic_cast<const faPatchFieldType&>(ptf), p, iF, m)
337  );
338 
340  (
342  faPatchField,
343  dictionary,
344  (
345  const faPatch& p,
347  const dictionary& dict
348  ),
349  (p, iF, dict)
350  );
351 
352 
353  // Constructors
354 
355  //- Construct from patch and internal field
357  (
358  const faPatch&,
360  );
361 
362  //- Construct from patch, internal field and value
364  (
365  const faPatch&,
367  const Type& value
368  );
369 
370  //- Construct from patch, internal field and patch field
372  (
373  const faPatch&,
375  const Field<Type>& pfld
376  );
377 
378  //- Construct from patch, internal field and patch field
380  (
381  const faPatch&,
383  Field<Type>&& pfld
384  );
385 
386  //- Construct from patch, internal field and dictionary.
387  // \note older versions have always treated "value" as optional
389  (
390  const faPatch&,
392  const dictionary& dict,
395  );
396 
397  //- Construct by mapping the given faPatchField onto a new patch
399  (
400  const faPatchField<Type>&,
401  const faPatch&,
403  const faPatchFieldMapper&
404  );
405 
406  //- Construct as copy
408 
409  //- Construct as copy setting internal field reference
411  (
412  const faPatchField<Type>&,
414  );
415 
416  //- Clone patch field with its own internal field reference
417  virtual tmp<faPatchField<Type>> clone() const
418  {
419  return tmp<faPatchField<Type>>
420  (
421  new faPatchField<Type>(*this, this->internalField_)
422  );
423  }
424 
425  //- Clone with an internal field reference
427  (
429  ) const
430  {
431  return tmp<faPatchField<Type>>
432  (
433  new faPatchField<Type>(*this, iF)
434  );
435  }
436 
437 
438  // Factory Methods
439 
440  //- Clone a patch field with its own internal field reference
441  template<class DerivedPatchField>
442  static tmp<faPatchField<Type>> Clone
443  (
444  const DerivedPatchField& pf
445  )
446  {
447  return tmp<faPatchField<Type>>
448  (
449  new DerivedPatchField(pf)
450  );
451  }
452 
453  //- Clone a patch field with an internal field reference
454  template<class DerivedPatchField>
455  static tmp<faPatchField<Type>> Clone
456  (
457  const DerivedPatchField& pf,
458  const DimensionedField<Type, areaMesh>& iF
459  )
460  {
461  return tmp<faPatchField<Type>>
462  (
463  new DerivedPatchField(pf, iF)
464  );
465  }
466 
467  //- Return a pointer to a new patchField created on freestore given
468  //- patch and internal field
469  // (does not set the patch field values)
470  static tmp<faPatchField<Type>> New
471  (
472  const word& patchFieldType,
473  const word& actualPatchType,
474  const faPatch&,
475  const DimensionedField<Type, areaMesh>&
476  );
477 
478  //- Return a pointer to a new patchField created on freestore given
479  //- patch and internal field
480  // (does not set the patch field values)
481  static tmp<faPatchField<Type>> New
482  (
483  const word& patchFieldType,
484  const faPatch&,
485  const DimensionedField<Type, areaMesh>&
486  );
487 
488  //- Return a pointer to a new patchField created on freestore from
489  //- a given faPatchField mapped onto a new patch
490  static tmp<faPatchField<Type>> New
491  (
492  const faPatchField<Type>&,
493  const faPatch&,
494  const DimensionedField<Type, areaMesh>&,
495  const faPatchFieldMapper&
496  );
497 
498  //- Return a pointer to a new patchField created on freestore
499  //- from dictionary
500  static tmp<faPatchField<Type>> New
501  (
502  const faPatch&,
503  const DimensionedField<Type, areaMesh>&,
504  const dictionary&
505  );
506 
507  //- Return a pointer to a new calculatedFaPatchField created on
508  //- freestore without setting patchField values
509  static tmp<faPatchField<Type>> NewCalculatedType
510  (
511  const faPatch& p
512  );
513 
514  //- Return a pointer to a new calculatedFaPatchField created on
515  //- freestore without setting patchField values
516  template<class AnyType>
518  (
519  const faPatchField<AnyType>& pf
520  );
521 
522 
523  //- Destructor
524  virtual ~faPatchField() = default;
525 
526 
527  // Member Functions
528 
529  // Access
530 
531  //- Return const-reference to the dimensioned internal field
533  {
534  return internalField_;
535  }
536 
537  //- Return const-reference to the internal field values
538  const Field<Type>& primitiveField() const noexcept
539  {
540  return internalField_;
541  }
542 
543 
544  // Mapping
545 
546  //- Map (and resize as needed) from self given a mapping object
547  virtual void autoMap
548  (
549  const faPatchFieldMapper&
550  );
551 
552  //- Reverse map the given faPatchField onto this faPatchField
553  virtual void rmap
554  (
555  const faPatchField<Type>&,
556  const labelList&
557  );
558 
559 
560  // Evaluation Functions
561 
562  //- Return patch-normal gradient
563  virtual tmp<Field<Type>> snGrad() const;
564 
565  //- Return internal field next to patch
566  virtual tmp<Field<Type>> patchInternalField() const;
567 
568  //- Retrieve internal field next to patch
569  // \param [out] pfld The extracted patch field.
570  virtual void patchInternalField(UList<Type>& pfld) const;
571 
572  //- Return patchField on the opposite patch of a coupled patch
573  virtual tmp<Field<Type>> patchNeighbourField() const
574  {
576  return *this;
577  }
578 
579  //- Retrieve patchField on the opposite patch of a coupled patch
580  virtual void patchNeighbourField(UList<Type>&) const
581  {
583  }
584 
585  //- Update the coefficients associated with the patch field
586  // Sets Updated to true
587  virtual void updateCoeffs();
588 
589  //- Initialise the evaluation of the patch field
590  virtual void initEvaluate
591  (
592  const Pstream::commsTypes commsType =
594  )
595  {}
596 
597  //- Evaluate the patch field, sets updated() to false
598  virtual void evaluate
599  (
600  const Pstream::commsTypes commsType =
602  );
603 
604  //- Initialise the evaluation of the patch field after a local
605  // operation
606  virtual void initEvaluateLocal
607  (
608  const Pstream::commsTypes commsType =
610  )
611  {}
612 
613  //- Evaluate the patch field after a local operation (e.g. *=)
614  virtual void evaluateLocal
615  (
616  const Pstream::commsTypes commsType =
618  )
619  {}
620 
621  //- Return the matrix diagonal coefficients corresponding to the
622  //- evaluation of the value of this patchField with given weights
623  virtual tmp<Field<Type>> valueInternalCoeffs
624  (
625  const tmp<Field<scalar>>&
626  ) const
627  {
629  return *this;
630  }
631 
632  //- Return the matrix source coefficients corresponding to the
633  //- evaluation of the value of this patchField with given weights
634  virtual tmp<Field<Type>> valueBoundaryCoeffs
635  (
636  const tmp<Field<scalar>>&
637  ) const
638  {
640  return *this;
641  }
642 
643  //- Return the matrix diagonal coefficients corresponding to the
644  //- evaluation of the gradient of this patchField
645  virtual tmp<Field<Type>> gradientInternalCoeffs() const
646  {
648  return *this;
649  }
651  //- Return the matrix source coefficients corresponding to the
652  //- evaluation of the gradient of this patchField
653  virtual tmp<Field<Type>> gradientBoundaryCoeffs() const
654  {
656  return *this;
657  }
659 
660  // Other
661 
662  //- Write
663  virtual void write(Ostream& os) const;
664 
665  //- Check against given patch field
666  void check(const faPatchField<Type>&) const;
667 
668 
669  // Member Operators
670 
671  virtual void operator=(const UList<Type>&);
672 
673  virtual void operator=(const faPatchField<Type>&);
674  virtual void operator+=(const faPatchField<Type>&);
675  virtual void operator-=(const faPatchField<Type>&);
676  virtual void operator*=(const faPatchField<scalar>&);
677  virtual void operator/=(const faPatchField<scalar>&);
678 
679  virtual void operator+=(const Field<Type>&);
680  virtual void operator-=(const Field<Type>&);
681 
682  virtual void operator*=(const Field<scalar>&);
683  virtual void operator/=(const Field<scalar>&);
684 
685  virtual void operator=(const Type&);
686  virtual void operator+=(const Type&);
687  virtual void operator-=(const Type&);
688  virtual void operator*=(const scalar);
689  virtual void operator/=(const scalar);
690 
691 
692  // Force an assignment irrespective of form of patch
693 
694  virtual void operator==(const faPatchField<Type>&);
695  virtual void operator==(const Field<Type>&);
696  virtual void operator==(const Type&);
697 
698  // Prevent automatic comparison rewriting (c++20)
699  bool operator!=(const faPatchField<Type>&) const = delete;
700  bool operator!=(const Field<Type>&) const = delete;
701  bool operator!=(const Type&) const = delete;
702 
703 
704  // Ostream Operator
705 
706  friend Ostream& operator<< <Type>(Ostream&, const faPatchField<Type>&);
707 };
708 
709 
710 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
711 
712 } // End namespace Foam
713 
714 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
716 #ifdef NoRepository
717  #include "faPatchField.C"
718  #include "faPatchFieldNew.C"
719  #include "calculatedFaPatchField.H"
720  #include "zeroGradientFaPatchField.H"
721 #endif
722 
723 // Runtime selection macros
724 #include "faPatchFieldMacros.H"
725 
726 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
727 
728 #endif
729 
730 // ************************************************************************* //
virtual void operator+=(const faPatchField< Type > &)
Definition: faPatchField.C:292
virtual void autoMap(const faPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
Definition: faPatchField.C:218
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:303
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:189
virtual void write(Ostream &os) const
Write.
Definition: faPatchField.C:256
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:196
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Evaluate the patch field, sets updated() to false.
Definition: faPatchField.C:243
virtual tmp< faPatchField< Type > > clone() const
Clone patch field with its own internal field reference.
Definition: faPatchField.H:511
pTraits< Type >::cmptType cmptType
The component type for patch field.
Definition: faPatchField.H:331
virtual void readDict(const dictionary &dict)
Read dictionary entries.
declareRunTimeSelectionTable(tmp, faPatchField, patch,(const faPatch &p, const DimensionedField< Type, areaMesh > &iF),(p, iF))
A traits class, which is primarily used for primitives and vector-space.
Definition: pTraits.H:61
const DimensionedField< Type, areaMesh > & internalField() const noexcept
Return const-reference to the dimensioned internal field.
Definition: faPatchField.H:650
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:373
void writeEntry(const word &keyword, Ostream &os) const
Write the field as a dictionary entry.
Definition: Field.C:754
void setManipulated(bool state) noexcept
Set matrix manipulated state. Currently a no-op for faPatchField.
Definition: faPatchField.H:291
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:786
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:321
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:274
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Definition: POSIX.C:801
bool manipulatedMatrix() const noexcept
True if the matrix has already been manipulated. Currently always false for faPatchField.
Definition: faPatchField.H:283
Macros for creating faPatchField types.
bool operator!=(const faPatchField< Type > &) const =delete
virtual void operator/=(const faPatchField< scalar > &)
Definition: faPatchField.C:325
virtual bool fixesValue() const
True if the patch field fixes a value.
Definition: faPatchField.H:207
Generic templated field type.
Definition: Field.H:63
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:706
DimensionedField< Type, areaMesh > Internal
The internal field type associated with the patch field.
Definition: faPatchField.H:336
virtual tmp< Field< Type > > gradientInternalCoeffs() const
Return the matrix diagonal coefficients corresponding to the evaluation of the gradient of this patch...
Definition: faPatchField.H:798
virtual void initEvaluateLocal(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Initialise the evaluation of the patch field after a local.
Definition: faPatchField.H:752
const Field< Type > & primitiveField() const noexcept
Return const-reference to the internal field values.
Definition: faPatchField.H:658
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:266
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:773
virtual bool constraintOverride() const
True if the type does not correspond to the constraint type.
Definition: faPatchField.H:255
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:56
const direction noexcept
Definition: scalarImpl.H:255
static tmp< faPatchField< Type > > Clone(const DerivedPatchField &pf)
Clone a patch field with its own internal field reference.
Definition: faPatchField.H:541
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:204
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:226
virtual tmp< Field< Type > > gradientBoundaryCoeffs() const
Return the matrix source coefficients corresponding to the evaluation of the gradient of this patchFi...
Definition: faPatchField.H:808
Type value_type
The value_type for the patch field.
Definition: faPatchField.H:326
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
Definition: faPatchField.C:236
virtual void operator=(const UList< Type > &)
Definition: faPatchField.C:271
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:426
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:688
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:762
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:341
Namespace for OpenFOAM.
faPatchField(const faPatch &, const DimensionedField< Type, areaMesh > &)
Construct from patch and internal field.
Definition: faPatchField.C:72
virtual void operator*=(const faPatchField< scalar > &)
Definition: faPatchField.C:314
virtual void initEvaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Initialise the evaluation of the patch field.
Definition: faPatchField.H:731
readOption
Enumeration defining read preferences.