ENH: shm: blockLevel through ray-shooting
This commit is contained in:
parent
773548c283
commit
10b0c3cfca
@ -555,8 +555,21 @@ private:
|
||||
label& nRefine
|
||||
) const;
|
||||
|
||||
//- Mark cells for surface proximity based refinement.
|
||||
label markProximityRefinementWave
|
||||
//- Mark faces for additional proximity based testing. Extends
|
||||
// testFaces
|
||||
void markProximityCandidateFaces
|
||||
(
|
||||
const labelList& blockedSurfaces,
|
||||
const List<scalarList>& regionToBlockSize,
|
||||
const labelList& neiLevel,
|
||||
const pointField& neiCc,
|
||||
|
||||
labelList& testFaces
|
||||
) const;
|
||||
|
||||
//- Mark cells for surface proximity based refinement. Uses
|
||||
// ray-shooting from markInternalGapRefinement.
|
||||
label markFakeGapRefinement
|
||||
(
|
||||
const scalar planarCos,
|
||||
const labelList& blockedSurfaces,
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1954,6 +1954,59 @@ void Foam::refinementSurfaces::findNearestIntersection
|
||||
}
|
||||
|
||||
|
||||
void Foam::refinementSurfaces::findNearestIntersection
|
||||
(
|
||||
// const labelList& surfacesToTest,
|
||||
const pointField& start,
|
||||
const pointField& end,
|
||||
|
||||
labelList& surface1,
|
||||
labelList& region1,
|
||||
List<pointIndexHit>& hitInfo1,
|
||||
vectorField& normal1
|
||||
) const
|
||||
{
|
||||
// Initialize arguments
|
||||
surface1.setSize(start.size());
|
||||
surface1 = -1;
|
||||
region1.setSize(start.size());
|
||||
region1 = -1;
|
||||
hitInfo1.setSize(start.size());
|
||||
hitInfo1 = pointIndexHit();
|
||||
normal1.setSize(start.size());
|
||||
normal1 = Zero;
|
||||
|
||||
// Current end of segment to test.
|
||||
pointField nearest(end);
|
||||
// Work array
|
||||
List<pointIndexHit> nearestInfo(start.size());
|
||||
labelList region;
|
||||
vectorField normal;
|
||||
|
||||
forAll(surfaces_, surfI)
|
||||
{
|
||||
const searchableSurface& geom = allGeometry_[surfaces_[surfI]];
|
||||
|
||||
// See if any intersection between start and current nearest
|
||||
geom.findLine(start, nearest, nearestInfo);
|
||||
geom.getRegion(nearestInfo, region);
|
||||
geom.getNormal(nearestInfo, normal);
|
||||
|
||||
forAll(nearestInfo, pointI)
|
||||
{
|
||||
if (nearestInfo[pointI].hit())
|
||||
{
|
||||
surface1[pointI] = surfI;
|
||||
region1[pointI] = region[pointI];
|
||||
hitInfo1[pointI] = nearestInfo[pointI];
|
||||
normal1[pointI] = normal[pointI];
|
||||
nearest[pointI] = nearestInfo[pointI].point();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Foam::refinementSurfaces::findNearestIntersection
|
||||
(
|
||||
const pointField& start,
|
||||
|
@ -437,6 +437,17 @@ public:
|
||||
vectorField& normal
|
||||
) const;
|
||||
|
||||
//- Find nearest (to start only) intersection of edge
|
||||
void findNearestIntersection
|
||||
(
|
||||
const pointField& start,
|
||||
const pointField& end,
|
||||
labelList& surfaces,
|
||||
labelList& regions,
|
||||
List<pointIndexHit>&,
|
||||
vectorField& normal
|
||||
) const;
|
||||
|
||||
//- Find nearest (to start only) intersection of edge
|
||||
void findNearestIntersection
|
||||
(
|
||||
|
Loading…
Reference in New Issue
Block a user