/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration |
\\ / A nd | For copyright notice see file Copyright
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of foam-extend.
foam-extend is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
foam-extend is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with foam-extend. If not, see .
Class
Foam::boundaryMesh
Description
Addressing for all faces on surface of mesh. Can either be read
from polyMesh or from triSurface. Used for repatching existing meshes.
SourceFiles
boundaryMesh.C
\*---------------------------------------------------------------------------*/
#ifndef boundaryMesh_H
#define boundaryMesh_H
#include "bMesh.H"
#include "boundaryPatch.H"
#include "PrimitivePatch.H"
#include "PtrList.H"
#include "polyPatchList.H"
#include "className.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// Forward declaration of classes
class Time;
class polyMesh;
class primitiveMesh;
/*---------------------------------------------------------------------------*\
Class boundaryMesh Declaration
\*---------------------------------------------------------------------------*/
class boundaryMesh
{
// Static data
//- Normal along which to divide faces into categories
// (used in getNearest)
static const vector splitNormal_;
//- Distance to face tolerance for getNearest. Triangles are considered
// near if they are nearer than distanceTol_*typDim where typDim is
// the largest distance from face centre to one of its vertices.
static const scalar distanceTol_;
// Private data
//- All boundary mesh data. Reconstructed every time faces are repatched
bMesh* meshPtr_;
//- Patches. Reconstructed every time faces are repatched.
PtrList patches_;
//- For every face in mesh() gives corresponding polyMesh face
// (not sensible if mesh read from triSurface)
labelList meshFace_;
//
// Edge handling
//
//- points referenced by feature edges.
pointField featurePoints_;
//- feature edges. Indices into featurePoints.
edgeList featureEdges_;
//- from feature edge to mesh edge.
labelList featureToEdge_;
//- from mesh edges to featureEdges_;
labelList edgeToFeature_;
//- Feature 'segments'. Collections of connected featureEdges.
// Indices into featureEdges_.
labelListList featureSegments_;
//- Additional edges (indices of mesh edges)
labelList extraEdges_;
// Private Member Functions
//- Number of connected feature edges.
label nFeatureEdges(label pointI) const;
//- Step to next feature edge
label nextFeatureEdge(const label edgeI, const label vertI) const;
//- Return connected list of feature edges.
labelList collectSegment
(
const boolList& isFeaturePoint,
const label startEdgeI,
boolList& featVisited
) const;
//- Do point-edge walk to determine nearest (to edgeI). Stops if
// distance >= maxDistance. Used to determine edges close to seed
// point.
void markEdges
(
const label maxDistance,
const label edgeI,
const label distance,
labelList& minDistance,
DynamicList