Go to the documentation of this file.
68 Foam::faBoundaryMesh::faBoundaryMesh
85 warnNoRereading<faBoundaryMesh>();
93 patches.setSize(patchEntries.size());
102 patchEntries[patchi].keyword(),
103 patchEntries[patchi].
dict(),
117 Foam::faBoundaryMesh::faBoundaryMesh
138 (void)mesh_.pointAreaNormals();
142 operator[](patchi).initGeometry();
147 operator[](patchi).calcGeometry();
157 UPtrList<const labelUList> list(
patches.size());
161 list.set(patchi, &
patches[patchi].edgeFaces());
176 const lduInterface* lduPtr = isA<lduInterface>(
patches[patchi]);
180 list.set(patchi, lduPtr);
196 if (isA<processorFaPatch>(
p))
228 label beg = mesh_.nInternalEdges();
231 const label len =
patches[patchi].nEdges();
242 PtrListOps::get<label>
245 [](
const faPatch&
p) {
return p.nEdges(); }
254 List<labelRange> list(
patches.size());
256 label beg = mesh_.nInternalEdges();
259 const label len =
patches[patchi].nEdges();
260 list[patchi].reset(beg, len);
269 return mesh_.nInternalEdges();
275 return mesh_.nBoundaryEdges();
281 return labelRange(mesh_.nInternalEdges(), mesh_.nBoundaryEdges());
319 const wordRes& matcher,
327 else if (matcher.size() == 1)
329 return this->indices(matcher.first(), useGroups);
348 if (patchName.empty())
363 if (edgeIndex <
mesh().nInternalEdges())
367 else if (edgeIndex >=
mesh().nEdges())
370 <<
"Edge " << edgeIndex
371 <<
" out of bounds. Number of geometric edges " <<
mesh().
nEdges()
377 label start = mesh_.patchStarts()[patchi];
378 label size = operator[](patchi).faPatch::size();
383 && edgeIndex < start + size
392 <<
"error in patch search algorithm"
404 bool hasError =
false;
408 if (bm[patchi].start() != nextPatchStart && !hasError)
413 <<
" ****Problem with boundary patch " << patchi
414 <<
" named " << bm[patchi].
name()
415 <<
" of type " << bm[patchi].type()
416 <<
". The patch should start on face no " << nextPatchStart
417 <<
" and the patch specifies " << bm[patchi].
start()
419 <<
"Possibly consecutive patches have this same problem."
420 <<
" Suppressing future warnings." <<
endl;
425 nextPatchStart += bm[patchi].faPatch::size();
431 <<
"This mesh is not valid: boundary definition is in error."
438 Info <<
"Boundary definition OK." <<
endl;
452 (void)mesh_.pointAreaNormals();
474 patches[patchi].initUpdateMesh();
List< label > labelList
A List of labels.
vectorField pointField
pointField is a vectorField.
label whichPatch(const label edgeIndex) const
Defines the attributes of an object for which implicit objectRegistry management is supported,...
bool isPattern() const noexcept
A class for handling words, derived from Foam::string.
labelList indices(const wordRe &matcher, const bool useGroups=true) const
bool writeData(Ostream &os) const
bool checkDefinition(const bool report=false) const
labelList patchSizes() const
An abstract base class for implicitly-coupled interfaces e.g. processor and cyclic patches.
List< labelRange > patchRanges() const
auto key(const Type &t) -> typename std::enable_if< std::is_enum< Type >::value, typename std::underlying_type< Type >::type >::type
labelList findMatching(const UPtrList< T > &list, const UnaryMatchPredicate &matcher)
A class representing the concept of 1 (one) that can be used to avoid manipulating objects known to b...
Functions to operate on Pointer Lists.
UPtrList< const labelUList > edgeFaces() const
Ostream & endl(Ostream &os)
void movePoints(const pointField &)
static autoPtr< faPatch > New(const word &name, const dictionary &dict, const label index, const faBoundaryMesh &bm)
const vectorField & pointAreaNormals() const
virtual Ostream & beginBlock(const keyType &kw)
Ostream & incrIndent(Ostream &os)
A wordRe is a Foam::word, but can contain a regular expression for matching words or strings.
bool good() const noexcept
Ostream & operator<<(Ostream &, const boundaryPatch &p)
label findIndex(const wordRe &key) const
Finite area boundary mesh.
Generic templated field type.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
label nInternalEdges() const
The IOstreamOption is a simple container for options an IOstream can normally have.
#define SeriousErrorInFunction
A list of pointers to objects of type <T>, without allocation/deallocation management of the pointers...
A range or interval of labels defined by a start and a size.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
virtual Ostream & endBlock()
virtual bool check(const char *operation) const
label findPatchID(const word &patchName) const
OBJstream os(runTime.globalPath()/outputName)
virtual bool writeObject(IOstreamOption streamOpt, const bool valid) const
virtual bool writeObject(IOstreamOption streamOpt, const bool valid) const
Ostream & decrIndent(Ostream &os)
errorManip< error > abort(error &err)
void movePoints(const pointField &p)
readOption readOpt() const noexcept
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
const word & name() const noexcept
regIOobject is an abstract class derived from IOobject to handle automatic object registration with t...
#define FatalErrorInFunction
const T * set(const label i) const
label nNonProcessor() const
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
A List of wordRe with additional matching capabilities.
label firstMatching(const UPtrList< T > &list, const UnaryMatchPredicate &matcher)
const polyBoundaryMesh & patches
@ END_LIST
End list [isseparator].
Finite area mesh. Used for 2-D non-Euclidian finite area method.
PtrList< faPatch > faPatchList
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Istream & readStream(const word &, const bool valid=true)
@ BEGIN_LIST
Begin list [isseparator].
Finite area patch class. Used for 2-D non-Euclidian finite area method.
defineTypeNameAndDebug(combustionModel, 0)
UPtrList< const lduInterface > lduInterfacePtrsList
List of coupled interface fields to be used in coupling.
labelList patchStarts() const
lduInterfacePtrsList interfaces() const