STYLE: added code for using isoSurfaceCell. Removed cleanup of surface.

This commit is contained in:
mattijs
2010-03-09 13:27:50 +00:00
parent 8c454d5e04
commit 3aed3c45be
7 changed files with 188 additions and 97 deletions

View File

@ -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)

View File

@ -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();
} }

View File

@ -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;
}; };

View File

@ -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;
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -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)

View File

@ -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_();

View File

@ -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"