mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
dynamicMesh/meshCut: Improved diagnostics and documentation
Patch provided by Bruno Santos Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1960
This commit is contained in:
@ -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) 2011-2015 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -44,7 +44,6 @@ defineTypeNameAndDebug(cellCuts, 0);
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * Private Static Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * * Private Static Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
// Find val in first nElems elements of list.
|
|
||||||
Foam::label Foam::cellCuts::findPartIndex
|
Foam::label Foam::cellCuts::findPartIndex
|
||||||
(
|
(
|
||||||
const labelList& elems,
|
const labelList& elems,
|
||||||
@ -96,7 +95,6 @@ Foam::scalarField Foam::cellCuts::expand
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Find first point in lst not in map.
|
|
||||||
Foam::label Foam::cellCuts::firstUnique
|
Foam::label Foam::cellCuts::firstUnique
|
||||||
(
|
(
|
||||||
const labelList& lst,
|
const labelList& lst,
|
||||||
@ -116,7 +114,6 @@ Foam::label Foam::cellCuts::firstUnique
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
// Write cell and raw cuts on any of the elements
|
|
||||||
void Foam::cellCuts::writeUncutOBJ
|
void Foam::cellCuts::writeUncutOBJ
|
||||||
(
|
(
|
||||||
const fileName& dir,
|
const fileName& dir,
|
||||||
@ -223,7 +220,6 @@ void Foam::cellCuts::writeOBJ
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Find face on cell using the two edges.
|
|
||||||
Foam::label Foam::cellCuts::edgeEdgeToFace
|
Foam::label Foam::cellCuts::edgeEdgeToFace
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -264,7 +260,6 @@ Foam::label Foam::cellCuts::edgeEdgeToFace
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Find face on cell using an edge and a vertex.
|
|
||||||
Foam::label Foam::cellCuts::edgeVertexToFace
|
Foam::label Foam::cellCuts::edgeVertexToFace
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -304,7 +299,6 @@ Foam::label Foam::cellCuts::edgeVertexToFace
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Find face using two vertices (guaranteed not to be along edge)
|
|
||||||
Foam::label Foam::cellCuts::vertexVertexToFace
|
Foam::label Foam::cellCuts::vertexVertexToFace
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -477,7 +471,6 @@ void Foam::cellCuts::calcFaceCuts() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Find edge on face using two vertices
|
|
||||||
Foam::label Foam::cellCuts::findEdge
|
Foam::label Foam::cellCuts::findEdge
|
||||||
(
|
(
|
||||||
const label faceI,
|
const label faceI,
|
||||||
@ -507,7 +500,6 @@ Foam::label Foam::cellCuts::findEdge
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Check if there is a face on the cell on which all cuts are.
|
|
||||||
Foam::label Foam::cellCuts::loopFace
|
Foam::label Foam::cellCuts::loopFace
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -559,7 +551,6 @@ Foam::label Foam::cellCuts::loopFace
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// From point go into connected face
|
|
||||||
bool Foam::cellCuts::walkPoint
|
bool Foam::cellCuts::walkPoint
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -615,7 +606,6 @@ bool Foam::cellCuts::walkPoint
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Cross cut (which is edge on faceI) onto next face
|
|
||||||
bool Foam::cellCuts::crossEdge
|
bool Foam::cellCuts::crossEdge
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -695,8 +685,6 @@ bool Foam::cellCuts::addCut
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Walk across faceI, storing cuts as you go. Returns last two cuts visisted.
|
|
||||||
// Returns true if valid walk.
|
|
||||||
bool Foam::cellCuts::walkFace
|
bool Foam::cellCuts::walkFace
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -787,8 +775,6 @@ bool Foam::cellCuts::walkFace
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Walk across cuts (cut edges or cut vertices) of cell. Stops when hit cut
|
|
||||||
// already visited. Returns true when loop of 3 or more vertices found.
|
|
||||||
bool Foam::cellCuts::walkCell
|
bool Foam::cellCuts::walkCell
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -982,13 +968,14 @@ bool Foam::cellCuts::walkCell
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Determine for every cut cell the loop (= face) it is cut by. Done by starting
|
|
||||||
// from a cut edge or cut vertex and walking across faces, from cut to cut,
|
|
||||||
// until starting cut hit.
|
|
||||||
// If multiple loops are possible across a cell circumference takes the first
|
|
||||||
// one found.
|
|
||||||
void Foam::cellCuts::calcCellLoops(const labelList& cutCells)
|
void Foam::cellCuts::calcCellLoops(const labelList& cutCells)
|
||||||
{
|
{
|
||||||
|
// Determine for every cut cell the loop (= face) it is cut by. Done by
|
||||||
|
// starting from a cut edge or cut vertex and walking across faces, from
|
||||||
|
// cut to cut, until starting cut hit.
|
||||||
|
// If multiple loops are possible across a cell circumference takes the
|
||||||
|
// first one found.
|
||||||
|
|
||||||
// Calculate cuts per face.
|
// Calculate cuts per face.
|
||||||
const labelListList& allFaceCuts = faceCuts();
|
const labelListList& allFaceCuts = faceCuts();
|
||||||
|
|
||||||
@ -1139,8 +1126,6 @@ void Foam::cellCuts::calcCellLoops(const labelList& cutCells)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Walk unset edges of single cell from starting point and marks visited
|
|
||||||
// edges and vertices with status.
|
|
||||||
void Foam::cellCuts::walkEdges
|
void Foam::cellCuts::walkEdges
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -1178,7 +1163,6 @@ void Foam::cellCuts::walkEdges
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Invert anchor point selection.
|
|
||||||
Foam::labelList Foam::cellCuts::nonAnchorPoints
|
Foam::labelList Foam::cellCuts::nonAnchorPoints
|
||||||
(
|
(
|
||||||
const labelList& cellPoints,
|
const labelList& cellPoints,
|
||||||
@ -1209,7 +1193,6 @@ Foam::labelList Foam::cellCuts::nonAnchorPoints
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//- Check anchor points on 'outside' of loop
|
|
||||||
bool Foam::cellCuts::loopAnchorConsistent
|
bool Foam::cellCuts::loopAnchorConsistent
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -1245,10 +1228,6 @@ bool Foam::cellCuts::loopAnchorConsistent
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Determines set of anchor points given a loop. The loop should split the
|
|
||||||
// cell into (one or) two sets of vertices. The set of vertices that is
|
|
||||||
// on the 'normal' side of the loop is the anchor set.
|
|
||||||
// Returns true if valid set, false otherwise.
|
|
||||||
bool Foam::cellCuts::calcAnchors
|
bool Foam::cellCuts::calcAnchors
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -1612,7 +1591,6 @@ Foam::pointField Foam::cellCuts::loopPoints
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Returns weights of loop. Inverse of loopPoints.
|
|
||||||
Foam::scalarField Foam::cellCuts::loopWeights(const labelList& loop) const
|
Foam::scalarField Foam::cellCuts::loopWeights(const labelList& loop) const
|
||||||
{
|
{
|
||||||
scalarField weights(loop.size());
|
scalarField weights(loop.size());
|
||||||
@ -1636,7 +1614,6 @@ Foam::scalarField Foam::cellCuts::loopWeights(const labelList& loop) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Check if cut edges in loop are compatible with ones in edgeIsCut_
|
|
||||||
bool Foam::cellCuts::validEdgeLoop
|
bool Foam::cellCuts::validEdgeLoop
|
||||||
(
|
(
|
||||||
const labelList& loop,
|
const labelList& loop,
|
||||||
@ -1672,15 +1649,16 @@ bool Foam::cellCuts::validEdgeLoop
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Counts cuts on face. Includes cuts through vertices and through edges.
|
|
||||||
// Assumes that if edge is cut both in edgeIsCut and in loop that the position
|
|
||||||
// of the cut is the same.
|
|
||||||
Foam::label Foam::cellCuts::countFaceCuts
|
Foam::label Foam::cellCuts::countFaceCuts
|
||||||
(
|
(
|
||||||
const label faceI,
|
const label faceI,
|
||||||
const labelList& loop
|
const labelList& loop
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
// Includes cuts through vertices and through edges.
|
||||||
|
// Assumes that if edge is cut both in edgeIsCut and in loop that the
|
||||||
|
// position of the cut is the same.
|
||||||
|
|
||||||
label nCuts = 0;
|
label nCuts = 0;
|
||||||
|
|
||||||
// Count cut vertices
|
// Count cut vertices
|
||||||
@ -1723,8 +1701,6 @@ Foam::label Foam::cellCuts::countFaceCuts
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Determine compatibility of loop with existing cut pattern. Does not use
|
|
||||||
// cut-addressing (faceCuts_, cutCuts_)
|
|
||||||
bool Foam::cellCuts::conservativeValidLoop
|
bool Foam::cellCuts::conservativeValidLoop
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -1816,10 +1792,6 @@ bool Foam::cellCuts::conservativeValidLoop
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Determine compatibility of loop with existing cut pattern. Does not use
|
|
||||||
// derived cut-addressing (faceCuts), only pointIsCut, edgeIsCut.
|
|
||||||
// Adds any cross-cuts found to newFaceSplitCut and sets cell points on
|
|
||||||
// one side of the loop in anchorPoints.
|
|
||||||
bool Foam::cellCuts::validLoop
|
bool Foam::cellCuts::validLoop
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -1830,6 +1802,11 @@ bool Foam::cellCuts::validLoop
|
|||||||
labelList& anchorPoints
|
labelList& anchorPoints
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
// Determine compatibility of loop with existing cut pattern. Does not use
|
||||||
|
// derived cut-addressing (faceCuts), only pointIsCut, edgeIsCut.
|
||||||
|
// Adds any cross-cuts found to newFaceSplitCut and sets cell points on
|
||||||
|
// one side of the loop in anchorPoints.
|
||||||
|
|
||||||
if (loop.size() < 2)
|
if (loop.size() < 2)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -1841,6 +1818,7 @@ bool Foam::cellCuts::validLoop
|
|||||||
// cut per face is allowed.
|
// cut per face is allowed.
|
||||||
if (!conservativeValidLoop(cellI, loop))
|
if (!conservativeValidLoop(cellI, loop))
|
||||||
{
|
{
|
||||||
|
Info << "Invalid conservative loop: " << loop << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1984,9 +1962,6 @@ bool Foam::cellCuts::validLoop
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Update basic cut information (pointIsCut, edgeIsCut) from cellLoops.
|
|
||||||
// Assumes cellLoops_ and edgeWeight_ already set and consistent.
|
|
||||||
// Does not use any other information.
|
|
||||||
void Foam::cellCuts::setFromCellLoops()
|
void Foam::cellCuts::setFromCellLoops()
|
||||||
{
|
{
|
||||||
// 'Uncut' edges/vertices that are not used in loops.
|
// 'Uncut' edges/vertices that are not used in loops.
|
||||||
@ -2071,8 +2046,6 @@ void Foam::cellCuts::setFromCellLoops()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Upate basic cut information from single cellLoop. Returns true if loop
|
|
||||||
// was valid.
|
|
||||||
bool Foam::cellCuts::setFromCellLoop
|
bool Foam::cellCuts::setFromCellLoop
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -2080,6 +2053,9 @@ bool Foam::cellCuts::setFromCellLoop
|
|||||||
const scalarField& loopWeights
|
const scalarField& loopWeights
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
// Update basic cut information from single cellLoop. Returns true if loop
|
||||||
|
// was valid.
|
||||||
|
|
||||||
// Dump loop for debugging.
|
// Dump loop for debugging.
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
@ -2169,8 +2145,6 @@ bool Foam::cellCuts::setFromCellLoop
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Update basic cut information from cellLoops. Checks for consistency with
|
|
||||||
// existing cut pattern.
|
|
||||||
void Foam::cellCuts::setFromCellLoops
|
void Foam::cellCuts::setFromCellLoops
|
||||||
(
|
(
|
||||||
const labelList& cellLabels,
|
const labelList& cellLabels,
|
||||||
@ -2207,8 +2181,6 @@ void Foam::cellCuts::setFromCellLoops
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Cut cells and update basic cut information from cellLoops. Checks each loop
|
|
||||||
// for consistency with existing cut pattern.
|
|
||||||
void Foam::cellCuts::setFromCellCutter
|
void Foam::cellCuts::setFromCellCutter
|
||||||
(
|
(
|
||||||
const cellLooper& cellCutter,
|
const cellLooper& cellCutter,
|
||||||
@ -2266,6 +2238,17 @@ void Foam::cellCuts::setFromCellCutter
|
|||||||
{
|
{
|
||||||
cellLoops_[cellI].setSize(0);
|
cellLoops_[cellI].setSize(0);
|
||||||
|
|
||||||
|
WarningInFunction
|
||||||
|
<< "Found loop on cell " << cellI
|
||||||
|
<< " that resulted in an unexpected bad cut."
|
||||||
|
<< " Suggestions:" << nl
|
||||||
|
<< " - Turn on the debug switch for 'cellCuts' to get"
|
||||||
|
<< " geometry files that identify this cell." << nl
|
||||||
|
<< " - Also keep in mind to check the defined"
|
||||||
|
<< " reference directions, as these are most likely the"
|
||||||
|
<< " origin of the problem."
|
||||||
|
<< nl << endl;
|
||||||
|
|
||||||
// Discarded by validLoop
|
// Discarded by validLoop
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
@ -2324,7 +2307,6 @@ void Foam::cellCuts::setFromCellCutter
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Same as one before but cut plane prescribed (instead of just normal)
|
|
||||||
void Foam::cellCuts::setFromCellCutter
|
void Foam::cellCuts::setFromCellCutter
|
||||||
(
|
(
|
||||||
const cellLooper& cellCutter,
|
const cellLooper& cellCutter,
|
||||||
@ -2436,7 +2418,6 @@ void Foam::cellCuts::setFromCellCutter
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Set orientation of loops
|
|
||||||
void Foam::cellCuts::orientPlanesAndLoops()
|
void Foam::cellCuts::orientPlanesAndLoops()
|
||||||
{
|
{
|
||||||
// Determine anchorPoints if not yet done by validLoop.
|
// Determine anchorPoints if not yet done by validLoop.
|
||||||
@ -2493,7 +2474,6 @@ void Foam::cellCuts::orientPlanesAndLoops()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Do all: calculate addressing, calculate loops splitting cells
|
|
||||||
void Foam::cellCuts::calcLoopsAndAddressing(const labelList& cutCells)
|
void Foam::cellCuts::calcLoopsAndAddressing(const labelList& cutCells)
|
||||||
{
|
{
|
||||||
// Sanity check on weights
|
// Sanity check on weights
|
||||||
@ -2682,7 +2662,6 @@ void Foam::cellCuts::check() const
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Construct from cells to cut and pattern of cuts
|
|
||||||
Foam::cellCuts::cellCuts
|
Foam::cellCuts::cellCuts
|
||||||
(
|
(
|
||||||
const polyMesh& mesh,
|
const polyMesh& mesh,
|
||||||
@ -2727,8 +2706,6 @@ Foam::cellCuts::cellCuts
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Construct from pattern of cuts. Finds out itself which cells are cut.
|
|
||||||
// (can go wrong if e.g. all neighbours of cell are refined)
|
|
||||||
Foam::cellCuts::cellCuts
|
Foam::cellCuts::cellCuts
|
||||||
(
|
(
|
||||||
const polyMesh& mesh,
|
const polyMesh& mesh,
|
||||||
@ -2747,6 +2724,9 @@ Foam::cellCuts::cellCuts
|
|||||||
nLoops_(-1),
|
nLoops_(-1),
|
||||||
cellAnchorPoints_(mesh.nCells())
|
cellAnchorPoints_(mesh.nCells())
|
||||||
{
|
{
|
||||||
|
// Construct from pattern of cuts. Finds out itself which cells are cut.
|
||||||
|
// (can go wrong if e.g. all neighbours of cell are refined)
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
Pout<< "cellCuts : constructor from cellLoops" << endl;
|
Pout<< "cellCuts : constructor from cellLoops" << endl;
|
||||||
@ -2771,8 +2751,6 @@ Foam::cellCuts::cellCuts
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Construct from complete cellLoops. Assumes correct cut pattern.
|
|
||||||
// Only constructs cut-cut addressing and cellAnchorPoints
|
|
||||||
Foam::cellCuts::cellCuts
|
Foam::cellCuts::cellCuts
|
||||||
(
|
(
|
||||||
const polyMesh& mesh,
|
const polyMesh& mesh,
|
||||||
@ -2817,7 +2795,6 @@ Foam::cellCuts::cellCuts
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Construct from list of cells to cut and cell cutter.
|
|
||||||
Foam::cellCuts::cellCuts
|
Foam::cellCuts::cellCuts
|
||||||
(
|
(
|
||||||
const polyMesh& mesh,
|
const polyMesh& mesh,
|
||||||
@ -2861,7 +2838,6 @@ Foam::cellCuts::cellCuts
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Construct from list of cells to cut, plane to cut with and cell cutter.
|
|
||||||
Foam::cellCuts::cellCuts
|
Foam::cellCuts::cellCuts
|
||||||
(
|
(
|
||||||
const polyMesh& mesh,
|
const polyMesh& mesh,
|
||||||
@ -2908,7 +2884,6 @@ Foam::cellCuts::cellCuts
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Construct from components
|
|
||||||
Foam::cellCuts::cellCuts
|
Foam::cellCuts::cellCuts
|
||||||
(
|
(
|
||||||
const polyMesh& mesh,
|
const polyMesh& mesh,
|
||||||
@ -2980,7 +2955,6 @@ Foam::pointField Foam::cellCuts::loopPoints(const label cellI) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Flip loop for cell
|
|
||||||
void Foam::cellCuts::flip(const label cellI)
|
void Foam::cellCuts::flip(const label cellI)
|
||||||
{
|
{
|
||||||
labelList& loop = cellLoops_[cellI];
|
labelList& loop = cellLoops_[cellI];
|
||||||
@ -2998,7 +2972,6 @@ void Foam::cellCuts::flip(const label cellI)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Flip loop only
|
|
||||||
void Foam::cellCuts::flipLoopOnly(const label cellI)
|
void Foam::cellCuts::flipLoopOnly(const label cellI)
|
||||||
{
|
{
|
||||||
labelList& loop = cellLoops_[cellI];
|
labelList& loop = cellLoops_[cellI];
|
||||||
|
|||||||
@ -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) 2011-2015 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -277,6 +277,7 @@ class cellCuts
|
|||||||
|
|
||||||
//- Walk across faceI following cuts, starting at cut. Stores cuts
|
//- Walk across faceI following cuts, starting at cut. Stores cuts
|
||||||
// visited
|
// visited
|
||||||
|
// Returns true if valid walk.
|
||||||
bool walkFace
|
bool walkFace
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -374,8 +375,8 @@ class cellCuts
|
|||||||
const labelList& loop
|
const labelList& loop
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Determines if loop through cellI consistent with existing
|
//- Determine compatibility of loop with existing cut pattern.
|
||||||
// pattern.
|
// Does not use cut-addressing (faceCuts_, cutCuts_)
|
||||||
bool conservativeValidLoop
|
bool conservativeValidLoop
|
||||||
(
|
(
|
||||||
const label cellI,
|
const label cellI,
|
||||||
@ -395,8 +396,9 @@ class cellCuts
|
|||||||
labelList& anchorPoints
|
labelList& anchorPoints
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Update basic cut information from cellLoops. Assumes cellLoops_
|
//- Update basic cut information from cellLoops.
|
||||||
// already set and consistent.
|
// Assumes cellLoops_ and edgeWeight_ already set and consistent.
|
||||||
|
// Does not use any other information.
|
||||||
void setFromCellLoops();
|
void setFromCellLoops();
|
||||||
|
|
||||||
//- Update basic cut information for single cell from cellLoop.
|
//- Update basic cut information for single cell from cellLoop.
|
||||||
@ -424,7 +426,8 @@ class cellCuts
|
|||||||
const List<refineCell>& refCells
|
const List<refineCell>& refCells
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Same as above but now cut with prescribed plane.
|
//- Same as above but now cut with prescribed plane (instead of
|
||||||
|
// just normal).
|
||||||
void setFromCellCutter
|
void setFromCellCutter
|
||||||
(
|
(
|
||||||
const cellLooper&,
|
const cellLooper&,
|
||||||
@ -436,6 +439,7 @@ class cellCuts
|
|||||||
void orientPlanesAndLoops();
|
void orientPlanesAndLoops();
|
||||||
|
|
||||||
//- Top level driver: adressing calculation and loop detection
|
//- Top level driver: adressing calculation and loop detection
|
||||||
|
// (loops splitting cells).
|
||||||
void calcLoopsAndAddressing(const labelList& cutCells);
|
void calcLoopsAndAddressing(const labelList& cutCells);
|
||||||
|
|
||||||
//- Check various consistencies.
|
//- Check various consistencies.
|
||||||
|
|||||||
@ -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) 2011-2015 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -126,10 +126,10 @@ Foam::Map<Foam::label> Foam::refinementIterator::setRefinement
|
|||||||
OFstream cutsStream(cutsFile);
|
OFstream cutsStream(cutsFile);
|
||||||
|
|
||||||
|
|
||||||
labelList refCells(currentRefCells.size());
|
labelList refCellsDebug(currentRefCells.size());
|
||||||
forAll(currentRefCells, i)
|
forAll(currentRefCells, i)
|
||||||
{
|
{
|
||||||
refCells[i] = currentRefCells[i].cellNo();
|
refCellsDebug[i] = currentRefCells[i].cellNo();
|
||||||
}
|
}
|
||||||
meshTools::writeOBJ
|
meshTools::writeOBJ
|
||||||
(
|
(
|
||||||
@ -137,7 +137,7 @@ Foam::Map<Foam::label> Foam::refinementIterator::setRefinement
|
|||||||
mesh().cells(),
|
mesh().cells(),
|
||||||
mesh().faces(),
|
mesh().faces(),
|
||||||
mesh().points(),
|
mesh().points(),
|
||||||
refCells
|
refCellsDebug
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user