33 #ifndef __H__UG__HANGIN_NODE_REFINER_MULTI_GRID__
34 #define __H__UG__HANGIN_NODE_REFINER_MULTI_GRID__
109 template <
class TElem>
179 Vertex** newCornerVrts = NULL);
181 Vertex** newCornerVrts = NULL);
184 Vertex** newCornerVrts = NULL);
186 Vertex** newCornerVrts = NULL);
189 Vertex** newVolumeVrts = NULL);
209 template <
class TElem>
212 cornersOut.resize(elem->num_vertices());
213 for(
size_t i = 0; i < elem->num_vertices(); ++i){
231 template <
class TElem>
237 template <
class TElem>
322 bool allowDeselection =
false) {}
324 bool faces,
bool volumes,
325 bool allowDeselection =
false) {}
328 bool faces,
bool volumes) {}
331 bool faces,
bool volumes) {}
contains elements of type
Definition: grid_objects_1d.h:279
Base-class for edges.
Definition: grid_base_objects.h:397
Faces are 2-dimensional objects.
Definition: grid_base_objects.h:510
Manages the elements of a grid and their interconnection.
Definition: grid.h:132
Specialization of ug::HangingNodeRefiner for ug::MultiGrid.
Definition: hanging_node_refiner_multi_grid.h:68
virtual ~HangingNodeRefiner_MultiGrid()
Definition: hanging_node_refiner_multi_grid.cpp:86
virtual void refine_edge_with_hanging_vertex(Edge *e, Vertex **newCornerVrts=NULL)
calls base implementation and replaces cge with a normal edge.
Definition: hanging_node_refiner_multi_grid.cpp:314
void set_grid(MultiGrid *mg)
performs registration and deregistration at a grid.
Definition: hanging_node_refiner_multi_grid.cpp:135
virtual void post_coarsen()
called after elements have been removed in coarsening
Definition: hanging_node_refiner_multi_grid.h:168
virtual void num_marked_volumes_local(std::vector< int > &numMarkedVolsOut)
returns the number of (globally) marked volumes on this level of the hierarchy
Definition: hanging_node_refiner_multi_grid.cpp:116
virtual void pre_refine()
creates required vertices in higher levels.
Definition: hanging_node_refiner_multi_grid.cpp:224
virtual void copy_marks_to_vmasters(bool vertices, bool edges, bool faces, bool volumes)
Definition: hanging_node_refiner_multi_grid.h:327
void save_coarsen_marks_to_file(ISelector &sel, const char *filename)
Definition: hanging_node_refiner_multi_grid.cpp:668
virtual void assign_hnode_marks()
Definition: hanging_node_refiner_multi_grid.cpp:173
virtual bool one_proc_true(bool localProcTrue)
Definition: hanging_node_refiner_multi_grid.h:333
virtual void refine_edge_with_normal_vertex(Edge *e, Vertex **newCornerVrts=NULL)
calls base implementation and replaces cge with a normal edge.
Definition: hanging_node_refiner_multi_grid.cpp:303
virtual bool contains_faces()
allows to check whether a distributed grid contains faces
Definition: hanging_node_refiner_multi_grid.h:307
virtual void restrict_selection_to_coarsen_families()
Deselects all elements which have an unselected sibling.
Definition: hanging_node_refiner_multi_grid.cpp:426
virtual bool perform_coarsening()
performs coarsening on the elements marked with RM_COARSEN.
Definition: hanging_node_refiner_multi_grid.cpp:1437
virtual bool contains_edges()
called to check, whether another iteration of collect_objects_for_coarsen has to be performed.
Definition: hanging_node_refiner_multi_grid.h:303
virtual void refine_volume_with_normal_vertex(Volume *v, Vertex **newVolumeVrts=NULL)
calls base implementation and replaces cge with a normal edge.
Definition: hanging_node_refiner_multi_grid.cpp:347
virtual void pre_coarsen()
called before elements are removed in coarsening
Definition: hanging_node_refiner_multi_grid.h:164
virtual Grid * get_associated_grid()
DEPRECIATED! Use grid(). Has to return the associated grid. Pure virtual.
Definition: hanging_node_refiner_multi_grid.h:94
virtual MultiGrid * multi_grid()
Definition: hanging_node_refiner_multi_grid.h:96
void debug_save(ISelector &sel, const char *filename)
temporary method, which will be removed when debugging is done.
Definition: hanging_node_refiner_multi_grid.cpp:676
virtual void refine_face_with_normal_vertex(Face *f, Vertex **newCornerVrts=NULL)
calls base implementation and replaces cge with a normal edge.
Definition: hanging_node_refiner_multi_grid.cpp:325
virtual void refine_face_with_hanging_vertex(Face *f, Vertex **newCornerVrts=NULL)
calls base implementation and replaces cge with a normal edge.
Definition: hanging_node_refiner_multi_grid.cpp:336
HNodeCoarsenMarks
Definition: hanging_node_refiner_multi_grid.h:73
@ HNCM_NO_NBRS
Definition: hanging_node_refiner_multi_grid.h:75
@ HNCM_ALL
Definition: hanging_node_refiner_multi_grid.h:79
@ HNCM_INVALID
Definition: hanging_node_refiner_multi_grid.h:80
@ HNCM_PARTIAL
Definition: hanging_node_refiner_multi_grid.h:77
@ HNCM_UNKNOWN
Definition: hanging_node_refiner_multi_grid.h:81
@ HNCM_REPLACE
Definition: hanging_node_refiner_multi_grid.h:78
@ HNCM_NONE
Definition: hanging_node_refiner_multi_grid.h:76
@ HNCM_FIRST
Definition: hanging_node_refiner_multi_grid.h:74
void collect_child_corners(std::vector< Vertex * > &cornersOut, TElem *elem)
collects corner vertices and fills them into the associated vector
Definition: hanging_node_refiner_multi_grid.h:210
virtual bool coarsening_supported() const
returns true, if the refiner supports coarsening.
Definition: hanging_node_refiner_multi_grid.h:99
virtual void collect_objects_for_coarsen(bool scheduleCoarseningBeginsMessage=false)
adjusts the selection marks to those specified in HNodeCoarsenMarks.
Definition: hanging_node_refiner_multi_grid.cpp:1054
virtual bool adaptivity_supported() const
returns whether the refiner is able to perform adaptive refinement
Definition: hanging_node_refiner_multi_grid.h:98
virtual Vertex * get_center_vertex(Edge *e)
Returns the vertex associated with the edge.
Definition: hanging_node_refiner_multi_grid.cpp:358
virtual void process_constraining_edge(ConstrainingEdge *cge)
calls base implementation and replaces cge with a normal edge.
Definition: hanging_node_refiner_multi_grid.cpp:288
void num_marked_elems(std::vector< int > &numMarkedElemsOut)
Definition: hanging_node_refiner_multi_grid.cpp:124
virtual Grid * grid()
Returns the grid associated with the refiner.
Definition: hanging_node_refiner_multi_grid.h:95
virtual void set_center_vertex(Edge *e, Vertex *v)
Associates a vertex with the edge.
Definition: hanging_node_refiner_multi_grid.cpp:365
virtual void assign_grid(MultiGrid &mg)
Definition: hanging_node_refiner_multi_grid.cpp:98
virtual void num_marked_edges_local(std::vector< int > &numMarkedEdgesOut)
returns the number of (globally) marked edges on this level of the hierarchy
Definition: hanging_node_refiner_multi_grid.cpp:104
HangingNodeRefiner_MultiGrid(SPRefinementProjector projector=SPNULL)
Definition: hanging_node_refiner_multi_grid.cpp:68
virtual void restrict_selection_to_surface_coarsen_elements()
Makes sure that only surface elements are marked and that only coarsen marks are used.
Definition: hanging_node_refiner_multi_grid.cpp:391
virtual void copy_marks_to_vslaves(bool vertices, bool edges, bool faces, bool volumes)
Definition: hanging_node_refiner_multi_grid.h:330
virtual void broadcast_marks_horizontally(bool vertices, bool edges, bool faces, bool allowDeselection=false)
Definition: hanging_node_refiner_multi_grid.h:321
virtual void broadcast_marks_vertically(bool vertices, bool edges, bool faces, bool volumes, bool allowDeselection=false)
Definition: hanging_node_refiner_multi_grid.h:323
MultiGrid * m_pMG
Definition: hanging_node_refiner_multi_grid.h:336
virtual void num_marked_faces_local(std::vector< int > &numMarkedFacesOut)
returns the number of (globally) marked faces on this level of the hierarchy
Definition: hanging_node_refiner_multi_grid.cpp:110
HangingNodeRefinerBase< MGSelector > BaseClass
Definition: hanging_node_refiner_multi_grid.h:70
virtual void grid_to_be_destroyed(Grid *grid)
Definition: hanging_node_refiner_multi_grid.cpp:92
virtual bool refinement_is_allowed(Vertex *elem)
a callback that allows to deny refinement of special vertices
Definition: hanging_node_refiner_multi_grid.cpp:145
virtual bool contains_volumes()
allows to check whether a distributed grid contains volumes
Definition: hanging_node_refiner_multi_grid.h:311
Base class for a hanging-node refiner.
Definition: hanging_node_refiner_base.h:92
virtual bool mark(Vertex *v, RefinementMark refMark=RM_REFINE)
Marks an element for refinement. Default implementation is empty.
Definition: refiner_interface.h:103
@ HNRM_MAX
Definition: hanging_node_refiner_base.h:104
SPRefinementProjector projector()
Definition: refiner_interface.h:78
base-implementation of a selector
Definition: selector_interface.h:126
Definition: multi_grid.h:72
size_t num(int level) const
Definition: multi_grid.h:154
Vertex * get_child_vertex(TElem *elem) const
Returns the child vertex of the given element or NULL if there is none.
Definition: multi_grid.h:276
Base-class for all vertex-types.
Definition: grid_base_objects.h:231
Volumes are 3-dimensional objects.
Definition: grid_base_objects.h:754
const NullSmartPtr SPNULL
The equivalent to NULL for smart pointers.
Definition: smart_pointer.h:90
std::pair< counting_iterator< size_t >, counting_iterator< size_t > > vertices(ug::BidirectionalMatrix< T > const &M)
Definition: bidirectional_boost.h:60