Loading...
Searching...
No Matches
fvsPatchField.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-2016 OpenFOAM Foundation
9 Copyright (C) 2019-2024 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::fvsPatchField
29
30Description
31 An 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 typed with
38 specific evaluation procedures, particularly with respect to specific
39 fields.
40
41SourceFiles
42 fvsPatchField.C
43 fvsPatchFieldNew.C
44
45\*---------------------------------------------------------------------------*/
46
47#ifndef Foam_fvsPatchField_H
48#define Foam_fvsPatchField_H
49
50#include "fvPatch.H"
51#include "DimensionedField.H"
52#include "fieldTypes.H"
53
54// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
55
56namespace Foam
57{
58
59// Forward Declarations
60class dictionary;
61class objectRegistry;
63class surfaceMesh;
65template<class Type> class fvsPatchField;
66template<class Type> class calculatedFvsPatchField;
67
68template<class Type>
70
71
72/*---------------------------------------------------------------------------*\
73 Class fvsPatchFieldBase Declaration
74\*---------------------------------------------------------------------------*/
75
76//- Template invariant parts for fvsPatchField
78{
79 // Private Data
80
81 //- Reference to patch
82 const fvPatch& patch_;
83
84 //- Optional patch type
85 // Used to allow specified boundary conditions to be applied
86 // to constraint patches by providing the constraint
87 // patch type as 'patchType'
88 word patchType_;
89
90
91protected:
92
93 // Protected Member Functions
94
95 //- Read dictionary entries.
96 // Useful when initially constructed without a dictionary
97 virtual void readDict(const dictionary& dict);
98
99
100public:
101
102 //- Debug switch to disallow the use of generic fvsPatchField
103 static int disallowGenericPatchField;
104
105 //- Runtime type information
106 TypeName("fvsPatchField");
107
108
109 // Constructors
111 //- Construct from patch
112 explicit fvsPatchFieldBase(const fvPatch& p);
113
114 //- Construct from patch and dictionary (unused)
116
117 //- Copy construct with new patch
119
120 //- Copy construct
122
123
124 //- Destructor
125 virtual ~fvsPatchFieldBase() = default;
126
127
128 // Static Member Functions
129
130 //- The type name for \c empty patch fields
131 static const word& emptyType() noexcept
132 {
134 }
135
136 //- The type name for \c calculated patch fields
137 static const word& calculatedType() noexcept
138 {
140 }
141
142 //- The type name for \c zeroValue patch fields
143 static const word& zeroValueType() noexcept
146 }
147
148
149 // Member Functions
150
151 // Attributes
153 //- True if the value of the patch field is altered by assignment
154 virtual bool assignable() const
155 {
156 return true;
157 }
158
159 //- True if the patch field fixes a value.
160 // Needed to check if a level has to be specified while solving
161 // Poissons equations.
162 virtual bool fixesValue() const
163 {
164 return false;
165 }
166
167 //- True if the patch field is coupled
168 virtual bool coupled() const
169 {
170 return false;
171 }
172
173
174 // Access
175
176 //- The associated objectRegistry
177 const objectRegistry& db() const;
178
179 //- Return the patch
180 const fvPatch& patch() const noexcept
182 return patch_;
183 }
184
185 //- The optional patch type
186 const word& patchType() const noexcept
187 {
188 return patchType_;
189 }
190
191 //- The optional patch type
193 {
194 return patchType_;
195 }
196
197 //- True if the type does not correspond to the constraint type
198 virtual bool constraintOverride() const
199 {
200 return !patchType_.empty() && patchType_ != type();
201 }
202
203
204 // Solution
205
206 //- True if the boundary condition has already been updated.
207 //- This is always true for fvsPatchField
208 bool updated() const noexcept
209 {
210 return true;
211 }
212
213 //- Set updated state. This is a no-op for fvsPatchField
214 void setUpdated(bool state) noexcept
215 {}
217 //- True if the matrix has already been manipulated
218 //- Always false for fvsPatchField
219 bool manipulatedMatrix() const noexcept
220 {
221 return false;
222 }
223
224 //- Set matrix manipulated state.
225 //- This is a no-op for fvsPatchField
226 void setManipulated(bool state) noexcept
227 {}
228
229
230 // Check
231
232 //- Check that patches are identical
233 void checkPatch(const fvsPatchFieldBase& rhs) const;
234};
235
236
237/*---------------------------------------------------------------------------*\
238 Class fvsPatchField Declaration
239\*---------------------------------------------------------------------------*/
241template<class Type>
242class fvsPatchField
243:
244 public fvsPatchFieldBase,
245 public Field<Type>
246{
247public:
248
249 // Public Data Types
250
251 //- The patch type for the patch field
252 typedef fvPatch Patch;
253
254 //- The value_type for the patch field
255 typedef Type value_type;
256
257 //- The component type for patch field
258 typedef typename pTraits<Type>::cmptType cmptType;
259
260 //- The internal field type associated with the patch field
262
263 //- Type for a \em calculated patch
265
266
267private:
268
269 // Private Data
270
271 //- Reference to internal field
272 const DimensionedField<Type, surfaceMesh>& internalField_;
273
274
275protected:
277 // Protected Member Functions
278
279 //- Read the "value" entry into \c *this.
280 // The reading can be optional (default), mandatory etc.
281 // \returns True on success
282 bool readValueEntry
283 (
284 const dictionary& dict,
286 );
287
288 //- Write \c *this field as a "value" entry
289 void writeValueEntry(Ostream& os) const
290 {
291 Field<Type>::writeEntry("value", os);
292 }
293
295public:
296
297 // Declare run-time constructor selection tables
298
300 (
301 tmp,
303 patch,
304 (
305 const fvPatch& p,
307 ),
308 (p, iF)
309 );
310
312 (
313 tmp,
315 patchMapper,
317 const fvsPatchField<Type>& ptf,
318 const fvPatch& p,
320 const fvPatchFieldMapper& m
321 ),
322 (dynamic_cast<const fvsPatchFieldType&>(ptf), p, iF, m)
323 );
324
327 tmp,
330 (
331 const fvPatch& p,
333 const dictionary& dict
334 ),
335 (p, iF, dict)
336 );
337
338
339 // Constructors
340
341 //- Construct from patch and internal field
343 (
344 const fvPatch&,
346 );
347
348 //- Construct from patch, internal field and value
350 (
351 const fvPatch&,
353 const Type& value
354 );
355
356 //- Construct from patch, internal field and patch field
359 const fvPatch&,
361 const Field<Type>& pfld
362 );
363
364 //- Construct from patch, internal field and patch field
366 (
367 const fvPatch&,
369 Field<Type>&& pfld
370 );
371
372 //- Construct from patch, internal field and dictionary
374 (
375 const fvPatch&,
377 const dictionary& dict,
380 );
381
382 //- Construct, forwarding to readOption variant
384 (
385 const fvPatch& p,
387 const dictionary& dict,
388 const bool needValue
389 )
390 :
392 (
393 p, iF, dict,
394 (needValue? IOobjectOption::MUST_READ : IOobjectOption::NO_READ)
395 )
396 {}
397
398 //- Construct by mapping the given fvsPatchField onto a new patch
400 (
401 const fvsPatchField<Type>&,
402 const fvPatch&,
404 const fvPatchFieldMapper&
405 );
406
407 //- Construct onto new patch with internal field reference
408 //- and specified value
410 (
411 const fvsPatchField<Type>& pfld,
412 const fvPatch& p,
414 const Type& value
415 );
416
417 //- Copy construct with internal field reference
419 (
420 const fvsPatchField<Type>&,
422 );
423
424 //- Copy construct
426 :
427 fvsPatchField<Type>(pfld, pfld.internalField())
428 {}
429
430
431 //- Clone patch field with its own internal field reference
433 {
435 (
436 new fvsPatchField<Type>(*this, this->internalField_)
437 );
438 }
439
440 //- Clone with an internal field reference
444 ) const
445 {
447 (
448 new fvsPatchField<Type>(*this, iF)
449 );
450 }
451
453 // Factory Methods
454
455 //- Clone a patch field, optionally with internal field reference etc.
456 template<class DerivedPatchField, class... Args>
458 (
459 const DerivedPatchField& pf,
460 Args&&... args
461 )
462 {
465 new DerivedPatchField(pf, std::forward<Args>(args)...)
466 );
467 }
468
469 //- Return a pointer to a new patchField created on freestore given
470 // patch and internal field
471 // (does not set the patch field values)
473 (
474 const word& patchFieldType,
475 const fvPatch&,
477 );
478
479 //- Return a pointer to a new patchField created on freestore given
480 // patch and internal field
481 // (does not set the patch field values)
482 // Allows override of constraint type
484 (
485 const word& patchFieldType,
486 const word& actualPatchType,
487 const fvPatch&,
489 );
490
491 //- Return a pointer to a new patchField created on freestore from
492 // a given fvsPatchField mapped onto a new patch
495 const fvsPatchField<Type>&,
496 const fvPatch&,
498 const fvPatchFieldMapper&
499 );
500
501 //- Return a pointer to a new patchField created on freestore
502 // from dictionary
504 (
505 const fvPatch&,
507 const dictionary&
508 );
509
510 //- Return a pointer to a new calculatedFvsPatchField created on
511 // freestore without setting patchField values
513 (
514 const fvPatch& p
515 );
516
517 //- Return a pointer to a new calculatedFvsPatchField created on
518 // freestore without setting patchField values
519 template<class AnyType>
521 (
522 const fvsPatchField<AnyType>& pf
523 );
524
525
526 //- Destructor
527 virtual ~fvsPatchField() = default;
528
529
530 // Member Functions
531
532 // Access
533
534 //- Return const-reference to the dimensioned internal field
536 const noexcept
537 {
538 return internalField_;
539 }
540
541 //- Return const-reference to the internal field values
542 const Field<Type>& primitiveField() const noexcept
543 {
544 return internalField_;
545 }
546
547
548 // Mapping Functions
549
550 //- Map (and resize as needed) from self given a mapping object
551 virtual void autoMap
553 const fvPatchFieldMapper&
554 );
555
556 //- Reverse map the given fvsPatchField onto this fvsPatchField
557 virtual void rmap
558 (
559 const fvsPatchField<Type>&,
560 const labelList&
561 );
562
563
564 // Evaluation Functions
565
566 //- Initialise the evaluation of the patch field
567 virtual void initEvaluate
568 (
571 {}
572
573 //- Evaluate the patch field, sets Updated to false
574 virtual void evaluate
575 (
577 )
578 {}
579
580 //- Initialise the evaluation of the patch field after a local
581 // operation
582 virtual void initEvaluateLocal
583 (
585 )
586 {}
587
588 //- Evaluate the patch field after a local operation (e.g. *=)
589 virtual void evaluateLocal
590 (
592 )
593 {}
594
595
596 // Other
598 //- Write the patch "type"
599 virtual void write(Ostream& os) const;
600
601 //- Check against given patch field
602 void check(const fvsPatchField<Type>&) const;
603
604
605 // Member Operators
606
607 virtual void operator=(const UList<Type>&);
608
609 virtual void operator=(const fvsPatchField<Type>&);
610 virtual void operator+=(const fvsPatchField<Type>&);
611 virtual void operator-=(const fvsPatchField<Type>&);
612 virtual void operator*=(const fvsPatchField<scalar>&);
613 virtual void operator/=(const fvsPatchField<scalar>&);
614
615 virtual void operator+=(const Field<Type>&);
616 virtual void operator-=(const Field<Type>&);
617
618 virtual void operator*=(const Field<scalar>&);
619 virtual void operator/=(const Field<scalar>&);
620
621 virtual void operator=(const Type&);
622 virtual void operator+=(const Type&);
623 virtual void operator-=(const Type&);
624 virtual void operator*=(const scalar);
625 virtual void operator/=(const scalar);
626
627
628 // Force an assignment irrespective of form of patch
629
630 virtual void operator==(const fvsPatchField<Type>&);
631 virtual void operator==(const Field<Type>&);
632 virtual void operator==(const Type&);
634 // Prevent automatic comparison rewriting (c++20)
635 bool operator!=(const fvsPatchField<Type>&) const = delete;
636 bool operator!=(const Field<Type>&) const = delete;
637 bool operator!=(const Type&) const = delete;
638
639
640 // Ostream Operator
641
642 friend Ostream& operator<< <Type>(Ostream&, const fvsPatchField<Type>&);
643};
644
645
646// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
647
648} // End namespace Foam
649
650// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
651
652#ifdef NoRepository
653 #include "fvsPatchField.C"
654 #include "fvsPatchFieldNew.C"
656#endif
657
658// Runtime selection macros
659#include "fvsPatchFieldMacros.H"
660
661// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
662
663#endif
664
665// ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic templated field type that is much like a Foam::List except that it is expected to hold numeri...
Definition Field.H:172
void writeEntry(const word &keyword, Ostream &os) const
Write the field as a dictionary entry.
Definition Field.C:754
constexpr Field() noexcept
Default construct.
Definition FieldI.H:24
A simple container of IOobject preferences. Can also be used for general handling of read/no-read/rea...
readOption
Enumeration defining read preferences.
@ MUST_READ
Reading required.
@ LAZY_READ
Reading is optional [identical to READ_IF_PRESENT].
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition Ostream.H:59
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:89
commsTypes
Communications types.
Definition UPstream.H:81
@ buffered
"buffered" : (MPI_Bsend, MPI_Recv)
Definition UPstream.H:82
This boundary condition is not designed to be evaluated; it is assumed 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:133
A FieldMapper for finite-volume patch fields.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition fvPatch.H:71
Template invariant parts for fvsPatchField.
virtual bool fixesValue() const
True if the patch field fixes a value.
virtual ~fvsPatchFieldBase()=default
Destructor.
virtual bool coupled() const
True if the patch field is coupled.
static const word & zeroValueType() noexcept
The type name for zeroValue patch fields.
static const word & calculatedType() noexcept
The type name for calculated patch fields.
const objectRegistry & db() const
The associated objectRegistry.
virtual void readDict(const dictionary &dict)
Read dictionary entries.
const fvPatch & patch() const noexcept
Return the patch.
void setManipulated(bool state) noexcept
Set matrix manipulated state. This is a no-op for fvsPatchField.
TypeName("fvsPatchField")
Runtime type information.
void setUpdated(bool state) noexcept
Set updated state. This is a no-op for fvsPatchField.
static int disallowGenericPatchField
Debug switch to disallow the use of generic fvsPatchField.
const word & patchType() const noexcept
The optional patch type.
void checkPatch(const fvsPatchFieldBase &rhs) const
Check that patches are identical.
bool manipulatedMatrix() const noexcept
True if the matrix has already been manipulated Always false for fvsPatchField.
virtual bool constraintOverride() const
True if the type does not correspond to the constraint type.
virtual bool assignable() const
True if the value of the patch field is altered by assignment.
bool updated() const noexcept
True if the boundary condition has already been updated. This is always true for fvsPatchField.
word & patchType() noexcept
The optional patch type.
static const word & emptyType() noexcept
The type name for empty patch fields.
fvsPatchFieldBase(const fvPatch &p)
Construct from patch.
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
virtual void operator/=(const Field< scalar > &)
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
bool operator!=(const fvsPatchField< Type > &) const =delete
virtual void operator=(const Type &)
virtual void rmap(const fvsPatchField< Type > &, const labelList &)
Reverse map the given fvsPatchField onto this fvsPatchField.
fvsPatchField(const fvPatch &, const DimensionedField< Type, surfaceMesh > &, const Type &value)
Construct from patch, internal field and value.
virtual void operator-=(const Type &)
static tmp< fvsPatchField< Type > > New(const fvsPatchField< Type > &, const fvPatch &, const DimensionedField< Type, surfaceMesh > &, const fvPatchFieldMapper &)
Return a pointer to a new patchField created on freestore from.
Type value_type
The value_type for the patch field.
virtual tmp< fvsPatchField< Type > > clone(const DimensionedField< Type, surfaceMesh > &iF) const
Clone with an internal field reference.
fvsPatchField(const fvsPatchField< Type > &pfld)
Copy construct.
virtual void initEvaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Initialise the evaluation of the patch field.
fvPatch Patch
The patch type for the patch field.
void writeValueEntry(Ostream &os) const
Write *this field as a "value" entry.
virtual void operator*=(const Field< scalar > &)
virtual void operator==(const fvsPatchField< Type > &)
virtual void operator==(const Field< Type > &)
fvsPatchField(const fvPatch &, const DimensionedField< Type, surfaceMesh > &)
Construct from patch and internal field.
virtual void operator+=(const Field< Type > &)
virtual void initEvaluateLocal(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Initialise the evaluation of the patch field after a local.
fvsPatchField(const fvPatch &p, const DimensionedField< Type, surfaceMesh > &iF, const dictionary &dict, const bool needValue)
Construct, forwarding to readOption variant.
declareRunTimeSelectionTable(tmp, fvsPatchField, patch,(const fvPatch &p, const DimensionedField< Type, surfaceMesh > &iF),(p, iF))
virtual tmp< fvsPatchField< Type > > clone() const
Clone patch field with its own internal field reference.
const Field< Type > & primitiveField() const noexcept
Return const-reference to the internal field values.
declareRunTimeSelectionTable(tmp, fvsPatchField, dictionary,(const fvPatch &p, const DimensionedField< Type, surfaceMesh > &iF, const dictionary &dict),(p, iF, dict))
virtual void operator+=(const Type &)
virtual void evaluateLocal(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Evaluate the patch field after a local operation (e.g. *=).
virtual void operator-=(const Field< Type > &)
virtual void operator=(const UList< Type > &)
fvsPatchField(const fvsPatchField< Type > &, const fvPatch &, const DimensionedField< Type, surfaceMesh > &, const fvPatchFieldMapper &)
Construct by mapping the given fvsPatchField onto a new patch.
fvsPatchField(const fvsPatchField< Type > &pfld, const fvPatch &p, const DimensionedField< Type, surfaceMesh > &iF, const Type &value)
Construct onto new patch with internal field reference and specified value.
fvsPatchField(const fvPatch &, const DimensionedField< Type, surfaceMesh > &, const dictionary &dict, IOobjectOption::readOption requireValue=IOobjectOption::MUST_READ)
Construct from patch, internal field and dictionary.
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Evaluate the patch field, sets Updated to false.
declareRunTimeSelectionTable(tmp, fvsPatchField, patchMapper,(const fvsPatchField< Type > &ptf, const fvPatch &p, const DimensionedField< Type, surfaceMesh > &iF, const fvPatchFieldMapper &m),(dynamic_cast< const fvsPatchFieldType & >(ptf), p, iF, m))
pTraits< Type >::cmptType cmptType
The component type for patch field.
virtual void write(Ostream &os) const
Write the patch "type".
DimensionedField< Type, surfaceMesh > Internal
The internal field type associated with the patch field.
fvsPatchField(const fvPatch &, const DimensionedField< Type, surfaceMesh > &, Field< Type > &&pfld)
Construct from patch, internal field and patch field.
static tmp< fvsPatchField< Type > > New(const word &patchFieldType, const fvPatch &, const DimensionedField< Type, surfaceMesh > &)
Return a pointer to a new patchField created on freestore given.
fvsPatchField(const fvPatch &, const DimensionedField< Type, surfaceMesh > &, const Field< Type > &pfld)
Construct from patch, internal field and patch field.
virtual void operator=(const fvsPatchField< Type > &)
virtual void operator/=(const scalar)
virtual void operator-=(const fvsPatchField< Type > &)
bool operator!=(const Field< Type > &) const =delete
const DimensionedField< scalar, surfaceMesh > & internalField() const noexcept
static tmp< fvsPatchField< Type > > NewCalculatedType(const fvsPatchField< AnyType > &pf)
Return a pointer to a new calculatedFvsPatchField created on.
virtual void operator/=(const fvsPatchField< scalar > &)
bool operator!=(const Type &) const =delete
virtual ~fvsPatchField()=default
Destructor.
virtual void operator+=(const fvsPatchField< Type > &)
calculatedFvsPatchField< Type > Calculated
Type for a calculated patch.
fvsPatchField(const fvsPatchField< Type > &, const DimensionedField< Type, surfaceMesh > &)
Copy construct with internal field reference.
void check(const fvsPatchField< Type > &) const
Check against given patch field.
bool readValueEntry(const dictionary &dict, IOobjectOption::readOption readOpt=IOobjectOption::LAZY_READ)
Read the "value" entry into *this.
static tmp< fvsPatchField< Type > > NewCalculatedType(const fvPatch &p)
Return a pointer to a new calculatedFvsPatchField created on.
static tmp< fvsPatchField< Type > > New(const word &patchFieldType, const word &actualPatchType, const fvPatch &, const DimensionedField< Type, surfaceMesh > &)
Return a pointer to a new patchField created on freestore given.
static tmp< fvsPatchField< Type > > New(const fvPatch &, const DimensionedField< Type, surfaceMesh > &, const dictionary &)
Return a pointer to a new patchField created on freestore.
virtual void operator*=(const scalar)
static tmp< fvsPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
virtual void operator*=(const fvsPatchField< scalar > &)
virtual void operator==(const Type &)
Registry of regIOobjects.
A traits class, which is primarily used for primitives and vector-space.
Definition pTraits.H:64
Mesh data needed to do the Finite Volume discretisation.
Definition surfaceMesh.H:47
A class for managing temporary objects.
Definition tmp.H:75
A class for handling words, derived from Foam::string.
Definition word.H:66
volScalarField & p
OBJstream os(runTime.globalPath()/outputName)
Macros for creating fvsPatchField types.
const word calculatedType
A calculated patch field type.
const word emptyType
An empty patch field type.
const word zeroValueType
A zeroValue patch field type.
Namespace for OpenFOAM.
List< label > labelList
A List of labels.
Definition List.H:62
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
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces).
void rhs(fvMatrix< typename Expr::value_type > &m, const Expr &expression)
const direction noexcept
Definition scalarImpl.H:265
runTime write()
#define declareRunTimeSelectionTable(ptrWrapper, baseType, argNames, argList, parList)
Declare a run-time selection (variables and adder classes).
dictionary dict
Foam::argList args(argc, argv)
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68