Loading...
Searching...
No Matches
pointPatchField.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-2025 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::pointPatchField
29
30Description
31 Abstract base class for point-mesh patch fields.
32
33 The base-field does not store values as they are part of the
34 "internal field". There are derived classes to store constraint values
35 e.g. fixedValuePointPatchField derived from the generic
36 valuePointPatchField which ensures the values in the "internal field"
37 are reset to the fixed-values by applying the stored values.
38
39SourceFiles
40 pointPatchField.C
41 pointPatchFieldNew.C
42
43\*---------------------------------------------------------------------------*/
44
45#ifndef Foam_pointPatchField_H
46#define Foam_pointPatchField_H
47
48#include "pointPatch.H"
49#include "DimensionedField.H"
50#include "fieldTypes.H"
51#include "autoPtr.H"
52
53// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
54
55namespace Foam
56{
57
58// Forward Declarations
59class dictionary;
60class objectRegistry;
62class pointMesh;
64template<class Type> class pointPatchField;
65template<class Type> class calculatedPointPatchField;
66
67template<class Type>
69
70/*---------------------------------------------------------------------------*\
71 Class pointPatchFieldBase Declaration
72\*---------------------------------------------------------------------------*/
73
74//- Template invariant parts for pointPatchField
76{
77 // Private Data
78
79 //- Reference to patch
80 const pointPatch& patch_;
81
82 //- Update index used so that updateCoeffs is called only once during
83 //- the construction of the matrix
84 bool updated_;
85
86 //- Optional patch type
87 // Used to allow specified boundary conditions to be applied
88 // to constraint patches by providing the constraint
89 // patch type as 'patchType'
90 word patchType_;
91
92
93protected:
94
95 // Protected Member Functions
96
97 //- Read dictionary entries.
98 // Useful when initially constructed without a dictionary
99 virtual void readDict(const dictionary& dict);
100
101
102public:
103
104 //- Debug switch to disallow the use of generic pointPatchField
105 static int disallowGenericPatchField;
106
107 //- Runtime type information
108 TypeName("pointPatchField");
109
110
111 // Constructors
112
113 //- Construct from patch
115
116 //- Construct from patch and patch type
118
119 //- Construct from patch and dictionary
121
122 //- Copy construct with new patch
124
125 //- Copy construct
127
128
129 //- Destructor
130 virtual ~pointPatchFieldBase() = default;
131
132
133 // Static Member Functions
134
135 //- The type name for \c empty patch fields
136 static const word& emptyType() noexcept
137 {
139 }
140
141 //- The type name for \c calculated patch fields
142 static const word& calculatedType() noexcept
143 {
145 }
146
147 //- The type name for \c zeroGradient patch fields
148 static const word& zeroGradientType() noexcept
149 {
151 }
152
153 //- The type name for \c zeroValue patch fields
154 static const word& zeroValueType() noexcept
155 {
157 }
158
159
160 // Member Functions
162 // Attributes
163
164 //- True if the value of the patch field is altered by assignment
165 virtual bool assignable() const
166 {
167 return false;
168 }
170 //- True if the patch field fixes a value
171 virtual bool fixesValue() const
172 {
173 return false;
174 }
175
176 //- True if the patch field is coupled
177 virtual bool coupled() const
178 {
179 return false;
180 }
181
182 //- The constraint type the pointPatchField implements
183 virtual const word& constraintType() const
184 {
186 }
187
188
189 // Access
190
191 //- The associated objectRegistry
192 const objectRegistry& db() const;
193
194 //- Return the patch
195 const pointPatch& patch() const noexcept
196 {
197 return patch_;
199
200 //- The optional patch type
201 const word& patchType() const noexcept
202 {
203 return patchType_;
204 }
205
206 //- The optional patch type
208 {
209 return patchType_;
210 }
211
212 //- True if the type does not correspond to the constraint type
213 virtual bool constraintOverride() const
215 return !patchType_.empty() && patchType_ != type();
216 }
217
218
219 // Solution
220
221 //- True if the boundary condition has already been updated
222 bool updated() const noexcept
223 {
224 return updated_;
225 }
226
227 //- Set updated state
228 void setUpdated(bool state) noexcept
229 {
230 updated_ = state;
231 }
232
233 //- True if the matrix has already been manipulated.
234 //- Currently always false for pointPatchField
235 bool manipulatedMatrix() const noexcept
236 {
237 return false;
239
240 //- Set matrix manipulated state.
241 //- Currently a no-op for pointPatchField.
242 void setManipulated(bool state) noexcept
243 {}
244
245
246 // Check
247
248 //- Check that patches are identical
249 void checkPatch(const pointPatchFieldBase& rhs) const;
250};
251
252
253/*---------------------------------------------------------------------------*\
254 Class pointPatchField Declaration
255\*---------------------------------------------------------------------------*/
256
257template<class Type>
258class pointPatchField
259:
261{
262public:
263
264 // Public Data Types
265
266 //- The patch type for the patch field
267 typedef pointPatch Patch;
268
269 //- The value_type for the patch field
270 typedef Type value_type;
271
272 //- The component type for patch field
274
275 //- The internal field type associated with the patch field
277
278 //- Type for a \em calculated patch
280
282private:
283
284 // Private Data
285
286 //- Reference to internal field
287 const DimensionedField<Type, pointMesh>& internalField_;
288
289
290public:
291
292 // Declare run-time constructor selection tables
293
295 (
296 autoPtr,
298 patch,
300 const pointPatch& p,
302 ),
303 (p, iF)
304 );
305
307 (
308 autoPtr,
310 patchMapper,
311 (
312 const pointPatchField<Type>& ptf,
313 const pointPatch& p,
315 const pointPatchFieldMapper& m
316 ),
317 (dynamic_cast<const pointPatchFieldType&>(ptf), p, iF, m)
318 );
319
321 (
322 autoPtr,
325 (
326 const pointPatch& p,
329 ),
330 (p, iF, dict)
331 );
332
334 // Constructors
335
336 //- Construct from patch and internal field
339 const pointPatch&,
341 );
342
343 //- Construct from patch, internal field and dictionary
345 (
346 const pointPatch&,
349 );
350
351 //- Construct by mapping given patch field onto a new patch
353 (
355 const pointPatch&,
358 );
359
360 //- Copy construct onto a new patch with (unused) value
362 (
363 const pointPatchField<Type>& pfld,
364 const pointPatch& p,
366 const Type& value /* (unused) */
367 );
368
369 //- Copy construct with internal field reference
371 (
372 const pointPatchField<Type>& pfld,
374 );
375
376 //- Copy construct
378 :
379 pointPatchField(pfld, pfld.internalField())
380 {}
381
382
383 //- Clone patch field with its own internal field reference
384 virtual autoPtr<pointPatchField<Type>> clone() const = 0;
385
386 //- Clone patch field with an internal field reference
388 (
390 ) const = 0;
392
393 // Factory Methods
394
395 //- Clone a patch field, optionally with internal field reference etc.
396 template<class DerivedPatchField, class... Args>
398 (
399 const DerivedPatchField& pf,
400 Args&&... args
401 )
402 {
404 (
405 new DerivedPatchField(pf, std::forward<Args>(args)...)
406 );
407 }
408
409 //- Return a pointer to a new patchField created on freestore given
410 // patch and internal field
411 // (does not set the patch field values)
413 (
414 const word& patchFieldType,
415 const pointPatch& p,
417 );
418
419 //- Return a pointer to a new patchField created on freestore given
420 // patch and internal field
421 // (does not set the patch field values).
422 // Allows override of constraint type
424 (
425 const word& patchFieldType,
426 const word& actualPatchType,
427 const pointPatch& p,
429 );
430
431 //- Return a pointer to a new patchField created on freestore from
432 // a given pointPatchField mapped onto a new patch
434 (
436 const pointPatch&,
439 );
441 //- Return a pointer to a new patchField created on freestore
442 // from dictionary
444 (
445 const pointPatch&,
447 const dictionary&
448 );
449
450 //- Return a pointer to a new calculatedPointPatchField created on
451 // freestore without setting patchField values
454 (
455 const pointPatch& p
456 );
457
458 //- Return a pointer to a new calculatedPointPatchField created on
459 // freestore without setting patchField values
460 template<class AnyType>
463 (
465 );
466
467
468 //- Destructor
469 virtual ~pointPatchField() = default;
470
471
472 // Member Functions
473
474 // Access
475
476 //- Return the patch size
477 label size() const noexcept
478 {
479 return patch().size();
480 }
481
482 //- Return const-reference to the dimensioned internal field
484 {
485 return internalField_;
487
488 //- Return const-reference to the internal field values
489 const Field<Type>& primitiveField() const noexcept
490 {
491 return internalField_;
492 }
493
494
495 // Evaluation Functions
496
497 //- Extract field using specified addressing
498 // \param internalData The internal field to extract from
499 // \param addressing Addressing (mesh-points) into internal field
500 // \param [out] pfld The extracted patch field.
501 // Should normally be sized according to the patch size(),
502 // which can be smaller than the addressing size
503 template<class Type1>
505 (
506 const UList<Type1>& internalData,
507 const labelUList& addressing,
508 UList<Type1>& pfld
509 ) const;
510
511 //- Return field created from selected internal field values
512 //- given internal field reference
513 // \param internalData The internal field to extract from
514 // \param addressing Addressing (mesh-points) into internal field
515 template<class Type1>
516 [[nodiscard]] tmp<Field<Type1>>
519 const UList<Type1>& internalData,
520 const labelUList& addressing
521 ) const;
522
523 //- Return field created from appropriate internal field values
524 //- given internal field reference
525 template<class Type1>
526 [[nodiscard]] tmp<Field<Type1>>
528 (
529 const UList<Type1>& internalData
530 ) const;
532 //- Return field created from appropriate internal field values
534
535
536 //- Given the internal field and a patch field,
537 //- add the patch field to the internal field
538 template<class Type1>
540 (
541 Field<Type1>& iF,
542 const Field<Type1>& pF
543 ) const;
545 //- Given the internal field and a patch field,
546 //- add selected elements of the patch field to the internal field
547 template<class Type1>
549 (
550 Field<Type1>& iF,
551 const Field<Type1>& pF,
552 const labelUList& points
553 ) const;
554
555 //- Given the internal field and a patch field,
556 //- set the patch field in the internal field
557 template<class Type1>
559 (
560 Field<Type1>& iF,
561 const Field<Type1>& pF,
562 const labelUList& meshPoints
563 ) const;
564
565 //- Given the internal field and a patch field,
566 //- set the patch field in the internal field
567 template<class Type1>
570 Field<Type1>& iF,
571 const Field<Type1>& pF
572 ) const;
573
574
575 // Mapping Functions
576
577 //- Map (and resize as needed) from self given a mapping object
578 virtual void autoMap
579 (
581 )
582 {}
583
584 //- Reverse map the given pointPatchField onto this pointPatchField
585 virtual void rmap
586 (
589 )
590 {}
591
592
593 // Evaluation Functions
594
595 //- Update the coefficients associated with the patch field
596 // Sets Updated to true
597 virtual void updateCoeffs();
598
599 //- Initialise evaluation of the patch field (do nothing)
600 virtual void initEvaluate
601 (
603 )
604 {}
605
606 //- Evaluate the patch field, sets updated() to false
607 virtual void evaluate
608 (
610 );
611
612 //- Initialise the evaluation of the patch field after a local operation
613 virtual void initEvaluateLocal
614 (
616 )
617 {}
618
619 //- Evaluate the patch field after a local operation (e.g. *=)
620 virtual void evaluateLocal
621 (
623 )
624 {}
625
626
627 // Other
628
629 //- Write
630 virtual void write(Ostream& os) const;
631
632
633 // Member Operators
634
635 virtual void operator=(const pointPatchField<Type>&){}
636 virtual void operator+=(const pointPatchField<Type>&){}
637 virtual void operator-=(const pointPatchField<Type>&){}
638 virtual void operator*=(const pointPatchField<scalar>&){}
639 virtual void operator/=(const pointPatchField<scalar>&){}
640
641 virtual void operator=(const Field<Type>&){}
642 virtual void operator+=(const Field<Type>&){}
643 virtual void operator-=(const Field<Type>&){}
644
645 virtual void operator*=(const Field<scalar>&){}
646 virtual void operator/=(const Field<scalar>&){}
647
648 virtual void operator=(const Type&){}
649 virtual void operator+=(const Type&){}
650 virtual void operator-=(const Type&){}
651 virtual void operator*=(const scalar){}
652 virtual void operator/=(const scalar){}
653
654
655 // Force an assignment irrespective of form of patch
656 // By generic these do nothing unless the patch actually has boundary
657 // values
659 virtual void operator==(const pointPatchField<Type>&) {}
660 virtual void operator==(const Field<Type>&) {}
661 virtual void operator==(const Type&) {}
662
663 // Prevent automatic comparison rewriting (c++20)
664 bool operator!=(const pointPatchField<Type>&) const = delete;
665 bool operator!=(const Field<Type>&) const = delete;
666 bool operator!=(const Type&) const = delete;
667
668
669 // Ostream Operator
670
671 friend Ostream& operator<< <Type>
672 (
673 Ostream&,
675 );
676
678 // Other Methods
679
680 //- Negate the field inplace. Dummy placeholder for FieldField
681 void negate() {}
682
683 //- Normalise the field inplace. Dummy placeholder for FieldField
684 void normalise() {}
685};
686
687
688// This function is added as a hack to enable simple backward compatibility
689// with versions using referenceLevel in GeometricField
690template<class Type>
691const pointPatchField<Type>& operator+
692(
693 const pointPatchField<Type>& ppf,
694 const Type&
695)
696{
697 return ppf;
698}
699
700
701// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
702
703} // End namespace Foam
704
705// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
706
708
709#ifdef NoRepository
710 #include "pointPatchField.C"
711 #include "pointPatchFieldNew.C"
714#endif
715
716// Runtime selection macros
718
719// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
720
721#endif
723// ************************************************************************* //
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
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
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition autoPtr.H:65
A calculated boundary condition for pointField.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
Registry of regIOobjects.
A traits class, which is primarily used for primitives and vector-space.
Definition pTraits.H:64
Mesh representing a set of points created from polyMesh.
Definition pointMesh.H:49
Template invariant parts for pointPatchField.
virtual bool fixesValue() const
True if the patch field fixes a value.
const pointPatch & patch() const noexcept
Return the patch.
TypeName("pointPatchField")
Runtime type information.
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.
virtual const word & constraintType() const
The constraint type the pointPatchField implements.
const objectRegistry & db() const
The associated objectRegistry.
virtual void readDict(const dictionary &dict)
Read dictionary entries.
void setManipulated(bool state) noexcept
Set matrix manipulated state. Currently a no-op for pointPatchField.
void setUpdated(bool state) noexcept
Set updated state.
static int disallowGenericPatchField
Debug switch to disallow the use of generic pointPatchField.
pointPatchFieldBase(const pointPatch &p)
Construct from patch.
const word & patchType() const noexcept
The optional patch type.
bool manipulatedMatrix() const noexcept
True if the matrix has already been manipulated. Currently always false for pointPatchField.
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.
word & patchType() noexcept
The optional patch type.
void checkPatch(const pointPatchFieldBase &rhs) const
Check that patches are identical.
static const word & zeroGradientType() noexcept
The type name for zeroGradient patch fields.
static const word & emptyType() noexcept
The type name for empty patch fields.
virtual ~pointPatchFieldBase()=default
Destructor.
Foam::pointPatchFieldMapper.
Abstract base class for point-mesh patch fields.
pointPatch Patch
The patch type for the patch field.
virtual void operator/=(const Field< scalar > &)
virtual void operator==(const pointPatchField< Type > &)
static autoPtr< pointPatchField< Type > > New(const word &patchFieldType, const word &actualPatchType, const pointPatch &p, const DimensionedField< Type, pointMesh > &iF)
Return a pointer to a new patchField created on freestore given.
virtual autoPtr< pointPatchField< Type > > clone(const DimensionedField< Type, pointMesh > &iF) const =0
Clone patch field with an internal field reference.
static autoPtr< pointPatchField< Type > > New(const pointPatchField< Type > &, const pointPatch &, const DimensionedField< Type, pointMesh > &, const pointPatchFieldMapper &)
Return a pointer to a new patchField created on freestore from.
Type value_type
The value_type for the patch field.
virtual void initEvaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Initialise evaluation of the patch field (do nothing).
virtual void operator==(const Type &)
virtual void operator=(const pointPatchField< Type > &)
void patchInternalField(const UList< Type1 > &internalData, const labelUList &addressing, UList< Type1 > &pfld) const
Extract field using specified addressing.
tmp< Field< Type > > patchInternalField() const
Return field created from appropriate internal field values.
virtual void operator+=(const Field< Type > &)
virtual void operator/=(const pointPatchField< scalar > &)
void setInInternalField(Field< Type1 > &iF, const Field< Type1 > &pF, const labelUList &meshPoints) const
Given the internal field and a patch field, set the patch field in the internal field.
virtual void operator=(const Type &)
virtual void operator*=(const Field< scalar > &)
static autoPtr< pointPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
calculatedPointPatchField< Type > Calculated
Type for a calculated patch.
declareRunTimeSelectionTable(autoPtr, pointPatchField, patchMapper,(const pointPatchField< Type > &ptf, const pointPatch &p, const DimensionedField< Type, pointMesh > &iF, const pointPatchFieldMapper &m),(dynamic_cast< const pointPatchFieldType & >(ptf), p, iF, m))
virtual void initEvaluateLocal(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Initialise the evaluation of the patch field after a local operation.
const Field< Type > & primitiveField() const noexcept
Return const-reference to the internal field values.
virtual void operator+=(const pointPatchField< Type > &)
declareRunTimeSelectionTable(autoPtr, pointPatchField, patch,(const pointPatch &p, const DimensionedField< Type, pointMesh > &iF),(p, iF))
virtual void evaluateLocal(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Evaluate the patch field after a local operation (e.g. *=).
virtual autoPtr< pointPatchField< Type > > clone() const =0
Clone patch field with its own internal field reference.
virtual void rmap(const pointPatchField< Type > &, const labelList &)
Reverse map the given pointPatchField onto this pointPatchField.
void addToInternalField(Field< Type1 > &iF, const Field< Type1 > &pF) const
Given the internal field and a patch field, add the patch field to the internal field.
void addToInternalField(Field< Type1 > &iF, const Field< Type1 > &pF, const labelUList &points) const
Given the internal field and a patch field, add selected elements of the patch field to the internal ...
pTraits< Type >::cmptType cmptType
The component type for patch field.
virtual void operator-=(const pointPatchField< Type > &)
virtual void write(Ostream &os) const
Write.
virtual void operator/=(const scalar)
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
void setInInternalField(Field< Type1 > &iF, const Field< Type1 > &pF) const
Given the internal field and a patch field, set the patch field in the internal field.
virtual void operator==(const Field< Type > &)
tmp< Field< Type1 > > patchInternalField(const UList< Type1 > &internalData, const labelUList &addressing) const
Return field created from selected internal field values given internal field reference.
pointPatchField(const pointPatchField< Type > &pfld, const pointPatch &p, const DimensionedField< Type, pointMesh > &iF, const Type &value)
Copy construct onto a new patch with (unused) value.
virtual void operator*=(const pointPatchField< scalar > &)
static autoPtr< pointPatchField< Type > > NewCalculatedType(const pointPatchField< AnyType > &pf)
Return a pointer to a new calculatedPointPatchField created on.
static autoPtr< pointPatchField< Type > > New(const word &patchFieldType, const pointPatch &p, const DimensionedField< Type, pointMesh > &iF)
Return a pointer to a new patchField created on freestore given.
virtual void operator-=(const Type &)
declareRunTimeSelectionTable(autoPtr, pointPatchField, dictionary,(const pointPatch &p, const DimensionedField< Type, pointMesh > &iF, const dictionary &dict),(p, iF, dict))
static autoPtr< pointPatchField< Type > > NewCalculatedType(const pointPatch &p)
Return a pointer to a new calculatedPointPatchField created on.
bool operator!=(const Field< Type > &) const =delete
pointPatchField(const pointPatchField< Type > &pfld, const DimensionedField< Type, pointMesh > &iF)
Copy construct with internal field reference.
static autoPtr< pointPatchField< Type > > New(const pointPatch &, const DimensionedField< Type, pointMesh > &, const dictionary &)
Return a pointer to a new patchField created on freestore.
bool operator!=(const Type &) const =delete
label size() const noexcept
Return the patch size.
void negate()
Negate the field inplace. Dummy placeholder for FieldField.
virtual void autoMap(const pointPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
virtual ~pointPatchField()=default
Destructor.
const DimensionedField< scalar, pointMesh > & internalField() const noexcept
void normalise()
Normalise the field inplace. Dummy placeholder for FieldField.
virtual void operator=(const Field< Type > &)
pointPatchField(const pointPatch &, const DimensionedField< Type, pointMesh > &, const dictionary &)
Construct from patch, internal field and dictionary.
pointPatchField(const pointPatchField< Type > &pfld)
Copy construct.
DimensionedField< Type, pointMesh > Internal
The internal field type associated with the patch field.
virtual void operator*=(const scalar)
tmp< Field< Type1 > > patchInternalField(const UList< Type1 > &internalData) const
Return field created from appropriate internal field values given internal field reference.
virtual void operator-=(const Field< Type > &)
virtual void operator+=(const Type &)
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Evaluate the patch field, sets updated() to false.
bool operator!=(const pointPatchField< Type > &) const =delete
pointPatchField(const pointPatchField< Type > &, const pointPatch &, const DimensionedField< Type, pointMesh > &, const pointPatchFieldMapper &)
Construct by mapping given patch field onto a new patch.
pointPatchField(const pointPatch &, const DimensionedField< Type, pointMesh > &)
Construct from patch and internal field.
Basic pointPatch represents a set of points from the mesh.
Definition pointPatch.H:67
virtual label size() const =0
Return size.
A class for managing temporary objects.
Definition tmp.H:75
A class for handling words, derived from Foam::string.
Definition word.H:66
static const word null
An empty word.
Definition word.H:84
volScalarField & p
OBJstream os(runTime.globalPath()/outputName)
const pointField & points
const word zeroGradientType
A zeroGradient patch field type.
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
UList< label > labelUList
A UList of labels.
Definition UList.H:75
runTime write()
Macros for creating pointPatchField types.
#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