31 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
50 label nUnset = this->size();
56 if (iter().isDict() && !iter().keyword().isPattern())
58 label patchi = bmesh_.findPatchID(iter().keyword());
101 const labelList patchIDs = bmesh_.findIndices
111 if (!this->
set(patchi))
135 if (bmesh_[
patchi].
type() == emptyPolyPatch::typeName)
142 emptyPolyPatch::typeName,
161 dict.
subDict(bmesh_[patchi].name())
175 if (bmesh_[
patchi].
type() == cyclicPolyPatch::typeName)
180 ) <<
"Cannot find patchField entry for cyclic " 182 <<
"Is your field uptodate with split cyclics?" <<
endl 183 <<
"Run foamUpgradeCyclics to convert mesh and fields" 191 ) <<
"Cannot find patchField entry for " 201 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
213 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
219 const word& patchFieldType
246 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
266 patchFieldTypes.
size() != this->size()
267 || (constraintTypes.
size() && (constraintTypes.
size() != this->size()))
271 <<
"Incorrect number of patch type specifications given" <<
nl 272 <<
" Number of patches in mesh = " << bmesh.size()
273 <<
" number of patch type specifications = " 274 << patchFieldTypes.
size()
278 if (constraintTypes.
size())
288 constraintTypes[patchi],
314 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
320 const PtrList<PatchField<Type>>& ptfl
338 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
362 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
380 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
398 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
410 readField(field, dict);
416 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
432 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
472 bmesh_.mesh().globalData().patchSchedule();
474 forAll(patchSchedule, patchEvali)
476 if (patchSchedule[patchEvali].init)
478 this->
operator[](patchSchedule[patchEvali].patch)
483 this->
operator[](patchSchedule[patchEvali].patch)
491 <<
"Unsupported communications type " 498 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
516 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
522 BoundaryInternalField(*
this);
526 BoundaryInternalField[
patchi] ==
530 return BoundaryInternalField;
534 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
560 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
569 if (isA<lduInterfaceField>(this->
operator[](
patchi)))
574 &refCast<const lduInterfaceField>
586 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
605 "GeometricField<Type, PatchField, GeoMesh>::Boundary::" 606 "writeEntry(const word& keyword, Ostream& os) const" 613 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
625 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
637 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
648 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
659 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
674 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
688 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
704 template<
class Type,
template<
class>
class PatchField,
class GeoMesh>
712 os << static_cast<const FieldField<PatchField, Type>&>(bf);
bool isA(const Type &t)
Check if a dynamic_cast to typeid is possible.
const_reverse_iterator rbegin() const
bool found(const word &, bool recursive=false, bool patternMatch=true) const
Search dictionary for given keyword.
#define forAll(list, i)
Loop across all elements in list.
Boundary(const BoundaryMesh &)
Construct from a BoundaryMesh.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & indent(Ostream &os)
Indent stream.
const keyType & keyword() const
Return keyword.
GeoMesh::BoundaryMesh BoundaryMesh
Type of boundary mesh on which this.
errorManipArg< error, int > exit(error &err, const int errNo=1)
A list of keyword definitions, which are a keyword followed by any number of values (e...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
virtual bool check(const char *operation) const
Check IOstream status for given operation.
void writeEntry(const word &keyword, Ostream &os) const
Write boundary field as dictionary entry.
To & refCast(From &r)
Reference type cast template function.
void size(const label)
Override size to be inconsistent with allocated storage.
const T & operator[](const label) const
Return element const reference.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void evaluate()
Evaluate boundary conditions.
An abstract base class for implicitly-coupled interface fields e.g. processor and cyclic patch fields...
virtual const dictionary & dict() const =0
Return dictionary if this entry is a dictionary.
static label nRequests()
Get number of outstanding requests.
Generic GeometricField class.
LduInterfaceFieldPtrsList< Type > interfaces() const
Return a list of pointers for each patch field with only those.
wordList types() const
Return a list of the patch types.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
void readField(const Internal &field, const dictionary &dict)
Read the boundary field.
void operator=(const FieldField< Field, Type > &)
void updateCoeffs()
Update the boundary condition coefficients.
points setSize(newPointi)
volScalarField & e
Elementary charge.
A class for handling words, derived from string.
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
errorManip< error > abort(error &err)
virtual bool isDict() const
Return true if this entry is a dictionary.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
const const_reverse_iterator & rend() const
bool set(const label) const
Is element set.
Ostream & decrIndent(Ostream &os)
Decrement the indent level.
static const NamedEnum< commsTypes, 3 > commsTypeNames
static void waitRequests(const label start=0)
Wait until all requests (from start onwards) have finished.
word name(const complex &)
Return a string representation of a complex.
An STL-conforming const_reverse_iterator.
label size() const
Return the number of elements in the UPtrList.
static commsTypes defaultCommsType
Default commsType.
static bool & parRun()
Is this a parallel run?
tmp< GeometricField< Type, PatchField, GeoMesh > > clone() const
Clone.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
lduInterfaceFieldPtrsList scalarInterfaces() const
Return a list of pointers for each patch field with only those.
friend Ostream & operator(Ostream &, const FieldField< PatchField, Type > &)
Generic mesh wrapper used by volMesh, surfaceMesh, pointMesh etc.
Ostream & incrIndent(Ostream &os)
Increment the indent level.
Boundary boundaryInternalField() const
Return BoundaryField of the cell values neighbouring.
A keyword and a list of tokens is an 'entry'.
bool isPattern() const
Should be treated as a match rather than a literal string.
#define InfoInFunction
Report an information message using Foam::Info.