Wildmeshing Toolkit
wmtk::operations::composite::TriEdgeSwap Class Reference

Performs an edge swap, implemented as a combination of swap and collapse. More...

#include <TriEdgeSwap.hpp>

Inheritance diagram for wmtk::operations::composite::TriEdgeSwap:
[legend]
Collaboration diagram for wmtk::operations::composite::TriEdgeSwap:
[legend]

Public Member Functions

 TriEdgeSwap (Mesh &m)
 
PrimitiveType primitive_type () const override
 
EdgeSplitsplit ()
 
EdgeCollapsecollapse ()
 
- Public Member Functions inherited from wmtk::operations::Operation
 Operation (Mesh &mesh)
 
virtual ~Operation ()
 
virtual std::vector< simplex::Simplexoperator() (const simplex::Simplex &simplex)
 
virtual double priority (const simplex::Simplex &simplex) const
 
virtual bool use_random_priority () const
 
virtual bool & use_random_priority ()
 
const Meshmesh () const
 
Meshmesh ()
 
void add_invariant (std::shared_ptr< Invariant > invariant)
 
void set_priority (const std::function< double(const simplex::Simplex &)> &func)
 
std::shared_ptr< const operations::AttributeTransferStrategyBaseget_transfer_strategy (const attribute::MeshAttributeHandle &attribute)
 
void add_transfer_strategy (const std::shared_ptr< const operations::AttributeTransferStrategyBase > &other)
 
void set_transfer_strategy (const attribute::MeshAttributeHandle &attribute, const std::shared_ptr< const operations::AttributeTransferStrategyBase > &other)
 
void clear_attribute_transfer_strategies ()
 
virtual void reserve_enough_simplices ()
 

Protected Member Functions

std::vector< simplex::Simplexunmodified_primitives (const simplex::Simplex &simplex) const override
 Returns all simplices that will be potentially affected by the operation. More...
 
std::vector< simplex::Simplexexecute (const simplex::Simplex &simplex) override
 returns an empty vector in case of failure More...
 
- Protected Member Functions inherited from wmtk::operations::Operation
virtual bool before (const simplex::Simplex &simplex) const
 
virtual bool after (const std::vector< simplex::Simplex > &unmods, const std::vector< simplex::Simplex > &mods) const
 
void apply_attribute_transfer (const std::vector< simplex::Simplex > &direct_mods)
 

Private Attributes

EdgeSplit m_split
 
EdgeCollapse m_collapse
 

Additional Inherited Members

- Protected Attributes inherited from wmtk::operations::Operation
std::function< double(const simplex::Simplex &)> m_priority = nullptr
 
invariants::InvariantCollection m_invariants
 
std::vector< std::shared_ptr< const operations::AttributeTransferStrategyBase > > m_attr_transfer_strategies
 

Detailed Description

Performs an edge swap, implemented as a combination of swap and collapse.

There are no explicit checks for valence. However, the collapse checks implicitly for validity of the swap. The swap will be not performed if the collapse does not fulfill the link condition.

The edge swap cannot be performed on boundary edges.

input: / \ / \ / f \ X—>—. \ / \ / \ / output: /|\ / | \ / | \ . f ^ . \ | / \ | / |/ X

Definition at line 40 of file TriEdgeSwap.hpp.

Constructor & Destructor Documentation

◆ TriEdgeSwap()

wmtk::operations::composite::TriEdgeSwap::TriEdgeSwap ( Mesh m)

Definition at line 7 of file TriEdgeSwap.cpp.

Member Function Documentation

◆ collapse()

EdgeCollapse& wmtk::operations::composite::TriEdgeSwap::collapse ( )
inline

Definition at line 48 of file TriEdgeSwap.hpp.

References m_collapse.

◆ execute()

std::vector< simplex::Simplex > wmtk::operations::composite::TriEdgeSwap::execute ( const simplex::Simplex simplex)
overrideprotectedvirtual

returns an empty vector in case of failure

Implements wmtk::operations::Operation.

Definition at line 14 of file TriEdgeSwap.cpp.

References wmtk::simplex::Simplex::edge(), m_collapse, m_split, wmtk::operations::Operation::mesh(), wmtk::operations::EdgeCollapse::primitive_type(), and wmtk::Mesh::switch_tuples().

Here is the call graph for this function:

◆ primitive_type()

PrimitiveType wmtk::operations::composite::TriEdgeSwap::primitive_type ( ) const
inlineoverridevirtual

Implements wmtk::operations::Operation.

Definition at line 45 of file TriEdgeSwap.hpp.

References wmtk::Edge.

◆ split()

EdgeSplit& wmtk::operations::composite::TriEdgeSwap::split ( )
inline

Definition at line 47 of file TriEdgeSwap.hpp.

References m_split.

◆ unmodified_primitives()

std::vector< simplex::Simplex > wmtk::operations::composite::TriEdgeSwap::unmodified_primitives ( const simplex::Simplex simplex) const
overrideprotectedvirtual

Returns all simplices that will be potentially affected by the operation.

Implements wmtk::operations::Operation.

Definition at line 72 of file TriEdgeSwap.cpp.

Member Data Documentation

◆ m_collapse

EdgeCollapse wmtk::operations::composite::TriEdgeSwap::m_collapse
private

Definition at line 57 of file TriEdgeSwap.hpp.

Referenced by collapse(), and execute().

◆ m_split

EdgeSplit wmtk::operations::composite::TriEdgeSwap::m_split
private

Definition at line 56 of file TriEdgeSwap.hpp.

Referenced by execute(), and split().


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