ug4
|
Adds parallel support to GlobalFracturedMediaRefiner. More...
#include <parallel_global_fractured_media_refiner.h>
Public Member Functions | |
ParallelGlobalFracturedMediaRefiner (DistributedGridManager &distGridMgr, SPRefinementProjector projector=SPNULL) | |
virtual | ~ParallelGlobalFracturedMediaRefiner () |
Public Member Functions inherited from ug::GlobalFracturedMediaRefiner | |
virtual bool | adaptivity_supported () const |
returns whether the refiner is able to perform adaptive refinement More... | |
void | assign_grid (MultiGrid &mg) |
void | assign_grid (MultiGrid *mg) |
virtual bool | coarsening_supported () const |
returns true, if the refiner supports coarsening. More... | |
virtual Grid * | get_associated_grid () |
DEPRECIATED! Use grid(). Has to return the associated grid. Pure virtual. More... | |
GlobalFracturedMediaRefiner (MultiGrid &mg, SPRefinementProjector projector=SPNULL) | |
GlobalFracturedMediaRefiner (SPRefinementProjector projector=SPNULL) | |
virtual Grid * | grid () |
Returns the grid associated with the refiner. More... | |
virtual void | grid_to_be_destroyed (Grid *grid) |
bool | is_fracture (int subInd) |
returns whether the specified subset is regarded as a fracture. More... | |
void | mark_as_fracture (int subInd, bool isFracture) |
sets the position attachment More... | |
virtual MultiGrid * | multi_grid () |
virtual bool | save_marks_to_file (const char *filename) |
Writes the associated grid and marks to a file. Pure virtual. More... | |
void | set_subset_handler (ISubsetHandler &sh) |
void | set_subset_handler (ISubsetHandler *sh) |
virtual | ~GlobalFracturedMediaRefiner () |
Public Member Functions inherited from ug::IRefiner | |
virtual void | clear_marks () |
clears all marks. Default implementation is empty More... | |
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... | |
virtual void | mark_neighborhood (size_t numIterations, RefinementMark refMark, bool sideNbrsOnly) |
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 bool | mark (Vertex *v, RefinementMark refMark=RM_REFINE) |
Marks an element for refinement. Default implementation is empty. More... | |
virtual bool | mark (Edge *e, RefinementMark refMark=RM_REFINE) |
Marks an element for refinement. Default implementation is empty. More... | |
virtual bool | mark (Face *f, RefinementMark refMark=RM_REFINE) |
Marks an element for refinement. Default implementation is empty. More... | |
virtual bool | mark (Volume *v, RefinementMark refMark=RM_REFINE) |
Marks an element for refinement. Default implementation is empty. More... | |
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... | |
virtual RefinementMark | get_mark (Vertex *v) const |
Returns the mark of a given element. Default returns RM_REFINE. More... | |
virtual RefinementMark | get_mark (Edge *e) const |
Returns the mark of a given element. Default returns RM_REFINE. More... | |
virtual RefinementMark | get_mark (Face *f) const |
Returns the mark of a given element. Default returns RM_REFINE. More... | |
virtual RefinementMark | get_mark (Volume *v) const |
Returns the mark of a given element. Default returns RM_REFINE. 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 | communicate_marks (BoolMarker &marker) |
Called by adjust_marks. Default implementation does nothing. 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... | |
virtual void | refinement_step_begins () |
this method helps derived classes to perform operations directly before actual element refinment is performed. More... | |
virtual void | refinement_step_ends () |
this method helps derived classes to perform operations directly after actual element refinment took place. More... | |
Protected Member Functions inherited from ug::GlobalFracturedMediaRefiner | |
virtual void | adjust_marks () |
called by perform_refinement to adjust the marks More... | |
template<class TElem > | |
void | assign_elem_and_side_marks () |
performs the actual marking More... | |
template<class TElem > | |
bool | is_fracture_element (TElem *e) |
returns true if the specified element is a fracture element. More... | |
template<class TElem > | |
void | mark_sides_of_marked_top_level_elements () |
recursively marks sides of all marked top level elements of the given type More... | |
template<class TElem > | |
size_t | num_marked (const std::vector< TElem * > &elems) const |
returns the number of marked entries 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 void | perform_refinement () |
performs refinement on the marked elements. More... | |
Protected Member Functions inherited from ug::IRefiner | |
virtual bool | perform_coarsening () |
Called by coarsen(). Derived classes sould implement their coarsen algorithm here. More... | |
void | set_message_hub (SPMessageHub msgHub) |
sets the message hub. More... | |
Protected Attributes | |
DistributedGridManager & | m_distGridMgr |
pcl::InterfaceCommunicator< EdgeLayout > | m_intfComEDGE |
pcl::InterfaceCommunicator< FaceLayout > | m_intfComFACE |
Protected Attributes inherited from ug::GlobalFracturedMediaRefiner | |
BoolMarker | m_marker |
MultiGrid * | m_pMG |
ISubsetHandler * | m_pSH |
std::vector< bool > | m_subsetIsFracture |
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 |
Adds parallel support to GlobalFracturedMediaRefiner.
ug::ParallelGlobalFracturedMediaRefiner::ParallelGlobalFracturedMediaRefiner | ( | DistributedGridManager & | distGridMgr, |
SPRefinementProjector | projector = SPNULL |
||
) |
|
virtual |
|
protectedvirtual |
Called by adjust_marks. Default implementation does nothing.
If you communicate marks (using an or operation) in this method, then the GlobalFracturedMediaRefiner should run fine in a parallel environment, too. The default implementation does nothing (that's fine for a serial environment).
Reimplemented from ug::GlobalFracturedMediaRefiner.
References ug::DistributedGridManager::grid_layout_map(), ug::INT_H_MASTER, ug::INT_H_SLAVE, m_distGridMgr, m_intfComEDGE, and m_intfComFACE.
|
protectedvirtual |
a callback that allows to deny refinement of special edges
Reimplemented from ug::GlobalFracturedMediaRefiner.
References ug::DistributedGridManager::is_ghost(), and m_distGridMgr.
|
protectedvirtual |
a callback that allows to deny refinement of special faces
Reimplemented from ug::GlobalFracturedMediaRefiner.
References ug::DistributedGridManager::is_ghost(), and m_distGridMgr.
|
protectedvirtual |
a callback that allows to deny refinement of special vertices
Reimplemented from ug::GlobalFracturedMediaRefiner.
References ug::DistributedGridManager::is_ghost(), and m_distGridMgr.
|
protectedvirtual |
a callback that allows to deny refinement of special volumes
Reimplemented from ug::GlobalFracturedMediaRefiner.
References ug::DistributedGridManager::is_ghost(), and m_distGridMgr.
|
protectedvirtual |
this method helps derived classes to perform operations directly before actual element refinment is performed.
Called from the refine() method in each refinement-iteration after collect_objects_for_refine(). Default implementation is empty.
Reimplemented from ug::GlobalFracturedMediaRefiner.
References ug::DistributedGridManager::begin_ordered_element_insertion(), and m_distGridMgr.
|
protectedvirtual |
this method helps derived classes to perform operations directly after actual element refinment took place.
Called from the refine() method in each refinement-iteration after all scheduled elements had been refined. The refine process will either terminate after this method or will start a new iteration, if new elements had been marked during refine. Default implementation is empty.
Reimplemented from ug::GlobalFracturedMediaRefiner.
References ug::DistributedGridManager::end_ordered_element_insertion(), and m_distGridMgr.
|
protected |
Referenced by communicate_marks(), refinement_is_allowed(), refinement_step_begins(), and refinement_step_ends().
|
protected |
Referenced by communicate_marks().
|
protected |
Referenced by communicate_marks().