ug4
ug::ParallelHangingNodeRefiner_MultiGrid Class Reference

#include <parallel_hanging_node_refiner_multi_grid.h>

+ Inheritance diagram for ug::ParallelHangingNodeRefiner_MultiGrid:

Public Types

typedef HangingNodeRefiner_MultiGrid BaseClass
 
- Public Types inherited from ug::HangingNodeRefiner_MultiGrid
typedef HangingNodeRefinerBase< MGSelectorBaseClass
 
enum  HNodeCoarsenMarks {
  HNCM_FIRST = HNRM_MAX + 1 , HNCM_NO_NBRS , HNCM_NONE , HNCM_PARTIAL ,
  HNCM_REPLACE , HNCM_ALL , HNCM_INVALID , HNCM_UNKNOWN
}
 
- Public Types inherited from ug::HangingNodeRefinerBase< MGSelector >
enum  HNodeRefMarks
 
typedef MGSelector selector_t
 

Public Member Functions

virtual void copy_marks_to_vmasters (bool vertices, bool edges, bool faces, bool volumes)
 
virtual void copy_marks_to_vslaves (bool vertices, bool edges, bool faces, bool volumes)
 
 ParallelHangingNodeRefiner_MultiGrid (DistributedGridManager &distGridMgr, SPRefinementProjector projector=SPNULL)
 
 ParallelHangingNodeRefiner_MultiGrid (SPRefinementProjector projector=SPNULL)
 
void set_distributed_grid_manager (DistributedGridManager &distGridMgr)
 
void set_involved_processes (pcl::ProcessCommunicator com)
 
virtual ~ParallelHangingNodeRefiner_MultiGrid ()
 
- Public Member Functions inherited from ug::HangingNodeRefiner_MultiGrid
virtual bool adaptivity_supported () const
 returns whether the refiner is able to perform adaptive refinement More...
 
virtual void assign_grid (MultiGrid &mg)
 
virtual bool coarsening_supported () const
 returns true, if the refiner supports coarsening. More...
 
virtual Gridget_associated_grid ()
 DEPRECIATED! Use grid(). Has to return the associated grid. Pure virtual. More...
 
virtual Gridgrid ()
 Returns the grid associated with the refiner. More...
 
virtual void grid_to_be_destroyed (Grid *grid)
 
 HangingNodeRefiner_MultiGrid (MultiGrid &mg, SPRefinementProjector projector=SPNULL)
 
 HangingNodeRefiner_MultiGrid (SPRefinementProjector projector=SPNULL)
 
virtual MultiGridmulti_grid ()
 
virtual ~HangingNodeRefiner_MultiGrid ()
 
- Public Member Functions inherited from ug::HangingNodeRefinerBase< MGSelector >
void add_ref_mark_adjuster (SPIRefMarkAdjuster adjuster)
 Add a refmark adjuster, which will be called while marks are adjusted during refinement / coarsening. More...
 
virtual void clear_marks ()
 clears all marks. Default implementation is empty More...
 
 HangingNodeRefinerBase (SPRefinementProjector projector=SPNULL)
 
void mark (const TIterator &iterBegin, const TIterator &iterEnd, RefinementMark refMark=RM_REFINE)
 marks all elements between iterBegin and iterEnd. More...
 
virtual bool mark (Edge *e, RefinementMark refMark=RM_REFINE)
 
virtual bool mark (Face *f, RefinementMark refMark=RM_REFINE)
 
virtual bool mark (GridObject *o, RefinementMark refMark=RM_REFINE)
 marks the specified geometric object More...
 
virtual bool mark (Vertex *v, RefinementMark refMark=RM_REFINE)
 Marks an element for refinement. Default implementation is empty. More...
 
virtual bool mark (Volume *v, RefinementMark refMark=RM_REFINE)
 
virtual void mark_neighborhood (size_t numIterations, RefinementMark refMark, bool sideNbrsOnly)
 Marks the neighborhood of the current selection. More...
 
bool marked_adaptive (TElem *elem) const
 
bool marked_coarsen (TElem *elem) const
 
bool marked_refine (Edge *elem) const
 
bool marked_refine (TElem *elem) const
 
bool marked_regular (TElem *elem) const
 
virtual bool save_marks_to_file (const char *filename)
 Writes the associated grid and marks to a file. Pure virtual. More...
 
virtual ~HangingNodeRefinerBase ()
 
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...
 
virtual bool mark (Vertex *v, RefinementMark refMark=RM_REFINE)
 Marks a element for refinement. More...
 
virtual bool mark (Edge *e, RefinementMark refMark=RM_REFINE)
 Marks a element for refinement. More...
 
virtual bool mark (Face *f, RefinementMark refMark=RM_REFINE)
 Marks a element for refinement. More...
 
virtual bool mark (Volume *v, RefinementMark refMark=RM_REFINE)
 Marks a element for refinement. More...
 
virtual RefinementMark get_mark (Vertex *v) const
 Returns the mark of a given element. More...
 
virtual RefinementMark get_mark (Edge *e) const
 Returns the mark of a given element. More...
 
virtual RefinementMark get_mark (Face *f) const
 Returns the mark of a given element. More...
 
virtual RefinementMark get_mark (Volume *v) const
 Returns the mark of a given element. More...
 
- Public Member Functions inherited from ug::IRefiner
bool coarsen ()
 Performs coarsening on the elements marked RM_COARSEN. More...
 
bool debugging_enabled () const
 
void enable_debugging (bool enable)
 
int get_local_edge_mark (Face *f, Edge *e) const
 returns the local mark of the specified edge of the given face More...
 
int get_local_edge_mark (Volume *vol, Edge *e) const
 returns the local mark of the specified edge of the given volume More...
 
int get_local_face_mark (Volume *vol, Face *f) const
 returns the local mark of the specified face of the given volume More...
 
virtual RefinementMark get_mark (GridObject *o) const
 returns the mark of the specified geometric object More...
 
 IRefiner (SPRefinementProjector projector=SPNULL)
 
virtual bool local_marks_supported () const
 returns true, if the refiner supports local marks. More...
 
template<class TIterator >
void mark (const TIterator &iterBegin, const TIterator &iterEnd, RefinementMark refMark=RM_REFINE)
 marks all elements between iterBegin and iterEnd. More...
 
virtual bool mark (GridObject *o, RefinementMark refMark=RM_REFINE)
 marks the specified geometric object More...
 
void mark_neighborhood (size_t numIterations)
 marks the neighborhood of currently marked elements. More...
 
template<class TElem >
bool marked_closure (TElem *elem) const
 
template<class TElem >
bool marked_full (TElem *elem) const
 
template<class TElem >
bool marked_local (TElem *elem) const
 
size_t num_marked_edges ()
 returns the number of (globally) marked edges on all levels of the hierarchy More...
 
size_t num_marked_edges (std::vector< int > &numMarkedEdgesOut)
 returns the number of (globally) marked edges on all levels of the hierarchy More...
 
size_t num_marked_elements ()
 returns the number of (globally) marked grid-objects of highest dimension More...
 
size_t num_marked_elements (std::vector< int > &numMarkedElemsOut)
 returns the number of (globally) marked grid-objects of highest dimension More...
 
size_t num_marked_faces ()
 returns the number of (globally) marked faces on all levels of the hierarchy More...
 
size_t num_marked_faces (std::vector< int > &numMarkedFacesOut)
 returns the number of (globally) marked faces on all levels of the hierarchy More...
 
size_t num_marked_volumes ()
 returns the number of (globally) marked volumes on all levels of the hierarchy More...
 
size_t num_marked_volumes (std::vector< int > &numMarkedVolsOut)
 returns the number of (globally) marked volumes on all levels of the hierarchy More...
 
SPRefinementProjector projector ()
 
void refine ()
 Performs refinement on the marked elements. More...
 
void set_adjusted_marks_debug_filename (const char *filename)
 sets a filename to which adjusted marks are saved during refinement / coarsening More...
 
void set_projector (SPRefinementProjector projector)
 
virtual ~IRefiner ()
 
virtual void mark_local (Face *e, int mark)
 Marks a face or volume for local refinement. More...
 
virtual void mark_local (Volume *e, int mark)
 Marks a face or volume for local refinement. More...
 
virtual int get_local_mark (Face *e) const
 returns the local mark of the specified face or volume. More...
 
virtual int get_local_mark (Volume *e) const
 returns the local mark of the specified face or volume. More...
 
void adaption_begins ()
 notifies all listeners of the associated message-hub, that adaption begins / ends. More...
 
void adaption_ends ()
 notifies all listeners of the associated message-hub, that adaption begins / ends. More...
 
- Public Member Functions inherited from ug::GridObserver
virtual void elements_to_be_cleared (Grid *grid)
 
virtual ~GridObserver ()
 
virtual void vertex_created (Grid *grid, Vertex *vrt, GridObject *pParent=NULL, bool replacesParent=false)
 Notified whenever a new element of the given type is created in the given grid. More...
 
virtual void edge_created (Grid *grid, Edge *e, GridObject *pParent=NULL, bool replacesParent=false)
 Notified whenever a new element of the given type is created in the given grid. More...
 
virtual void face_created (Grid *grid, Face *f, GridObject *pParent=NULL, bool replacesParent=false)
 Notified whenever a new element of the given type is created in the given grid. More...
 
virtual void volume_created (Grid *grid, Volume *vol, GridObject *pParent=NULL, bool replacesParent=false)
 Notified whenever a new element of the given type is created in the given grid. More...
 
virtual void vertex_to_be_erased (Grid *grid, Vertex *vrt, Vertex *replacedBy=NULL)
 Notified whenever an element of the given type is erased from the given grid. More...
 
virtual void edge_to_be_erased (Grid *grid, Edge *e, Edge *replacedBy=NULL)
 Notified whenever an element of the given type is erased from the given grid. More...
 
virtual void face_to_be_erased (Grid *grid, Face *f, Face *replacedBy=NULL)
 Notified whenever an element of the given type is erased from the given grid. More...
 
virtual void volume_to_be_erased (Grid *grid, Volume *vol, Volume *replacedBy=NULL)
 Notified whenever an element of the given type is erased from the given grid. More...
 
virtual void vertices_to_be_merged (Grid *grid, Vertex *target, Vertex *elem1, Vertex *elem2)
 Notified when two elements of the same type are going to be merged. More...
 
virtual void edges_to_be_merged (Grid *grid, Edge *target, Edge *elem1, Edge *elem2)
 Notified when two elements of the same type are going to be merged. More...
 
virtual void faces_to_be_merged (Grid *grid, Face *target, Face *elem1, Face *elem2)
 Notified when two elements of the same type are going to be merged. More...
 
virtual void volumes_to_be_merged (Grid *grid, Volume *target, Volume *elem1, Volume *elem2)
 Notified when two elements of the same type are going to be merged. More...
 

Protected Member Functions

virtual void assign_hnode_marks ()
 distributes hnode marks More...
 
virtual void broadcast_marks_horizontally (bool vertices, bool edges, bool faces, bool allowDeselection=false)
 
virtual void broadcast_marks_vertically (bool vertices, bool edges, bool faces, bool volumes, bool allowDeselection=false)
 
virtual bool contains_edges ()
 allows to check whether a distributed grid contains edges More...
 
virtual bool contains_faces ()
 allows to check whether a distributed grid contains faces More...
 
virtual bool contains_volumes ()
 allows to check whether a distributed grid contains volumes More...
 
virtual bool continue_collect_objects_for_refine (bool continueRequired)
 
virtual void copy_marks_to_vmasters (bool vertices, bool edges, bool faces, bool volumes)
 
virtual void copy_marks_to_vslaves (bool vertices, bool edges, bool faces, bool volumes)
 
virtual bool one_proc_true (bool localProcTrue)
 
virtual void post_coarsen ()
 
virtual void post_refine ()
 
virtual void pre_coarsen ()
 
virtual void pre_refine ()
 creates required vertices in higher levels. More...
 
virtual bool refinement_is_allowed (Edge *elem)
 a callback that allows to deny refinement of special edges More...
 
virtual bool refinement_is_allowed (Face *elem)
 a callback that allows to deny refinement of special faces More...
 
virtual bool refinement_is_allowed (Vertex *elem)
 a callback that allows to deny refinement of special vertices More...
 
virtual bool refinement_is_allowed (Volume *elem)
 a callback that allows to deny refinement of special volumes More...
 
template<class TElem , class TIntfcCom >
void copy_marks_to_vmasters (TIntfcCom &com)
 copies the current marks in the ref-mark-selector from v-slaves to v-masters More...
 
template<class TElem , class TIntfcCom >
void copy_marks_to_vslaves (TIntfcCom &com)
 copies the current marks in the ref-mark-selector from v-slaves to v-masters More...
 
- Protected Member Functions inherited from ug::HangingNodeRefiner_MultiGrid
void debug_save (ISelector &sel, const char *filename)
 temporary method, which will be removed when debugging is done. More...
 
virtual void num_marked_edges_local (std::vector< int > &numMarkedEdgesOut)
 returns the number of (globally) marked edges on this level of the hierarchy More...
 
template<class TElem >
void num_marked_elems (std::vector< int > &numMarkedElemsOut)
 
virtual void num_marked_faces_local (std::vector< int > &numMarkedFacesOut)
 returns the number of (globally) marked faces on this level of the hierarchy More...
 
virtual void num_marked_volumes_local (std::vector< int > &numMarkedVolsOut)
 returns the number of (globally) marked volumes on this level of the hierarchy More...
 
virtual bool perform_coarsening ()
 performs coarsening on the elements marked with RM_COARSEN. More...
 
void save_coarsen_marks_to_file (ISelector &sel, const char *filename)
 
void set_grid (MultiGrid *mg)
 performs registration and deregistration at a grid. More...
 
virtual void process_constraining_edge (ConstrainingEdge *cge)
 calls base implementation and replaces cge with a normal edge. More...
 
virtual void refine_edge_with_normal_vertex (Edge *e, Vertex **newCornerVrts=NULL)
 calls base implementation and replaces cge with a normal edge. More...
 
virtual void refine_edge_with_hanging_vertex (Edge *e, Vertex **newCornerVrts=NULL)
 calls base implementation and replaces cge with a normal edge. More...
 
virtual void refine_face_with_normal_vertex (Face *f, Vertex **newCornerVrts=NULL)
 calls base implementation and replaces cge with a normal edge. More...
 
virtual void refine_face_with_hanging_vertex (Face *f, Vertex **newCornerVrts=NULL)
 calls base implementation and replaces cge with a normal edge. More...
 
virtual void refine_volume_with_normal_vertex (Volume *v, Vertex **newVolumeVrts=NULL)
 calls base implementation and replaces cge with a normal edge. More...
 
virtual Vertexget_center_vertex (Edge *e)
 Returns the vertex associated with the edge. More...
 
virtual void set_center_vertex (Edge *e, Vertex *v)
 Associates a vertex with the edge. More...
 
virtual Vertexget_center_vertex (Face *f)
 Returns the vertex associated with the face. More...
 
virtual void set_center_vertex (Face *f, Vertex *v)
 Associates a vertex with the face. More...
 
template<class TElem >
void collect_child_corners (std::vector< Vertex * > &cornersOut, TElem *elem)
 collects corner vertices and fills them into the associated vector More...
 
virtual void restrict_selection_to_surface_coarsen_elements ()
 Makes sure that only surface elements are marked and that only coarsen marks are used. More...
 
virtual void restrict_selection_to_coarsen_families ()
 Deselects all elements which have an unselected sibling. More...
 
template<class TElem >
void restrict_selection_to_surface_coarsen_elements ()
 Deselects all non-surface elements and all elements not marked with RM_COARSEN. More...
 
template<class TElem >
void restrict_selection_to_coarsen_families ()
 Only complete families (all siblings are selected) may be coarsened. More...
 
virtual void collect_objects_for_coarsen (bool scheduleCoarseningBeginsMessage=false)
 adjusts the selection marks to those specified in HNodeCoarsenMarks. More...
 
- Protected Member Functions inherited from ug::HangingNodeRefinerBase< MGSelector >
void add_hmark (TElem *elem, HNodeRefMarks mark)
 
bool adjusting_ref_marks () const
 
virtual void collect_objects_for_refine ()
 marks unmarked elements that have to be refined due to marked neighbors. More...
 
MGSelectorget_refmark_selector ()
 returns the selector which is internally used to mark elements. More...
 
bool is_marked (Edge *e)
 
bool is_marked (Face *f)
 
bool is_marked (Vertex *v)
 
bool is_marked (Volume *v)
 
bool marked_to_constrained (TElem *elem) const
 
bool marked_to_constraining (TElem *elem) const
 
bool marked_to_normal (TElem *elem) const
 
void perform_refinement ()
 performs refinement on the marked elements. More...
 
bool remove_coarsen_marks ()
 removes coarsen marks from the selection More...
 
void remove_hmark (TElem *elem, uint mark)
 
void set_grid (typename TSelector::grid_type *grid)
 performs registration and deregistration at a grid. More...
 
virtual void process_constrained_vertex (ConstrainedVertex *cdv)
 called to refine the specified element. More...
 
virtual void process_constrained_edge (ConstrainedEdge *cde)
 called to refine the specified element. More...
 
virtual void process_constrained_face (ConstrainedFace *cdf)
 called to refine the specified element. More...
 
virtual void process_constraining_face (ConstrainingFace *cgf)
 called to refine the specified element. More...
 
- Protected Member Functions inherited from ug::IRefiner
void set_message_hub (SPMessageHub msgHub)
 sets the message hub. More...
 

Private Attributes

pcl::InterfaceCommunicator< EdgeLayoutm_intfComEDGE
 
pcl::InterfaceCommunicator< FaceLayoutm_intfComFACE
 
pcl::InterfaceCommunicator< VolumeLayoutm_intfComVOL
 
pcl::InterfaceCommunicator< VertexLayoutm_intfComVRT
 
DistributedGridManagerm_pDistGridMgr
 
MultiGridm_pMG
 
pcl::ProcessCommunicator m_procCom
 

Additional Inherited Members

- Protected Types inherited from ug::HangingNodeRefinerBase< MGSelector >
typedef TSelector::template traits< Edge >::iterator sel_edge_iter
 
typedef TSelector::template traits< Face >::iterator sel_face_iter
 
typedef TSelector::template traits< Volume >::iterator sel_vol_iter
 
typedef TSelector::template traits< Vertex >::iterator sel_vrt_iter
 
- Protected Attributes inherited from ug::HangingNodeRefinerBase< MGSelector >
std::vector< SPIRefMarkAdjusterm_refMarkAdjusters
 
MGSelector m_selMarkedElements
 
- Protected Attributes inherited from ug::IRefiner
bool m_adaptionIsActive
 
std::string m_adjustedMarksDebugFilename
 
bool m_debuggingEnabled
 
SPMessageHub m_messageHub
 
int m_msgIdAdaption
 
SPRefinementProjector m_projector
 

Detailed Description

This is a template class that allows to use a refiner in a parallel environment. Make sure that you initialize it with a valid DistributedGridManager.

Member Typedef Documentation

◆ BaseClass

Constructor & Destructor Documentation

◆ ParallelHangingNodeRefiner_MultiGrid() [1/2]

ug::ParallelHangingNodeRefiner_MultiGrid::ParallelHangingNodeRefiner_MultiGrid ( SPRefinementProjector  projector = SPNULL)

◆ ParallelHangingNodeRefiner_MultiGrid() [2/2]

ug::ParallelHangingNodeRefiner_MultiGrid::ParallelHangingNodeRefiner_MultiGrid ( DistributedGridManager distGridMgr,
SPRefinementProjector  projector = SPNULL 
)

◆ ~ParallelHangingNodeRefiner_MultiGrid()

ug::ParallelHangingNodeRefiner_MultiGrid::~ParallelHangingNodeRefiner_MultiGrid ( )
virtual

Member Function Documentation

◆ assign_hnode_marks()

◆ broadcast_marks_horizontally()

void ug::ParallelHangingNodeRefiner_MultiGrid::broadcast_marks_horizontally ( bool  vertices,
bool  edges,
bool  faces,
bool  allowDeselection = false 
)
protectedvirtual

This callback is called during execution of the coarsen() method after collect_objects_for_coarsen is done. It is responsible to mark elements for hnode coarsening. That means all elements on which a hanging node or constrained children shall be created have to be marked using mark_for_hnode_refinement during this method. The default implementation performs this marking for all local elements.

Reimplemented from ug::HangingNodeRefiner_MultiGrid.

References ug::HangingNodeRefinerBase< MGSelector >::get_refmark_selector(), ug::DistributedGridManager::grid_layout_map(), ug::INT_H_MASTER, ug::INT_H_SLAVE, m_intfComEDGE, m_intfComFACE, m_intfComVRT, m_pDistGridMgr, and boost::vertices().

Referenced by broadcast_marks_vertically().

◆ broadcast_marks_vertically()

void ug::ParallelHangingNodeRefiner_MultiGrid::broadcast_marks_vertically ( bool  vertices,
bool  edges,
bool  faces,
bool  volumes,
bool  allowDeselection = false 
)
protectedvirtual

◆ contains_edges()

bool ug::ParallelHangingNodeRefiner_MultiGrid::contains_edges ( )
protectedvirtual

allows to check whether a distributed grid contains edges

Reimplemented from ug::HangingNodeRefiner_MultiGrid.

References pcl::ProcessCommunicator::allreduce(), m_pMG, m_procCom, ug::MultiGrid::num(), and PCL_RO_LOR.

◆ contains_faces()

bool ug::ParallelHangingNodeRefiner_MultiGrid::contains_faces ( )
protectedvirtual

allows to check whether a distributed grid contains faces

Reimplemented from ug::HangingNodeRefiner_MultiGrid.

References pcl::ProcessCommunicator::allreduce(), m_pMG, m_procCom, ug::MultiGrid::num(), and PCL_RO_LOR.

◆ contains_volumes()

bool ug::ParallelHangingNodeRefiner_MultiGrid::contains_volumes ( )
protectedvirtual

allows to check whether a distributed grid contains volumes

Reimplemented from ug::HangingNodeRefiner_MultiGrid.

References pcl::ProcessCommunicator::allreduce(), m_pMG, m_procCom, ug::MultiGrid::num(), and PCL_RO_LOR.

◆ continue_collect_objects_for_refine()

bool ug::ParallelHangingNodeRefiner_MultiGrid::continue_collect_objects_for_refine ( bool  continueRequired)
protectedvirtual

after each iteration in collet_objects_for_refine, this method determines whether the iteration shall be continued. Important for parallel refiners. The default implementation simply returns the specified value. This is fine for serial environments.

Reimplemented from ug::HangingNodeRefinerBase< MGSelector >.

References pcl::OneProcTrue().

◆ copy_marks_to_vmasters() [1/3]

virtual void ug::HangingNodeRefiner_MultiGrid::copy_marks_to_vmasters
inline

◆ copy_marks_to_vmasters() [2/3]

void ug::ParallelHangingNodeRefiner_MultiGrid::copy_marks_to_vmasters ( bool  vertices,
bool  edges,
bool  faces,
bool  volumes 
)
protectedvirtual

◆ copy_marks_to_vmasters() [3/3]

template<class TElem , class TIntfcCom >
void ug::ParallelHangingNodeRefiner_MultiGrid::copy_marks_to_vmasters ( TIntfcCom &  com)
protected

copies the current marks in the ref-mark-selector from v-slaves to v-masters

References ug::HangingNodeRefinerBase< MGSelector >::get_refmark_selector(), ug::DistributedGridManager::grid_layout_map(), ug::INT_V_MASTER, ug::INT_V_SLAVE, and m_pDistGridMgr.

◆ copy_marks_to_vslaves() [1/3]

virtual void ug::HangingNodeRefiner_MultiGrid::copy_marks_to_vslaves
inline

◆ copy_marks_to_vslaves() [2/3]

void ug::ParallelHangingNodeRefiner_MultiGrid::copy_marks_to_vslaves ( bool  vertices,
bool  edges,
bool  faces,
bool  volumes 
)
protectedvirtual

◆ copy_marks_to_vslaves() [3/3]

template<class TElem , class TIntfcCom >
void ug::ParallelHangingNodeRefiner_MultiGrid::copy_marks_to_vslaves ( TIntfcCom &  com)
protected

copies the current marks in the ref-mark-selector from v-slaves to v-masters

References ug::HangingNodeRefinerBase< MGSelector >::get_refmark_selector(), ug::DistributedGridManager::grid_layout_map(), ug::INT_V_MASTER, ug::INT_V_SLAVE, and m_pDistGridMgr.

◆ one_proc_true()

bool ug::ParallelHangingNodeRefiner_MultiGrid::one_proc_true ( bool  localProcTrue)
protectedvirtual

Reimplemented from ug::HangingNodeRefiner_MultiGrid.

References pcl::OneProcTrue().

◆ post_coarsen()

void ug::ParallelHangingNodeRefiner_MultiGrid::post_coarsen ( )
protectedvirtual

◆ post_refine()

void ug::ParallelHangingNodeRefiner_MultiGrid::post_refine ( )
protectedvirtual

◆ pre_coarsen()

void ug::ParallelHangingNodeRefiner_MultiGrid::pre_coarsen ( )
protectedvirtual

◆ pre_refine()

void ug::ParallelHangingNodeRefiner_MultiGrid::pre_refine ( )
protectedvirtual

creates required vertices in higher levels.

Notifies the associated distGridMgr that new elements may now be created.

Reimplemented from ug::HangingNodeRefiner_MultiGrid.

References ug::DistributedGridManager::begin_ordered_element_insertion(), m_pDistGridMgr, m_pMG, ug::HangingNodeRefiner_MultiGrid::pre_refine(), pcl::ProcRank(), ug::SaveParallelGridLayout(), and UG_LOG.

◆ refinement_is_allowed() [1/4]

bool ug::ParallelHangingNodeRefiner_MultiGrid::refinement_is_allowed ( Edge elem)
protectedvirtual

a callback that allows to deny refinement of special edges

Reimplemented from ug::HangingNodeRefiner_MultiGrid.

References ug::DistributedGridManager::is_ghost(), m_pDistGridMgr, and ug::HangingNodeRefiner_MultiGrid::refinement_is_allowed().

◆ refinement_is_allowed() [2/4]

bool ug::ParallelHangingNodeRefiner_MultiGrid::refinement_is_allowed ( Face elem)
protectedvirtual

a callback that allows to deny refinement of special faces

Reimplemented from ug::HangingNodeRefiner_MultiGrid.

References ug::DistributedGridManager::is_ghost(), m_pDistGridMgr, and ug::HangingNodeRefiner_MultiGrid::refinement_is_allowed().

◆ refinement_is_allowed() [3/4]

bool ug::ParallelHangingNodeRefiner_MultiGrid::refinement_is_allowed ( Vertex elem)
protectedvirtual

a callback that allows to deny refinement of special vertices

Reimplemented from ug::HangingNodeRefiner_MultiGrid.

References ug::DistributedGridManager::is_ghost(), m_pDistGridMgr, and ug::HangingNodeRefiner_MultiGrid::refinement_is_allowed().

◆ refinement_is_allowed() [4/4]

bool ug::ParallelHangingNodeRefiner_MultiGrid::refinement_is_allowed ( Volume elem)
protectedvirtual

a callback that allows to deny refinement of special volumes

Reimplemented from ug::HangingNodeRefiner_MultiGrid.

References ug::DistributedGridManager::is_ghost(), m_pDistGridMgr, and ug::HangingNodeRefiner_MultiGrid::refinement_is_allowed().

◆ set_distributed_grid_manager()

void ug::ParallelHangingNodeRefiner_MultiGrid::set_distributed_grid_manager ( DistributedGridManager distGridMgr)

◆ set_involved_processes()

void ug::ParallelHangingNodeRefiner_MultiGrid::set_involved_processes ( pcl::ProcessCommunicator  com)

If not all processes are involved in refinement, one can set the involved processes here. By default all processes are involved.

References m_procCom.

Member Data Documentation

◆ m_intfComEDGE

◆ m_intfComFACE

◆ m_intfComVOL

pcl::InterfaceCommunicator<VolumeLayout> ug::ParallelHangingNodeRefiner_MultiGrid::m_intfComVOL
private

◆ m_intfComVRT

◆ m_pDistGridMgr

◆ m_pMG

◆ m_procCom

pcl::ProcessCommunicator ug::ParallelHangingNodeRefiner_MultiGrid::m_procCom
private

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