|
ug4
|
#include <global_multi_grid_refiner.h>
Inheritance diagram for ug::GlobalMultiGridRefiner:Public Member Functions | |
| virtual bool | adaptivity_supported () const |
| returns whether the refiner is able to perform adaptive refinement | |
| void | assign_grid (MultiGrid &mg) |
| void | assign_grid (MultiGrid *mg) |
| virtual bool | coarsening_supported () const |
| returns true, if the refiner supports coarsening. | |
| virtual Grid * | get_associated_grid () |
| DEPRECIATED! Use grid(). Has to return the associated grid. Pure virtual. | |
| GlobalMultiGridRefiner (MultiGrid &mg, SPRefinementProjector projector=SPNULL) | |
| GlobalMultiGridRefiner (SPRefinementProjector projector=SPNULL) | |
| virtual Grid * | grid () |
| Returns the grid associated with the refiner. | |
| virtual void | grid_to_be_destroyed (Grid *grid) |
| virtual MultiGrid * | multi_grid () |
| virtual bool | save_marks_to_file (const char *filename) |
| Writes the associated grid and marks to a file. Pure virtual. | |
| virtual | ~GlobalMultiGridRefiner () |
Public Member Functions inherited from ug::IRefiner | |
| virtual void | clear_marks () |
| clears all marks. Default implementation is empty | |
| bool | coarsen () |
| Performs coarsening on the elements marked RM_COARSEN. | |
| 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 | |
| int | get_local_edge_mark (Volume *vol, Edge *e) const |
| returns the local mark of the specified edge of the given volume | |
| int | get_local_face_mark (Volume *vol, Face *f) const |
| returns the local mark of the specified face of the given volume | |
| virtual RefinementMark | get_mark (GridObject *o) const |
| returns the mark of the specified geometric object | |
| IRefiner (SPRefinementProjector projector=SPNULL) | |
| virtual bool | local_marks_supported () const |
| returns true, if the refiner supports local marks. | |
| template<class TIterator > | |
| void | mark (const TIterator &iterBegin, const TIterator &iterEnd, RefinementMark refMark=RM_REFINE) |
| marks all elements between iterBegin and iterEnd. | |
| virtual bool | mark (GridObject *o, RefinementMark refMark=RM_REFINE) |
| marks the specified geometric object | |
| void | mark_neighborhood (size_t numIterations) |
| marks the neighborhood of currently marked elements. | |
| virtual void | mark_neighborhood (size_t numIterations, RefinementMark refMark, bool sideNbrsOnly) |
| marks the neighborhood of currently marked elements. | |
| 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 | |
| size_t | num_marked_edges (std::vector< int > &numMarkedEdgesOut) |
| returns the number of (globally) marked edges on all levels of the hierarchy | |
| size_t | num_marked_elements () |
| returns the number of (globally) marked grid-objects of highest dimension | |
| size_t | num_marked_elements (std::vector< int > &numMarkedElemsOut) |
| returns the number of (globally) marked grid-objects of highest dimension | |
| size_t | num_marked_faces () |
| returns the number of (globally) marked faces on all levels of the hierarchy | |
| size_t | num_marked_faces (std::vector< int > &numMarkedFacesOut) |
| returns the number of (globally) marked faces on all levels of the hierarchy | |
| size_t | num_marked_volumes () |
| returns the number of (globally) marked volumes on all levels of the hierarchy | |
| size_t | num_marked_volumes (std::vector< int > &numMarkedVolsOut) |
| returns the number of (globally) marked volumes on all levels of the hierarchy | |
| SPRefinementProjector | projector () |
| void | refine () |
| Performs refinement on the marked elements. | |
| void | set_adjusted_marks_debug_filename (const char *filename) |
| sets a filename to which adjusted marks are saved during refinement / coarsening | |
| 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. | |
| virtual bool | mark (Edge *e, RefinementMark refMark=RM_REFINE) |
| Marks an element for refinement. Default implementation is empty. | |
| virtual bool | mark (Face *f, RefinementMark refMark=RM_REFINE) |
| Marks an element for refinement. Default implementation is empty. | |
| virtual bool | mark (Volume *v, RefinementMark refMark=RM_REFINE) |
| Marks an element for refinement. Default implementation is empty. | |
| virtual void | mark_local (Face *e, int mark) |
| Marks a face or volume for local refinement. | |
| virtual void | mark_local (Volume *e, int mark) |
| Marks a face or volume for local refinement. | |
| virtual int | get_local_mark (Face *e) const |
| returns the local mark of the specified face or volume. | |
| virtual int | get_local_mark (Volume *e) const |
| returns the local mark of the specified face or volume. | |
| virtual RefinementMark | get_mark (Vertex *v) const |
| Returns the mark of a given element. Default returns RM_REFINE. | |
| virtual RefinementMark | get_mark (Edge *e) const |
| Returns the mark of a given element. Default returns RM_REFINE. | |
| virtual RefinementMark | get_mark (Face *f) const |
| Returns the mark of a given element. Default returns RM_REFINE. | |
| virtual RefinementMark | get_mark (Volume *v) const |
| Returns the mark of a given element. Default returns RM_REFINE. | |
| void | adaption_begins () |
| notifies all listeners of the associated message-hub, that adaption begins / ends. | |
| void | adaption_ends () |
| notifies all listeners of the associated message-hub, that adaption begins / ends. | |
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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
Protected Member Functions | |
| virtual void | num_marked_edges_local (std::vector< int > &numMarkedEdgesOut) |
| returns the number of (globally) marked edges on this level of the hierarchy | |
| 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 | |
| virtual void | num_marked_volumes_local (std::vector< int > &numMarkedVolsOut) |
| returns the number of (globally) marked volumes on this level of the hierarchy | |
| virtual void | perform_refinement () |
| performs refinement on the marked elements. | |
| virtual bool | refinement_is_allowed (Edge *elem) |
| a callback that allows to deny refinement of special edges | |
| virtual bool | refinement_is_allowed (Face *elem) |
| a callback that allows to deny refinement of special faces | |
| virtual bool | refinement_is_allowed (Vertex *elem) |
| a callback that allows to deny refinement of special vertices | |
| virtual bool | refinement_is_allowed (Volume *elem) |
| a callback that allows to deny refinement of special volumes | |
| virtual void | refinement_step_begins () |
| this method helps derived classes to perform operations directly before actual element refinement is performed. | |
| virtual void | refinement_step_ends () |
| this method helps derived classes to perform operations directly after actual element refinement took place. | |
Protected Member Functions inherited from ug::IRefiner | |
| virtual bool | perform_coarsening () |
| Called by coarsen(). Derived classes sould implement their coarsen algorithm here. | |
| void | set_message_hub (SPMessageHub msgHub) |
| sets the message hub. | |
Protected Attributes | |
| MultiGrid * | m_pMG |
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 |
| ug::GlobalMultiGridRefiner::GlobalMultiGridRefiner | ( | SPRefinementProjector | projector = SPNULL | ) |
| ug::GlobalMultiGridRefiner::GlobalMultiGridRefiner | ( | MultiGrid & | mg, |
| SPRefinementProjector | projector = SPNULL |
||
| ) |
References assign_grid(), and m_pMG.
|
virtual |
References m_pMG, and ug::Grid::unregister_observer().
|
inlinevirtual |
returns whether the refiner is able to perform adaptive refinement
pure virtual!
Implements ug::IRefiner.
| void ug::GlobalMultiGridRefiner::assign_grid | ( | MultiGrid & | mg | ) |
References assign_grid().
Referenced by assign_grid(), GlobalMultiGridRefiner(), and ug::bridge::RegisterGridBridge_Refinement().
| void ug::GlobalMultiGridRefiner::assign_grid | ( | MultiGrid * | mg | ) |
|
inlinevirtual |
|
inlinevirtual |
DEPRECIATED! Use grid(). Has to return the associated grid. Pure virtual.
Implements ug::IRefiner.
References m_pMG.
|
inlinevirtual |
Returns the grid associated with the refiner.
Pure virtual. Specify this method in derived classes!
Implements ug::IRefiner.
References m_pMG.
|
virtual |
Reimplemented from ug::GridObserver.
References m_pMG.
|
protectedvirtual |
returns the number of (globally) marked edges on this level of the hierarchy
Implements ug::IRefiner.
|
protected |
References m_pMG, ug::MultiGrid::num(), ug::MultiGrid::num_levels(), and ug::MultiGrid::top_level().
|
protectedvirtual |
returns the number of (globally) marked faces on this level of the hierarchy
Implements ug::IRefiner.
|
protectedvirtual |
returns the number of (globally) marked volumes on this level of the hierarchy
Implements ug::IRefiner.
|
protectedvirtual |
performs refinement on the marked elements.
Implements ug::IRefiner.
References ug::MultiGrid::begin(), ug::MultiGrid::create(), ug::MultiGrid::create_by_cloning(), ug::MultiGrid::enable_hierarchical_insertion(), ug::Grid::enable_options(), ug::MultiGrid::end(), ug::FACEOPT_AUTOGENERATE_EDGES, ug::MultiGrid::get_child_vertex(), ug::Grid::get_edge(), ug::Grid::get_face(), ug::MultiGrid::get_grid_objects(), ug::GMAT_GLOBAL_REFINEMENT_BEGINS, ug::GMAT_GLOBAL_REFINEMENT_ENDS, GMGR_PROFILE, GMGR_PROFILE_END, GMGR_PROFILE_FUNC, ug::MultiGrid::hierarchical_insertion_enabled(), ug::LIB_GRID, LOG, ug::IRefiner::m_messageHub, m_pMG, ug::IRefiner::m_projector, ug::MultiGrid::num(), ug::Face::num_edges(), ug::Volume::num_edges(), ug::Grid::num_faces(), ug::Volume::num_faces(), ug::MultiGrid::num_levels(), ug::FaceVertices::num_vertices(), ug::VolumeVertices::num_vertices(), ug::Grid::num_volumes(), ug::Grid::option_is_enabled(), ug::IRefiner::projector(), ug::Volume::reference_object_id(), ug::Edge::refine(), ug::Face::refine(), ug::Volume::refine(), refinement_is_allowed(), refinement_step_begins(), refinement_step_ends(), ug::Grid::register_element(), ug::Grid::reserve(), ug::ROID_OCTAHEDRON, UG_DLOG, SmartPtr< T, FreePolicy >::valid(), ug::EdgeVertices::vertex(), ug::FaceVertices::vertex(), ug::VolumeVertices::vertex(), and ug::VOLOPT_AUTOGENERATE_FACES.
|
inlineprotectedvirtual |
a callback that allows to deny refinement of special edges
Reimplemented in ug::TParallelGlobalRefiner< GlobalSubdivisionMultiGridRefiner< TAPosition > >.
|
inlineprotectedvirtual |
a callback that allows to deny refinement of special faces
Reimplemented in ug::TParallelGlobalRefiner< GlobalSubdivisionMultiGridRefiner< TAPosition > >.
|
inlineprotectedvirtual |
a callback that allows to deny refinement of special vertices
Reimplemented in ug::TParallelGlobalRefiner< GlobalSubdivisionMultiGridRefiner< TAPosition > >.
Referenced by perform_refinement().
|
inlineprotectedvirtual |
a callback that allows to deny refinement of special volumes
Reimplemented in ug::TParallelGlobalRefiner< GlobalSubdivisionMultiGridRefiner< TAPosition > >.
|
inlineprotectedvirtual |
this method helps derived classes to perform operations directly before actual element refinement is performed.
Called from the refine() method in each refinement-iteration after collect_objects_for_refine(). Default implementation is empty.
Reimplemented in ug::TParallelGlobalRefiner< GlobalSubdivisionMultiGridRefiner< TAPosition > >.
Referenced by perform_refinement().
|
inlineprotectedvirtual |
this method helps derived classes to perform operations directly after actual element refinement 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 in ug::TParallelGlobalRefiner< GlobalSubdivisionMultiGridRefiner< TAPosition > >, ug::ParallelGlobalSubdivisionRefiner< TAPosition >, and ug::GlobalSubdivisionMultiGridRefiner< TAPosition >.
Referenced by perform_refinement().
|
virtual |
Writes the associated grid and marks to a file. Pure virtual.
Elements should be assigned to subsets depending on their current refinement-mark.
Implements ug::IRefiner.
References ug::GridSubsetHandler::assign_subset(), ug::AssignGridToSubset(), ug::AssignSubsetColors(), ug::MultiGrid::begin(), ug::MultiGrid::end(), GMGR_PROFILE, m_pMG, ug::SubsetInfo::name, ug::MultiGrid::num_levels(), ug::SaveGridToFile(), ug::ISubsetHandler::subset_info(), and UG_THROW.
|
protected |
Referenced by assign_grid(), get_associated_grid(), GlobalMultiGridRefiner(), ug::GlobalSubdivisionMultiGridRefiner< TAPosition >::GlobalSubdivisionMultiGridRefiner(), grid(), grid_to_be_destroyed(), multi_grid(), num_marked_elems(), perform_refinement(), save_marks_to_file(), and ~GlobalMultiGridRefiner().