51 #ifndef PrimitivePatch_H 52 #define PrimitivePatch_H 68 template<
class T>
class Map;
84 template<
class>
class FaceList,
90 public PrimitivePatchName,
129 mutable label nInternalEdges_;
181 void calcIntBdryEdges()
const;
184 void calcBdryPoints()
const;
187 void calcAddressing()
const;
190 void calcPointEdges()
const;
193 void calcPointFaces()
const;
196 void calcMeshData()
const;
199 void calcMeshPointMap()
const;
202 void calcEdgeLoops()
const;
205 void calcLocalPoints()
const;
208 void calcLocalPointOrder()
const;
211 void calcFaceCentres()
const;
214 void calcFaceNormals()
const;
217 void calcPointNormals()
const;
220 void calcEdgeOwner()
const;
225 void visitPointRegion
229 const label startFaceI,
230 const label startEdgeI,
242 const FaceList<Face>& faces,
249 const Xfer<FaceList<Face> >& faces,
256 FaceList<Face>& faces,
397 template<
class ToPatch>
400 const ToPatch& targetPatch,
407 template<
class ToPatch>
410 const ToPatch& targetPatch,
436 const bool report =
false,
448 const bool report =
false,
const Field< PointType > & pointNormals() const
Return point normals for patch.
const labelListList & faceFaces() const
Return face-face addressing.
vector point
Point is a vector.
labelList meshEdges(const edgeList &allEdges, const labelListList &cellEdges, const labelList &faceCells) const
Return labels of patch edges in the global edge list using.
const labelListList & edgeFaces() const
Return edge-face addressing.
const Map< label > & meshPointMap() const
Mesh point map. Given the global point index find its.
virtual ~PrimitivePatch()
Destructor.
const labelListList & pointFaces() const
Return point-face addressing.
label whichPoint(const label gp) const
Given a global point index, return the local point index.
A simple container for copying or transferring objects of type <T>.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
void size(const label)
Override size to be inconsistent with allocated storage.
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.
FaceList< Face > FaceListType
bool checkTopology(const bool report=false, labelHashSet *setPtr=NULL) const
Check surface formed by patch for manifoldness (see above).
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
label nPoints() const
Return number of points supporting patch faces.
bool isInternalEdge(const label edgeI) const
Is internal edge?
PrimitivePatch(const FaceList< Face > &faces, const Field< PointType > &points)
Construct from components.
const Field< PointType > & localPoints() const
Return pointField of points in patch.
const Field< PointType > & faceCentres() const
Return face centres for patch.
const labelList & localPointOrder() const
Return orders the local points for most efficient search.
const labelList & boundaryPoints() const
Return list of boundary points,.
const labelList & meshPoints() const
Return labelList of mesh points in patch. They are constructed.
const edgeList & edges() const
Return list of edges, address into LOCAL point list.
bool checkPointManifold(const bool report=false, labelHashSet *setPtr=NULL) const
Checks primitivePatch for faces sharing point but not edge.
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 Field< PointType > & faceNormals() const
Return face normals for patch.
const labelListList & edgeLoops() const
Return list of closed loops of boundary vertices.
A list of faces which address into the list of points.
label nInternalEdges() const
Number of internal edges.
label whichEdge(const edge &) const
Given an edge in local point labels, return its.
const labelListList & pointEdges() const
Return point-edge addressing.
surfaceTopo
Enumeration defining the surface type. Used in check routines.
const labelListList & faceEdges() const
Return face-edge addressing.
const List< Face > & localFaces() const
Return patch faces addressing into local point list.
surfaceTopo surfaceType() const
Calculate surface type formed by patch.
Info<< "Finished reading KIVA file"<< endl;cellShapeList cellShapes(nPoints);labelList cellZoning(nPoints,-1);const cellModel &hex=*(cellModeller::lookup("hex"));labelList hexLabels(8);label activeCells=0;labelList pointMap(nPoints);forAll(pointMap, i){pointMap[i]=i;}for(label i=0;i< nPoints;i++){if(f[i] > 0.0){hexLabels[0]=i;hexLabels[1]=i1tab[i];hexLabels[2]=i3tab[i1tab[i]];hexLabels[3]=i3tab[i];hexLabels[4]=i8tab[i];hexLabels[5]=i1tab[i8tab[i]];hexLabels[6]=i3tab[i1tab[i8tab[i]]];hexLabels[7]=i3tab[i8tab[i]];cellShapes[activeCells]=cellShape(hex, hexLabels);edgeList edges=cellShapes[activeCells].edges();forAll(edges, ei){if(edges[ei].mag(points)< SMALL){label start=pointMap[edges[ei].start()];while(start!=pointMap[start]){start=pointMap[start];}label end=pointMap[edges[ei].end()];while(end!=pointMap[end]){end=pointMap[end];}label minLabel=min(start, end);pointMap[start]=pointMap[end]=minLabel;}}cellZoning[activeCells]=idreg[i];activeCells++;}}cellShapes.setSize(activeCells);cellZoning.setSize(activeCells);forAll(cellShapes, celli){cellShape &cs=cellShapes[celli];forAll(cs, i){cs[i]=pointMap[cs[i]];}cs.collapse();}label bcIDs[11]={-1, 0, 2, 4,-1, 5,-1, 6, 7, 8, 9};const label nBCs=12;const word *kivaPatchTypes[nBCs]={&wallPolyPatch::typeName,&wallPolyPatch::typeName,&wallPolyPatch::typeName,&wallPolyPatch::typeName,&symmetryPolyPatch::typeName,&wedgePolyPatch::typeName,&polyPatch::typeName,&polyPatch::typeName,&polyPatch::typeName,&polyPatch::typeName,&symmetryPolyPatch::typeName,&oldCyclicPolyPatch::typeName};enum patchTypeNames{PISTON, VALVE, LINER, CYLINDERHEAD, AXIS, WEDGE, INFLOW, OUTFLOW, PRESIN, PRESOUT, SYMMETRYPLANE, CYCLIC};const char *kivaPatchNames[nBCs]={"piston","valve","liner","cylinderHead","axis","wedge","inflow","outflow","presin","presout","symmetryPlane","cyclic"};List< SLList< face > > pFaces[nBCs]
TemplateName(blendedSchemeBase)
virtual void movePoints(const Field< PointType > &)
Correct patch after moving points.
label nEdges() const
Return number of edges in patch.
void clearPatchMeshAddr()
const Field< PointType > & points() const
Return reference to global points.
PointField PointFieldType