mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: indexedOctree: Remove quickCircumsphereRejection
Found no speed advantage
This commit is contained in:
@ -352,124 +352,6 @@ Foam::label Foam::indexedOctree<Type>::compactContents
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <class Type>
|
|
||||||
bool Foam::indexedOctree<Type>::quickCircumsphereRejection
|
|
||||||
(
|
|
||||||
const label nodeI,
|
|
||||||
const point& cc,
|
|
||||||
const scalar crSqr,
|
|
||||||
const List<scalar>& nearestDistances
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
const node& nod = nodes_[nodeI];
|
|
||||||
|
|
||||||
volumeType nodeType = volumeType(nodeTypes_.get(nodeI<<3));
|
|
||||||
|
|
||||||
//scalar boxDist = nearestDistances[nodeI] + 0.5*nod.bb_.mag();
|
|
||||||
scalar boxDist = crSqr + magSqr(cc - nod.bb_.midpoint());
|
|
||||||
|
|
||||||
if
|
|
||||||
(
|
|
||||||
nodeType == INSIDE
|
|
||||||
//&& (crSqr < sqr(boxDist))
|
|
||||||
&& (boxDist < sqr(nearestDistances[nodeI]))
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
direction octant = nod.bb_.subOctant(cc);
|
|
||||||
|
|
||||||
labelBits index = nod.subNodes_[octant];
|
|
||||||
|
|
||||||
if (isNode(index))
|
|
||||||
{
|
|
||||||
return quickCircumsphereRejection
|
|
||||||
(
|
|
||||||
getNode(index),
|
|
||||||
cc,
|
|
||||||
crSqr,
|
|
||||||
nearestDistances
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class Type>
|
|
||||||
bool Foam::indexedOctree<Type>::quickCircumsphereRejection
|
|
||||||
(
|
|
||||||
const point& cc,
|
|
||||||
const scalar crSqr,
|
|
||||||
const List<scalar>& nearestDistances
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
if (nodes_.size())
|
|
||||||
{
|
|
||||||
return quickCircumsphereRejection
|
|
||||||
(
|
|
||||||
0,
|
|
||||||
cc,
|
|
||||||
crSqr,
|
|
||||||
nearestDistances
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class Type>
|
|
||||||
Foam::scalar
|
|
||||||
Foam::indexedOctree<Type>::calcNearestDistance
|
|
||||||
(
|
|
||||||
const label nodeI
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
const node& nod = nodes_[nodeI];
|
|
||||||
|
|
||||||
const point& nodeCentre = nod.bb_.midpoint();
|
|
||||||
|
|
||||||
scalar nearestDistance = 0.0;
|
|
||||||
|
|
||||||
pointIndexHit pHit = findNearest(nodeCentre, sqr(GREAT));
|
|
||||||
|
|
||||||
if (pHit.hit())
|
|
||||||
{
|
|
||||||
nearestDistance = mag(pHit.hitPoint() - nodeCentre);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
WarningIn("Foam::indexedOctree<Type>::calcNearestDistance(const label)")
|
|
||||||
<< "Cannot calculate distance of nearest point on surface from "
|
|
||||||
<< "the midpoint of the octree node. Returning distance of zero."
|
|
||||||
<< endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
return nearestDistance;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class Type>
|
|
||||||
Foam::List<Foam::scalar>
|
|
||||||
Foam::indexedOctree<Type>::calcNearestDistance() const
|
|
||||||
{
|
|
||||||
List<scalar> nearestDistances(nodes_.size());
|
|
||||||
|
|
||||||
forAll(nearestDistances, nodeI)
|
|
||||||
{
|
|
||||||
nearestDistances[nodeI] = calcNearestDistance(nodeI);
|
|
||||||
}
|
|
||||||
|
|
||||||
return nearestDistances;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Pre-calculates wherever possible the volume status per node/subnode.
|
// Pre-calculates wherever possible the volume status per node/subnode.
|
||||||
// Recurses to determine status of lowest level boxes. Level above is
|
// Recurses to determine status of lowest level boxes. Level above is
|
||||||
// combination of octants below.
|
// combination of octants below.
|
||||||
|
|||||||
@ -201,16 +201,6 @@ private:
|
|||||||
label& compactI
|
label& compactI
|
||||||
);
|
);
|
||||||
|
|
||||||
scalar calcNearestDistance(const label nodeI) const;
|
|
||||||
|
|
||||||
bool quickCircumsphereRejection
|
|
||||||
(
|
|
||||||
const label nodeI,
|
|
||||||
const point& cc,
|
|
||||||
const scalar crSqr,
|
|
||||||
const List<scalar>& nearestDistances
|
|
||||||
) const;
|
|
||||||
|
|
||||||
//- Determine inside/outside per node (mixed if cannot be
|
//- Determine inside/outside per node (mixed if cannot be
|
||||||
// determined). Only valid for closed shapes.
|
// determined). Only valid for closed shapes.
|
||||||
volumeType calcVolumeType(const label nodeI) const;
|
volumeType calcVolumeType(const label nodeI) const;
|
||||||
@ -658,16 +648,6 @@ public:
|
|||||||
CompareOp& cop
|
CompareOp& cop
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Return a list containing the nearest distance of nodes to any
|
|
||||||
// shapes
|
|
||||||
List<scalar> calcNearestDistance() const;
|
|
||||||
|
|
||||||
bool quickCircumsphereRejection
|
|
||||||
(
|
|
||||||
const point& cc,
|
|
||||||
const scalar crSqr,
|
|
||||||
const List<scalar>& nearestDistances
|
|
||||||
) const;
|
|
||||||
|
|
||||||
// Write
|
// Write
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user