ug4
ug::IRefMarkAdjuster Class Reference

#include <ref_mark_adjuster_interface.h>

+ Inheritance diagram for ug::IRefMarkAdjuster:

Public Member Functions

virtual void coarsen_marks_changed (IRefiner &ref, const std::vector< Vertex * > &vrts, const std::vector< Edge * > &edges, const std::vector< Face * > &faces, const std::vector< Volume * > &vols)
 
virtual void enable (bool enable)
 
virtual bool enabled () const
 
 IRefMarkAdjuster ()
 
virtual void ref_marks_changed (IRefiner &ref, const std::vector< Vertex * > &vrts, const std::vector< Edge * > &edges, const std::vector< Face * > &faces, const std::vector< Volume * > &vols)
 
virtual ~IRefMarkAdjuster ()
 
void enable_node_dependency_order_1 (bool bEnable)
 enables or disables node-dependency-order-1. More...
 
bool node_dependency_order_1_enabled ()
 enables or disables node-dependency-order-1. More...
 

Private Attributes

bool m_enabled
 
bool m_nodeDependencyOrder1
 

Detailed Description

Used to steer the mark-adjustment process in classes derived from IRefiner. Instances can be registered at IRefiner and are then used to mark new elements based on already marked elements. Different specializations can thereby implement different rules (e.g. for parallel refinement or anisotropic refinement). The different specialization should be constructed orthogonal to each other, so that they can be chained.

The callback-methods 'ref_marks_changed' and 'coarsen_marks_changed' are called with lists of elements which have been marked since the last adjustment-round. The callbacks can then use IRefiner::mark to adjust marks as required. If a callback changes a ref-mark on an element, this will automatically trigger a new round of adjustments (then only considering elements which have been marked in the current round).

Adjustment normally stops as soon as no adjuster marked any new elements.

Constructor & Destructor Documentation

◆ IRefMarkAdjuster()

ug::IRefMarkAdjuster::IRefMarkAdjuster ( )
inline

◆ ~IRefMarkAdjuster()

virtual ug::IRefMarkAdjuster::~IRefMarkAdjuster ( )
inlinevirtual

Member Function Documentation

◆ coarsen_marks_changed()

virtual void ug::IRefMarkAdjuster::coarsen_marks_changed ( IRefiner ref,
const std::vector< Vertex * > &  vrts,
const std::vector< Edge * > &  edges,
const std::vector< Face * > &  faces,
const std::vector< Volume * > &  vols 
)
inlinevirtual

◆ enable()

virtual void ug::IRefMarkAdjuster::enable ( bool  enable)
inlinevirtual

References enable(), and m_enabled.

Referenced by enable().

◆ enable_node_dependency_order_1()

void ug::IRefMarkAdjuster::enable_node_dependency_order_1 ( bool  bEnable)
inline

enables or disables node-dependency-order-1.

If enabled, hanging nodes may only depend on non-hanging nodes. An edge containing a hanging node thus will not have a hanging-node as a corner vertex.

Enabled by default.

References m_nodeDependencyOrder1.

◆ enabled()

virtual bool ug::IRefMarkAdjuster::enabled ( ) const
inlinevirtual

References m_enabled.

◆ node_dependency_order_1_enabled()

bool ug::IRefMarkAdjuster::node_dependency_order_1_enabled ( )
inline

enables or disables node-dependency-order-1.

If enabled, hanging nodes may only depend on non-hanging nodes. An edge containing a hanging node thus will not have a hanging-node as a corner vertex.

Enabled by default.

References m_nodeDependencyOrder1.

Referenced by ug::StdHNodeAdjuster::ref_marks_changed().

◆ ref_marks_changed()

virtual void ug::IRefMarkAdjuster::ref_marks_changed ( IRefiner ref,
const std::vector< Vertex * > &  vrts,
const std::vector< Edge * > &  edges,
const std::vector< Face * > &  faces,
const std::vector< Volume * > &  vols 
)
inlinevirtual

Member Data Documentation

◆ m_enabled

bool ug::IRefMarkAdjuster::m_enabled
private

Referenced by enable(), and enabled().

◆ m_nodeDependencyOrder1

bool ug::IRefMarkAdjuster::m_nodeDependencyOrder1
private

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