mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Using enhancedFeatureEdgeMesh.
This commit is contained in:
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
(
|
||||
|
||||
@ -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
|
||||
);
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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());
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
};
|
||||
|
||||
@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user