44 #ifndef fvPatchField_H 45 #define fvPatchField_H 59 class fvPatchFieldMapper;
75 Ostream& operator<<(Ostream&, const fvPatchField<Type>&);
101 bool manipulatedMatrix_;
147 (dynamic_cast<const fvPatchFieldType&>(ptf), p, iF, m)
203 const bool valueRequired=
false 260 const word& actualPatchType,
293 template<
class Type2>
349 return internalField_;
355 return internalField_;
379 return manipulatedMatrix_;
533 template<
class EntryType>
537 const word& entryName,
538 const EntryType& value1,
539 const EntryType& value2
597 #define makeFvPatchField(fvPatchTypeField) \ 599 defineNamedTemplateTypeNameAndDebug(fvPatchTypeField, 0); \ 601 int fvPatchTypeField::disallowGenericFvPatchField \ 603 debug::debugSwitch("disallowGenericFvPatchField", 0) \ 605 defineTemplateRunTimeSelectionTable(fvPatchTypeField, patch); \ 606 defineTemplateRunTimeSelectionTable(fvPatchTypeField, patchMapper); \ 607 defineTemplateRunTimeSelectionTable(fvPatchTypeField, dictionary); 610 #define addToPatchFieldRunTimeSelection(PatchTypeField, typePatchTypeField) \ 611 addToRunTimeSelectionTable \ 614 typePatchTypeField, \ 617 addToRunTimeSelectionTable \ 620 typePatchTypeField, \ 623 addToRunTimeSelectionTable \ 626 typePatchTypeField, \ 632 #define addRemovableToPatchFieldRunTimeSelection\ 633 (PatchTypeField, typePatchTypeField) \ 635 addRemovableToRunTimeSelectionTable \ 638 typePatchTypeField, \ 641 addRemovableToRunTimeSelectionTable \ 644 typePatchTypeField, \ 647 addRemovableToRunTimeSelectionTable \ 650 typePatchTypeField, \ 656 #define makePatchTypeField(PatchTypeField, typePatchTypeField) \ 657 defineTypeNameAndDebug(typePatchTypeField, 0); \ 658 addToPatchFieldRunTimeSelection(PatchTypeField, typePatchTypeField) 661 #define makeRemovablePatchTypeField(PatchTypeField, typePatchTypeField) \ 662 defineTypeNameAndDebug(typePatchTypeField, 0); \ 663 addRemovableToPatchFieldRunTimeSelection(PatchTypeField, typePatchTypeField) 667 #define makeTemplatePatchTypeField(PatchTypeField, typePatchTypeField) \ 668 defineNamedTemplateTypeNameAndDebug(typePatchTypeField, 0); \ 669 addToPatchFieldRunTimeSelection(PatchTypeField, typePatchTypeField) 672 #define makePatchFields(type) \ 673 makeTemplatePatchTypeField \ 675 fvPatchScalarField, \ 676 type##FvPatchScalarField \ 678 makeTemplatePatchTypeField \ 680 fvPatchVectorField, \ 681 type##FvPatchVectorField \ 683 makeTemplatePatchTypeField \ 685 fvPatchSphericalTensorField, \ 686 type##FvPatchSphericalTensorField \ 688 makeTemplatePatchTypeField \ 690 fvPatchSymmTensorField, \ 691 type##FvPatchSymmTensorField \ 693 makeTemplatePatchTypeField \ 695 fvPatchTensorField, \ 696 type##FvPatchTensorField \ 700 #define makePatchFieldsTypeName(type) \ 701 defineNamedTemplateTypeNameAndDebug(type##FvPatchScalarField, 0); \ 702 defineNamedTemplateTypeNameAndDebug(type##FvPatchVectorField, 0); \ 703 defineNamedTemplateTypeNameAndDebug(type##FvPatchSphericalTensorField, 0);\ 704 defineNamedTemplateTypeNameAndDebug(type##FvPatchSymmTensorField, 0); \ 705 defineNamedTemplateTypeNameAndDebug(type##FvPatchTensorField, 0) 708 #define makePatchTypeFieldTypedefs(type) \ 709 typedef type##FvPatchField<scalar> type##FvPatchScalarField; \ 710 typedef type##FvPatchField<vector> type##FvPatchVectorField; \ 711 typedef type##FvPatchField<sphericalTensor> \ 712 type##FvPatchSphericalTensorField; \ 713 typedef type##FvPatchField<symmTensor> type##FvPatchSymmTensorField; \ 714 typedef type##FvPatchField<tensor> type##FvPatchTensorField; const fvPatch & patch() const
Return patch.
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::blocking)
Evaluate the patch field, sets Updated to false.
virtual tmp< fvPatchField< Type > > clone() const
Construct and return a clone.
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
virtual tmp< Field< Type > > gradientBoundaryCoeffs() const
Return the matrix source coefficients corresponding to the.
virtual bool coupled() const
Return true if this patch field is coupled.
declareRunTimeSelectionTable(tmp, fvPatchField, patch,(const fvPatch &p, const DimensionedField< Type, volMesh > &iF),(p, iF))
const word & patchType() const
Optional patch type.
A list of keyword definitions, which are a keyword followed by any number of values (e...
static int disallowGenericFvPatchField
Debug switch to disallow the use of genericFvPatchField.
virtual tmp< Field< Type > > patchInternalField() const
Return internal field next to patch as patch field.
commsTypes
Types of communications.
const Field< Type > & primitiveField() const
Return internal field reference.
virtual void operator*=(const fvPatchField< scalar > &)
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
virtual void initEvaluate(const Pstream::commsTypes commsType=Pstream::blocking)
Initialise the evaluation of the patch field.
static const word & calculatedType()
Return the type of the calculated for of fvPatchField.
virtual bool assignable() const
Return true if the value of the patch field.
virtual void operator==(const fvPatchField< Type > &)
virtual tmp< Field< Type > > patchNeighbourField() const
Return patchField on the opposite patch of a coupled patch.
virtual tmp< Field< Type > > valueInternalCoeffs(const tmp< Field< scalar >> &) const
Return the matrix diagonal coefficients corresponding to the.
Pre-declare SubField and related Field type.
A class for handling words, derived from string.
virtual tmp< Field< Type > > gradientInternalCoeffs() const
Return the matrix diagonal coefficients corresponding to the.
virtual void operator/=(const fvPatchField< scalar > &)
Foam::fvPatchFieldMapper.
This boundary condition is not designed to be evaluated; it is assmued that the value is assigned via...
bool updated() const
Return true if the boundary condition has already been updated.
virtual void rmap(const fvPatchField< Type > &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
A special matrix type and solver, designed for finite volume solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
static tmp< fvPatchField< Type > > New(const word &, const fvPatch &, const DimensionedField< Type, volMesh > &)
Return a pointer to a new patchField created on freestore given.
virtual void manipulateMatrix(fvMatrix< Type > &matrix)
Manipulate matrix.
virtual bool fixesValue() const
Return true if this patch field fixes a value.
void check(const fvPatchField< Type > &) const
Check fvPatchField<Type> against given fvPatchField<Type>
virtual tmp< Field< Type > > snGrad() const
Return patch-normal gradient.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
virtual void operator-=(const fvPatchField< Type > &)
virtual void operator+=(const fvPatchField< Type > &)
const objectRegistry & db() const
Return local objectRegistry.
TypeName("fvPatchField")
Runtime type information.
calculatedFvPatchField< Type > Calculated
void writeEntryIfDifferent(Ostream &os, const word &entryName, const EntryType &value1, const EntryType &value2) const
Helper function to write the keyword and entry only if the.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
virtual void operator=(const UList< Type > &)
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
static tmp< fvPatchField< Type > > NewCalculatedType(const fvPatch &)
Return a pointer to a new calculatedFvPatchField created on.
virtual void updateWeightedCoeffs(const scalarField &weights)
Update the coefficients associated with the patch field.
A class for managing temporary objects.
Registry of regIOobjects.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
virtual tmp< Field< Type > > valueBoundaryCoeffs(const tmp< Field< scalar >> &) const
Return the matrix source coefficients corresponding to the.
fvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
bool manipulatedMatrix() const
Return true if the matrix has already been manipulated.
const DimensionedField< Type, volMesh > & internalField() const
Return dimensioned internal field reference.
virtual void write(Ostream &) const
Write.