ENH: Using enhancedFeatureEdgeMesh.

This commit is contained in:
graham
2011-02-18 16:17:49 +00:00
parent de64877baa
commit a3b1263184
8 changed files with 79 additions and 65 deletions

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -26,8 +26,9 @@ Application
Description Description
Generates the featureEdgeMesh for the interface between a boolean operation Generates the extendedFeatureEdgeMesh for the interface between a boolean
on two surfaces. Assumes that the orientation of the surfaces is correct: operation on two surfaces. Assumes that the orientation of the surfaces is
correct:
+ if the operation is union or intersection, that both surface's normals + if the operation is union or intersection, that both surface's normals
(n) have the same orientation with respect to a point, i.e. surfaces and b (n) have the same orientation with respect to a point, i.e. surfaces and b
@ -70,7 +71,7 @@ Description
#include "triSurface.H" #include "triSurface.H"
#include "argList.H" #include "argList.H"
#include "Time.H" #include "Time.H"
#include "featureEdgeMesh.H" #include "extendedFeatureEdgeMesh.H"
#include "triSurfaceSearch.H" #include "triSurfaceSearch.H"
#include "OFstream.H" #include "OFstream.H"
#include "booleanSurface.H" #include "booleanSurface.H"
@ -420,11 +421,11 @@ int main(int argc, char *argv[])
// Flat, open or multiple edges are assumed to be impossible // Flat, open or multiple edges are assumed to be impossible
// Region edges are not explicitly supported by surfaceIntersection // Region edges are not explicitly supported by surfaceIntersection
featureEdgeMesh feMesh extendedFeatureEdgeMesh feMesh
( (
IOobject IOobject
( (
sFeatFileName + ".featureEdgeMesh", sFeatFileName + ".extendedFeatureEdgeMesh",
runTime.constant(), runTime.constant(),
"featureEdgeMesh", "featureEdgeMesh",
runTime, runTime,

View File

@ -348,7 +348,7 @@ int main(int argc, char *argv[])
argList::addBoolOption argList::addBoolOption
( (
"writeObj", "writeObj",
"write featureEdgeMesh obj files" "write extendedFeatureEdgeMesh obj files"
); );
argList::addOption argList::addOption
( (
@ -536,13 +536,13 @@ int main(int argc, char *argv[])
<< " internal edges : " << newSet.nInternalEdges() << nl << " internal edges : " << newSet.nInternalEdges() << nl
<< endl; << endl;
// Extracting and writing a featureEdgeMesh // Extracting and writing a extendedFeatureEdgeMesh
extendedFeatureEdgeMesh feMesh extendedFeatureEdgeMesh feMesh
( (
IOobject IOobject
( (
sFeatFileName + ".featureEdgeMesh", sFeatFileName + ".extendedFeatureEdgeMesh",
runTime.constant(), runTime.constant(),
"featureEdgeMesh", "featureEdgeMesh",
runTime, runTime,

View File

@ -277,7 +277,7 @@ void Foam::conformalVoronoiMesh::insertEdgePointGroups
forAll(edgeHits, i) forAll(edgeHits, i)
{ {
const featureEdgeMesh& feMesh const extendedFeatureEdgeMesh& feMesh
( (
geometryToConformTo_.features()[featuresHit[i]] geometryToConformTo_.features()[featuresHit[i]]
); );
@ -301,42 +301,42 @@ void Foam::conformalVoronoiMesh::insertEdgePointGroups
void Foam::conformalVoronoiMesh::insertEdgePointGroup void Foam::conformalVoronoiMesh::insertEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
) )
{ {
label edgeI = edHit.index(); label edgeI = edHit.index();
featureEdgeMesh::edgeStatus edStatus = feMesh.getEdgeStatus(edgeI); extendedFeatureEdgeMesh::edgeStatus edStatus = feMesh.getEdgeStatus(edgeI);
switch (edStatus) switch (edStatus)
{ {
case featureEdgeMesh::EXTERNAL: case extendedFeatureEdgeMesh::EXTERNAL:
{ {
insertExternalEdgePointGroup(feMesh, edHit); insertExternalEdgePointGroup(feMesh, edHit);
break; break;
} }
case featureEdgeMesh::INTERNAL: case extendedFeatureEdgeMesh::INTERNAL:
{ {
insertInternalEdgePointGroup(feMesh, edHit); insertInternalEdgePointGroup(feMesh, edHit);
break; break;
} }
case featureEdgeMesh::FLAT: case extendedFeatureEdgeMesh::FLAT:
{ {
insertFlatEdgePointGroup(feMesh, edHit); insertFlatEdgePointGroup(feMesh, edHit);
break; break;
} }
case featureEdgeMesh::OPEN: case extendedFeatureEdgeMesh::OPEN:
{ {
insertOpenEdgePointGroup(feMesh, edHit); insertOpenEdgePointGroup(feMesh, edHit);
break; break;
} }
case featureEdgeMesh::MULTIPLE: case extendedFeatureEdgeMesh::MULTIPLE:
{ {
insertMultipleEdgePointGroup(feMesh, edHit); insertMultipleEdgePointGroup(feMesh, edHit);
break; break;
} }
case featureEdgeMesh::NONE: case extendedFeatureEdgeMesh::NONE:
{ {
break; break;
} }
@ -346,7 +346,7 @@ void Foam::conformalVoronoiMesh::insertEdgePointGroup
void Foam::conformalVoronoiMesh::insertExternalEdgePointGroup void Foam::conformalVoronoiMesh::insertExternalEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
) )
{ {
@ -380,7 +380,7 @@ void Foam::conformalVoronoiMesh::insertExternalEdgePointGroup
void Foam::conformalVoronoiMesh::insertInternalEdgePointGroup void Foam::conformalVoronoiMesh::insertInternalEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
) )
{ {
@ -447,7 +447,7 @@ void Foam::conformalVoronoiMesh::insertInternalEdgePointGroup
void Foam::conformalVoronoiMesh::insertFlatEdgePointGroup void Foam::conformalVoronoiMesh::insertFlatEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
) )
{ {
@ -478,7 +478,7 @@ void Foam::conformalVoronoiMesh::insertFlatEdgePointGroup
void Foam::conformalVoronoiMesh::insertOpenEdgePointGroup void Foam::conformalVoronoiMesh::insertOpenEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
) )
{ {
@ -488,7 +488,7 @@ void Foam::conformalVoronoiMesh::insertOpenEdgePointGroup
void Foam::conformalVoronoiMesh::insertMultipleEdgePointGroup void Foam::conformalVoronoiMesh::insertMultipleEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
) )
{ {
@ -558,11 +558,14 @@ void Foam::conformalVoronoiMesh::createFeaturePoints()
void Foam::conformalVoronoiMesh::insertConvexFeaturePoints() void Foam::conformalVoronoiMesh::insertConvexFeaturePoints()
{ {
const PtrList<featureEdgeMesh>& feMeshes(geometryToConformTo_.features()); const PtrList<extendedFeatureEdgeMesh>& feMeshes
(
geometryToConformTo_.features()
);
forAll(feMeshes, i) forAll(feMeshes, i)
{ {
const featureEdgeMesh& feMesh(feMeshes[i]); const extendedFeatureEdgeMesh& feMesh(feMeshes[i]);
for for
( (
@ -602,11 +605,14 @@ void Foam::conformalVoronoiMesh::insertConvexFeaturePoints()
void Foam::conformalVoronoiMesh::insertConcaveFeaturePoints() void Foam::conformalVoronoiMesh::insertConcaveFeaturePoints()
{ {
const PtrList<featureEdgeMesh>& feMeshes(geometryToConformTo_.features()); const PtrList<extendedFeatureEdgeMesh>& feMeshes
(
geometryToConformTo_.features()
);
forAll(feMeshes, i) forAll(feMeshes, i)
{ {
const featureEdgeMesh& feMesh(feMeshes[i]); const extendedFeatureEdgeMesh& feMesh(feMeshes[i]);
for for
( (
@ -649,11 +655,14 @@ void Foam::conformalVoronoiMesh::insertConcaveFeaturePoints()
void Foam::conformalVoronoiMesh::insertMixedFeaturePoints() void Foam::conformalVoronoiMesh::insertMixedFeaturePoints()
{ {
const PtrList<featureEdgeMesh>& feMeshes(geometryToConformTo_.features()); const PtrList<extendedFeatureEdgeMesh>& feMeshes
(
geometryToConformTo_.features()
);
forAll(feMeshes, i) forAll(feMeshes, i)
{ {
const featureEdgeMesh& feMesh(feMeshes[i]); const extendedFeatureEdgeMesh& feMesh(feMeshes[i]);
for for
( (
@ -678,13 +687,13 @@ void Foam::conformalVoronoiMesh::insertMixedFeaturePoints()
{ {
label edgeI = pEds[e]; label edgeI = pEds[e];
featureEdgeMesh::edgeStatus edStatus = extendedFeatureEdgeMesh::edgeStatus edStatus =
feMesh.getEdgeStatus(edgeI); feMesh.getEdgeStatus(edgeI);
if if
( (
edStatus == featureEdgeMesh::OPEN edStatus == extendedFeatureEdgeMesh::OPEN
|| edStatus == featureEdgeMesh::MULTIPLE || edStatus == extendedFeatureEdgeMesh::MULTIPLE
) )
{ {
Info<< "Edge type " << edStatus Info<< "Edge type " << edStatus
@ -728,11 +737,14 @@ void Foam::conformalVoronoiMesh::constructFeaturePointLocations()
{ {
DynamicList<Foam::point> ftPtLocs; DynamicList<Foam::point> ftPtLocs;
const PtrList<featureEdgeMesh>& feMeshes(geometryToConformTo_.features()); const PtrList<extendedFeatureEdgeMesh>& feMeshes
(
geometryToConformTo_.features()
);
forAll(feMeshes, i) forAll(feMeshes, i)
{ {
const featureEdgeMesh& feMesh(feMeshes[i]); const extendedFeatureEdgeMesh& feMesh(feMeshes[i]);
for for
( (

View File

@ -281,42 +281,42 @@ private:
//- Call the appropriate function to conform to an edge //- Call the appropriate function to conform to an edge
void insertEdgePointGroup void insertEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
); );
//- Insert points to conform to an external edge //- Insert points to conform to an external edge
void insertExternalEdgePointGroup void insertExternalEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
); );
//- Insert points to conform to an internal edge //- Insert points to conform to an internal edge
void insertInternalEdgePointGroup void insertInternalEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
); );
//- Insert points to conform to a flat edge //- Insert points to conform to a flat edge
void insertFlatEdgePointGroup void insertFlatEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
); );
//- Insert points to conform to an open edge //- Insert points to conform to an open edge
void insertOpenEdgePointGroup void insertOpenEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
); );
//- Insert points to conform to multiply connected edge //- Insert points to conform to multiply connected edge
void insertMultipleEdgePointGroup void insertMultipleEdgePointGroup
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
const pointIndexHit& edHit const pointIndexHit& edHit
); );
@ -336,7 +336,7 @@ private:
// structure // structure
bool insertSpecialisedFeaturePoint bool insertSpecialisedFeaturePoint
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
label ptI label ptI
); );

View File

@ -29,7 +29,7 @@ License
bool Foam::conformalVoronoiMesh::insertSpecialisedFeaturePoint bool Foam::conformalVoronoiMesh::insertSpecialisedFeaturePoint
( (
const featureEdgeMesh& feMesh, const extendedFeatureEdgeMesh& feMesh,
label ptI label ptI
) )
{ {
@ -48,44 +48,44 @@ bool Foam::conformalVoronoiMesh::insertSpecialisedFeaturePoint
label nOpen = 0; label nOpen = 0;
label nMultiple = 0; label nMultiple = 0;
List<featureEdgeMesh::edgeStatus> allEdStat(pEds.size()); List<extendedFeatureEdgeMesh::edgeStatus> allEdStat(pEds.size());
forAll(pEds, i) forAll(pEds, i)
{ {
label edgeI = pEds[i]; label edgeI = pEds[i];
featureEdgeMesh::edgeStatus& eS = allEdStat[i]; extendedFeatureEdgeMesh::edgeStatus& eS = allEdStat[i];
eS = feMesh.getEdgeStatus(edgeI); eS = feMesh.getEdgeStatus(edgeI);
switch (eS) switch (eS)
{ {
case featureEdgeMesh::EXTERNAL: case extendedFeatureEdgeMesh::EXTERNAL:
{ {
nExternal++; nExternal++;
break; break;
} }
case featureEdgeMesh::INTERNAL: case extendedFeatureEdgeMesh::INTERNAL:
{ {
nInternal++; nInternal++;
break; break;
} }
case featureEdgeMesh::FLAT: case extendedFeatureEdgeMesh::FLAT:
{ {
nFlat++; nFlat++;
break; break;
} }
case featureEdgeMesh::OPEN: case extendedFeatureEdgeMesh::OPEN:
{ {
nOpen++; nOpen++;
break; break;
} }
case featureEdgeMesh::MULTIPLE: case extendedFeatureEdgeMesh::MULTIPLE:
{ {
nMultiple++; nMultiple++;
break; break;
} }
case featureEdgeMesh::NONE: case extendedFeatureEdgeMesh::NONE:
{ {
break; break;
} }
@ -106,7 +106,7 @@ bool Foam::conformalVoronoiMesh::insertSpecialisedFeaturePoint
// label concaveEdgeI = pEds // label concaveEdgeI = pEds
// [ // [
// findIndex(allEdStat, featureEdgeMesh::INTERNAL) // findIndex(allEdStat, extendedFeatureEdgeMesh::INTERNAL)
// ]; // ];
// // // Find which planes are joined to the concave edge // // // Find which planes are joined to the concave edge

View File

@ -120,7 +120,7 @@ Foam::conformationSurfaces::conformationSurfaces
features_.set features_.set
( (
featureI++, featureI++,
new featureEdgeMesh new extendedFeatureEdgeMesh
( (
IOobject IOobject
( (
@ -153,7 +153,7 @@ Foam::conformationSurfaces::conformationSurfaces
// features_.set // features_.set
// ( // (
// featureI++, // featureI++,
// new featureEdgeMesh // new extendedFeatureEdgeMesh
// ( // (
// IOobject // IOobject
// ( // (
@ -210,7 +210,7 @@ Foam::conformationSurfaces::conformationSurfaces
features_.set features_.set
( (
featureI++, featureI++,
new featureEdgeMesh new extendedFeatureEdgeMesh
( (
IOobject IOobject
( (
@ -693,13 +693,13 @@ void Foam::conformationSurfaces::findEdgeNearestByType
) const ) const
{ {
// Initialise // Initialise
featuresHit.setSize(featureEdgeMesh::nEdgeTypes); featuresHit.setSize(extendedFeatureEdgeMesh::nEdgeTypes);
featuresHit = -1; featuresHit = -1;
edgeHits.setSize(featureEdgeMesh::nEdgeTypes); edgeHits.setSize(extendedFeatureEdgeMesh::nEdgeTypes);
// Work arrays // Work arrays
scalarField minDistSqr(featureEdgeMesh::nEdgeTypes, nearestDistSqr); scalarField minDistSqr(extendedFeatureEdgeMesh::nEdgeTypes, nearestDistSqr);
List<pointIndexHit> hitInfo(featureEdgeMesh::nEdgeTypes); List<pointIndexHit> hitInfo(extendedFeatureEdgeMesh::nEdgeTypes);
forAll(features_, testI) forAll(features_, testI)
{ {
@ -733,7 +733,7 @@ void Foam::conformationSurfaces::writeFeatureObj(const fileName& prefix) const
forAll(features_, i) forAll(features_, i)
{ {
const featureEdgeMesh& fEM(features_[i]); const extendedFeatureEdgeMesh& fEM(features_[i]);
const pointField pts(fEM.points()); const pointField pts(fEM.points());
const edgeList eds(fEM.edges()); const edgeList eds(fEM.edges());

View File

@ -37,7 +37,7 @@ SourceFiles
#include "searchableSurfaces.H" #include "searchableSurfaces.H"
#include "searchableSurfacesQueries.H" #include "searchableSurfacesQueries.H"
#include "featureEdgeMesh.H" #include "extendedFeatureEdgeMesh.H"
#include "triSurface.H" #include "triSurface.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -63,8 +63,8 @@ class conformationSurfaces
//- Reference to the searchableSurfaces object holding all geometry data //- Reference to the searchableSurfaces object holding all geometry data
const searchableSurfaces& allGeometry_; const searchableSurfaces& allGeometry_;
//- A list of featureEdge meshes //- A list of extendedFeatureEdgeMesh
PtrList<featureEdgeMesh> features_; PtrList<extendedFeatureEdgeMesh> features_;
//- The location in the mesh that specifies which portion of surfaces is //- The location in the mesh that specifies which portion of surfaces is
// to be meshed. // to be meshed.
@ -140,7 +140,7 @@ public:
inline const searchableSurfaces& geometry() const; inline const searchableSurfaces& geometry() const;
//- Return the object holding the feature points and edges //- Return the object holding the feature points and edges
inline const PtrList<featureEdgeMesh>& features() const; inline const PtrList<extendedFeatureEdgeMesh>& features() const;
//- Return the surface indices //- Return the surface indices
inline const labelList& surfaces() const; inline const labelList& surfaces() const;
@ -295,7 +295,8 @@ public:
// Write // Write
//- Write all components of all the featureEdgeMeshes as an obj file //- Write all components of all the extendedFeatureEdgeMeshes as
// an obj file
void writeFeatureObj(const fileName& prefix) const; void writeFeatureObj(const fileName& prefix) const;
}; };

View File

@ -31,7 +31,7 @@ const Foam::searchableSurfaces& Foam::conformationSurfaces::geometry() const
} }
const Foam::PtrList<Foam::featureEdgeMesh>& const Foam::PtrList<Foam::extendedFeatureEdgeMesh>&
Foam::conformationSurfaces::features() const Foam::conformationSurfaces::features() const
{ {
return features_; return features_;