mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
STYLE: added code for using isoSurfaceCell. Removed cleanup of surface.
This commit is contained in:
@ -2054,61 +2054,68 @@ Foam::isoSurface::isoSurface
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//if (false)
|
if (false)
|
||||||
//{
|
|
||||||
List<FixedList<label, 3> > faceEdges;
|
|
||||||
labelList edgeFace0, edgeFace1;
|
|
||||||
Map<labelList> edgeFacesRest;
|
|
||||||
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
{
|
||||||
// Calculate addressing
|
List<FixedList<label, 3> > faceEdges;
|
||||||
calcAddressing(*this, faceEdges, edgeFace0, edgeFace1, edgeFacesRest);
|
labelList edgeFace0, edgeFace1;
|
||||||
|
Map<labelList> edgeFacesRest;
|
||||||
|
|
||||||
// See if any dangling triangles
|
|
||||||
boolList keepTriangles;
|
|
||||||
label nDangling = markDanglingTriangles
|
|
||||||
(
|
|
||||||
faceEdges,
|
|
||||||
edgeFace0,
|
|
||||||
edgeFace1,
|
|
||||||
edgeFacesRest,
|
|
||||||
keepTriangles
|
|
||||||
);
|
|
||||||
|
|
||||||
if (debug)
|
while (true)
|
||||||
{
|
{
|
||||||
Pout<< "isoSurface : detected " << nDangling
|
// Calculate addressing
|
||||||
<< " dangling triangles." << endl;
|
calcAddressing
|
||||||
}
|
|
||||||
|
|
||||||
if (nDangling == 0)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create face map (new to old)
|
|
||||||
labelList subsetTriMap(findIndices(keepTriangles, true));
|
|
||||||
|
|
||||||
labelList subsetPointMap;
|
|
||||||
labelList reversePointMap;
|
|
||||||
triSurface::operator=
|
|
||||||
(
|
|
||||||
subsetMesh
|
|
||||||
(
|
(
|
||||||
*this,
|
*this,
|
||||||
subsetTriMap,
|
faceEdges,
|
||||||
reversePointMap,
|
edgeFace0,
|
||||||
subsetPointMap
|
edgeFace1,
|
||||||
)
|
edgeFacesRest
|
||||||
);
|
);
|
||||||
meshCells_ = labelField(meshCells_, subsetTriMap);
|
|
||||||
inplaceRenumber(reversePointMap, triPointMergeMap_);
|
|
||||||
}
|
|
||||||
|
|
||||||
orientSurface(*this, faceEdges, edgeFace0, edgeFace1, edgeFacesRest);
|
// See if any dangling triangles
|
||||||
//}
|
boolList keepTriangles;
|
||||||
|
label nDangling = markDanglingTriangles
|
||||||
|
(
|
||||||
|
faceEdges,
|
||||||
|
edgeFace0,
|
||||||
|
edgeFace1,
|
||||||
|
edgeFacesRest,
|
||||||
|
keepTriangles
|
||||||
|
);
|
||||||
|
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
Pout<< "isoSurface : detected " << nDangling
|
||||||
|
<< " dangling triangles." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nDangling == 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create face map (new to old)
|
||||||
|
labelList subsetTriMap(findIndices(keepTriangles, true));
|
||||||
|
|
||||||
|
labelList subsetPointMap;
|
||||||
|
labelList reversePointMap;
|
||||||
|
triSurface::operator=
|
||||||
|
(
|
||||||
|
subsetMesh
|
||||||
|
(
|
||||||
|
*this,
|
||||||
|
subsetTriMap,
|
||||||
|
reversePointMap,
|
||||||
|
subsetPointMap
|
||||||
|
)
|
||||||
|
);
|
||||||
|
meshCells_ = labelField(meshCells_, subsetTriMap);
|
||||||
|
inplaceRenumber(reversePointMap, triPointMergeMap_);
|
||||||
|
}
|
||||||
|
|
||||||
|
orientSurface(*this, faceEdges, edgeFace0, edgeFace1, edgeFacesRest);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
|
|||||||
@ -1398,6 +1398,8 @@ Foam::isoSurfaceCell::isoSurfaceCell
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
mesh_(mesh),
|
mesh_(mesh),
|
||||||
|
cVals_(cVals),
|
||||||
|
pVals_(pVals),
|
||||||
iso_(iso),
|
iso_(iso),
|
||||||
mergeDistance_(mergeTol*mesh.bounds().mag())
|
mergeDistance_(mergeTol*mesh.bounds().mag())
|
||||||
{
|
{
|
||||||
@ -1563,59 +1565,68 @@ Foam::isoSurfaceCell::isoSurfaceCell
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
List<FixedList<label, 3> > faceEdges;
|
if (false)
|
||||||
labelList edgeFace0, edgeFace1;
|
|
||||||
Map<labelList> edgeFacesRest;
|
|
||||||
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
{
|
||||||
// Calculate addressing
|
List<FixedList<label, 3> > faceEdges;
|
||||||
calcAddressing(*this, faceEdges, edgeFace0, edgeFace1, edgeFacesRest);
|
labelList edgeFace0, edgeFace1;
|
||||||
|
Map<labelList> edgeFacesRest;
|
||||||
|
|
||||||
// See if any dangling triangles
|
|
||||||
boolList keepTriangles;
|
|
||||||
label nDangling = markDanglingTriangles
|
|
||||||
(
|
|
||||||
faceEdges,
|
|
||||||
edgeFace0,
|
|
||||||
edgeFace1,
|
|
||||||
edgeFacesRest,
|
|
||||||
keepTriangles
|
|
||||||
);
|
|
||||||
|
|
||||||
if (debug)
|
while (true)
|
||||||
{
|
{
|
||||||
Pout<< "isoSurfaceCell : detected " << nDangling
|
// Calculate addressing
|
||||||
<< " dangling triangles." << endl;
|
calcAddressing
|
||||||
}
|
|
||||||
|
|
||||||
if (nDangling == 0)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create face map (new to old)
|
|
||||||
labelList subsetTriMap(findIndices(keepTriangles, true));
|
|
||||||
|
|
||||||
labelList subsetPointMap;
|
|
||||||
labelList reversePointMap;
|
|
||||||
triSurface::operator=
|
|
||||||
(
|
|
||||||
subsetMesh
|
|
||||||
(
|
(
|
||||||
*this,
|
*this,
|
||||||
subsetTriMap,
|
faceEdges,
|
||||||
reversePointMap,
|
edgeFace0,
|
||||||
subsetPointMap
|
edgeFace1,
|
||||||
)
|
edgeFacesRest
|
||||||
);
|
);
|
||||||
meshCells_ = labelField(meshCells_, subsetTriMap);
|
|
||||||
inplaceRenumber(reversePointMap, triPointMergeMap_);
|
// See if any dangling triangles
|
||||||
|
boolList keepTriangles;
|
||||||
|
label nDangling = markDanglingTriangles
|
||||||
|
(
|
||||||
|
faceEdges,
|
||||||
|
edgeFace0,
|
||||||
|
edgeFace1,
|
||||||
|
edgeFacesRest,
|
||||||
|
keepTriangles
|
||||||
|
);
|
||||||
|
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
Pout<< "isoSurfaceCell : detected " << nDangling
|
||||||
|
<< " dangling triangles." << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nDangling == 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create face map (new to old)
|
||||||
|
labelList subsetTriMap(findIndices(keepTriangles, true));
|
||||||
|
|
||||||
|
labelList subsetPointMap;
|
||||||
|
labelList reversePointMap;
|
||||||
|
triSurface::operator=
|
||||||
|
(
|
||||||
|
subsetMesh
|
||||||
|
(
|
||||||
|
*this,
|
||||||
|
subsetTriMap,
|
||||||
|
reversePointMap,
|
||||||
|
subsetPointMap
|
||||||
|
)
|
||||||
|
);
|
||||||
|
meshCells_ = labelField(meshCells_, subsetTriMap);
|
||||||
|
inplaceRenumber(reversePointMap, triPointMergeMap_);
|
||||||
|
}
|
||||||
|
|
||||||
|
orientSurface(*this, faceEdges, edgeFace0, edgeFace1, edgeFacesRest);
|
||||||
}
|
}
|
||||||
|
|
||||||
orientSurface(*this, faceEdges, edgeFace0, edgeFace1, edgeFacesRest);
|
|
||||||
|
|
||||||
//combineCellTriangles();
|
//combineCellTriangles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -85,6 +85,10 @@ class isoSurfaceCell
|
|||||||
//- Reference to mesh
|
//- Reference to mesh
|
||||||
const polyMesh& mesh_;
|
const polyMesh& mesh_;
|
||||||
|
|
||||||
|
const scalarField& cVals_;
|
||||||
|
|
||||||
|
const scalarField& pVals_;
|
||||||
|
|
||||||
//- isoSurfaceCell value
|
//- isoSurfaceCell value
|
||||||
const scalar iso_;
|
const scalar iso_;
|
||||||
|
|
||||||
@ -352,6 +356,14 @@ public:
|
|||||||
const Field<Type>& cCoords,
|
const Field<Type>& cCoords,
|
||||||
const Field<Type>& pCoords
|
const Field<Type>& pCoords
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
|
//- Interpolates cCoords,pCoords.
|
||||||
|
template <class Type>
|
||||||
|
tmp<Field<Type> > interpolate
|
||||||
|
(
|
||||||
|
const Field<Type>& cCoords,
|
||||||
|
const Field<Type>& pCoords
|
||||||
|
) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -381,4 +381,56 @@ Foam::isoSurfaceCell::interpolate
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <class Type>
|
||||||
|
Foam::tmp<Foam::Field<Type> >
|
||||||
|
Foam::isoSurfaceCell::interpolate
|
||||||
|
(
|
||||||
|
const Field<Type>& cCoords,
|
||||||
|
const Field<Type>& pCoords
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
DynamicList<Type> triPoints(nCutCells_);
|
||||||
|
DynamicList<label> triMeshCells(nCutCells_);
|
||||||
|
|
||||||
|
// Dummy snap data
|
||||||
|
DynamicList<Type> snappedPoints;
|
||||||
|
labelList snappedCc(mesh_.nCells(), -1);
|
||||||
|
labelList snappedPoint(mesh_.nPoints(), -1);
|
||||||
|
|
||||||
|
|
||||||
|
generateTriPoints
|
||||||
|
(
|
||||||
|
cVals_,
|
||||||
|
pVals_,
|
||||||
|
|
||||||
|
cCoords,
|
||||||
|
pCoords,
|
||||||
|
|
||||||
|
snappedPoints,
|
||||||
|
snappedCc,
|
||||||
|
snappedPoint,
|
||||||
|
|
||||||
|
triPoints,
|
||||||
|
triMeshCells
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// One value per point
|
||||||
|
tmp<Field<Type> > tvalues(new Field<Type>(points().size()));
|
||||||
|
Field<Type>& values = tvalues();
|
||||||
|
|
||||||
|
forAll(triPoints, i)
|
||||||
|
{
|
||||||
|
label mergedPointI = triPointMergeMap_[i];
|
||||||
|
|
||||||
|
if (mergedPointI >= 0)
|
||||||
|
{
|
||||||
|
values[mergedPointI] = triPoints[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tvalues;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -30,7 +30,6 @@ License
|
|||||||
#include "volPointInterpolation.H"
|
#include "volPointInterpolation.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
#include "fvMesh.H"
|
#include "fvMesh.H"
|
||||||
#include "isoSurface.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -173,7 +172,7 @@ void Foam::sampledCuttingPlane::createGeometry()
|
|||||||
|
|
||||||
forAll(fld, i)
|
forAll(fld, i)
|
||||||
{
|
{
|
||||||
fld[i] = (cc[i] - plane_.refPoint()) & plane_.normal();
|
fld[i] = (cc[i] - plane_.refPoint()) & plane_.normal();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -231,6 +230,14 @@ void Foam::sampledCuttingPlane::createGeometry()
|
|||||||
0.0,
|
0.0,
|
||||||
regularise_
|
regularise_
|
||||||
)
|
)
|
||||||
|
//new isoSurfaceCell
|
||||||
|
//(
|
||||||
|
// fvm,
|
||||||
|
// cellDistance,
|
||||||
|
// pointDistance_,
|
||||||
|
// 0.0,
|
||||||
|
// regularise_
|
||||||
|
//)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
|
|||||||
@ -38,6 +38,7 @@ SourceFiles
|
|||||||
|
|
||||||
#include "sampledSurface.H"
|
#include "sampledSurface.H"
|
||||||
#include "isoSurface.H"
|
#include "isoSurface.H"
|
||||||
|
//#include "isoSurfaceCell.H"
|
||||||
#include "plane.H"
|
#include "plane.H"
|
||||||
#include "ZoneIDs.H"
|
#include "ZoneIDs.H"
|
||||||
#include "fvMeshSubset.H"
|
#include "fvMeshSubset.H"
|
||||||
@ -89,6 +90,7 @@ class sampledCuttingPlane
|
|||||||
scalarField pointDistance_;
|
scalarField pointDistance_;
|
||||||
|
|
||||||
//- Constructed iso surface
|
//- Constructed iso surface
|
||||||
|
//autoPtr<isoSurfaceCell> isoSurfPtr_;
|
||||||
autoPtr<isoSurface> isoSurfPtr_;
|
autoPtr<isoSurface> isoSurfPtr_;
|
||||||
|
|
||||||
//- triangles converted to faceList
|
//- triangles converted to faceList
|
||||||
@ -173,6 +175,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//const isoSurfaceCell& surface() const
|
||||||
const isoSurface& surface() const
|
const isoSurface& surface() const
|
||||||
{
|
{
|
||||||
return isoSurfPtr_();
|
return isoSurfPtr_();
|
||||||
|
|||||||
@ -26,7 +26,6 @@ License
|
|||||||
|
|
||||||
#include "volPointInterpolation.H"
|
#include "volPointInterpolation.H"
|
||||||
#include "sampledCuttingPlane.H"
|
#include "sampledCuttingPlane.H"
|
||||||
#include "isoSurface.H"
|
|
||||||
#include "volFieldsFwd.H"
|
#include "volFieldsFwd.H"
|
||||||
#include "pointFields.H"
|
#include "pointFields.H"
|
||||||
#include "volPointInterpolation.H"
|
#include "volPointInterpolation.H"
|
||||||
|
|||||||
Reference in New Issue
Block a user