42 #ifndef Foam_polyPatch_H 43 #define Foam_polyPatch_H 86 mutable std::unique_ptr<labelList::subList> faceCellsPtr_;
89 mutable std::unique_ptr<labelList> mePtr_;
92 std::unique_ptr<scalarField> areaFractionPtr_;
153 const word& patchType
168 const word& patchType
184 const word& patchType
206 const word& patchType
255 virtual autoPtr<polyPatch>
clone 268 virtual autoPtr<polyPatch>
clone 277 (*
this, bm,
index, mapAddressing, newStart);
284 static autoPtr<polyPatch>
New 286 const word& patchType,
306 const word& patchType,
374 labelRange
range()
const 376 return labelRange(start_, this->size());
479 return facei - start_;
virtual bool changeTopology() const
For dynamic mesh cases - return true if this patch will change the topology.
virtual word neighbRegionID() const
Return neighbour region name.
label whichFace(const label facei) const noexcept
Return label of face in patch from global face label.
virtual void newInternalProcFaces(label &, label &) const
Return number of new internal of this polyPatch faces.
const UIndirectList< T > patchInternalList(const UList< T > &internalValues) const
Extract face cell data.
friend class polyBoundaryMesh
A list of keyword definitions, which are a keyword followed by a number of values (eg...
label start() const noexcept
Return start label of this patch in the polyMesh face list.
static int disallowGenericPolyPatch
Debug switch to disallow the use of genericPolyPatch.
virtual void initUpdateMesh(PstreamBuffers &)
Initialise the update of the patch topology.
Identifies a patch by name and index, with optional physical type and group information.
virtual bool masterImplicit() const
Return implicit master.
A range or interval of labels defined by a start and a size.
const wordList & inGroups() const noexcept
The (optional) groups that the patch belongs to.
friend Ostream & operator<<(Ostream &, const polyPatch &)
SubList< T > subList
Declare type of subList.
virtual void clearAddressing()
Clear addressing.
Smooth ATC in cells next to a set of patches supplied by type.
virtual void initMovePoints(PstreamBuffers &, const pointField &)
Initialise the patches for moving points.
SubField is a Field obtained as a section of another Field, without its own allocation. SubField is derived from a SubList rather than a List.
labelRange range() const
Return start/size range of this patch.
virtual const labelUList & nbrCells() const
Return nbrCells.
UList< label > labelUList
A UList of labels.
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
virtual void clearGeom()
Clear geometry.
virtual void movePoints(PstreamBuffers &, const pointField &p)
Correct patches after moving points.
tmp< scalarField > areaFraction() const
Return the cached area fraction. Usually only set for the non-overlap patches on ACMI.
virtual void movePoints(const Field< point_type > &)
Correct patch after moving points.
List< T > values(const HashTable< T, Key, Hash > &tbl, const bool doSort=false)
List of values from HashTable, optionally sorted.
PtrList< polyPatch > polyPatchList
Store lists of polyPatch as a PtrList.
declareRunTimeSelectionTable(autoPtr, polyPatch, word,(const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm, const word &patchType),(name, size, start, index, bm, patchType))
A list of faces which address into the list of points.
A List obtained as a section of another List.
void operator=(const polyPatch &p)
Copy assignment.
virtual bool coupled() const
Return true if this patch is geometrically coupled (i.e. faces and.
virtual void write(Ostream &os) const
Write the polyPatch data as a dictionary.
const polyBoundaryMesh & boundaryMesh() const noexcept
Return boundaryMesh reference.
const labelUList & faceCells() const
Return face-cell addressing.
A class for handling words, derived from Foam::string.
virtual ~polyPatch()
Destructor.
label offset() const noexcept
The offset where this patch starts in the boundary face list.
tmp< vectorField > faceCellCentres() const
Return face cell centres.
virtual void updateMesh(PstreamBuffers &)
Update of the patch topology.
const Field< point_type > & points() const noexcept
Return reference to global points.
polyPatch(const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm, const word &patchType)
Construct from components.
virtual autoPtr< polyPatch > clone(const labelList &faceCells) const
Construct and return a clone, setting faceCells.
A polyBoundaryMesh is a polyPatch list with additional search methods and registered IO...
virtual label neighbPolyPatchID() const
Return nbr patchID.
const word & name() const noexcept
The patch name.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
const vectorField::subField faceAreas() const
Return face normals.
virtual void calcGeometry(PstreamBuffers &)
Calculate the patch geometry.
virtual refPtr< labelListList > mapCollocatedFaces() const
Return mapped collocated faces.
const word & physicalType() const noexcept
The (optional) physical type of the patch.
OBJstream os(runTime.globalPath()/outputName)
const labelList & meshEdges() const
Return global edge index for local edges.
virtual bool setTopology(polyTopoChange &)
Collect topology changes in a polyTopoChange object.
Buffers for inter-processor communications streams (UOPstream, UIPstream).
virtual void initGeometry(PstreamBuffers &)
Initialise the calculation of the patch geometry.
static wordList constraintTypes()
Return a list of all the constraint patch types.
Basic run-time type information using word as the type's name. Used to enhance the standard RTTI to c...
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces)
const List< T >::subList patchSlice(const UList< T > &values) const
This patch slice from the complete list, which has size mesh::nFaces(), using the number of patch fac...
Conversion/extraction to labelRange operation (functor).
static bool constraintType(const word &patchType)
Return true if the given type is a constraint type.
virtual bool order(PstreamBuffers &, const primitivePatch &, labelList &faceMap, labelList &rotation) const
Return new ordering for primitivePatch.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers...
A List with indirect addressing. Like IndirectList but does not store addressing. ...
Direct mesh changes based on v1.3 polyTopoChange syntax.
static const UList< label > & null() noexcept
Return a null UList (reference to a nullObject). Behaves like an empty UList.
SubField< Type > subField
Declare type of subField.
static autoPtr< polyPatch > New(const word &patchType, const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm)
Return pointer to a new patch created on freestore from components.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
TypeName("patch")
Runtime type information.
virtual void initOrder(PstreamBuffers &, const primitivePatch &) const
Initialize ordering for primitivePatch. Does not.
Macros to ease declaration of run-time selection tables.
label index() const noexcept
The index of this patch in the boundaryMesh.
A class for managing temporary objects.
static autoPtr< T > New(Args &&... args)
Construct autoPtr with forwarding arguments.
A patch is a list of labels that address the faces in the global face list.
const List< T >::subList boundarySlice(const List< T > &values) const
This patch slice from the list of boundary values, which has size mesh::nBoundaryFaces(), using the number of patch faces.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
const vectorField::subField faceCentres() const
Return face centres.