OpenFOAM logo
The Open Source CFD Toolbox
  Source Guide OpenCFD Solutions Contact OpenFOAM

isoSurface Class Reference

A surface formed by the iso value. After "Regularised Marching Tetrahedra: improved iso-surface extraction", G.M. Treece, R.W. Prager and A.H. Gee. More...

Inheritance diagram for isoSurface:
Collaboration diagram for isoSurface:

List of all members.


Public Member Functions

 TypeName ("isoSurface")
 Runtime type information.
 isoSurface (const volScalarField &cellIsoVals, const scalarField &pointIsoVals, const scalar iso, const bool regularise, const scalar mergeTol=1E-6)
 Construct from cell values and point values. Uses boundaryField.
const labelListmeshCells () const
 For every face original cell in mesh.
const labelListtriPointMergeMap () const
 For every unmerged triangle point the point in the triSurface.
template<class Type >
tmp< Field< Type > > interpolate (const GeometricField< Type, fvPatchField, volMesh > &cCoords, const Field< Type > &pCoords) const
 Interpolates cCoords,pCoords. Uses the references to the original.

Detailed Description

A surface formed by the iso value. After "Regularised Marching Tetrahedra: improved iso-surface extraction", G.M. Treece, R.W. Prager and A.H. Gee.

Note:

  • does tets without using cell centres/cell values. Not tested.
  • regularisation can create duplicate triangles/non-manifold surfaces. Current handling of those is bit ad-hoc for now and not perfect.
  • regularisation does not do boundary points so as to preserve the boundary perfectly.
  • uses geometric merge with fraction of bounding box as distance.
  • triangles can be between two cell centres so constant sampling does not make sense.
  • on empty patches behaves like zero gradient.
  • does not do 2D correctly, creates non-flat iso surface.
  • on processor boundaries might two overlapping (identical) triangles (one from either side)

The handling on coupled patches is a bit complex. All fields (values and coordinates) get rewritten so

  • empty patches get zerogradient (value) and facecentre (coordinates)
  • separated processor patch faces get interpolate (value) and facecentre (coordinates). (this is already the default for cyclics)
  • non-separated processor patch faces keep opposite value and cell centre

Now the triangle generation on non-separated processor patch faces can use the neighbouring value. Any separated processor face or cyclic face gets handled just like any boundary face.

Source files

Definition at line 79 of file isoSurface.H.


Constructor & Destructor Documentation

isoSurface ( const volScalarField cellIsoVals,
const scalarField pointIsoVals,
const scalar  iso,
const bool  regularise,
const scalar  mergeTol = 1E-6 
)

Construct from cell values and point values. Uses boundaryField.

for boundary values. Holds reference to cellIsoVals and pointIsoVals.

Definition at line 1734 of file isoSurface.C.


Member Function Documentation

TypeName ( "isoSurface"   ) 

Runtime type information.

const labelList& meshCells (  )  const [inline]

For every face original cell in mesh.

Definition at line 433 of file isoSurface.H.

const labelList& triPointMergeMap (  )  const [inline]

For every unmerged triangle point the point in the triSurface.

Definition at line 439 of file isoSurface.H.

Foam::tmp< Foam::Field< Type > > interpolate ( const GeometricField< Type, fvPatchField, volMesh > &  cCoords,
const Field< Type > &  pCoords 
) const [inline]

Interpolates cCoords,pCoords. Uses the references to the original.

fields used to create the iso surface.

Definition at line 687 of file isoSurfaceTemplates.C.

References Foam::abort(), Foam::endl(), Foam::FatalError, FatalErrorIn, forAll, primitiveMesh::nCells(), primitiveMesh::nPoints(), PrimitivePatch< labelledTri,::Foam::List, pointField, point >::points(), Foam::Pout, List< T >::size(), and List< labelledTri >::size().

Here is the call graph for this function:


The documentation for this class was generated from the following files:
Copyright © 2000-2009 OpenCFD Ltd