fvPatchField.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) 2019-2022 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
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
27Class
28 Foam::fvPatchField
29
30Description
31 Abstract base class with a fat-interface to all derived classes
32 covering all possible ways in which they might be used.
33
34 The first level of derivation is to basic patchFields which cover
35 zero-gradient, fixed-gradient, fixed-value and mixed conditions.
36
37 The next level of derivation covers all the specialised types with
38 specific evaluation procedures, particularly with respect to specific
39 fields.
40
41SourceFiles
42 fvPatchField.C
43 fvPatchFieldNew.C
44
45\*---------------------------------------------------------------------------*/
46
47#ifndef Foam_fvPatchField_H
48#define Foam_fvPatchField_H
49
50#include "fvPatch.H"
51#include "DimensionedField.H"
52#include "fieldTypes.H"
53#include "scalarField.H"
54
55// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
56
57namespace Foam
58{
59
60// Forward Declarations
61
62class objectRegistry;
63class dictionary;
64class fvPatchFieldMapper;
65class volMesh;
66
67template<class Type> class fvPatchField;
68template<class Type> class calculatedFvPatchField;
69template<class Type> class fvMatrix;
70
71template<class Type>
73
74
75/*---------------------------------------------------------------------------*\
76 Class fvPatchField Declaration
77\*---------------------------------------------------------------------------*/
78
79template<class Type>
80class fvPatchField
81:
82 public Field<Type>
83{
84 // Private Data
85
86 //- Reference to patch
87 const fvPatch& patch_;
88
89 //- Reference to internal field
90 const DimensionedField<Type, volMesh>& internalField_;
91
92 //- Update index used so that updateCoeffs is called only once during
93 //- the construction of the matrix
94 bool updated_;
95
96 //- Update index used so that manipulateMatrix is called only once
97 //- during the construction of the matrix
98 bool manipulatedMatrix_;
99
100 //- Use implicit formulation
101 bool useImplicit_;
102
103 //- Optional patch type, used to allow specified boundary conditions
104 // to be applied to constraint patches by providing the constraint
105 // patch type as 'patchType'
106 word patchType_;
107
108
109public:
110
111 //- The internal field type associated with the patch field
113
114 //- The patch type for the patch field
115 typedef fvPatch Patch;
116
117 //- Type for a \em calculated patch
119
120
121 //- Runtime type information
122 TypeName("fvPatchField");
123
124 //- Debug switch to disallow the use of genericFvPatchField
126
127
128 // Declare run-time constructor selection tables
131 (
132 tmp,
134 patch,
135 (
136 const fvPatch& p,
138 ),
139 (p, iF)
140 );
143 (
144 tmp,
146 patchMapper,
147 (
148 const fvPatchField<Type>& ptf,
149 const fvPatch& p,
151 const fvPatchFieldMapper& m
152 ),
153 (dynamic_cast<const fvPatchFieldType&>(ptf), p, iF, m)
154 );
157 (
158 tmp,
161 (
162 const fvPatch& p,
164 const dictionary& dict
165 ),
166 (p, iF, dict)
167 );
168
169
170 // Constructors
171
172 //- Construct from patch and internal field
174 (
175 const fvPatch&,
177 );
178
179 //- Construct from patch, internal field and value
181 (
182 const fvPatch&,
184 const Type& value
185 );
186
187 //- Construct from patch and internal field and patch type
189 (
190 const fvPatch&,
192 const word& patchType
193 );
194
195 //- Construct from patch and internal field and patch field
197 (
198 const fvPatch&,
200 const Field<Type>&
201 );
202
203 //- Construct from patch, internal field and dictionary
205 (
206 const fvPatch&,
208 const dictionary&,
209 const bool valueRequired=true
210 );
211
212 //- Construct by mapping the given fvPatchField onto a new patch
214 (
215 const fvPatchField<Type>&,
216 const fvPatch&,
218 const fvPatchFieldMapper&
219 );
220
221 //- Construct as copy
223
224 //- Construct and return a clone
225 virtual tmp<fvPatchField<Type>> clone() const
226 {
227 return tmp<fvPatchField<Type>>::New(*this);
228 }
229
230 //- Construct as copy setting internal field reference
232 (
233 const fvPatchField<Type>&,
235 );
236
237 //- Construct and return a clone setting internal field reference
239 (
241 ) const
242 {
243 return tmp<fvPatchField<Type>>::New(*this, iF);
244 }
245
246
247 // Selectors
248
249 //- Return a pointer to a new patchField created on freestore given
250 // patch and internal field
251 // (does not set the patch field values)
253 (
254 const word& patchFieldType,
255 const fvPatch&,
257 );
258
259 //- Return a pointer to a new patchField created on freestore given
260 // patch and internal field
261 // (does not set the patch field values).
262 // Allows override of constraint type
264 (
265 const word& patchFieldType,
266 const word& actualPatchType,
267 const fvPatch&,
269 );
270
271 //- Return a pointer to a new patchField created on freestore from
272 // a given fvPatchField mapped onto a new patch
274 (
275 const fvPatchField<Type>&,
276 const fvPatch&,
278 const fvPatchFieldMapper&
279 );
280
281 //- Return a pointer to a new patchField created on freestore
282 // from dictionary
284 (
285 const fvPatch&,
287 const dictionary&
288 );
289
290 //- Return a pointer to a new calculatedFvPatchField created on
291 // freestore without setting patchField values
293 (
294 const fvPatch&
295 );
296
297 //- Return a pointer to a new calculatedFvPatchField created on
298 // freestore without setting patchField values
299 template<class Type2>
301 (
303 );
304
305
306 //- Destructor
307 virtual ~fvPatchField<Type>() = default;
308
309
310 // Member Functions
311
312 // Implicit Functions
313
314 //- Use implicit formulation for coupled patches only
315 bool useImplicit() const noexcept
316 {
317 return useImplicit_;
318 }
319
320 //- Set useImplicit on/off
321 // \return old value
322 bool useImplicit(bool on) noexcept
323 {
324 bool old(useImplicit_);
325 useImplicit_ = on;
326 return old;
327 }
328
329
330 // Attributes
331
332 //- Return the type of the calculated for of fvPatchField
333 static const word& calculatedType();
334
335 //- Return true if this patch field fixes a value.
336 // Needed to check if a level has to be specified while solving
337 // Poissons equations.
338 virtual bool fixesValue() const
339 {
340 return false;
341 }
342
343 //- Return true if the value of the patch field
344 // is altered by assignment (the default)
345 virtual bool assignable() const
346 {
347 return true;
348 }
349
350 //- Return true if this patch field is coupled
351 virtual bool coupled() const
352 {
353 return false;
354 }
355
356
357 // Access
358
359 //- Return local objectRegistry
360 const objectRegistry& db() const;
361
362 //- Return patch
363 const fvPatch& patch() const
364 {
365 return patch_;
366 }
367
368 //- Return dimensioned internal field reference
370 {
371 return internalField_;
372 }
373
374 //- Return internal field reference
375 const Field<Type>& primitiveField() const
376 {
377 return internalField_;
378 }
379
380 //- Optional patch type
381 const word& patchType() const
382 {
383 return patchType_;
384 }
385
386 //- Optional patch type
387 word& patchType()
388 {
389 return patchType_;
390 }
391
392 //- Return true if the boundary condition has already been updated
393 bool updated() const
394 {
395 return updated_;
396 }
397
398 //- Return true if the matrix has already been manipulated
399 bool manipulatedMatrix() const
400 {
401 return manipulatedMatrix_;
402 }
403
404
405 // Mapping Functions
406
407 //- Map (and resize as needed) from self given a mapping object
408 virtual void autoMap
409 (
410 const fvPatchFieldMapper&
411 );
412
413 //- Reverse map the given fvPatchField onto this fvPatchField
414 virtual void rmap
415 (
416 const fvPatchField<Type>&,
417 const labelList&
418 );
419
420
421 // Evaluation Functions
422
423 //- Return patch-normal gradient
424 virtual tmp<Field<Type>> snGrad() const;
425
426 //- Return patch-normal gradient for coupled-patches
427 // using the deltaCoeffs provided
428 virtual tmp<Field<Type>> snGrad
429 (
430 const scalarField& deltaCoeffs
431 ) const
432 {
434 return *this;
435 }
436
437 //- Update the coefficients associated with the patch field
438 // Sets Updated to true
439 virtual void updateCoeffs();
440
441 //- Update the coefficients associated with the patch field
442 // with a weight field (0..1). This weight field is usually
443 // provided as the amount of geometric overlap for 'duplicate'
444 // patches. Sets Updated to true
445 virtual void updateWeightedCoeffs(const scalarField& weights);
446
447 //- Return internal field next to patch as patch field
448 virtual tmp<Field<Type>> patchInternalField() const;
449
450 //- Return internal field next to patch as patch field
451 virtual void patchInternalField(Field<Type>&) const;
452
453 //- Return patchField on the opposite patch of a coupled patch
454 virtual tmp<Field<Type>> patchNeighbourField() const
455 {
457 return *this;
458 }
459
460 //- Initialise the evaluation of the patch field
461 virtual void initEvaluate
462 (
463 const Pstream::commsTypes commsType =
465 )
466 {}
467
468 //- Evaluate the patch field, sets Updated to false
469 virtual void evaluate
470 (
471 const Pstream::commsTypes commsType =
473 );
474
475
476 //- Return the matrix diagonal coefficients corresponding to the
477 // evaluation of the value of this patchField with given weights
479 (
480 const tmp<Field<scalar>>&
481 ) const
482 {
484 return *this;
485 }
486
487 //- Return the matrix source coefficients corresponding to the
488 // evaluation of the value of this patchField with given weights
490 (
491 const tmp<Field<scalar>>&
492 ) const
493 {
495 return *this;
496 }
497
498 //- Return the matrix diagonal coefficients corresponding to the
499 // evaluation of the gradient of this patchField
501 {
503 return *this;
504 }
505
506 //- Return the matrix diagonal coefficients corresponding to the
507 // evaluation of the gradient of this coupled patchField
508 // using the deltaCoeffs provided
510 (
511 const scalarField& deltaCoeffs
512 ) const
513 {
515 return *this;
516 }
517
518 //- Return the matrix source coefficients corresponding to the
519 // evaluation of the gradient of this patchField
521 {
523 return *this;
524 }
525
526 //- Return the matrix source coefficients corresponding to the
527 // evaluation of the gradient of this coupled patchField
528 // using the deltaCoeffs provided
530 (
531 const scalarField& deltaCoeffs
532 ) const
533 {
535 return *this;
536 }
537
538
539 //- Manipulate matrix
540 virtual void manipulateMatrix(fvMatrix<Type>& matrix);
541
542 //- Manipulate matrix with given weights
543 virtual void manipulateMatrix
544 (
545 fvMatrix<Type>& matrix,
546 const scalarField& weights
547 );
548
549 //- Manipulate fvMatrix
550 virtual void manipulateMatrix
551 (
552 fvMatrix<Type>& matrix,
553 const label iMatrix,
554 const direction cmp
555 );
556
557
558 // I-O
559
560 //- Write
561 virtual void write(Ostream&) const;
562
563
564 // Check
565
566 //- Check fvPatchField<Type> against given fvPatchField<Type>
567 void check(const fvPatchField<Type>&) const;
568
569
570 // Member Operators
571
572 virtual void operator=(const UList<Type>&);
573
574 virtual void operator=(const fvPatchField<Type>&);
575 virtual void operator+=(const fvPatchField<Type>&);
576 virtual void operator-=(const fvPatchField<Type>&);
577 virtual void operator*=(const fvPatchField<scalar>&);
578 virtual void operator/=(const fvPatchField<scalar>&);
579
580 virtual void operator+=(const Field<Type>&);
581 virtual void operator-=(const Field<Type>&);
582
583 virtual void operator*=(const Field<scalar>&);
584 virtual void operator/=(const Field<scalar>&);
585
586 virtual void operator=(const Type&);
587 virtual void operator+=(const Type&);
588 virtual void operator-=(const Type&);
589 virtual void operator*=(const scalar);
590 virtual void operator/=(const scalar);
591
592
593 // Force an assignment irrespective of form of patch
594
595 virtual void operator==(const fvPatchField<Type>&);
596 virtual void operator==(const Field<Type>&);
597 virtual void operator==(const Type&);
598
599
600 // Ostream operator
602 friend Ostream& operator<< <Type>(Ostream&, const fvPatchField<Type>&);
603};
604
605
606// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
607
608} // End namespace Foam
609
610// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
611
612#ifdef NoRepository
613 #include "fvPatchField.C"
614 #include "calculatedFvPatchField.H"
615#endif
616
618#define makeFvPatchField(fvPatchTypeField) \
619 \
620defineNamedTemplateTypeNameAndDebug(fvPatchTypeField, 0); \
621template<> \
622int fvPatchTypeField::disallowGenericFvPatchField \
623( \
624 debug::debugSwitch("disallowGenericFvPatchField", 0) \
625); \
626defineTemplateRunTimeSelectionTable(fvPatchTypeField, patch); \
627defineTemplateRunTimeSelectionTable(fvPatchTypeField, patchMapper); \
628defineTemplateRunTimeSelectionTable(fvPatchTypeField, dictionary);
629
631#define addToPatchFieldRunTimeSelection(PatchTypeField, typePatchTypeField) \
632 addToRunTimeSelectionTable \
633 ( \
634 PatchTypeField, \
635 typePatchTypeField, \
636 patch \
637 ); \
638 addToRunTimeSelectionTable \
639 ( \
640 PatchTypeField, \
641 typePatchTypeField, \
642 patchMapper \
643 ); \
644 addToRunTimeSelectionTable \
645 ( \
646 PatchTypeField, \
647 typePatchTypeField, \
648 dictionary \
649 );
650
651
652// Use with caution
653#define addRemovableToPatchFieldRunTimeSelection\
654(PatchTypeField, typePatchTypeField) \
655 \
656 addRemovableToRunTimeSelectionTable \
657 ( \
658 PatchTypeField, \
659 typePatchTypeField, \
660 patch \
661 ); \
662 addRemovableToRunTimeSelectionTable \
663 ( \
664 PatchTypeField, \
665 typePatchTypeField, \
666 patchMapper \
667 ); \
668 addRemovableToRunTimeSelectionTable \
669 ( \
670 PatchTypeField, \
671 typePatchTypeField, \
672 dictionary \
673 );
674
675
676// For non-templated patch fields
677#define makePatchTypeField(PatchTypeField, typePatchTypeField) \
678 defineTypeNameAndDebug(typePatchTypeField, 0); \
679 addToPatchFieldRunTimeSelection(PatchTypeField, typePatchTypeField)
680
681// For non-templated patch fields - use with caution
682#define makeRemovablePatchTypeField(PatchTypeField, typePatchTypeField) \
683 defineTypeNameAndDebug(typePatchTypeField, 0); \
684 addRemovableToPatchFieldRunTimeSelection(PatchTypeField, typePatchTypeField)
685
686// For templated patch fields
687#define makeTemplatePatchTypeField(fieldType, type) \
688 defineNamedTemplateTypeNameAndDebug \
689 ( \
690 CAT4(type, FvPatch, CAPITALIZE(fieldType), Field), \
691 0 \
692 ); \
693 addToPatchFieldRunTimeSelection \
694 ( \
695 CAT3(fvPatch, CAPITALIZE(fieldType), Field), \
696 CAT4(type, FvPatch, CAPITALIZE(fieldType), Field) \
697 )
699#define makePatchFields(type) \
700 FOR_ALL_FIELD_TYPES(makeTemplatePatchTypeField, type)
702#define makePatchFieldTypeName(fieldType, type) \
703 defineNamedTemplateTypeNameAndDebug \
704 ( \
705 CAT4(type, FvPatch, CAPITALIZE(fieldType), Field), \
706 0 \
707 );
709#define makePatchFieldTypeNames(type) \
710 FOR_ALL_FIELD_TYPES(makePatchFieldTypeName, type)
712#define makePatchTypeFieldTypedef(fieldType, type) \
713 typedef type##FvPatchField<fieldType> \
714 CAT4(type, FvPatch, CAPITALIZE(fieldType), Field);
716#define makePatchTypeFieldTypedefs(type) \
717 FOR_ALL_FIELD_TYPES(makePatchTypeFieldTypedef, type)
718
719// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
720
721#endif
722
723// ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic templated field type.
Definition: Field.H:82
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:62
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Definition: UList.H:94
commsTypes
Types of communications.
Definition: UPstream.H:67
This boundary condition is not designed to be evaluated; it is assmued that the value is assigned via...
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
A special matrix type and solver, designed for finite volume solutions of scalar equations....
Definition: fvMatrix.H:121
A FieldMapper for finite-volume patch fields.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
Definition: fvPatchField.H:82
virtual tmp< Field< Type > > valueBoundaryCoeffs(const tmp< Field< scalar > > &) const
Return the matrix source coefficients corresponding to the.
Definition: fvPatchField.H:489
virtual void initEvaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::blocking)
Initialise the evaluation of the patch field.
Definition: fvPatchField.H:461
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
Definition: fvPatchField.C:252
bool manipulatedMatrix() const
Return true if the matrix has already been manipulated.
Definition: fvPatchField.H:398
virtual bool fixesValue() const
Return true if this patch field fixes a value.
Definition: fvPatchField.H:337
DimensionedField< Type, volMesh > Internal
The internal field type associated with the patch field.
Definition: fvPatchField.H:111
virtual tmp< Field< Type > > patchNeighbourField() const
Return patchField on the opposite patch of a coupled patch.
Definition: fvPatchField.H:453
static tmp< fvPatchField< Type > > New(const word &patchFieldType, const fvPatch &, const DimensionedField< Type, volMesh > &)
Return a pointer to a new patchField created on freestore given.
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::blocking)
Evaluate the patch field, sets Updated to false.
Definition: fvPatchField.C:345
declareRunTimeSelectionTable(tmp, fvPatchField, dictionary,(const fvPatch &p, const DimensionedField< Type, volMesh > &iF, const dictionary &dict),(p, iF, dict))
virtual void operator==(const fvPatchField< Type > &)
Definition: fvPatchField.C:574
virtual bool coupled() const
Return true if this patch field is coupled.
Definition: fvPatchField.H:350
declareRunTimeSelectionTable(tmp, fvPatchField, patch,(const fvPatch &p, const DimensionedField< Type, volMesh > &iF),(p, iF))
virtual tmp< Field< Type > > patchInternalField() const
Return internal field next to patch as patch field.
Definition: fvPatchField.C:237
fvPatch Patch
The patch type for the patch field.
Definition: fvPatchField.H:114
static tmp< fvPatchField< Type > > NewCalculatedType(const fvPatch &)
Return a pointer to a new calculatedFvPatchField created on.
virtual tmp< Field< Type > > snGrad() const
Return patch-normal gradient.
Definition: fvPatchField.C:229
virtual void operator-=(const fvPatchField< Type > &)
Definition: fvPatchField.C:440
const objectRegistry & db() const
Return local objectRegistry.
Definition: fvPatchField.C:210
virtual void operator=(const UList< Type > &)
Definition: fvPatchField.C:408
const Field< Type > & primitiveField() const
Return internal field reference.
Definition: fvPatchField.H:374
virtual tmp< Field< Type > > gradientInternalCoeffs() const
Return the matrix diagonal coefficients corresponding to the.
Definition: fvPatchField.H:499
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
Definition: fvPatchField.C:325
bool useImplicit() const noexcept
Use implicit formulation for coupled patches only.
Definition: fvPatchField.H:314
TypeName("fvPatchField")
Runtime type information.
calculatedFvPatchField< Type > Calculated
Type for a calculated patch.
Definition: fvPatchField.H:117
virtual void manipulateMatrix(fvMatrix< Type > &matrix)
Manipulate matrix.
Definition: fvPatchField.C:358
virtual void operator*=(const fvPatchField< scalar > &)
Definition: fvPatchField.C:451
static tmp< fvPatchField< Type > > NewCalculatedType(const fvPatchField< Type2 > &)
Return a pointer to a new calculatedFvPatchField created on.
static int disallowGenericFvPatchField
Debug switch to disallow the use of genericFvPatchField.
Definition: fvPatchField.H:124
virtual void operator+=(const fvPatchField< Type > &)
Definition: fvPatchField.C:429
virtual tmp< Field< Type > > valueInternalCoeffs(const tmp< Field< scalar > > &) const
Return the matrix diagonal coefficients corresponding to the.
Definition: fvPatchField.H:478
const DimensionedField< Type, volMesh > & internalField() const
Return dimensioned internal field reference.
Definition: fvPatchField.H:368
declareRunTimeSelectionTable(tmp, fvPatchField, patchMapper,(const fvPatchField< Type > &ptf, const fvPatch &p, const DimensionedField< Type, volMesh > &iF, const fvPatchFieldMapper &m),(dynamic_cast< const fvPatchFieldType & >(ptf), p, iF, m))
const word & patchType() const
Optional patch type.
Definition: fvPatchField.H:380
virtual void updateWeightedCoeffs(const scalarField &weights)
Update the coefficients associated with the patch field.
Definition: fvPatchField.C:332
virtual void rmap(const fvPatchField< Type > &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
Definition: fvPatchField.C:315
word & patchType()
Optional patch type.
Definition: fvPatchField.H:386
virtual tmp< fvPatchField< Type > > clone() const
Construct and return a clone.
Definition: fvPatchField.H:224
virtual bool assignable() const
Return true if the value of the patch field.
Definition: fvPatchField.H:344
virtual void operator/=(const fvPatchField< scalar > &)
Definition: fvPatchField.C:468
bool updated() const
Return true if the boundary condition has already been updated.
Definition: fvPatchField.H:392
void check(const fvPatchField< Type > &) const
Check fvPatchField<Type> against given fvPatchField<Type>
Definition: fvPatchField.C:217
static const word & calculatedType()
Return the type of the calculated for of fvPatchField.
const fvPatch & patch() const
Return patch.
Definition: fvPatchField.H:362
virtual tmp< fvPatchField< Type > > clone(const DimensionedField< Type, volMesh > &iF) const
Construct and return a clone setting internal field reference.
Definition: fvPatchField.H:238
virtual tmp< Field< Type > > gradientBoundaryCoeffs() const
Return the matrix source coefficients corresponding to the.
Definition: fvPatchField.H:519
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:71
Registry of regIOobjects.
A class for managing temporary objects.
Definition: tmp.H:65
A class for handling words, derived from Foam::string.
Definition: word.H:68
volScalarField & p
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
Definition: error.H:517
Header files for all the primitive types that Fields are instantiated for.
Namespace for OpenFOAM.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces)
Definition: boundaryPatch.C:83
uint8_t direction
Definition: direction.H:56
const direction noexcept
Definition: Scalar.H:223
runTime write()
#define declareRunTimeSelectionTable(ptrWrapper, baseType, argNames, argList, parList)
Declare a run-time selection (variables and adder classes)
dictionary dict
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73