47#ifndef Foam_fvPatchField_H
48#define Foam_fvPatchField_H
64class fvPatchFieldMapper;
67template<
class Type>
class fvPatchField;
68template<
class Type>
class calculatedFvPatchField;
69template<
class Type>
class fvMatrix;
98 bool manipulatedMatrix_;
153 (
dynamic_cast<const fvPatchFieldType&
>(ptf),
p, iF, m)
209 const bool valueRequired=
true
254 const word& patchFieldType,
265 const word& patchFieldType,
266 const word& actualPatchType,
299 template<
class Type2>
324 bool old(useImplicit_);
371 return internalField_;
377 return internalField_;
401 return manipulatedMatrix_;
618#define makeFvPatchField(fvPatchTypeField) \
620defineNamedTemplateTypeNameAndDebug(fvPatchTypeField, 0); \
622int fvPatchTypeField::disallowGenericFvPatchField \
624 debug::debugSwitch("disallowGenericFvPatchField", 0) \
626defineTemplateRunTimeSelectionTable(fvPatchTypeField, patch); \
627defineTemplateRunTimeSelectionTable(fvPatchTypeField, patchMapper); \
628defineTemplateRunTimeSelectionTable(fvPatchTypeField, dictionary);
631#define addToPatchFieldRunTimeSelection(PatchTypeField, typePatchTypeField) \
632 addToRunTimeSelectionTable \
635 typePatchTypeField, \
638 addToRunTimeSelectionTable \
641 typePatchTypeField, \
644 addToRunTimeSelectionTable \
647 typePatchTypeField, \
653#define addRemovableToPatchFieldRunTimeSelection\
654(PatchTypeField, typePatchTypeField) \
656 addRemovableToRunTimeSelectionTable \
659 typePatchTypeField, \
662 addRemovableToRunTimeSelectionTable \
665 typePatchTypeField, \
668 addRemovableToRunTimeSelectionTable \
671 typePatchTypeField, \
677#define makePatchTypeField(PatchTypeField, typePatchTypeField) \
678 defineTypeNameAndDebug(typePatchTypeField, 0); \
679 addToPatchFieldRunTimeSelection(PatchTypeField, typePatchTypeField)
682#define makeRemovablePatchTypeField(PatchTypeField, typePatchTypeField) \
683 defineTypeNameAndDebug(typePatchTypeField, 0); \
684 addRemovableToPatchFieldRunTimeSelection(PatchTypeField, typePatchTypeField)
687#define makeTemplatePatchTypeField(fieldType, type) \
688 defineNamedTemplateTypeNameAndDebug \
690 CAT4(type, FvPatch, CAPITALIZE(fieldType), Field), \
693 addToPatchFieldRunTimeSelection \
695 CAT3(fvPatch, CAPITALIZE(fieldType), Field), \
696 CAT4(type, FvPatch, CAPITALIZE(fieldType), Field) \
699#define makePatchFields(type) \
700 FOR_ALL_FIELD_TYPES(makeTemplatePatchTypeField, type)
702#define makePatchFieldTypeName(fieldType, type) \
703 defineNamedTemplateTypeNameAndDebug \
705 CAT4(type, FvPatch, CAPITALIZE(fieldType), Field), \
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)
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic templated field type.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
commsTypes
Types of communications.
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,...
A special matrix type and solver, designed for finite volume solutions of scalar equations....
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...
virtual tmp< Field< Type > > valueBoundaryCoeffs(const tmp< Field< scalar > > &) const
Return the matrix source coefficients corresponding to the.
virtual void initEvaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::blocking)
Initialise the evaluation of the patch field.
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
bool manipulatedMatrix() const
Return true if the matrix has already been manipulated.
virtual bool fixesValue() const
Return true if this patch field fixes a value.
DimensionedField< Type, volMesh > Internal
The internal field type associated with the patch field.
virtual tmp< Field< Type > > patchNeighbourField() const
Return patchField on the opposite patch of a coupled patch.
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.
declareRunTimeSelectionTable(tmp, fvPatchField, dictionary,(const fvPatch &p, const DimensionedField< Type, volMesh > &iF, const dictionary &dict),(p, iF, dict))
virtual void operator==(const fvPatchField< Type > &)
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))
virtual tmp< Field< Type > > patchInternalField() const
Return internal field next to patch as patch field.
fvPatch Patch
The patch type for the patch field.
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.
virtual void operator-=(const fvPatchField< Type > &)
const objectRegistry & db() const
Return local objectRegistry.
virtual void operator=(const UList< Type > &)
const Field< Type > & primitiveField() const
Return internal field reference.
virtual tmp< Field< Type > > gradientInternalCoeffs() const
Return the matrix diagonal coefficients corresponding to the.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
bool useImplicit() const noexcept
Use implicit formulation for coupled patches only.
TypeName("fvPatchField")
Runtime type information.
calculatedFvPatchField< Type > Calculated
Type for a calculated patch.
virtual void manipulateMatrix(fvMatrix< Type > &matrix)
Manipulate matrix.
virtual void operator*=(const fvPatchField< scalar > &)
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.
virtual void operator+=(const fvPatchField< Type > &)
virtual tmp< Field< Type > > valueInternalCoeffs(const tmp< Field< scalar > > &) const
Return the matrix diagonal coefficients corresponding to the.
const DimensionedField< Type, volMesh > & internalField() const
Return dimensioned internal field reference.
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.
virtual void updateWeightedCoeffs(const scalarField &weights)
Update the coefficients associated with the patch field.
virtual void rmap(const fvPatchField< Type > &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
word & patchType()
Optional patch type.
virtual tmp< fvPatchField< Type > > clone() const
Construct and return a clone.
virtual bool assignable() const
Return true if the value of the patch field.
virtual void operator/=(const fvPatchField< scalar > &)
bool updated() const
Return true if the boundary condition has already been updated.
void check(const fvPatchField< Type > &) const
Check fvPatchField<Type> against given fvPatchField<Type>
static const word & calculatedType()
Return the type of the calculated for of fvPatchField.
const fvPatch & patch() const
Return patch.
virtual tmp< fvPatchField< Type > > clone(const DimensionedField< Type, volMesh > &iF) const
Construct and return a clone setting internal field reference.
virtual tmp< Field< Type > > gradientBoundaryCoeffs() const
Return the matrix source coefficients corresponding to the.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Registry of regIOobjects.
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
Header files for all the primitive types that Fields are instantiated for.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces)
#define declareRunTimeSelectionTable(ptrWrapper, baseType, argNames, argList, parList)
Declare a run-time selection (variables and adder classes)
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.