Implements visitor pattern fo segmentated geometries. More...


Public Member Functions | |
LevelSetSegmentationObject (const LevelSetSegmentationObject &other) | |
LevelSetSegmentationObject (int) | |
LevelSetSegmentationObject (int, const SurfUnstructured *surface, double featureAngle, LevelSetSurfaceSmoothing surfaceSmoothing) | |
LevelSetSegmentationObject (int, const SurfUnstructured *surface, double featureAngle=2. *BITPIT_PI) | |
LevelSetSegmentationObject (int, std::unique_ptr< const SurfUnstructured > &&surface, double featureAngle=2. *BITPIT_PI) | |
LevelSetSegmentationObject (LevelSetSegmentationObject &&other)=default | |
LevelSetSegmentationObject * | clone () const override |
bool | empty () const override |
double | getFeatureAngle () const |
double | getMaxSurfaceFeatureSize () const |
double | getMinSurfaceFeatureSize () const |
const SurfaceSkdTree & | getSearchTree () const |
const SurfUnstructured & | getSurface () const |
LevelSetSurfaceSmoothing | getSurfaceSmoothing () const |
void | setSurface (const SurfUnstructured *surface, bool force=false) |
void | setSurface (const SurfUnstructured *surface, double featureAngle, bool force=false) |
void | setSurface (const SurfUnstructured *surface, double featureAngle, LevelSetSurfaceSmoothing surfaceSmoothing, bool force=false) |
void | setSurface (std::unique_ptr< const SurfUnstructured > &&surface, bool force=false) |
void | setSurface (std::unique_ptr< const SurfUnstructured > &&surface, double featureAngle, bool force=false) |
![]() | |
std::array< double, 3 > | evalCellNormal (long id, bool signedLevelSet) const |
int | evalCellPart (long id) const |
long | evalCellSupport (long id, double searchRadius=AUTOMATIC_SEARCH_RADIUS) const |
const SurfUnstructured & | evalCellSurface (long id) const |
std::array< double, 3 > | evalNormal (const std::array< double, 3 > &point, bool signedLevelSet) const |
int | evalPart (const std::array< double, 3 > &point) const |
void | evalProjection (const std::array< double, 3 > &point, bool signedLevelSet, std::array< double, 3 > *projectionPoint, std::array< double, 3 > *projectionNormal) const |
long | evalSupport (const std::array< double, 3 > &point) const |
long | evalSupport (const std::array< double, 3 > &point, double searchRadius) const |
const SurfUnstructured & | evalSurface (const std::array< double, 3 > &point) const |
std::array< double BITPIT_COMMA 3 > | getNormal (const std::array< double, 3 > &point) const |
std::array< double BITPIT_COMMA 3 > | getNormal (long cellId) const |
int | getPart (const std::array< double, 3 > &point) const |
int | getPart (long cellId) const |
long | getSupport (const std::array< double, 3 > &point) const |
long | getSupport (long cellId) const |
LevelSetFieldset | getSupportedFields () const override |
double | getSurfaceFeatureSize (const std::array< double, 3 > &point) const |
double | getSurfaceFeatureSize (long cellId) const |
LevelSetObject (const LevelSetObject &other) | |
LevelSetObject (int) | |
LevelSetObject (LevelSetObject &&other) | |
![]() | |
virtual | ~LevelSetObject () |
BITPIT_DEPRECATED_FOR (double getValue(long cellId) const, double evalCellValue(long id, bool signedLevelSet) const) | |
BITPIT_DEPRECATED_FOR (short getSign(long cellId) const, short evalCellSign(long id) const) | |
BITPIT_DEPRECATED_FOR (std::array< double BITPIT_COMMA 3 > getGradient(long cellId) const, std::array< double BITPIT_COMMA 3 > evalCellGradient(long id, bool signedLevelSet) const) | |
std::array< double BITPIT_COMMA 3 > | computeProjectionPoint (const std::array< double, 3 > &point) const |
std::array< double BITPIT_COMMA 3 > | computeProjectionPoint (long cellId) const |
std::array< double BITPIT_COMMA 3 > | computeVertexProjectionPoint (long vertexId) const |
void | disableFieldCellCache (LevelSetField field) |
void | enableFieldCellCache (LevelSetField field, LevelSetCacheMode cacheMode) |
void | enableVTKOutput (const LevelSetFieldset &fieldset, bool enable=true) |
void | enableVTKOutput (const LevelSetFieldset &fieldset, const std::string &objectName, bool enable=true) |
void | enableVTKOutput (LevelSetField field, bool enable=true) |
void | enableVTKOutput (LevelSetField field, const std::string &objectName, bool enable=true) |
void | enableVTKOutput (LevelSetWriteField field, bool enable=true) |
void | enableVTKOutput (LevelSetWriteField fieldset, const std::string &objectName, bool enable=true) |
virtual std::array< double, 3 > | evalCellGradient (long id, bool signedLevelSet) const |
virtual std::array< double, 3 > | evalCellProjectionPoint (long id) const |
virtual short | evalCellSign (long id) const |
virtual double | evalCellValue (long id, bool signedLevelSet) const |
virtual std::array< double, 3 > | evalGradient (const std::array< double, 3 > &point, bool signedLevelSet) const |
virtual std::array< double, 3 > | evalProjectionPoint (const std::array< double, 3 > &point) const |
virtual short | evalSign (const std::array< double, 3 > &point) const |
virtual double | evalValue (const std::array< double, 3 > &point, bool signedLevelSet) const |
void | flushData (std::fstream &, const std::string &, VTKFormat) override |
LevelSetBulkEvaluationMode | getCellBulkEvaluationMode () const |
LevelSetCacheMode | getFieldCellCacheMode (LevelSetField field) const |
int | getId () const |
virtual const LevelSetKernel * | getKernel () const |
LevelSetInfo | getLevelSetInfo (long cellId) const |
double | getLS (long cellId) const |
double | getNarrowBandSize () const |
std::size_t | getReferenceCount () const |
double | getSizeNarrowBand () const |
LevelSetIntersectionStatus | intersectSurface (long id, LevelSetIntersectionMode=LevelSetIntersectionMode::FAST_FUZZY) const |
virtual bool | isCellInNarrowBand (long id) const |
LevelSetIntersectionStatus | isCellIntersected (long id, LevelSetIntersectionMode=LevelSetIntersectionMode::FAST_FUZZY) const |
virtual bool | isInNarrowBand (const std::array< double, 3 > &point) const |
LevelSetIntersectionStatus | isInterfaceIntersected (long id) const |
LevelSetIntersectionStatus | isInterfaceIntersected (long id, bool invert, std::array< std::array< double, 3 >, 2 > *intersection, std::vector< std::array< double, 3 > > *polygon) const |
virtual bool | isPrimary () const |
void | setCellBulkEvaluationMode (LevelSetBulkEvaluationMode evaluationMode) |
void | update (const std::vector< adaption::Info > &adaptionData) |
![]() | |
virtual void | absorbData (std::fstream &, const std::string &, VTKFormat, uint64_t, uint8_t, VTKDataType) |
template<typename T> | |
void | flushValue (std::fstream &, VTKFormat, const T &value) const |
template<typename T> | |
void | flushValue (std::fstream &, VTKFormat, const T *values, int nValues) const |
Protected Member Functions | |
std::array< double, 3 > | _evalCellGradient (long id, bool signedLevelSet) const override |
std::array< double, 3 > | _evalCellNormal (long id, bool signedLevelSet) const override |
short | _evalCellSign (long id) const override |
long | _evalCellSupport (long id, double searchRadius=AUTOMATIC_SEARCH_RADIUS) const override |
const SurfUnstructured & | _evalCellSurface (long id) const override |
double | _evalCellValue (long id, bool signedLevelSet) const override |
std::array< double, 3 > | _evalGradient (const std::array< double, 3 > &point, bool signedLevelSet) const override |
void | _evalProjection (const std::array< double, 3 > &point, bool signedLevelSet, std::array< double, 3 > *projectionPoint, std::array< double, 3 > *projectionNormal) const override |
short | _evalSign (const std::array< double, 3 > &point) const override |
long | _evalSupport (const std::array< double, 3 > &point) const override |
long | _evalSupport (const std::array< double, 3 > &point, double searchRadius) const override |
const SurfUnstructured & | _evalSurface (const std::array< double, 3 > &point) const override |
double | _evalValue (const std::array< double, 3 > &point, bool signedLevelSet) const override |
LevelSetIntersectionStatus | _isInterfaceIntersected (long id, bool invert, std::array< std::array< double, 3 >, 2 > *intersection, std::vector< std::array< double, 3 > > *polygon) const override |
LevelSetCellLocation | fillCellGeometricNarrowBandLocationCache (long id) override |
void | fillCellLocationCache () override |
void | fillCellLocationCache (const std::vector< adaption::Info > &adaptionData) override |
![]() | |
LevelSetSegmentationBaseObject (int, const LevelSetSegmentationSurfaceInfo *surfaceInfo) | |
virtual int | _evalCellPart (long id) const |
virtual int | _evalPart (const std::array< double, 3 > &point) const |
LevelSetIntersectionStatus | _isCellIntersected (long, double distance, LevelSetIntersectionMode=LevelSetIntersectionMode::FAST_FUZZY) const override |
void | addVTKOutputData (LevelSetField field, const std::string &objectName) override |
std::size_t | createFieldCellCache (LevelSetField field, std::size_t cacheId=CellCacheCollection::NULL_CACHE_ID) override |
void | fillFieldCellCache (LevelSetField field, const std::vector< long > &cellIds) |
void | fillFieldCellCache (LevelSetField field, long id) override |
template<typename value_t> | |
void | fillFieldCellCache (LevelSetField field, long id, const value_t &value) const |
void | flushVTKOutputData (std::fstream &stream, VTKFormat format, LevelSetField field) const override |
template<typename value_t, typename evaluator_t, typename fallback_t> | |
void | flushVTKOutputData (std::fstream &stream, VTKFormat format, LevelSetField field, const evaluator_t evluator, const fallback_t fallback) const |
std::string | getVTKOutputFieldName (LevelSetField field) const override |
![]() | |
void | adaptCellCaches (const std::vector< adaption::Info > &adaptionData) |
void | clearCellCache (std::size_t cacheId, bool release) |
void | completeCellCacheExchange (const std::unordered_map< int, std::vector< long > > &sendCellIds, std::size_t cacheIds, DataCommunicator *) |
void | completeCellCachesExchange (const std::unordered_map< int, std::vector< long > > &sendCellIds, const std::vector< std::size_t > &cacheIds, DataCommunicator *) |
template<typename value_t> | |
std::size_t | createCellCache (LevelSetFillIn expectedFillIn, std::size_t cacheId=CellCacheCollection::NULL_CACHE_ID) |
virtual std::size_t | createCellLocationCache (std::size_t cacheId=CellCacheCollection::NULL_CACHE_ID) |
virtual std::size_t | createCellPropagatedSignCache (std::size_t cacheId=CellCacheCollection::NULL_CACHE_ID) |
void | destroyCellBulkData () |
void | destroyCellCache (std::size_t cacheId) |
void | destroyCellLocationCache () |
void | destroyCellNarrowBandData () |
void | destroyCellPropagatedSignCache () |
virtual void | destroyFieldCellCache (LevelSetField field) |
virtual void | dump (std::ostream &) |
std::vector< long > | evalCellCacheFillIds (LevelSetZone zone, LevelSetCacheMode cacheMode) const |
std::vector< long > | evalCellCacheFillIds (LevelSetZone zone, LevelSetCacheMode cacheMode, const std::vector< adaption::Info > &adaptionData) const |
std::vector< long > | evalCellCacheStaleIds (const std::vector< adaption::Info > &adaptionData) const |
template<typename value_t, typename evaluator_t, typename fallback_t> | |
value_t | evalCellField (LevelSetField field, long id, const evaluator_t &evaluator, const fallback_t &fallback) const |
template<typename value_t, typename evaluator_t, typename fallback_t> | |
value_t | evalCellFieldCached (LevelSetField field, long id, const evaluator_t &evaluator, const fallback_t &fallback) const |
std::vector< long > | evalCellFullCacheFillIds (LevelSetZone zone) const |
std::vector< long > | evalCellFullCacheFillIds (LevelSetZone zone, const std::vector< adaption::Info > &adaptionData) const |
std::vector< long > | evalCellNarrowBandCacheFillIds (LevelSetZone zone) const |
std::vector< long > | evalCellNarrowBandCacheFillIds (LevelSetZone zone, const std::vector< adaption::Info > &adaptionData) const |
std::vector< long > | evalCellOnDemandCacheFillIds (LevelSetZone zone) const |
std::vector< long > | evalCellOnDemandCacheFillIds (LevelSetZone zone, const std::vector< adaption::Info > &adaptionData) const |
void | evaluate () |
void | evaluateCellBulkData () |
void | evaluateCellNarrowBandData () |
short | evalValueSign (double value) const |
virtual void | fillCellPropagatedSignCache () |
void | fillFieldCellCaches (LevelSetZone zone, const std::vector< LevelSetField > &fields) |
void | fillFieldCellCaches (LevelSetZone zone, const std::vector< LevelSetField > &fields, const std::vector< adaption::Info > &adaptionData) |
template<typename value_t> | |
CellCacheCollection::ValueCache< value_t > * | getCellCache (std::size_t cacheId) const |
CellCacheCollection::Cache * | getCellCache (std::size_t cacheId) const |
LevelSetCellLocation | getCellLocation (long id) const |
LevelSetZone | getCellZone (long id) const |
template<typename value_t> | |
CellCacheCollection::ValueCache< value_t > * | getFieldCellCache (LevelSetField field) const |
CellCacheCollection::Cache * | getFieldCellCache (LevelSetField field) const |
std::size_t | getFieldCellCacheId (LevelSetField field) const |
virtual LevelSetKernel * | getKernel () |
std::string | getVTKOutputDataName (LevelSetField field, const std::string &objectName) const |
bool | hasVTKOutputData (LevelSetField field, const std::string &objectName) const |
void | pruneCellCache (std::size_t cacheId, const std::vector< long > &cellIds) |
void | removeVTKOutputData (LevelSetField field, const std::string &objectName) |
virtual void | restore (std::istream &) |
void | setDefaultLevelSetSigndness (bool signedLevelSet) |
virtual void | setKernel (LevelSetKernel *) |
void | setNarrowBandSize (double size) |
void | setSizeNarrowBand (double) |
void | startCellCacheExchange (const std::unordered_map< int, std::vector< long > > &recvCellIds, std::size_t cacheIds, DataCommunicator *) const |
void | startCellCachesExchange (const std::unordered_map< int, std::vector< long > > &recvCellIds, const std::vector< std::size_t > &cacheIds, DataCommunicator *) const |
void | update () |
void | updateCellBulkData (const std::vector< adaption::Info > &adaptionData) |
void | updateCellNarrowBandData (const std::vector< adaption::Info > &adaptionData) |
Additional Inherited Members | |
![]() | |
typedef LevelSetCachedKernel::CellCacheCollection | CellCacheCollection |
![]() | |
static BITPIT_PUBLIC_API const double | AUTOMATIC_SEARCH_RADIUS = -1 |
![]() | |
template<typename data_t> | |
using | CellCacheEntry = typename CellCacheCollection::ValueCache<data_t>::Entry |
![]() | |
std::size_t | m_cellLocationCacheId |
Id of the cache that will keep track if cell zones. | |
std::size_t | m_cellPropagatedSignCacheId |
Id of the cache that will keep track if cell propagated sign. | |
bool | m_defaultSignedLevelSet |
LevelSetFieldMap< std::string > | m_enabledOutputFields |
LevelSetKernel * | m_kernel |
double | m_narrowBandSize |
Size of narrow band. | |
![]() | |
static const bool | CELL_CACHE_IS_SIGNED = false |
static const LevelSetIntersectionMode | CELL_LOCATION_INTERSECTION_MODE = LevelSetIntersectionMode::FAST_GUARANTEE_FALSE |
Detailed Description
Implements visitor pattern fo segmentated geometries.
Definition at line 187 of file levelSetSegmentationObject.hpp.
Constructor & Destructor Documentation
◆ LevelSetSegmentationObject() [1/5]
bitpit::LevelSetSegmentationObject::LevelSetSegmentationObject | ( | int | id | ) |
Constructor
- Parameters
-
[in] id identifier of object
Definition at line 2383 of file levelSetSegmentationObject.cpp.
◆ LevelSetSegmentationObject() [2/5]
bitpit::LevelSetSegmentationObject::LevelSetSegmentationObject | ( | int | id, |
std::unique_ptr< const SurfUnstructured > && | surface, | ||
double | featureAngle = 2. * BITPIT_PI ) |
Constructor
- Parameters
-
[in] id identifier of object [in] surface unique pointer to surface mesh [in] featureAngle feature angle. If the angle between two segments is bigger than this angle, the enclosed edge is considered as a sharp edge
Definition at line 2395 of file levelSetSegmentationObject.cpp.
◆ LevelSetSegmentationObject() [3/5]
bitpit::LevelSetSegmentationObject::LevelSetSegmentationObject | ( | int | id, |
const SurfUnstructured * | surface, | ||
double | featureAngle = 2. * BITPIT_PI ) |
Constructor
- Parameters
-
[in] id identifier of object [in] surface pointer to surface mesh [in] featureAngle feature angle; if the angle between two segments is bigger than this angle, the enclosed edge is considered as a sharp edge.
Definition at line 2407 of file levelSetSegmentationObject.cpp.
◆ LevelSetSegmentationObject() [4/5]
bitpit::LevelSetSegmentationObject::LevelSetSegmentationObject | ( | int | id, |
const SurfUnstructured * | surface, | ||
double | featureAngle, | ||
LevelSetSurfaceSmoothing | surfaceSmoothing ) |
Constructor
- Parameters
-
[in] id identifier of object [in] surface pointer to surface mesh [in] featureAngle feature angle; if the angle between two segments is bigger than this angle, the enclosed edge is considered as a sharp edge. [in] surfaceSmoothing is the given surface snoothing order
Definition at line 2420 of file levelSetSegmentationObject.cpp.
◆ LevelSetSegmentationObject() [5/5]
bitpit::LevelSetSegmentationObject::LevelSetSegmentationObject | ( | const LevelSetSegmentationObject & | other | ) |
Copy constructor.
- Parameters
-
other is another object whose content is copied in this object
Definition at line 2431 of file levelSetSegmentationObject.cpp.
Member Function Documentation
◆ _evalCellGradient()
|
overrideprotectedvirtual |
Evaluate levelset gradient at the specified cell.
- Parameters
-
id is the id of the cell signedLevelSet controls if signed levelset function will be used
- Returns
- The gradient of the levelset at the specified cell.
Implements bitpit::LevelSetObject.
Definition at line 2953 of file levelSetSegmentationObject.cpp.
◆ _evalCellNormal()
|
overrideprotectedvirtual |
Evaluate the normal of the surface at the segment closest to the specified cell.
- Parameters
-
id is the id of the cell signedLevelSet controls if signed levelset function will be used
- Returns
- The normal of the surface at the segment closest to the specified cell.
Implements bitpit::LevelSetSegmentationBaseObject.
Definition at line 2987 of file levelSetSegmentationObject.cpp.
◆ _evalCellSign()
|
overrideprotectedvirtual |
Evaluate levelset sign at the specified cell.
- Parameters
-
id is the id of the cell
- Returns
- The sign of the levelset at the specified cell.
Implements bitpit::LevelSetObject.
Definition at line 2923 of file levelSetSegmentationObject.cpp.
◆ _evalCellSupport()
|
overrideprotectedvirtual |
Evaluate the segment closest to the specified cell.
- Parameters
-
id is the id of the cell searchRadius all segments whose distance is greater than the search radius will not be considered for the evaluation of the support. If the search radius is set equal to the constant AUTOMATIC_SEARCH_RADIUS, the object will try to evaluate the optional search radius for the specified cell. The automatic evaluation of the search radius is possible only for a limited number of cases, when the automatic evaluation cannot be performed, an infinite search radius will be used.
- Returns
- The segment closest to the specified cell.
Implements bitpit::LevelSetSegmentationBaseObject.
Definition at line 2973 of file levelSetSegmentationObject.cpp.
◆ _evalCellSurface()
|
overrideprotectedvirtual |
Evaluate the surface associated with the segment closest to the specified cell.
- Parameters
-
id is the id of the cell
- Returns
- The surface associated with the segment closest to the specified cell.
Implements bitpit::LevelSetSegmentationBaseObject.
Definition at line 2910 of file levelSetSegmentationObject.cpp.
◆ _evalCellValue()
|
overrideprotectedvirtual |
Evaluate levelset value at the specified cell.
- Parameters
-
id is the id of the cell signedLevelSet controls if signed levelset function will be used
- Returns
- The value of the levelset at the specified cell.
Implements bitpit::LevelSetObject.
Definition at line 2938 of file levelSetSegmentationObject.cpp.
◆ _evalGradient()
|
overrideprotectedvirtual |
Evaluate levelset gradient at the specified point.
- Parameters
-
point are the coordinates of the point signedLevelSet controls if signed levelset function will be used
- Returns
- The gradient of the levelset at the specified point.
Implements bitpit::LevelSetObject.
Definition at line 3046 of file levelSetSegmentationObject.cpp.
◆ _evalProjection()
|
overrideprotectedvirtual |
Evaluate the projection of the given point on the surface created based on the points representing the specified segment. The surface passes from these points and is verical to the normal vectors associated with them.
If the usage of an unsigned level set is requested, the orientation of the surface should be discarded in order to have a normal that is agnostic with respect to the two sides of the surface. If the sign is not cached, it should be evaluated from scratch and this will cause the projection evaluation to be performed twice.
- Parameters
-
[in] point are the coordinates of the given point [in] signedLevelSet controls if signed levelset function will be used [out] projectionPoint The coordinates of the projection point on the surface. [out] projectionNormal The coordinates of the norrmal to the surface vector on the surface projection point.
Implements bitpit::LevelSetSegmentationBaseObject.
Definition at line 3070 of file levelSetSegmentationObject.cpp.
◆ _evalSign()
|
overrideprotectedvirtual |
Evaluate levelset sign at the specified point.
- Parameters
-
point are the coordinates of the point
- Returns
- The sign of the levelset at the specified point.
Implements bitpit::LevelSetObject.
Definition at line 3018 of file levelSetSegmentationObject.cpp.
◆ _evalSupport() [1/2]
|
overrideprotectedvirtual |
Evaluate the closest segment to the specified point.
- Parameters
-
point are the coordinates of the point
- Returns
- The closest segment to the specified point.
Implements bitpit::LevelSetSegmentationBaseObject.
Definition at line 3194 of file levelSetSegmentationObject.cpp.
◆ _evalSupport() [2/2]
|
overrideprotectedvirtual |
Evaluate the closest segment to the specified point.
- Parameters
-
point are the coordinates of the point searchRadius all segments whose distance is greater than the search radius will not be considered for the evaluation of the support
- Returns
- The closest segment to the specified point.
Implements bitpit::LevelSetSegmentationBaseObject.
Definition at line 3207 of file levelSetSegmentationObject.cpp.
◆ _evalSurface()
|
overrideprotectedvirtual |
Evaluate the surface associated with the segment closest to the specified point.
- Parameters
-
point are the coordinates of the point
- Returns
- The surface associated with the segment closest to the specified point.
Implements bitpit::LevelSetSegmentationBaseObject.
Definition at line 3005 of file levelSetSegmentationObject.cpp.
◆ _evalValue()
|
overrideprotectedvirtual |
Evaluate levelset value at the specified point.
- Parameters
-
point are the coordinates of the point signedLevelSet controls if signed levelset function will be used
- Returns
- The value of the levelset at the specified point.
Implements bitpit::LevelSetObject.
Definition at line 3032 of file levelSetSegmentationObject.cpp.
◆ _isInterfaceIntersected()
|
overrideprotectedvirtual |
Check if the specified interface intersects the zero-levelset iso-surface.
The iso-surface is considered planar. Calculate the intersection as a segment defined by two points and the part of the interface belonging to the subspace of negative level-set. If the interface is not intersected, an empty polygon is returned. The interface belonging to the possitive level-set subspace is returned if the "invert" argument is false.
Depending on the smoothing order, the intersection is computed by considering the zero-levelset as a plane or a curved surface.
- Parameters
-
[in] id is the interface index [in] invert when false the part of the interface occupying the positive levelset area is returned [out] intersection If intersects, return the cutting segment. In case of a liner interface the intersection degenerates to a point which coincides with the begining and the ending of the segment [out] polygon is the polygon constructed by the interface intersection placed on the opposite subspace of the one pointed by the plane's normal
- Returns
- the level set status
Reimplemented from bitpit::LevelSetSegmentationBaseObject.
Definition at line 3299 of file levelSetSegmentationObject.cpp.
◆ clone()
|
overridevirtual |
Clones the object
- Returns
- pointer to cloned object
Implements bitpit::LevelSetObject.
Definition at line 2455 of file levelSetSegmentationObject.cpp.
◆ empty()
|
overridevirtual |
Checks if the object is empty.
- Returns
- Returns true is the object is empty, false otherwise.
Implements bitpit::LevelSetObject.
Definition at line 2446 of file levelSetSegmentationObject.cpp.
◆ fillCellGeometricNarrowBandLocationCache()
|
overrideprotectedvirtual |
Fill location cache for the specified cell if it is geometrically inside the narrow band
A cell is geometrically inside the narrow band if its distance from the surface is smaller than the narrow band side or if it intersects the surface.
This function may require the evaluation of some levelset fields. To improve performance, it is important to attempt filling the cache of the evaluated fields. It is then up to the caches to decide if the fields can be cached.
- Parameters
-
[in] id is the cell id
- Returns
- The cell location of the cache or LevelSetCellLocation::UNKNOWN if the cell location was not identified.
Implements bitpit::LevelSetObject.
Definition at line 2855 of file levelSetSegmentationObject.cpp.
◆ fillCellLocationCache() [1/2]
|
overrideprotectedvirtual |
Fill the cache that contains the zone associated to the cells.
A cell can be either in the narrow band or in the bulk. It will be considered inside the narrow band if one of the following conditions holds:
- its distance from the surface is less than the narrow band size;
- it intersects the zero-levelset iso-surface (intersections are checked using the FAST_GUARANTEE_FALSE criterium);
- one of its neighbors intersects the zero-levelset iso-surface.
Implements bitpit::LevelSetObject.
Definition at line 2632 of file levelSetSegmentationObject.cpp.
◆ fillCellLocationCache() [2/2]
|
overrideprotectedvirtual |
Fill the cache that contains the zone associated to the cells.
A cell can be either in the narrow band or in the bulk. It will be considered inside the narrow band if one of the following conditions holds:
- its distance from the surface is less than the narrow band size;
- it intersects the zero-levelset iso-surface (intersections are checked using the FAST_GUARANTEE_FALSE criterium);
- one of its neighbors intersects the zero-levelset iso-surface.
- Parameters
-
adaptionData are the information about the mesh update
Implements bitpit::LevelSetObject.
Definition at line 2656 of file levelSetSegmentationObject.cpp.
◆ getFeatureAngle()
double bitpit::LevelSetSegmentationObject::getFeatureAngle | ( | ) | const |
Get feature angle
- Returns
- feature angle used when calculating face normals.
Definition at line 2609 of file levelSetSegmentationObject.cpp.
◆ getMaxSurfaceFeatureSize()
double bitpit::LevelSetSegmentationObject::getMaxSurfaceFeatureSize | ( | ) | const |
Get the largest characteristic size within the triangulation. This function is only provided for guarantee backwards compatibility with older versions. It is out of the levelset scope to evaluate the feature size of the surface.
- Returns
- largest characteristic size within the triangulation
Definition at line 3345 of file levelSetSegmentationObject.cpp.
◆ getMinSurfaceFeatureSize()
double bitpit::LevelSetSegmentationObject::getMinSurfaceFeatureSize | ( | ) | const |
Get the smallest characteristic size within the triangulation This function is only provided for guarantee backwards compatibility with older versions. It is out of the levelset scope to evaluate the feature size of the surface.
- Returns
- smallest characteristic size within the triangulation
Definition at line 3316 of file levelSetSegmentationObject.cpp.
◆ getSearchTree()
const SurfaceSkdTree & bitpit::LevelSetSegmentationObject::getSearchTree | ( | ) | const |
◆ getSurface()
const SurfUnstructured & bitpit::LevelSetSegmentationObject::getSurface | ( | ) | const |
Get segmentation surface
- Returns
- segmentation surface;
Definition at line 2463 of file levelSetSegmentationObject.cpp.
◆ getSurfaceSmoothing()
bitpit::LevelSetSurfaceSmoothing bitpit::LevelSetSegmentationObject::getSurfaceSmoothing | ( | ) | const |
Get smoothing order (low or high) imposed on surface when calculating the projection point and normal on the surface
- Returns
- the ssurface smoothing order
Definition at line 2618 of file levelSetSegmentationObject.cpp.
◆ setSurface() [1/5]
void bitpit::LevelSetSegmentationObject::setSurface | ( | const SurfUnstructured * | surface, |
bool | force = false ) |
Set the surface
Unless explicitly forced, it is not possible to replace an existing surface. Also, when the surface is replaced, the object will not recalculate the levelset on the newly set surface (nor will tell the proxy objects that may depend on the current object to update the levelset values).
The feature angle will be set to the defualt value specified by the constant LevelSetSegmentationSurfaceInfo::DEFAULT_FEATURE_ANGLE.
- Parameters
-
[in] surface is the surface that will be set [in] force controls if it is possible to replace an existing surface.
Definition at line 2530 of file levelSetSegmentationObject.cpp.
◆ setSurface() [2/5]
void bitpit::LevelSetSegmentationObject::setSurface | ( | const SurfUnstructured * | surface, |
double | featureAngle, | ||
bool | force = false ) |
Set the surface
Unless explicitly forced, it is not possible to replace an existing surface. Also, when the surface is replaced, the object will not recalculate the levelset on the newly set surface (nor will tell the proxy objects that may depend on the current object to update the levelset values).
- Parameters
-
[in] surface is the surface that will be set [in] featureAngle is the angle that is used to identify sharp edges. If the angle between two segments is bigger than this angle, the enclosed edge is considered as a sharp edge [in] force controls if it is possible to replace an existing surface.
Definition at line 2547 of file levelSetSegmentationObject.cpp.
◆ setSurface() [3/5]
void bitpit::LevelSetSegmentationObject::setSurface | ( | const SurfUnstructured * | surface, |
double | featureAngle, | ||
LevelSetSurfaceSmoothing | surfaceSmoothing, | ||
bool | force = false ) |
Set the surface
Unless explicitly forced, it is not possible to replace an existing surface. Also, when the surface is replaced, the object will not recalculate the levelset on the newly set surface (nor will tell the proxy objects that may depend on the current object to update the levelset values).
- Parameters
-
[in] surface is the surface that will be set [in] featureAngle is the angle that is used to identify sharp edges. If the angle between two segments is bigger than this angle, the enclosed edge is considered as a sharp edge [in] surfaceSmoothing is the given surface snoothing order [in] force controls if it is possible to replace an existing surface.
Definition at line 2579 of file levelSetSegmentationObject.cpp.
◆ setSurface() [4/5]
void bitpit::LevelSetSegmentationObject::setSurface | ( | std::unique_ptr< const SurfUnstructured > && | surface, |
bool | force = false ) |
Set the surface
Unless explicitly forced, it is not possible to replace an existing surface. Also, when the surface is replaced, the object will not recalculate the levelset on the newly set surface (nor will tell the proxy objects that may depend on the current object to update the levelset values).
The feature angle will be set to the defualt value specified by the constant LevelSetSegmentationSurfaceInfo::DEFAULT_FEATURE_ANGLE.
- Parameters
-
[in] surface is the surface that will be set [in] force controls if it is possible to replace an existing surface.
Definition at line 2481 of file levelSetSegmentationObject.cpp.
◆ setSurface() [5/5]
void bitpit::LevelSetSegmentationObject::setSurface | ( | std::unique_ptr< const SurfUnstructured > && | surface, |
double | featureAngle, | ||
bool | force = false ) |
Set the surface
Unless explicitly forced, it is not possible to replace an existing surface. Also, when the surface is replaced, the object will not recalculate the levelset on the newly set surface (nor will tell the proxy objects that may depend on the current object to update the levelset values).
- Parameters
-
[in] surface is the surface that will be set [in] featureAngle is the angle that is used to identify sharp edges. If the angle between two segments is bigger than this angle, the enclosed edge is considered as a sharp edge [in] force controls if it is possible to replace an existing surface.
Definition at line 2498 of file levelSetSegmentationObject.cpp.
The documentation for this class was generated from the following files:
- src/levelset/levelSetSegmentationObject.hpp
- src/levelset/levelSetSegmentationObject.cpp
