Cyclic plane patch. More...
#include <OpenFOAM/cyclicPolyPatch.H>
Cyclic plane patch.
Note: morph patch face ordering uses geometric matching so with the following restrictions: -halves should be flat planes. -no rotation in patch plane
Uses a featureCos to find the two halves (or should be fully disconnected). Uses coupledPolyPatch::calcFaceTol to calculate tolerance per face which might need tweaking.
Switch on 'cyclicPolyPatch' debug flag to write .obj files to show the matching.
Definition at line 66 of file cyclicPolyPatch.H.
Public Member Functions | |
TypeName ("cyclic") | |
Runtime type information. | |
cyclicPolyPatch (const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm) | |
Construct from components. | |
cyclicPolyPatch (const word &name, const dictionary &dict, const label index, const polyBoundaryMesh &bm) | |
Construct from dictionary. | |
cyclicPolyPatch (const cyclicPolyPatch &, const polyBoundaryMesh &) | |
Construct as copy, resetting the boundary mesh. | |
cyclicPolyPatch (const cyclicPolyPatch &pp, const polyBoundaryMesh &bm, const label index, const label newSize, const label newStart) | |
Construct given the original patch and resetting the. | |
virtual autoPtr< polyPatch > | clone (const polyBoundaryMesh &bm) const |
Construct and return a clone, resetting the boundary mesh. | |
virtual autoPtr< polyPatch > | clone (const polyBoundaryMesh &bm, const label index, const label newSize, const label newStart) const |
Construct and return a clone, resetting the face list. | |
virtual | ~cyclicPolyPatch () |
const edgeList & | coupledPoints () const |
Return connected points (in patch local point indexing). Demand. | |
const edgeList & | coupledEdges () const |
Return connected edges (in patch local edge indexing). Demand. | |
vector | separation (const label facei) const |
const tensor & | transformT (const label facei) const |
template<class T > | |
T | transform (const T &t, const label facei) const |
label | transformLocalFace (const label facei) const |
label | transformGlobalFace (const label facei) const |
transformType | transform () const |
Type of transform. | |
const vector & | rotationAxis () const |
Axis of rotation for rotational cyclics. | |
const point & | rotationCentre () const |
point on axis of rotation for rotational cyclics | |
const vector & | separationVector () const |
Translation vector for translational cyclics. | |
virtual void | initOrder (const primitivePatch &) const |
Initialize ordering for primitivePatch. Does not. | |
virtual bool | order (const primitivePatch &, labelList &faceMap, labelList &rotation) const |
Return new ordering for primitivePatch. | |
virtual void | write (Ostream &) const |
Write the polyPatch data as a dictionary. | |
![]() | |
TypeName ("coupled") | |
Runtime type information. | |
coupledPolyPatch (const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm) | |
Construct from components. | |
coupledPolyPatch (const word &name, const dictionary &dict, const label index, const polyBoundaryMesh &bm) | |
Construct from dictionary. | |
coupledPolyPatch (const coupledPolyPatch &, const polyBoundaryMesh &) | |
Construct as copy, resetting the boundary mesh. | |
coupledPolyPatch (const coupledPolyPatch &pp, const polyBoundaryMesh &bm, const label index, const label newSize, const label newStart) | |
Construct given the original patch and resetting the. | |
virtual | ~coupledPolyPatch () |
virtual bool | coupled () const |
Return true because this patch is coupled. | |
bool | separated () const |
Are the coupled planes separated. | |
const vectorField & | separation () const |
Return the offset (distance) vector from one side of the couple. | |
bool | parallel () const |
Are the cyclic planes parallel. | |
const tensorField & | forwardT () const |
Return face transformation tensor. | |
const tensorField & | reverseT () const |
Return neighbour-cell transformation tensor. | |
![]() | |
TypeName ("patch") | |
Runtime type information. | |
declareRunTimeSelectionTable (autoPtr, polyPatch, word,(const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm),(name, size, start, index, bm)) | |
declareRunTimeSelectionTable (autoPtr, polyPatch, dictionary,(const word &name, const dictionary &dict, const label index, const polyBoundaryMesh &bm),(name, dict, index, bm)) | |
polyPatch (const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm) | |
Construct from components. | |
polyPatch (const word &name, const dictionary &dict, const label index, const polyBoundaryMesh &bm) | |
Construct from dictionary. | |
polyPatch (const polyPatch &, const polyBoundaryMesh &) | |
Construct as copy, resetting the boundary mesh. | |
polyPatch (const polyPatch &pp, const polyBoundaryMesh &bm, const label index, const label newSize, const label newStart) | |
Construct given the original patch and resetting the. | |
polyPatch (const polyPatch &) | |
Construct as copy. | |
virtual | ~polyPatch () |
label | start () const |
Return start label of this patch in the polyMesh face list. | |
const polyBoundaryMesh & | boundaryMesh () const |
Return boundaryMesh reference. | |
template<class T > | |
const List< T >::subList | patchSlice (const List< T > &l) const |
Slice list to patch. | |
template<class T > | |
const Field< T >::subField | patchSlice (const Field< T > &l) const |
Slice Field to patch. | |
const vectorField::subField | faceCentres () const |
Return face centres. | |
const vectorField::subField | faceAreas () const |
Return face normals. | |
tmp< vectorField > | faceCellCentres () const |
Return face neighbour cell centres. | |
const unallocLabelList & | faceCells () const |
Return face-cell addressing. | |
const labelList & | meshEdges () const |
Return global edge index for local edges. | |
void | clearAddressing () |
Clear addressing. | |
label | whichFace (const label l) const |
Return label of face in patch from global face label. | |
void | operator= (const polyPatch &) |
Assignment. | |
![]() | |
patchIdentifier (const word &name, const label index, const word &physicalType=word::null) | |
Construct from components. | |
patchIdentifier (const word &name, const dictionary &, const label index) | |
Construct from dictionary. | |
patchIdentifier (const patchIdentifier &, const label index) | |
Construct from geometric patch, resetting the index. | |
virtual | ~patchIdentifier () |
const word & | name () const |
Return name. | |
word & | name () |
Return name for modification. | |
const word & | physicalType () const |
Return the optional physical type of the patch. | |
word & | physicalType () |
Return the optional physical type of the patch for modification. | |
label | index () const |
Return the index of this patch in the boundaryMesh. | |
label & | index () |
Return the index of this patch in the boundaryMesh for modification. | |
![]() | |
PrimitivePatch (const FaceList< Face > &faces, const Field< PointType > &points) | |
Construct from components. | |
PrimitivePatch (FaceList< Face > &faces, Field< PointType > &points, const bool reUse) | |
Construct from components, reuse storage. | |
PrimitivePatch (const PrimitivePatch< Face, FaceList, PointField, PointType > &) | |
Construct as copy. | |
virtual | ~PrimitivePatch () |
void | clearOut () |
void | clearGeom () |
void | clearTopology () |
void | clearPatchMeshAddr () |
const Field< PointType > & | points () const |
Return reference to global points. | |
label | nPoints () const |
Return number of points supporting patch faces. | |
label | nEdges () const |
Return number of edges in patch. | |
const edgeList & | edges () const |
Return list of edges, address into LOCAL point list. | |
label | nInternalEdges () const |
Number of internal edges. | |
bool | isInternalEdge (const label edgeI) const |
Is internal edge? | |
const labelList & | boundaryPoints () const |
Return list of boundary points,. | |
const labelListList & | faceFaces () const |
Return face-face addressing. | |
const labelListList & | edgeFaces () const |
Return edge-face addressing. | |
const labelListList & | faceEdges () const |
Return face-edge addressing. | |
const labelListList & | pointEdges () const |
Return point-edge addressing. | |
const labelListList & | pointFaces () const |
Return point-face addressing. | |
const List< Face > & | localFaces () const |
Return patch faces addressing into local point list. | |
const labelList & | meshPoints () const |
Return labelList of mesh points in patch. They are constructed. | |
const Map< label > & | meshPointMap () const |
Mesh point map. Given the global point index find its. | |
const Field< PointType > & | localPoints () const |
Return pointField of points in patch. | |
const labelList & | localPointOrder () const |
Return orders the local points for most efficient search. | |
label | whichPoint (const label gp) const |
Given a global point index, return the local point index. | |
label | whichEdge (const edge &) const |
Given an edge in local point labels, return its. | |
labelList | meshEdges (const edgeList &allEdges, const labelListList &cellEdges, const labelList &faceCells) const |
Return labels of patch edges in the global edge list using. | |
labelList | meshEdges (const edgeList &allEdges, const labelListList &pointEdges) const |
Return labels of patch edges in the global edge list using. | |
const Field< PointType > & | faceNormals () const |
Return face normals for patch. | |
const Field< PointType > & | pointNormals () const |
Return point normals for patch. | |
template<class ToPatch > | |
List< objectHit > | projectPoints (const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction=intersection::VECTOR) const |
Project vertices of patch onto another patch. | |
template<class ToPatch > | |
List< objectHit > | projectFaceCentres (const ToPatch &targetPatch, const Field< PointType > &projectionDirection, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction=intersection::VECTOR) const |
Project vertices of patch onto another patch. | |
const labelListList & | edgeLoops () const |
Return list of closed loops of boundary vertices. | |
surfaceTopo | surfaceType () const |
Calculate surface type formed by patch. | |
bool | checkTopology (const bool report=false, labelHashSet *setPtr=NULL) const |
Check surface formed by patch for manifoldness (see above). | |
bool | checkPointManifold (const bool report=false, labelHashSet *setPtr=NULL) const |
Checks primitivePatch for faces sharing point but not edge. | |
virtual void | movePoints (const Field< PointType > &) |
Correct patch after moving points. | |
void | operator= (const PrimitivePatch< Face, FaceList, PointField, PointType > &) |
Assignment. |
Protected Member Functions | |
virtual void | initGeometry () |
Initialise the calculation of the patch geometry. | |
virtual void | calcGeometry () |
Calculate the patch geometry. | |
virtual void | initMovePoints (const pointField &) |
Initialise the patches for moving points. | |
virtual void | movePoints (const pointField &) |
Correct patches after moving points. | |
virtual void | initUpdateMesh () |
Initialise the update of the patch topology. | |
virtual void | updateMesh () |
Update of the patch topology. | |
![]() | |
void | calcTransformTensors (const vectorField &Cf, const vectorField &Cr, const vectorField &nf, const vectorField &nr, const scalarField &smallDist, const scalar absTol=matchTol, const transformType=UNKNOWN) const |
Calculate the transformation tensors. | |
bool | inPatch (const labelList &oldToNew, const label oldFaceI) const |
Is face (in old face labels) in current patch? |
Additional Inherited Members | |
![]() | |
enum | transformType { UNKNOWN, ROTATIONAL, TRANSLATIONAL } |
![]() | |
static const NamedEnum < transformType, 3 > | transformTypeNames |
static scalar | matchTol = 1E-3 |
Relative tolerance (for geometric matching). | |
![]() | |
static int | disallowGenericPolyPatch |
Debug switch to disallow the use of genericPolyPatch. | |
![]() | |
static void | writeOBJ (Ostream &os, const point &pt) |
Write point in OBJ format. | |
static void | writeOBJ (Ostream &, const pointField &, const labelList &) |
Write selected points in OBJ format. | |
static void | writeOBJ (const fileName &, const UList< face > &, const pointField &) |
Write patch. | |
static void | writeOBJ (Ostream &os, const point &p0, const point &p1, label &vertI) |
Write edge in OBJ format. | |
static pointField | calcFaceCentres (const UList< face > &, const pointField &) |
Calculate face centres. | |
static pointField | getAnchorPoints (const UList< face > &, const pointField &) |
Get f[0] for all faces. | |
static label | whichPatch (const labelList &patchStarts, const label faceI) |
Given list of starts of patches and a face label determine. | |
static scalarField | calcFaceTol (const UList< face > &faces, const pointField &points, const pointField &faceCentres) |
Calculate typical tolerance per face. Is currently max distance. | |
static label | getRotation (const pointField &points, const face &f, const point &anchor, const scalar tol) |
Get the number of vertices face f needs to be rotated such that. |
cyclicPolyPatch | ( | const word & | name, |
const label | size, | ||
const label | start, | ||
const label | index, | ||
const polyBoundaryMesh & | bm | ||
) |
Construct from components.
Definition at line 819 of file cyclicPolyPatch.C.
Referenced by cyclicPolyPatch::clone().
cyclicPolyPatch | ( | const word & | name, |
const dictionary & | dict, | ||
const label | index, | ||
const polyBoundaryMesh & | bm | ||
) |
Construct from dictionary.
Definition at line 839 of file cyclicPolyPatch.C.
References Foam::exit(), Foam::FatalIOError, FatalIOErrorIn, dictionary::found(), dictionary::lookup(), and dictionary::readIfPresent().
cyclicPolyPatch | ( | const cyclicPolyPatch & | pp, |
const polyBoundaryMesh & | bm | ||
) |
Construct as copy, resetting the boundary mesh.
Definition at line 903 of file cyclicPolyPatch.C.
cyclicPolyPatch | ( | const cyclicPolyPatch & | pp, |
const polyBoundaryMesh & | bm, | ||
const label | index, | ||
const label | newSize, | ||
const label | newStart | ||
) |
Construct given the original patch and resetting the.
face list and boundary mesh information
Definition at line 920 of file cyclicPolyPatch.C.
|
virtual |
Definition at line 941 of file cyclicPolyPatch.C.
References Foam::deleteDemandDrivenData().
|
protectedvirtual |
Initialise the calculation of the patch geometry.
Implements coupledPolyPatch.
Definition at line 951 of file cyclicPolyPatch.C.
References polyPatch::initGeometry().
|
protectedvirtual |
Calculate the patch geometry.
Implements coupledPolyPatch.
Definition at line 956 of file cyclicPolyPatch.C.
References polyPatch::calcGeometry().
|
protectedvirtual |
Initialise the patches for moving points.
Implements coupledPolyPatch.
Definition at line 962 of file cyclicPolyPatch.C.
References polyPatch::initMovePoints().
|
protectedvirtual |
Correct patches after moving points.
Implements coupledPolyPatch.
Definition at line 967 of file cyclicPolyPatch.C.
References polyPatch::movePoints().
|
protectedvirtual |
Initialise the update of the patch topology.
Implements coupledPolyPatch.
Definition at line 973 of file cyclicPolyPatch.C.
References polyPatch::initUpdateMesh().
|
protectedvirtual |
Update of the patch topology.
Implements coupledPolyPatch.
Definition at line 978 of file cyclicPolyPatch.C.
References Foam::deleteDemandDrivenData(), and polyPatch::updateMesh().
TypeName | ( | "cyclic" | ) |
Runtime type information.
|
inlinevirtual |
Construct and return a clone, resetting the boundary mesh.
Reimplemented from polyPatch.
Definition at line 224 of file cyclicPolyPatch.H.
References cyclicPolyPatch::cyclicPolyPatch().
|
inlinevirtual |
Construct and return a clone, resetting the face list.
and boundary mesh
Reimplemented from polyPatch.
Definition at line 232 of file cyclicPolyPatch.H.
References cyclicPolyPatch::cyclicPolyPatch().
const Foam::edgeList & coupledPoints | ( | ) | const |
Return connected points (in patch local point indexing). Demand.
driven calculation. Does primitivePatch::clearOut after calculation!
Definition at line 986 of file cyclicPolyPatch.C.
References b, Foam::endl(), forAll, mesh, OFstream::name(), Foam::nl, nPoints, points, Foam::Pout, List< T >::setSize(), List< T >::size(), Vector< Cmpt >::x(), Vector< Cmpt >::y(), and Vector< Cmpt >::z().
Referenced by syncTools::getMasterPoints(), syncTools::syncPointList(), and syncTools::syncPointMap().
const Foam::edgeList & coupledEdges | ( | ) | const |
Return connected edges (in patch local edge indexing). Demand.
driven calculation. Does primitivePatch::clearOut after calculation!
Definition at line 1070 of file cyclicPolyPatch.C.
References Foam::abort(), b, Vector< Cmpt >::centre(), e, HashTable< T, label, Hash< label > >::end(), HashTable< T, edge, Hash< edge > >::end(), Foam::endl(), HashTable< T, edge, Hash< edge > >::erase(), Foam::FatalError, FatalErrorIn, HashTable< T, Key, Hash >::find(), HashTable< T, edge, Hash< edge > >::find(), forAll, HashTable< T, edge, Hash< edge > >::insert(), mesh, OFstream::name(), Foam::nl, Foam::Pout, List< T >::setSize(), List< T >::size(), Vector< Cmpt >::x(), Vector< Cmpt >::y(), and Vector< Cmpt >::z().
Referenced by syncTools::getMasterEdges(), syncTools::syncEdgeList(), and syncTools::syncEdgeMap().
|
inline |
Definition at line 265 of file cyclicPolyPatch.H.
References coupledPolyPatch::separation().
Referenced by Particle< ParticleType >::hitCyclicPatch().
|
inline |
Definition at line 277 of file cyclicPolyPatch.H.
References coupledPolyPatch::forwardT(), and coupledPolyPatch::reverseT().
Referenced by Particle< ParticleType >::hitCyclicPatch(), and cyclicPolyPatch::transform().
Definition at line 290 of file cyclicPolyPatch.H.
References coupledPolyPatch::parallel(), cyclicPolyPatch::transform(), and cyclicPolyPatch::transformT().
|
inline |
Definition at line 302 of file cyclicPolyPatch.H.
|
inline |
Definition at line 314 of file cyclicPolyPatch.H.
References polyPatch::start().
Referenced by Particle< ParticleType >::hitCyclicPatch(), and faceSet::sync().
|
inline |
Type of transform.
Definition at line 327 of file cyclicPolyPatch.H.
Referenced by cyclicPolyPatch::transform().
|
inline |
Axis of rotation for rotational cyclics.
Definition at line 333 of file cyclicPolyPatch.H.
|
inline |
point on axis of rotation for rotational cyclics
Definition at line 339 of file cyclicPolyPatch.H.
|
inline |
Translation vector for translational cyclics.
Definition at line 345 of file cyclicPolyPatch.H.
|
virtual |
Initialize ordering for primitivePatch. Does not.
refer to *this (except for name() and type() etc.)
Implements coupledPolyPatch.
Definition at line 1198 of file cyclicPolyPatch.C.
|
virtual |
Return new ordering for primitivePatch.
Ordering is -faceMap: for every face index of the new face -rotation:for every new face the clockwise shift of the original face. Return false if nothing changes (faceMap is identity, rotation is 0), true otherwise.
Implements coupledPolyPatch.
Definition at line 1207 of file cyclicPolyPatch.C.
References Foam::abort(), Foam::endl(), f(), Foam::FatalError, FatalErrorIn, forAll, Foam::gAverage(), Foam::identity(), PrimitivePatch< Face, FaceList, PointField, PointType >::localFaces(), Foam::matchPoints(), mesh, OSstream::name(), OFstream::name(), Foam::name(), Foam::nl, pFaces, PrimitivePatch< Face, FaceList, PointField, PointType >::pointFaces(), PrimitivePatch< Face, FaceList, PointField, PointType >::points(), Foam::Pout, SeriousErrorIn, List< T >::setSize(), and Foam::meshTools::writeOBJ().
|
virtual |
Write the polyPatch data as a dictionary.
Reimplemented from polyPatch.
Definition at line 1702 of file cyclicPolyPatch.C.
References token::END_STATEMENT, Foam::nl, polyPatch::write(), and Ostream::writeKeyword().