Loading...
Searching...
No Matches
levelSetBooleanObject.tpp
55LevelSetBooleanResult<SourceLevelSetObject>::LevelSetBooleanResult(LevelSetBooleanOperation operation, const SourceLevelSetObject *object, double value)
67void LevelSetBooleanResult<SourceLevelSetObject>::update(const SourceLevelSetObject *object, double value)
83 m_objectSign = 1;
85 m_value = m_objectSign * value;
91 m_objectSign = 1;
99 m_objectSign = -1;
101 m_value = m_objectSign * value;
144LevelSetBooleanBaseObject<SourceLevelSetObject>::LevelSetBooleanBaseObject( int id, LevelSetBooleanOperation op, const SourceLevelSetObject *source1, const SourceLevelSetObject *source2 )
160LevelSetBooleanBaseObject<SourceLevelSetObject>::LevelSetBooleanBaseObject( int id, LevelSetBooleanOperation op, const std::vector<const SourceLevelSetObject *> &sourceObjects )
188LevelSetBooleanOperation LevelSetBooleanBaseObject<SourceLevelSetObject>::getBooleanOperation() const{
199LevelSetBooleanResult<SourceLevelSetObject> LevelSetBooleanBaseObject<SourceLevelSetObject>::computeBooleanResult( long id, bool signedLevelSet ) const{
205 LevelSetBooleanResult<SourceLevelSetObject> result( getBooleanOperation(), m_sourceObjects[0], m_sourceObjects[0]->evalCellValue(id, signedLevelSet) );
220LevelSetBooleanResult<SourceLevelSetObject> LevelSetBooleanBaseObject<SourceLevelSetObject>::computeBooleanResult( const std::array<double,3> &coords, bool signedLevelSet ) const{
226 LevelSetBooleanResult<SourceLevelSetObject> result( getBooleanOperation(), m_sourceObjects[0], m_sourceObjects[0]->evalValue(coords, signedLevelSet) );
240void LevelSetBooleanBaseObject<SourceLevelSetObject>::replaceSourceObject(const SourceLevelSetObject *current, const SourceLevelSetObject *updated){
262 LevelSetBulkEvaluationMode sourceBulkEvaluationMode = sourceObject->getCellBulkEvaluationMode();
268 LevelSetCacheMode sourceSignCacheMode = sourceObject->getFieldCellCacheMode(LevelSetField::SIGN);
272 LevelSetCacheMode sourceValueCacheMode = sourceObject->getFieldCellCacheMode(LevelSetField::VALUE);
291 typedef typename SourceLevelSetObject::CellCacheCollection::template ValueCache<char> ZoneCache;
292 ZoneCache *propagatedSignCache = this->template getCellCache<char>(this->m_cellPropagatedSignCacheId);
297 const LevelSetBooleanResult<SourceLevelSetObject> cellResult = computeBooleanResult(cellId, true);
323double LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalCellValue(long id, bool signedLevelSet) const {
324 return _evalCellFunction<double>(id, signedLevelSet, [] (const LevelSetBooleanResult<SourceLevelSetObject> &result) -> double
342std::array<double,3> LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalCellGradient(long id, bool signedLevelSet) const {
343 return _evalCellFunction<std::array<double,3>>(id, signedLevelSet, [id, signedLevelSet] (const LevelSetBooleanResult<SourceLevelSetObject> &result) -> std::array<double, 3>
367double LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalValue(const std::array<double,3> &point, bool signedLevelSet) const {
368 return _evalFunction<double>(point, signedLevelSet, [] (const LevelSetBooleanResult<SourceLevelSetObject> &result) -> double
387std::array<double,3> LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalGradient(const std::array<double,3> &point, bool signedLevelSet) const {
388 return _evalFunction<std::array<double,3>>(point, signedLevelSet, [&point, signedLevelSet] (const LevelSetBooleanResult<SourceLevelSetObject> &result) -> std::array<double,3>
412data_t LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalCellFunction(long id, bool signedLevelSet,
415 const LevelSetBooleanResult<SourceLevelSetObject> result = computeBooleanResult( id, signedLevelSet ) ;
428data_t LevelSetBooleanBaseObject<SourceLevelSetObject>::_evalFunction(const std::array<double,3> &point, bool signedLevelSet,
431 const LevelSetBooleanResult<SourceLevelSetObject> result = computeBooleanResult( point, signedLevelSet ) ;
443const SourceLevelSetObject * LevelSetBooleanBaseObject<SourceLevelSetObject>::getCellReferenceObject(long id) const{
469const SourceLevelSetObject * LevelSetBooleanBaseObject<SourceLevelSetObject>::getReferenceObject(const std::array<double, 3> &point) const{
494std::vector<const SourceLevelSetObject *> LevelSetBooleanBaseObject<SourceLevelSetObject>::getSourceObjects() const{
std::vector< const SourceLevelSetObject * > getSourceObjects() const override
Definition levelSetBooleanObject.tpp:494
std::array< double, 3 > _evalGradient(const std::array< double, 3 > &point, bool signedLevelSet) const override
Definition levelSetBooleanObject.tpp:387
const SourceLevelSetObject * getCellReferenceObject(long id) const override
Definition levelSetBooleanObject.tpp:443
bool empty() const override
Definition levelSetBooleanObject.tpp:172
double _evalValue(const std::array< double, 3 > &point, bool signedLevelSet) const override
Definition levelSetBooleanObject.tpp:367
std::array< double, 3 > _evalCellGradient(long id, bool signedLevelSet) const override
Definition levelSetBooleanObject.tpp:342
LevelSetBooleanBaseObject(int, LevelSetBooleanOperation, const SourceLevelSetObject *, const SourceLevelSetObject *)
Definition levelSetBooleanObject.tpp:144
const SourceLevelSetObject * getReferenceObject(const std::array< double, 3 > &point) const override
Definition levelSetBooleanObject.tpp:469
data_t _evalCellFunction(long id, bool signedLevelSet, const function_t &function) const
Definition levelSetBooleanObject.tpp:412
short _evalCellSign(long id) const override
Definition levelSetBooleanObject.tpp:311
double _evalCellValue(long id, bool signedLevelSet) const override
Definition levelSetBooleanObject.tpp:323
data_t _evalFunction(const std::array< double, 3 > &point, bool signedLevelSet, const function_t &function) const
Definition levelSetBooleanObject.tpp:428
void fillCellPropagatedSignCache() override
Definition levelSetBooleanObject.tpp:258
void replaceSourceObject(const SourceLevelSetObject *current, const SourceLevelSetObject *updated) override
Definition levelSetBooleanObject.tpp:240
Allow to evaluate the result of a boolean operation between two LevelSetObjects.
Definition levelSetBooleanObject.hpp:44
double getValue() const
Definition levelSetBooleanObject.tpp:126
void update(const SourceLevelSetObject *object, double value)
Definition levelSetBooleanObject.tpp:67
LevelSetBooleanResult(LevelSetBooleanOperation operation)
Definition levelSetBooleanObject.tpp:42
const SourceLevelSetObject * getObject() const
Definition levelSetBooleanObject.tpp:110
int getObjectSign() const
Definition levelSetBooleanObject.tpp:118
Interface class for all objects with respect to whom the levelset function may be computed.
Definition levelSetObject.hpp:55
virtual std::array< double, 3 > evalCellGradient(long id, bool signedLevelSet) const
Definition levelSetObject.cpp:1678
virtual std::array< double, 3 > evalGradient(const std::array< double, 3 > &point, bool signedLevelSet) const
Definition levelSetObject.cpp:1743
LevelSetProxyObject(int)
Definition levelSetProxyObject.tpp:40
CellConstIterator cellConstBegin() const
Definition patch_kernel.cpp:2705
CellConstIterator cellConstEnd() const
Definition patch_kernel.cpp:2715
The VolumeKernel class provides an interface for defining volume patches.
Definition volume_kernel.hpp:33
@ SIGN_PROPAGATION
Sign is propagated from the narrow band, no other data will be evaluated.
Definition levelSetCommon.hpp:157
const std::array< double, 3 > GRADIENT
Definition levelSetCommon.hpp:48
