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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -37,7 +37,7 @@ SourceFiles
#include "searchableSurfaces.H"
#include "searchableSurfacesQueries.H"
#include "featureEdgeMesh.H"
#include "extendedFeatureEdgeMesh.H"
#include "triSurface.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -63,8 +63,8 @@ class conformationSurfaces
//- Reference to the searchableSurfaces object holding all geometry data
const searchableSurfaces& allGeometry_;
//- A list of featureEdge meshes
PtrList<featureEdgeMesh> features_;
//- A list of extendedFeatureEdgeMesh
PtrList<extendedFeatureEdgeMesh> features_;
//- The location in the mesh that specifies which portion of surfaces is
// to be meshed.
@ -140,7 +140,7 @@ public:
inline const searchableSurfaces& geometry() const;
//- 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
inline const labelList& surfaces() const;
@ -295,7 +295,8 @@ public:
// 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;
};

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
{
return features_;