cutPoly: New polyhedral cutting routines and isoSurface algorithm

A set of routines for cutting polyhedra have been added. These can cut
polyhedral cells based on the adjacent point values and an iso-value
which defines the surface. The method operates directly on the
polyhedral cells; it does not decompose them into tetrahedra at any
point. The routines can compute the cut topology as well as integrals of
properties above and below the cut surface.

An iso-surface algorithm has been added based on these polyhedral
cutting routines. It is significantly more robust than the previous
algorithm, and produces compact surfaces equivalent to the previous
algorithm's maximum filtering level. It is also approximately 3 times
faster than the previous algorithm, and 10 times faster when run
repeatedly on the same set of cells (this is because some addressing is
cached and reused).

This algorithm is used by the 'isoSurface', 'distanceSurface' and
'cutPlane' sampled surfaces.

The 'cutPlane' sampled surface is a renaming of 'cuttingPlane' to make
it consistent with the corresponding packaged function. The name
'cuttingPlane' has been retained for backwards compatibility and can
still be used to select a 'cutPlane' surface. The legacy 'plane' surface
has been removed.

The 'average' keyword has been removed from specification of these
sampled surfaces as cell-centred values are no longer used in the
generation of or interpolation to an iso-surface. The 'filtering'
keyword has also been removed as it relates to options within the
previous algorithm. Zone support has been reinstated into the
'isoSurface' sampled surface. Interpolation to all these sampled
surfaces has been corrected to exactly match the user-selected
interpolation scheme, and the interpolation procedure no longer
unnecessarily re-generates data that is already available.
This commit is contained in:
Will Bainbridge
2022-11-17 16:25:02 +00:00
parent 9a1eadd35a
commit 723f522c51
89 changed files with 4462 additions and 5820 deletions

View File

@ -66,7 +66,7 @@ functions
);
}
#include "cuttingPlane"
#include "cutPlane"
#include "streamlines"
#include "forceCoeffs"
}

View File

@ -48,7 +48,7 @@ runTimeModifiable true;
functions
{
#include "cuttingPlane"
#include "cutPlane"
#include "streamlines"
#include "forceCoeffs"
}

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
cuttingPlane
cutPlane
{
type surfaces;
libs ("libsampling.so");
@ -22,7 +22,7 @@ cuttingPlane
(
yNormal
{
type cuttingPlane;
type cutPlane;
planeType pointAndNormal;
point (0 0 0);
normal (0 1 0);

View File

@ -47,8 +47,8 @@ runTimeModifiable true;
functions
{
#include "cutPlane"
#include "streamlines"
#include "cuttingPlane"
#include "forceCoeffs"
}

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
cuttingPlane
cutPlane
{
type surfaces;
libs ("libsampling.so");
@ -21,7 +21,7 @@ cuttingPlane
(
yNormal
{
type cuttingPlane;
type cutPlane;
planeType pointAndNormal;
point (0 0 0);
normal (0 1 0);

View File

@ -52,7 +52,7 @@ maxCo 0.5;
functions
{
#include "cuttingPlane"
#include "cutPlane"
}
// ************************************************************************* //

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
cuttingPlane
cutPlane
{
type surfaces;
libs ("libsampling.so");
@ -23,7 +23,7 @@ cuttingPlane
(
zNormal
{
type cuttingPlane;
type cutPlane;
planeType pointAndNormal;
point (0 0 0);
normal (0 0 1);

View File

@ -22,7 +22,7 @@ surfaces
(
zNormal
{
type cuttingPlane;
type cutPlane;
planeType pointAndNormal;
point (0 0 0);
normal (0 0 1);