An abstract class for surfaces with sampling. More...
Classes | |
class | iNew |
PtrList read-construction helper. More... | |
class | iNewCapture |
Public Member Functions | |
TypeName ("sampledSurface") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, sampledSurface, word,(const word &name, const polyMesh &mesh, const dictionary &dict),(name, mesh, dict)) | |
Declare run-time constructor selection table. More... | |
sampledSurface (const word &name, const polyMesh &mesh, const bool interpolateToPoints=false) | |
Construct from name, mesh. More... | |
sampledSurface (const word &name, const polyMesh &mesh, const dictionary &dict) | |
Construct from dictionary. More... | |
autoPtr< sampledSurface > | clone () const |
Clone. More... | |
virtual | ~sampledSurface () |
Destructor - calls clearGeom() More... | |
const polyMesh & | mesh () const noexcept |
Access to the underlying mesh. More... | |
const word & | name () const noexcept |
Name of surface. More... | |
bool | enabled () const noexcept |
Surface is enabled. More... | |
bool | invariant () const noexcept |
Surface is invariant with geometry change (caution) More... | |
bool | isPointData () const noexcept |
Using interpolation to surface points. More... | |
virtual bool | isPointData (const bool on) |
Change point/cell representation, may trigger an expire(). More... | |
virtual bool | needsUpdate () const =0 |
Does the surface need an update? More... | |
virtual bool | expire ()=0 |
Mark the surface as needing an update. More... | |
virtual bool | update ()=0 |
Update the surface as required. More... | |
virtual const pointField & | points () const =0 |
Points of surface. More... | |
virtual const faceList & | faces () const =0 |
Faces of surface. More... | |
virtual const vectorField & | Sf () const =0 |
Face area vectors. More... | |
virtual const scalarField & | magSf () const =0 |
Face area magnitudes. More... | |
virtual const vectorField & | Cf () const =0 |
Face centres. More... | |
scalar | area () const |
The total surface area. More... | |
virtual bool | hasFaceIds () const |
If element ids/order of the original surface are available. More... | |
polySurface * | getRegistrySurface (const objectRegistry &obr, word lookupName="") const |
Get surface from registry if available. More... | |
polySurface * | storeRegistrySurface (objectRegistry &obr, word lookupName="") const |
Copy surface into registry. More... | |
bool | removeRegistrySurface (objectRegistry &obr, word lookupName="") const |
Remove surface from registry. More... | |
template<class Type , class GeoMeshType > | |
bool | storeRegistryField (const objectRegistry &obr, const word &fieldName, const dimensionSet &dims, const Field< Type > &values, word lookupName="") const |
Copy/store sampled field onto registered surface (if it exists) More... | |
template<class Type , class GeoMeshType > | |
bool | storeRegistryField (const objectRegistry &obr, const word &fieldName, const dimensionSet &dims, Field< Type > &&values, word lookupName="") const |
Move/store sampled field onto registered surface (if it exists) More... | |
virtual tmp< scalarField > | sample (const interpolation< scalar > &sampler) const =0 |
Sample volume field onto surface faces. More... | |
virtual tmp< vectorField > | sample (const interpolation< vector > &sampler) const =0 |
Sample volume field onto surface faces. More... | |
virtual tmp< sphericalTensorField > | sample (const interpolation< sphericalTensor > &sampler) const =0 |
Sample volume field onto surface faces. More... | |
virtual tmp< symmTensorField > | sample (const interpolation< symmTensor > &sampler) const =0 |
Sample volume field onto surface faces. More... | |
virtual tmp< tensorField > | sample (const interpolation< tensor > &sampler) const =0 |
Sample volume field onto surface faces. More... | |
virtual bool | withSurfaceFields () const |
Can it sample surface-fields? More... | |
virtual tmp< scalarField > | sample (const surfaceScalarField &sField) const |
Sample surface field onto surface. More... | |
virtual tmp< vectorField > | sample (const surfaceVectorField &sField) const |
Sample surface field onto surface. More... | |
virtual tmp< sphericalTensorField > | sample (const surfaceSphericalTensorField &sField) const |
Sample surface field onto surface. More... | |
virtual tmp< symmTensorField > | sample (const surfaceSymmTensorField &sField) const |
Sample surface field onto surface. More... | |
virtual tmp< tensorField > | sample (const surfaceTensorField &sField) const |
Sample surface field onto surface. More... | |
virtual tmp< scalarField > | interpolate (const interpolation< scalar > &interpolator) const =0 |
Interpolate volume field onto surface points. More... | |
virtual tmp< vectorField > | interpolate (const interpolation< vector > &interpolator) const =0 |
Interpolate volume field onto surface points. More... | |
virtual tmp< sphericalTensorField > | interpolate (const interpolation< sphericalTensor > &interpolator) const =0 |
Interpolate volume field onto surface points. More... | |
virtual tmp< symmTensorField > | interpolate (const interpolation< symmTensor > &interpolator) const =0 |
Interpolate volume field onto surface points. More... | |
virtual tmp< tensorField > | interpolate (const interpolation< tensor > &interpolator) const =0 |
Interpolate volume field onto surface points. More... | |
virtual void | rename (const word &newName) |
Rename. More... | |
virtual void | print (Ostream &os, int level=0) const |
Print information. More... | |
bool | interpolate () const noexcept |
Same as isPointData() More... | |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | sampleOnFaces (const interpolation< Type > &sampler, const labelUList &elements, const faceList &fcs, const pointField &pts, const Type &defaultValue) |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | sampleOnPoints (const interpolation< Type > &interpolator, const labelUList &elements, const faceList &fcs, const pointField &pts) |
template<class Type > | |
Foam::tmp< Foam::VolumeField< Type > > | pointAverage (const PointField< Type > &pfld) |
Public Member Functions inherited from meshedSurf | |
constexpr | meshedSurf () noexcept=default |
Default construct. More... | |
virtual | ~meshedSurf ()=default |
Destructor. More... | |
virtual const pointField & | points () const =0 |
The points used for the surface. More... | |
virtual const faceList & | faces () const =0 |
The faces used for the surface. More... | |
virtual const labelList & | zoneIds () const |
Per-face zone/region information. More... | |
virtual const labelList & | faceIds () const |
Per-face identifier (eg, element Id) More... | |
Static Public Member Functions | |
static autoPtr< sampledSurface > | New (const word &name, const polyMesh &mesh, const dictionary &dict) |
Return a reference to the selected surface. More... | |
Protected Member Functions | |
virtual void | clearGeom () const |
Additional cleanup when clearing the geometry. More... | |
sampledSurface (const word &name, std::nullptr_t) | |
Construct null. More... | |
Static Protected Member Functions | |
template<class Type > | |
static tmp< Field< Type > > | sampleOnFaces (const interpolation< Type > &sampler, const labelUList &elements, const faceList &fcs, const pointField &pts, const Type &defaultValue=Type(Zero)) |
Loop for sampling volume elements to faces. More... | |
template<class Type > | |
static tmp< Field< Type > > | sampleOnPoints (const interpolation< Type > &interpolator, const labelUList &elements, const faceList &fcs, const pointField &pts) |
Loop for interpolating volume elements to face points. More... | |
template<class Type > | |
static tmp< VolumeField< Type > > | pointAverage (const PointField< Type > &pfld) |
Create cell values by averaging the point values. More... | |
An abstract class for surfaces with sampling.
The constructors for the derived classes should generally start in a 'expired' condition (ie, needsUpdate() == true) and rely on a subsequent call to the update() method to complete the initialization. Delaying the final construction as late as possible allows the construction of surfaces that may depend on intermediate calculation results (eg, iso-surfaces) and also avoids the unnecessary reconstruction of surfaces between sampling intervals.
It is the responsibility of the caller to ensure that the surface update() is called before the surface is used. The update() method implementation should do nothing when the surface is already up-to-date.
Any sampler is assumed to work for the standard volume field types. Some may also support surface fields.
Dictionary entries:
Property | Description | Required | Default |
---|---|---|---|
name | Alternative name | no | |
enabled | Enable/disable the surface? | no | yes |
interpolate | Interpolate to nodes instead of faces | no | false |
invariant | Invariant with geometry change (use with caution!) | no | false |
Definition at line 120 of file sampledSurface.H.
|
explicitprotected |
Construct null.
Definition at line 82 of file sampledSurface.C.
sampledSurface | ( | const word & | name, |
const polyMesh & | mesh, | ||
const bool | interpolateToPoints = false |
||
) |
Construct from name, mesh.
Definition at line 93 of file sampledSurface.C.
sampledSurface | ( | const word & | name, |
const polyMesh & | mesh, | ||
const dictionary & | dict | ||
) |
Construct from dictionary.
Definition at line 109 of file sampledSurface.C.
|
virtual |
Destructor - calls clearGeom()
Definition at line 127 of file sampledSurface.C.
|
staticprotected |
Loop for sampling volume elements to faces.
The defaultValue is used for invalid (negative) elements
Referenced by sampledDistanceSurface::sampleOnFaces(), sampledIsoSurface::sampleOnFaces(), sampledCuttingPlane::sampleOnFaces(), sampledCuttingSurface::sampleOnFaces(), sampledMeshedSurface::sampleOnFaces(), sampledPlane::sampleOnFaces(), sampledThresholdCellFaces::sampleOnFaces(), and sampledInterface::sampleOnFaces().
|
staticprotected |
Loop for interpolating volume elements to face points.
Referenced by sampledDistanceSurface::sampleOnPoints(), sampledIsoSurface::sampleOnPoints(), sampledCuttingPlane::sampleOnPoints(), sampledCuttingSurface::sampleOnPoints(), sampledPlane::sampleOnPoints(), and sampledThresholdCellFaces::sampleOnPoints().
|
staticprotected |
Create cell values by averaging the point values.
|
protectedvirtual |
Additional cleanup when clearing the geometry.
Definition at line 43 of file sampledSurface.C.
Referenced by sampledIsoSurface::expire(), sampledCuttingPlane::expire(), sampledCuttingSurface::expire(), sampledFaceZone::expire(), sampledMeshedSurface::expire(), sampledPatch::expire(), sampledPlane::expire(), sampledCuttingSurface::update(), and sampledPlane::update().
TypeName | ( | "sampledSurface" | ) |
Runtime type information.
declareRunTimeSelectionTable | ( | autoPtr | , |
sampledSurface | , | ||
word | , | ||
(const word &name, const polyMesh &mesh, const dictionary &dict) | , | ||
(name, mesh, dict) | |||
) |
Declare run-time constructor selection table.
|
inline |
|
static |
Return a reference to the selected surface.
Definition at line 51 of file sampledSurface.C.
References DebugInfo, dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, dictionary::get(), mesh, and Foam::name().
Referenced by sampledFaceZone::sampleOnFaces(), sampledMeshedSurface::sampleOnFaces(), sampledPatch::sampleOnFaces(), and sampledSurface::sampleOnFaces().
|
inlinenoexcept |
Access to the underlying mesh.
Definition at line 305 of file sampledSurface.H.
Referenced by sampledCuttingPlane::sampledCuttingPlane(), sampledInterface::sampledInterface(), sampledIsoSurface::sampledIsoSurface(), sampledPatchInternalField::sampledPatchInternalField(), sampledPlane::sampledPlane(), sampledFaceZone::sampleOnFaces(), and sampledMeshedSurface::sampleOnFaces().
|
inlinenoexcept |
Name of surface.
Definition at line 311 of file sampledSurface.H.
Referenced by sampledSurface::getRegistrySurface(), sampledSurface::iNew::operator()(), sampledSurface::iNewCapture::operator()(), and sampledPlane::sampledPlane().
|
inlinenoexcept |
Surface is enabled.
Definition at line 317 of file sampledSurface.H.
|
inlinenoexcept |
Surface is invariant with geometry change (caution)
Definition at line 323 of file sampledSurface.H.
|
inlinenoexcept |
Using interpolation to surface points.
Definition at line 329 of file sampledSurface.H.
Change point/cell representation, may trigger an expire().
Definition at line 146 of file sampledSurface.C.
|
pure virtual |
Does the surface need an update?
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledNone, sampledPatch, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Mark the surface as needing an update.
May also free up unneeded data. Return false if surface was already marked as expired.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledNone, sampledPatch, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Update the surface as required.
Do nothing (and return false) if no update was required
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledNone, sampledPatch, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Points of surface.
Implements meshedSurf.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledNone, sampledPatch, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Faces of surface.
Implements meshedSurf.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledNone, sampledPatch, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Face area vectors.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledNone, sampledPatch, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Face area magnitudes.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledNone, sampledPatch, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Face centres.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledNone, sampledPatch, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
Foam::scalar area | ( | ) | const |
The total surface area.
Definition at line 135 of file sampledSurface.C.
References Foam::gSum().
|
inlinevirtual |
If element ids/order of the original surface are available.
Reimplemented in sampledMeshedSurface.
Definition at line 369 of file sampledSurface.H.
Foam::polySurface * getRegistrySurface | ( | const objectRegistry & | obr, |
word | lookupName = "" |
||
) | const |
Get surface from registry if available.
obr | The objectRegistry to use |
lookupName | Optional lookup name, use surface name if empty |
Definition at line 33 of file sampledSurfaceRegister.C.
References objectRegistry::getObjectPtr(), and sampledSurface::name().
Foam::polySurface * storeRegistrySurface | ( | objectRegistry & | obr, |
word | lookupName = "" |
||
) | const |
Copy surface into registry.
obr | The objectRegistry to use |
lookupName | Optional lookup name, use surface name if empty |
Definition at line 48 of file sampledSurfaceRegister.C.
References polySurface::copySurface(), and Foam::name().
bool removeRegistrySurface | ( | objectRegistry & | obr, |
word | lookupName = "" |
||
) | const |
Remove surface from registry.
obr | The objectRegistry to use |
lookupName | Optional lookup name, use surface name if empty |
Definition at line 73 of file sampledSurfaceRegister.C.
References objectRegistry::checkOut().
bool storeRegistryField | ( | const objectRegistry & | obr, |
const word & | fieldName, | ||
const dimensionSet & | dims, | ||
const Field< Type > & | values, | ||
word | lookupName = "" |
||
) | const |
Copy/store sampled field onto registered surface (if it exists)
Definition at line 181 of file sampledSurfaceTemplates.C.
References polySurface::storeField().
bool storeRegistryField | ( | const objectRegistry & | obr, |
const word & | fieldName, | ||
const dimensionSet & | dims, | ||
Field< Type > && | values, | ||
word | lookupName = "" |
||
) | const |
Move/store sampled field onto registered surface (if it exists)
Definition at line 205 of file sampledSurfaceTemplates.C.
References polySurface::storeField().
|
pure virtual |
Sample volume field onto surface faces.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledMeshedSurfaceNormal, sampledNone, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Sample volume field onto surface faces.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledMeshedSurfaceNormal, sampledNone, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Sample volume field onto surface faces.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledMeshedSurfaceNormal, sampledNone, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Sample volume field onto surface faces.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledMeshedSurfaceNormal, sampledNone, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Sample volume field onto surface faces.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledMeshedSurfaceNormal, sampledNone, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
virtual |
Can it sample surface-fields?
Reimplemented in sampledFaceZone, and sampledPatch.
Definition at line 154 of file sampledSurface.C.
|
virtual |
Sample surface field onto surface.
Reimplemented in sampledFaceZone, and sampledPatch.
Definition at line 160 of file sampledSurface.C.
References NotImplemented.
|
virtual |
Sample surface field onto surface.
Reimplemented in sampledFaceZone, and sampledPatch.
Definition at line 170 of file sampledSurface.C.
References NotImplemented.
|
virtual |
Sample surface field onto surface.
Reimplemented in sampledFaceZone, and sampledPatch.
Definition at line 180 of file sampledSurface.C.
References NotImplemented.
|
virtual |
Sample surface field onto surface.
Reimplemented in sampledFaceZone, and sampledPatch.
Definition at line 190 of file sampledSurface.C.
References NotImplemented.
|
virtual |
Sample surface field onto surface.
Reimplemented in sampledFaceZone, and sampledPatch.
Definition at line 200 of file sampledSurface.C.
References NotImplemented.
|
pure virtual |
Interpolate volume field onto surface points.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledMeshedSurfaceNormal, sampledNone, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Interpolate volume field onto surface points.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledMeshedSurfaceNormal, sampledNone, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Interpolate volume field onto surface points.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledMeshedSurfaceNormal, sampledNone, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Interpolate volume field onto surface points.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledMeshedSurfaceNormal, sampledNone, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
pure virtual |
Interpolate volume field onto surface points.
Implemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledCuttingSurface, sampledFaceZone, sampledMeshedSurface, sampledMeshedSurfaceNormal, sampledNone, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
|
inlinevirtual |
Rename.
Definition at line 534 of file sampledSurface.H.
|
virtual |
Print information.
Reimplemented in sampledDistanceSurface, sampledIsoSurface, sampledCuttingPlane, sampledFaceZone, sampledMeshedSurface, sampledPatch, sampledPatchInternalField, sampledPlane, sampledThresholdCellFaces, and sampledInterface.
Definition at line 210 of file sampledSurface.C.
References os(), and Foam::type().
|
inlinenoexcept |
Same as isPointData()
Definition at line 549 of file sampledSurface.H.
Referenced by sampledMeshedSurfaceNormal::interpolate(), isoSurfaceCell::interpolateTemplate(), Foam::linearEdgeInterpolate(), Foam::linearInterpolate(), vtkWrite::writeVolFields(), and ensightWrite::writeVolFields().
Foam::tmp< Foam::Field< Type > > sampleOnFaces | ( | const interpolation< Type > & | sampler, |
const labelUList & | elements, | ||
const faceList & | fcs, | ||
const pointField & | pts, | ||
const Type & | defaultValue | ||
) |
Definition at line 35 of file sampledSurfaceTemplates.C.
References Foam::exit(), Foam::FatalError, FatalErrorInFunction, interpolation< Type >::interpolate(), sampledSurface::New(), and UList< T >::size().
Foam::tmp< Foam::Field< Type > > sampleOnPoints | ( | const interpolation< Type > & | interpolator, |
const labelUList & | elements, | ||
const faceList & | fcs, | ||
const pointField & | pts | ||
) |
Definition at line 79 of file sampledSurfaceTemplates.C.
References Foam::exit(), f(), Foam::FatalError, FatalErrorInFunction, forAll, interpolation< Type >::interpolate(), Foam::New(), bitSet::set(), UList< T >::size(), and Foam::Zero.
Foam::tmp< Foam::VolumeField< Type > > pointAverage | ( | const PointField< Type > & | pfld | ) |
Definition at line 129 of file sampledSurfaceTemplates.C.
References IOobject::db(), Foam::dimless, forAll, mesh, DimensionedField< Type, GeoMesh >::mesh(), primitiveMesh::nCells(), Foam::New(), IOobject::NO_READ, IOobject::NO_WRITE, primitiveMesh::nPoints(), primitiveMesh::pointCells(), fvMesh::time(), Time::timeName(), and Foam::Zero.