FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

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...

#include <sampling/isoSurface.H>


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 84 of file isoSurface.H.

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 labelList &  meshCells () const
 For every face original cell in mesh.
const labelList &  triPointMergeMap () 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.

Constructor & Destructor Documentation

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

Member Function Documentation

TypeName ( "isoSurface"    )

Runtime type information.

const labelList& meshCells (  ) const [inline]

For every face original cell in mesh.

Definition at line 430 of file isoSurface.H.

const labelList& triPointMergeMap (  ) const [inline]

For every unmerged triangle point the point in the triSurface.

Definition at line 436 of file isoSurface.H.

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

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

fields used to create the iso surface.

Definition at line 695 of file isoSurfaceTemplates.C.

References Foam::abort(), Foam::endl(), Foam::FatalError, FatalErrorIn, forAll, points, Foam::Pout, and List< Type >::size().


The documentation for this class was generated from the following files: