ug4
ug::MultiGrid Class Reference

#include <multi_grid.h>

+ Inheritance diagram for ug::MultiGrid:

Public Member Functions

template<class TElem >
void associate_parent (TElem *elem, GridObject *parent)
 establishes a parent child connection between the given elements More...
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator begin ()
 
template<class TGeomObj >
geometry_traits< TGeomObj >::const_iterator begin () const
 
template<class TElem >
geometry_traits< TElem >::iterator begin (int level)
 
template<class TElem >
geometry_traits< TElem >::const_iterator begin (int level) const
 
void check_edge_elem_infos (int level) const
 for debug purposes More...
 
void check_face_elem_infos (int level) const
 for debug purposes More...
 
void check_volume_elem_infos (int level) const
 for debug purposes More...
 
template<class TElem >
void clear_child_connections (TElem *parent)
 clears the relation between a parent and its children More...
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator create (const typename geometry_traits< TGeomObj >::Descriptor &descriptor, GridObject *pParent=NULL)
 create a custom element from a descriptor. More...
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator create (GridObject *pParent=NULL)
 create a custom element. More...
 
EdgeIterator create_by_cloning (Edge *pCloneMe, const EdgeVertices &ev, int level)
 this method creates a new edge, which has the same type as pCloneMe. More...
 
EdgeIterator create_by_cloning (Edge *pCloneMe, const IVertexGroup &ev, GridObject *pParent=NULL)
 this method creates a new edge, which has the same type as pCloneMe. More...
 
FaceIterator create_by_cloning (Face *pCloneMe, const FaceVertices &fv, int level)
 this method creates a new face, which has the same type as pCloneMe. More...
 
FaceIterator create_by_cloning (Face *pCloneMe, const IVertexGroup &fv, GridObject *pParent=NULL)
 this method creates a new face, which has the same type as pCloneMe. More...
 
VertexIterator create_by_cloning (Vertex *pCloneMe, GridObject *pParent=NULL)
 this method creates a new vertex, which has the same type as pCloneMe. More...
 
VertexIterator create_by_cloning (Vertex *pCloneMe, int level)
 this method creates a new vertex, which has the same type as pCloneMe. More...
 
VolumeIterator create_by_cloning (Volume *pCloneMe, const IVertexGroup &vv, GridObject *pParent=NULL)
 this method creates a new volume, which has the same type as pCloneMe. More...
 
VolumeIterator create_by_cloning (Volume *pCloneMe, const VolumeVertices &vv, int level)
 this method creates a new volume, which has the same type as pCloneMe. More...
 
virtual void edge_created (Grid *grid, Edge *e, GridObject *pParent=NULL, bool replacesParent=false)
 
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 elements_to_be_cleared (Grid *grid)
 
void enable_hierarchical_insertion (bool bEnable)
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator end ()
 
template<class TGeomObj >
geometry_traits< TGeomObj >::const_iterator end () const
 
template<class TElem >
geometry_traits< TElem >::iterator end (int level)
 
template<class TElem >
geometry_traits< TElem >::const_iterator end (int level) const
 
virtual void face_created (Grid *grid, Face *f, GridObject *pParent=NULL, bool replacesParent=false)
 
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...
 
template<class TElem >
Vertexget_child_vertex (TElem *elem) const
 Returns the child vertex of the given element or NULL if there is none. More...
 
virtual GridObjectCollection get_grid_objects ()
 returns the the GridObjectCollection of the grid: More...
 
virtual GridObjectCollection get_grid_objects ()
 returns the the GridObjectCollection of the grid: More...
 
GridObjectCollection get_grid_objects (int level)
 
SubsetHandlerget_hierarchy_handler ()
 this method may be removed in future versions of the MultiGrid-class. More...
 
template<class TElem >
int get_level (TElem *elem) const
 
GridObjectget_parent (Edge *o) const
 
GridObjectget_parent (Face *o) const
 
GridObjectget_parent (GridObject *parent) const
 
GridObjectget_parent (Vertex *o) const
 
GridObjectget_parent (Volume *o) const
 
template<class TElem >
bool has_children (TElem *elem) const
 
bool hierarchical_insertion_enabled ()
 
void level_required (int lvl)
 creates new (empty) levels until num_levels() == lvl+1 More...
 
 MultiGrid ()
 
 MultiGrid (uint options)
 initialises the grid with the given option. More...
 
template<class TGeomObj >
size_t num () const
 
template<class TElem >
size_t num (int level) const
 
template<class TElem >
size_t num_child_vertices (TElem *elem) const
 Returns the number of child vertices. More...
 
template<class TElem >
size_t num_children_total (TElem *elem) const
 returns the total number of children and grand-children. More...
 
size_t num_levels () const
 number of levels More...
 
template<class TElem >
char parent_type (TElem *elem) const
 returns the object-type of the parent of a given object More...
 
template<class TElem >
void set_parent_type (TElem *elem, char type)
 sets the object-type of the parent of a given object More...
 
size_t top_level () const
 index of the highest level. More...
 
virtual void vertex_created (Grid *grid, Vertex *vrt, GridObject *pParent=NULL, bool replacesParent=false)
 
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 volume_created (Grid *grid, Volume *vol, GridObject *pParent=NULL, bool replacesParent=false)
 
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 ~MultiGrid ()
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator create (size_t level)
 create a custom element on a specific level. More...
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator create (const typename geometry_traits< TGeomObj >::Descriptor &descriptor, size_t level)
 create a custom element on a specific level. More...
 
template<class TChild , class TElem >
size_t num_children (TElem *elem) const
 returns the number of children of the given child-type More...
 
template<class TChild >
size_t num_children (GridObject *elem) const
 returns the number of children of the given child-type More...
 
template<class TElem >
size_t num_child_edges (TElem *elem) const
 Returns the number of child edges. More...
 
size_t num_child_edges (Vertex *) const
 Returns the number of child edges. More...
 
template<class TElem >
size_t num_child_faces (TElem *elem) const
 Returns the number of child faces. More...
 
size_t num_child_faces (Vertex *) const
 Returns the number of child faces. More...
 
size_t num_child_faces (Edge *) const
 Returns the number of child faces. More...
 
size_t num_child_volumes (Volume *elem) const
 Returns the number of child volumes. More...
 
template<class TElem >
size_t num_child_volumes (TElem *) const
 Returns the number of child volumes. More...
 
template<class TChild , class TElem >
TChild * get_child (TElem *elem, size_t ind) const
 returns the i-th child of the given child-type More...
 
template<class TChild >
TChild * get_child (GridObject *elem, size_t ind) const
 returns the i-th child of the given child-type More...
 
template<class TElem >
Edgeget_child_edge (TElem *elem, size_t ind) const
 Returns the child edges of the given element or NULL if there is none. More...
 
Edgeget_child_edge (Vertex *, size_t) const
 Returns the child edges of the given element or NULL if there is none. More...
 
template<class TElem >
Faceget_child_face (TElem *elem, size_t ind) const
 Returns the child faces of the given element or NULL if there is none. More...
 
Faceget_child_face (Vertex *, size_t) const
 Returns the child faces of the given element or NULL if there is none. More...
 
Faceget_child_face (Edge *, size_t) const
 Returns the child faces of the given element or NULL if there is none. More...
 
Volumeget_child_volume (Volume *elem, size_t ind) const
 Returns the child volumes of the given element or NULL if there is none. More...
 
template<class TElem >
Volumeget_child_volume (TElem *, size_t) const
 Returns the child volumes of the given element or NULL if there is none. More...
 
- Public Member Functions inherited from ug::Grid
AssociatedEdgeIterator associated_edges_begin (Face *face)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedEdgeIterator associated_edges_begin (Vertex *vrt)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedEdgeIterator associated_edges_begin (Volume *vol)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedEdgeIterator associated_edges_end (Face *face)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedEdgeIterator associated_edges_end (Vertex *vrt)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedEdgeIterator associated_edges_end (Volume *vol)
 DO NOT INVOKE! Subject to change. More...
 
template<class TElem >
void associated_elements_sorted (traits< Edge >::secure_container &elemsOut, TElem *e)
 
template<class TElem >
void associated_elements_sorted (traits< Face >::secure_container &elemsOut, TElem *e)
 
template<class TElem >
void associated_elements_sorted (traits< Vertex >::secure_container &elemsOut, TElem *e)
 Puts all elements of type TAss which are contained in 'e' into elemsOut in the reference elements order. More...
 
template<class TElem >
void associated_elements_sorted (traits< Volume >::secure_container &elemsOut, TElem *e)
 
AssociatedFaceIterator associated_faces_begin (Edge *edge)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedFaceIterator associated_faces_begin (Vertex *vrt)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedFaceIterator associated_faces_begin (Volume *vol)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedFaceIterator associated_faces_end (Edge *edge)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedFaceIterator associated_faces_end (Vertex *vrt)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedFaceIterator associated_faces_end (Volume *vol)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedVolumeIterator associated_volumes_begin (Edge *edge)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedVolumeIterator associated_volumes_begin (Face *face)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedVolumeIterator associated_volumes_begin (Vertex *vrt)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedVolumeIterator associated_volumes_end (Edge *edge)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedVolumeIterator associated_volumes_end (Face *face)
 DO NOT INVOKE! Subject to change. More...
 
AssociatedVolumeIterator associated_volumes_end (Vertex *vrt)
 DO NOT INVOKE! Subject to change. More...
 
template<class TGeomObjClass >
void attach_to (IAttachment &attachment)
 attach with default pass-on behaviour and unspecified default value. More...
 
template<class TGeomObjClass >
void attach_to (IAttachment &attachment, bool passOnValues)
 attach with custom pass-on-behaviour and unspecified default value. More...
 
void attach_to_all (IAttachment &attachment)
 attaches to vertices, edges, faces and volumes at once. More...
 
void attach_to_all (IAttachment &attachment, bool passOnValues)
 
template<class TAttachment >
void attach_to_all_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue)
 attaches to vertices, edges, faces and volumes at once. More...
 
template<class TAttachment >
void attach_to_all_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue, bool passOnValues)
 
template<class TGeomObjClass , class TAttachment >
void attach_to_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue)
 
template<class TGeomObjClass , class TAttachment >
void attach_to_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue, bool passOnValues)
 
void attach_to_edges (IAttachment &attachment)
 
void attach_to_edges (IAttachment &attachment, bool passOnValues)
 
template<class TAttachment >
void attach_to_edges_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue)
 
template<class TAttachment >
void attach_to_edges_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue, bool passOnValues)
 
void attach_to_faces (IAttachment &attachment)
 
void attach_to_faces (IAttachment &attachment, bool passOnValues)
 
template<class TAttachment >
void attach_to_faces_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue)
 
template<class TAttachment >
void attach_to_faces_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue, bool passOnValues)
 
void attach_to_vertices (IAttachment &attachment)
 
void attach_to_vertices (IAttachment &attachment, bool passOnValues)
 
template<class TAttachment >
void attach_to_vertices_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue)
 
template<class TAttachment >
void attach_to_vertices_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue, bool passOnValues)
 
void attach_to_volumes (IAttachment &attachment)
 
void attach_to_volumes (IAttachment &attachment, bool passOnValues)
 
template<class TAttachment >
void attach_to_volumes_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue)
 
template<class TAttachment >
void attach_to_volumes_dv (TAttachment &attachment, const typename TAttachment::ValueType &defaultValue, bool passOnValues)
 
template<class TGeomObj >
size_t attachment_container_size () const
 returns the size of the associated attachment containers. More...
 
template<class TGeomObj >
TGeomObj * back ()
 returns the last element of the given type. More...
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator begin ()
 
template<class TGeomObj >
geometry_traits< TGeomObj >::const_iterator begin () const
 
void begin_marking ()
 begin marking. More...
 
void clear ()
 clears the grids geometry and attachments More...
 
template<class TGeomObj >
void clear ()
 
void clear_attachments ()
 clears the grids attachments. The geometry remains. More...
 
void clear_geometry ()
 clears the grids geometry. Registered attachments remain. More...
 
void clear_marks ()
 clears all marks More...
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator create (const typename geometry_traits< TGeomObj >::Descriptor &descriptor, GridObject *pParent=NULL)
 create a custom element from a descriptor. More...
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator create (GridObject *pParent=NULL)
 create a custom element. More...
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator create_and_replace (typename geometry_traits< TGeomObj >::grid_base_object *pReplaceMe)
 create a custom element and replaces an old one. More...
 
EdgeIterator create_by_cloning (Edge *pCloneMe, const IVertexGroup &ev, GridObject *pParent=NULL)
 this method creates a new edge, which has the same type as pCloneMe. More...
 
FaceIterator create_by_cloning (Face *pCloneMe, const IVertexGroup &fv, GridObject *pParent=NULL)
 this method creates a new face, which has the same type as pCloneMe. More...
 
VertexIterator create_by_cloning (Vertex *pCloneMe, GridObject *pParent=NULL)
 this method creates a new vertex, which has the same type as pCloneMe. More...
 
VolumeIterator create_by_cloning (Volume *pCloneMe, const IVertexGroup &vv, GridObject *pParent=NULL)
 this method creates a new volume, which has the same type as pCloneMe. More...
 
template<class TGeomObjClass >
void detach_from (IAttachment &attachment)
 
void detach_from_all (IAttachment &attachment)
 
void detach_from_edges (IAttachment &attachment)
 
void detach_from_faces (IAttachment &attachment)
 
void detach_from_vertices (IAttachment &attachment)
 
void detach_from_volumes (IAttachment &attachment)
 
void disable_options (uint options)
 see set_options for a description of valid parameters. More...
 
size_t edge_fragmentation ()
 returns the number of unused edge-data-entries. More...
 
EdgeIterator edges_begin ()
 
EdgeIterator edges_end ()
 
void enable_options (uint options)
 see set_options for a description of valid parameters. More...
 
template<class TGeomObj >
geometry_traits< TGeomObj >::iterator end ()
 
template<class TGeomObj >
geometry_traits< TGeomObj >::const_iterator end () const
 
void end_marking ()
 ends a marking sequence. Call this method when you're done with marking. More...
 
template<class GeomObjIter >
void erase (const GeomObjIter &iterBegin, const GeomObjIter &iterEnd)
 
void erase (Edge *edge)
 
void erase (Face *face)
 
void erase (GridObject *geomObj)
 
void erase (Vertex *vrt)
 
void erase (Volume *vol)
 
size_t face_fragmentation ()
 returns the number of unused face-data-entries. More...
 
FaceIterator faces_begin ()
 
FaceIterator faces_end ()
 
void flip_orientation (Edge *e)
 flips the orientation of an edge. More...
 
void flip_orientation (Face *f)
 flips the orientation of a face. More...
 
void flip_orientation (Volume *vol)
 flips the orientation of a volume. More...
 
template<class TGeomObj >
TGeomObj * front ()
 returns the first element of the given type. More...
 
template<class TGeomObj , class TAttachment >
TAttachment::ContainerType * get_attachment_data_container (TAttachment &attachment)
 
template<class TGeomObj >
uint get_attachment_data_index (TGeomObj *pObj) const
 
template<class TGeomObj >
traits< TGeomObj >::AttachmentPipeget_attachment_pipe ()
 returns the attachment-pipe in which data associated with the given objects-types are stored. More...
 
Edgeget_edge (const EdgeVertices &ev)
 returns the edge that is described by ev. More...
 
Edgeget_edge (Face *f, int ind)
 If it exists, this method returns the i-th edge of the given Face. If not NULL is returned. More...
 
Edgeget_edge (Vertex *v1, Vertex *v2)
 returns the edge between v1 and v2, if it exists. Returns NULL if not. More...
 
Edgeget_edge (Volume *v, int ind)
 If it exists, this method returns the i-th edge of the given Volume. If not NULL is returned. More...
 
Vertexget_element (const VertexDescriptor &vd)
 This overload is only useful to avoid compile issues in templated code. More...
 
Faceget_face (const FaceVertices &fv)
 returns the face that is described by fv. More...
 
Faceget_face (Volume *v, int ind)
 If it exists, this method returns the i-th face of the given Volume. If not NULL is returned. More...
 
uint get_options () const
 
Edge::sideget_side (Edge *obj, size_t side)
 
Face::sideget_side (Face *obj, size_t side)
 
Vertex::sideget_side (Vertex *obj, size_t side)
 This method returns the i-th side of an Edge, Face or Volume. More...
 
Volume::sideget_side (Volume *obj, size_t side)
 
Volumeget_volume (const VolumeVertices &vv)
 returns the volume that is described by ev. More...
 
 Grid ()
 initialises the grid and sets the option GRIDOPT_DEFAULT. More...
 
 Grid (const Grid &grid)
 copies all elements and some attachments from the passed grid to this grid. More...
 
 Grid (uint options)
 initialises the grid with the given option. More...
 
template<class TGeomObjClass >
bool has_attachment (IAttachment &attachment)
 
bool has_edge_attachment (IAttachment &attachment)
 
bool has_face_attachment (IAttachment &attachment)
 
bool has_periodic_boundaries () const
 returns true, if grid has the possibility to handle periodic boundaries. More...
 
bool has_vertex_attachment (IAttachment &attachment)
 
bool has_volume_attachment (IAttachment &attachment)
 
bool is_parallel () const
 returns true if the grid is prepared for parallel computations. More...
 
template<class TIterator >
void mark (TIterator begin, TIterator end)
 marks all objects between begin and end More...
 
SPMessageHub message_hub ()
 gives access to the grid's message-hub More...
 
template<class TGeomObj >
size_t num () const
 
size_t num_edges () const
 
size_t num_faces () const
 
size_t num_vertices () const
 
size_t num_volumes () const
 
Gridoperator= (const Grid &grid)
 copies all elements and some attachments from the passed grid to this grid. More...
 
bool option_is_enabled (uint option) const
 see set_options for a description of valid parameters. More...
 
void pass_on_values (Edge *objSrc, Edge *objDest)
 
void pass_on_values (Face *objSrc, Face *objDest)
 
void pass_on_values (Vertex *objSrc, Vertex *objDest)
 
void pass_on_values (Volume *objSrc, Volume *objDest)
 
void register_element (Edge *e, GridObject *pParent=NULL)
 
void register_element (Face *f, GridObject *pParent=NULL)
 
void register_element (Vertex *v, GridObject *pParent=NULL)
 
void register_element (Volume *v, GridObject *pParent=NULL)
 
void register_observer (GridObserver *observer, uint observerType=OT_FULL_OBSERVER)
 
bool replace_vertex (Vertex *vrtOld, Vertex *vrtNew)
 Replace vrtOld with vrtNew. More...
 
bool replace_vertex_is_valid (Vertex *vrtOld, Vertex *vrtNew)
 checks if replace_vertex would be a valid operation More...
 
template<class TGeomObj >
void reserve (size_t num)
 Reserves memory for the creation of the given object type. More...
 
void set_options (uint options)
 
void set_parallel (bool parallel)
 tell the grid whether it will be used in a serial or in a parallel environment. More...
 
void set_periodic_boundaries (bool)
 tell the grid whether it may contain periodic boundaries. More...
 
void test_attached_linked_lists ()
 a temporary testing method More...
 
template<class TIterator >
void unmark (TIterator begin, TIterator end)
 unmarks all objects between begin and end More...
 
void unregister_element (Edge *e)
 
void unregister_element (Face *f)
 
void unregister_element (Vertex *v)
 
void unregister_element (Volume *v)
 
void unregister_observer (GridObserver *observer)
 
size_t vertex_fragmentation ()
 returns the number of unused vertex-data-entries. More...
 
VertexIterator vertices_begin ()
 
VertexIterator vertices_end ()
 
size_t volume_fragmentation ()
 returns the number of unused volume-data-entries. More...
 
VolumeIterator volumes_begin ()
 
VolumeIterator volumes_end ()
 
virtual ~Grid ()
 
DistributedGridManagerdistributed_grid_manager ()
 returns a pointer to the associated distributed grid manager. More...
 
const DistributedGridManagerdistributed_grid_manager () const
 returns a pointer to the associated distributed grid manager. More...
 
PeriodicBoundaryManagerperiodic_boundary_manager ()
 returns a pointer to the associated periodic boundary manager. More...
 
const PeriodicBoundaryManagerperiodic_boundary_manager () const
 returns a pointer to the associated periodic boundary manager. More...
 
void objects_will_be_merged (Vertex *target, Vertex *elem1, Vertex *elem2)
 notifies the grid that two objects will be merged. More...
 
void objects_will_be_merged (Edge *target, Edge *elem1, Edge *elem2)
 notifies the grid that two objects will be merged. More...
 
void objects_will_be_merged (Face *target, Face *elem1, Face *elem2)
 notifies the grid that two objects will be merged. More...
 
void objects_will_be_merged (Volume *target, Volume *elem1, Volume *elem2)
 notifies the grid that two objects will be merged. More...
 
Edgeget_element (const EdgeVertices &ev)
 returns the element for the given vertices. More...
 
Faceget_element (const FaceVertices &fv)
 returns the element for the given vertices. More...
 
Volumeget_element (const VolumeVertices &vv)
 returns the element for the given vertices. More...
 
GridObjectget_opposing_object (Vertex *vrt, Face *elem)
 returns the geometric object on the opposing side of the given vertex regarding the given element. More...
 
GridObjectget_opposing_object (Vertex *vrt, Volume *elem)
 returns the geometric object on the opposing side of the given vertex regarding the given element. More...
 
template<class TElem >
void associated_elements (traits< Vertex >::secure_container &elemsOut, TElem *e)
 Puts all elements of type TAss which are contained in 'e' or which contain 'e' into elemsOut. More...
 
template<class TElem >
void associated_elements (traits< Edge >::secure_container &elemsOut, TElem *e)
 Puts all elements of type TAss which are contained in 'e' or which contain 'e' into elemsOut. More...
 
template<class TElem >
void associated_elements (traits< Face >::secure_container &elemsOut, TElem *e)
 Puts all elements of type TAss which are contained in 'e' or which contain 'e' into elemsOut. More...
 
template<class TElem >
void associated_elements (traits< Volume >::secure_container &elemsOut, TElem *e)
 Puts all elements of type TAss which are contained in 'e' or which contain 'e' into elemsOut. More...
 
void register_and_replace_element (Vertex *v, Vertex *pReplaceMe)
 
void register_and_replace_element (Edge *e, Edge *pReplaceMe)
 
void register_and_replace_element (Face *f, Face *pReplaceMe)
 
void register_and_replace_element (Volume *v, Volume *pReplaceMe)
 
void mark (GridObject *obj)
 marks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking. More...
 
void mark (Vertex *obj)
 marks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking. More...
 
void mark (Edge *obj)
 marks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking. More...
 
void mark (Face *obj)
 marks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking. More...
 
void mark (Volume *obj)
 marks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking. More...
 
void unmark (GridObject *obj)
 unmarks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking. More...
 
void unmark (Vertex *obj)
 unmarks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking. More...
 
void unmark (Edge *obj)
 unmarks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking. More...
 
void unmark (Face *obj)
 unmarks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking. More...
 
void unmark (Volume *obj)
 unmarks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking. More...
 
bool is_marked (GridObject *obj) const
 returns true if the object is marked, false if not. More...
 
bool is_marked (Vertex *obj) const
 returns true if the object is marked, false if not. More...
 
bool is_marked (Edge *obj) const
 returns true if the object is marked, false if not. More...
 
bool is_marked (Face *obj) const
 returns true if the object is marked, false if not. More...
 
bool is_marked (Volume *obj) const
 returns true if the object is marked, false if not. More...
 
- Public Member Functions inherited from ug::GridObserver
virtual void grid_to_be_destroyed (Grid *grid)
 
virtual ~GridObserver ()
 
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 Types

typedef Attachment< EdgeInfoAEdgeInfo
 
typedef Attachment< FaceInfo * > AFaceInfo
 
typedef Attachment< GridObject * > AParent
 
typedef Attachment< char > AParentType
 
typedef Attachment< VertexInfoAVertexInfo
 
typedef Attachment< VolumeInfo * > AVolumeInfo
 
typedef MGEdgeInfo EdgeInfo
 
typedef MGFaceInfo FaceInfo
 
typedef MGVertexInfo VertexInfo
 
typedef MGVolumeInfo VolumeInfo
 
- Protected Types inherited from ug::Grid
typedef Attachment< EdgeContainerAEdgeContainer
 
typedef Attachment< FaceContainerAFaceContainer
 
typedef Attachment< int > AMark
 
typedef Attachment< VertexContainerAVertexContainer
 
typedef Attachment< VolumeContainerAVolumeContainer
 
typedef std::vector< GridObserver * > ObserverContainer
 

Protected Member Functions

void create_levels (int numLevels)
 
template<class TElem >
void element_created (TElem *elem)
 
template<class TElem , class TParent >
void element_created (TElem *elem, TParent *pParent)
 
template<class TElem , class TParent >
void element_created (TElem *elem, TParent *pParent, TElem *pReplaceMe)
 called if a newly created element shall replace an old one More...
 
template<class TElem >
void element_to_be_erased (TElem *elem)
 this method is called for elements that havn't got any parent. More...
 
template<class TElem , class TParent >
void element_to_be_erased (TElem *elem, TParent *pParent)
 this method is called for elements with a parent. More...
 
EdgeInfoget_info (Edge *e)
 
const EdgeInfoget_info (Edge *e) const
 
FaceInfoget_info (Face *f)
 
const FaceInfoget_info (Face *f) const
 
VertexInfoget_info (Vertex *v)
 
const VertexInfoget_info (Vertex *v) const
 
VolumeInfoget_info (Volume *v)
 
const VolumeInfoget_info (Volume *v) const
 
void init ()
 
template<class TElem >
size_t num_children (TElem *elem, const Vertex &) const
 returning the number of children of the type of the dummy-argument. More...
 
template<class TElem >
size_t num_children (TElem *elem, const Edge &) const
 returning the number of children of the type of the dummy-argument. More...
 
template<class TElem >
size_t num_children (TElem *elem, const Face &) const
 returning the number of children of the type of the dummy-argument. More...
 
template<class TElem >
size_t num_children (TElem *elem, const Volume &) const
 returning the number of children of the type of the dummy-argument. More...
 
template<class TElem >
Vertexget_child (TElem *elem, size_t ind, const Vertex &) const
 returning the i-th child of the type of the dummy-argument. More...
 
template<class TElem >
Edgeget_child (TElem *elem, size_t ind, const Edge &) const
 returning the i-th child of the type of the dummy-argument. More...
 
template<class TElem >
Faceget_child (TElem *elem, size_t ind, const Face &) const
 returning the i-th child of the type of the dummy-argument. More...
 
template<class TElem >
Volumeget_child (TElem *elem, size_t ind, const Volume &) const
 returning the i-th child of the type of the dummy-argument. More...
 
void set_parent (Vertex *o, GridObject *p)
 sets the parent for the given object More...
 
void set_parent (Edge *o, GridObject *p)
 sets the parent for the given object More...
 
void set_parent (Face *o, GridObject *p)
 sets the parent for the given object More...
 
void set_parent (Volume *o, GridObject *p)
 sets the parent for the given object More...
 
template<class TParent , class TChild >
void add_child (TParent *p, TChild *c)
 adds a child to the given object More...
 
template<class TChild >
void add_child (GridObject *p, TChild *c)
 adds a child to the given object More...
 
template<class TParent , class TChild >
void remove_child (TParent *p, TChild *c)
 removes a child from the given object More...
 
template<class TChild >
void remove_child (GridObject *p, TChild *c)
 removes a child from the given object More...
 
void create_child_info (Vertex *o)
 creates the info-object for the given object (if necessary) More...
 
void create_child_info (Edge *o)
 creates the info-object for the given object (if necessary) More...
 
void create_child_info (Face *o)
 creates the info-object for the given object (if necessary) More...
 
void create_child_info (Volume *o)
 creates the info-object for the given object (if necessary) More...
 
void release_child_info (Vertex *o)
 releases the info-object for the given object (if necessary) More...
 
void release_child_info (Edge *o)
 releases the info-object for the given object (if necessary) More...
 
void release_child_info (Face *o)
 releases the info-object for the given object (if necessary) More...
 
void release_child_info (Volume *o)
 releases the info-object for the given object (if necessary) More...
 
- Protected Member Functions inherited from ug::Grid
void assign_grid (const Grid &grid)
 copies the contents from the given grid to this grid. More...
 
void assign_hash_value (Vertex *vrt)
 assigns a unique hash value to a Vertex. More...
 
void autoenable_option (uint option, const char *caller, const char *optionName)
 
void change_edge_options (uint optsNew)
 
void change_face_options (uint optsNew)
 
void change_options (uint optsNew)
 
void change_vertex_options (uint optsNew)
 
void change_volume_options (uint optsNew)
 
template<class TElem >
void clear_attachments ()
 helper to clear_attachments More...
 
template<class TAttachmentPipe >
void copy_user_attachments (const TAttachmentPipe &apSrc, TAttachmentPipe &apDest, std::vector< int > &srcDataIndices)
 helps in copying attachment pipes during assign_grid More...
 
void edge_store_associated_faces (bool bStoreIt)
 
void edge_store_associated_volumes (bool bStoreIt)
 
template<class TElem >
traits< TElem >::ElementStorageelement_storage ()
 returns the element storage for a given element type More...
 
template<class TElem >
const traits< TElem >::ElementStorageelement_storage () const
 returns the const element storage for a given element type More...
 
void face_autogenerate_edges (bool bAutogen)
 
void face_store_associated_edges (bool bStoreIt)
 
void face_store_associated_volumes (bool bStoreIt)
 
template<class TGeomObj >
Edgefind_edge_in_associated_edges (TGeomObj *obj, const EdgeVertices &ev)
 
template<class TGeomObj >
Facefind_face_in_associated_faces (TGeomObj *obj, const FaceVertices &fv)
 
template<class TGeomObj >
Volumefind_volume_in_associated_volumes (TGeomObj *obj, const VolumeVertices &vv)
 
void get_associated (SecureEdgeContainer &edges, Face *f)
 
void get_associated (SecureEdgeContainer &edges, Vertex *v)
 
void get_associated (SecureEdgeContainer &edges, Volume *v)
 
void get_associated (SecureFaceContainer &faces, Edge *e)
 
void get_associated (SecureFaceContainer &faces, Vertex *v)
 
void get_associated (SecureFaceContainer &faces, Volume *v)
 
void get_associated (SecureVertexContainer &vrts, Edge *e)
 
void get_associated (SecureVertexContainer &vrts, Face *f)
 
void get_associated (SecureVertexContainer &vrts, Volume *v)
 
void get_associated (SecureVolumeContainer &vols, Edge *e)
 
void get_associated (SecureVolumeContainer &vols, Face *f)
 
void get_associated (SecureVolumeContainer &vols, Vertex *v)
 
template<class TContainer >
void get_associated (TContainer &container, GridObject *o)
 
template<class TElem >
void get_associated (typename traits< typename TElem::grid_base_object > ::secure_container &elems, TElem *e)
 
void get_associated_sorted (SecureEdgeContainer &edges, Face *f)
 
void get_associated_sorted (SecureEdgeContainer &edges, Vertex *v)
 
void get_associated_sorted (SecureEdgeContainer &edges, Volume *v)
 
void get_associated_sorted (SecureFaceContainer &faces, Edge *e)
 
void get_associated_sorted (SecureFaceContainer &faces, Vertex *v)
 
void get_associated_sorted (SecureFaceContainer &faces, Volume *v)
 
void get_associated_sorted (SecureVertexContainer &vrts, Edge *e) const
 
void get_associated_sorted (SecureVertexContainer &vrts, Face *f) const
 
void get_associated_sorted (SecureVertexContainer &vrts, Volume *v) const
 
void get_associated_sorted (SecureVolumeContainer &vols, Edge *e)
 
void get_associated_sorted (SecureVolumeContainer &vols, Face *f)
 
void get_associated_sorted (SecureVolumeContainer &vols, Vertex *v)
 
template<class TElem >
void get_associated_sorted (typename traits< typename TElem::grid_base_object > ::secure_container &elems, TElem *e)
 
void get_associated_vols_raw (SecureVolumeContainer &vols, Face *f)
 
void init_marks ()
 
void notify_and_clear_observers_on_grid_destruction (GridObserver *initiator=NULL)
 unregisters all observers. Call this method in destructors of derived classes. More...
 
template<class TAttachmentPipe , class TElem >
void pass_on_values (TAttachmentPipe &attachmentPipe, TElem *pSrc, TElem *pDest)
 
void register_edge (Edge *e, GridObject *pParent=NULL, Face *createdByFace=NULL, Volume *createdByVol=NULL)
 pDF specifies the element from which v derives its values More...
 
void register_face (Face *f, GridObject *pParent=NULL, Volume *createdByVol=NULL)
 pDF specifies the element from which v derives its values More...
 
void register_vertex (Vertex *v, GridObject *pParent=NULL)
 pDF specifies the element from which v derives its values More...
 
void register_volume (Volume *v, GridObject *pParent=NULL)
 pDF specifies the element from which v derives its values More...
 
void remove_marks ()
 
void reset_marks ()
 
void unregister_edge (Edge *e)
 
void unregister_face (Face *f)
 
void unregister_vertex (Vertex *v)
 
void unregister_volume (Volume *v)
 
void vertex_store_associated_edges (bool bStoreIt)
 
void vertex_store_associated_faces (bool bStoreIt)
 
void vertex_store_associated_volumes (bool bStoreIt)
 
void volume_autogenerate_edges (bool bAutogen)
 
void volume_autogenerate_faces (bool bAutogen)
 
void volume_sort_associated_edge_container ()
 
void volume_store_associated_edges (bool bStoreIt)
 
void volume_store_associated_faces (bool bStoreIt)
 
traits< Vertex >::SectionContainer::iterator get_iterator (Vertex *o)
 returns the iterator at which the given element lies in the section container More...
 
traits< Edge >::SectionContainer::iterator get_iterator (Edge *o)
 returns the iterator at which the given element lies in the section container More...
 
traits< Face >::SectionContainer::iterator get_iterator (Face *o)
 returns the iterator at which the given element lies in the section container More...
 
traits< Volume >::SectionContainer::iterator get_iterator (Volume *o)
 returns the iterator at which the given element lies in the section container More...
 

Protected Attributes

Grid::EdgeAttachmentAccessor< AEdgeInfom_aaEdgeInf
 
Grid::FaceAttachmentAccessor< AFaceInfom_aaFaceInf
 
Grid::FaceAttachmentAccessor< AParentm_aaParentFACE
 
MultiElementAttachmentAccessor< AParentTypem_aaParentType
 
Grid::VolumeAttachmentAccessor< AParentm_aaParentVOL
 
Grid::VolumeAttachmentAccessor< AVolumeInfom_aaVolInf
 
Grid::VertexAttachmentAccessor< AVertexInfom_aaVrtInf
 
AEdgeInfo m_aEdgeInfo
 
AFaceInfo m_aFaceInfo
 
AParent m_aParent
 
AParentType m_aParentType
 
AVertexInfo m_aVertexInfo
 
AVolumeInfo m_aVolumeInfo
 
bool m_bHierarchicalInsertion
 
SubsetHandler m_hierarchy
 
- Protected Attributes inherited from ug::Grid
AttachmentAccessor< Edge, AEdgeContainerm_aaEdgeContainerEDGE
 
AttachmentAccessor< Face, AEdgeContainerm_aaEdgeContainerFACE
 
AttachmentAccessor< Vertex, AEdgeContainerm_aaEdgeContainerVERTEX
 
AttachmentAccessor< Volume, AEdgeContainerm_aaEdgeContainerVOLUME
 
AttachmentAccessor< Edge, AFaceContainerm_aaFaceContainerEDGE
 
AttachmentAccessor< Face, AFaceContainerm_aaFaceContainerFACE
 
AttachmentAccessor< Vertex, AFaceContainerm_aaFaceContainerVERTEX
 
AttachmentAccessor< Volume, AFaceContainerm_aaFaceContainerVOLUME
 
EdgeAttachmentAccessor< AMarkm_aaMarkEDGE
 
FaceAttachmentAccessor< AMarkm_aaMarkFACE
 
VolumeAttachmentAccessor< AMarkm_aaMarkVOL
 
VertexAttachmentAccessor< AMarkm_aaMarkVRT
 
AttachmentAccessor< Edge, AVolumeContainerm_aaVolumeContainerEDGE
 
AttachmentAccessor< Face, AVolumeContainerm_aaVolumeContainerFACE
 
AttachmentAccessor< Vertex, AVolumeContainerm_aaVolumeContainerVERTEX
 
AttachmentAccessor< Volume, AVolumeContainerm_aaVolumeContainerVOLUME
 
AEdgeContainer m_aEdgeContainer
 
AFaceContainer m_aFaceContainer
 
AMark m_aMark
 
AVertexContainer m_aVertexContainer
 
AVolumeContainer m_aVolumeContainer
 
bool m_bMarking
 
int m_currentMark
 
DistributedGridManagerm_distGridMgr
 
EdgeElementStorage m_edgeElementStorage
 
ObserverContainer m_edgeObservers
 
FaceElementStorage m_faceElementStorage
 
ObserverContainer m_faceObservers
 
ObserverContainer m_gridObservers
 
uint32 m_hashCounter
 
SPMessageHub m_messageHub
 
uint m_options
 
PeriodicBoundaryManagerm_periodicBndMgr
 
VertexElementStorage m_vertexElementStorage
 
ObserverContainer m_vertexObservers
 
VolumeElementStorage m_volumeElementStorage
 
ObserverContainer m_volumeObservers
 

Friends

struct MGEdgeInfo
 
struct MGFaceInfo
 
struct MGVertexInfo
 
struct MGVolumeInfo
 

Additional Inherited Members

- Public Types inherited from ug::Grid
typedef EdgeContainer::iterator AssociatedEdgeIterator
 used to iterate over associated edges of vertices, faces and volumes More...
 
typedef FaceContainer::iterator AssociatedFaceIterator
 used to iterate over associated faces of vertices, edges and volumes More...
 
typedef VolumeContainer::iterator AssociatedVolumeIterator
 used to iterate over associated volumes of vertices, edges and faces More...
 
typedef traits< Edgeedge_traits
 
typedef ug::AttachmentPipe< Edge *, EdgeElementStorageEdgeAttachmentPipe
 
typedef std::vector< Edge * > EdgeContainer
 Container used to store associated edges. More...
 
typedef traits< Faceface_traits
 
typedef ug::AttachmentPipe< Face *, FaceElementStorageFaceAttachmentPipe
 
typedef std::vector< Face * > FaceContainer
 Container used to store associated faces. More...
 
typedef traits< Edge >::secure_container SecureEdgeContainer
 Container to store associated edges. More...
 
typedef traits< Face >::secure_container SecureFaceContainer
 Container to store associated faces. More...
 
typedef traits< Vertex >::secure_container SecureVertexContainer
 Container to store associated vertices. More...
 
typedef traits< Volume >::secure_container SecureVolumeContainer
 Container to store associated volumes. More...
 
typedef traits< Vertexvertex_traits
 Convenience access to grid elements. More...
 
typedef ug::AttachmentPipe< Vertex *, VertexElementStorageVertexAttachmentPipe
 the attachment-pipe used by Grid More...
 
typedef std::vector< Vertex * > VertexContainer
 Container used to store associated vertices. More...
 
typedef traits< Volumevolume_traits
 
typedef ug::AttachmentPipe< Volume *, VolumeElementStorageVolumeAttachmentPipe
 
typedef std::vector< Volume * > VolumeContainer
 Container used to store associated volumes. More...
 

Detailed Description

Inherits from

See also
Grid.

A MultiGrid represents a grid hierarchy. Elements in a level have a parent / child relationship to elements in lower / higher levels. Such a hierarchy is normally created by repeated refinement of a coarse grid. Enhances the Grid interface by methods that work on specific levels. The MultiGrid stores all elements in one grid. The hierarchy is managed by a SubsetHandler. If elements are created and hierarchical insertion is activated, then new elements are added one layer higher than their parents. (NULL indicates base-level).

Whenever a a level is added or removed, a message is posted at the associated MessageHub (MultiGrid::message_hub()). The message has the type GridMessage_MultiGridChanged (defined in "lib_grid/lib_grid_messages.h"). You may register a callback at the grids message-hub if you want to react on such a message.

Member Typedef Documentation

◆ AEdgeInfo

◆ AFaceInfo

◆ AParent

◆ AParentType

typedef Attachment<char> ug::MultiGrid::AParentType
protected

◆ AVertexInfo

◆ AVolumeInfo

◆ EdgeInfo

◆ FaceInfo

◆ VertexInfo

◆ VolumeInfo

Constructor & Destructor Documentation

◆ MultiGrid() [1/2]

ug::MultiGrid::MultiGrid ( )

References init().

◆ MultiGrid() [2/2]

ug::MultiGrid::MultiGrid ( uint  options)

initialises the grid with the given option.

pass an or-combination of constants enumerated in VertexOptions, EdgeOptions, FaceOptions, VolumeOptions and GridOptions.

References init().

◆ ~MultiGrid()

ug::MultiGrid::~MultiGrid ( )
virtual

References release_child_info().

Member Function Documentation

◆ add_child() [1/2]

template<class TChild >
void ug::MultiGrid::add_child ( GridObject p,
TChild *  c 
)
protected

adds a child to the given object

References add_child(), ug::EDGE, ug::FACE, p, ug::VERTEX, and ug::VOLUME.

◆ add_child() [2/2]

template<class TParent , class TChild >
void ug::MultiGrid::add_child ( TParent *  p,
TChild *  c 
)
protected

adds a child to the given object

References ug::MGVertexInfo::add_child(), create_child_info(), get_info(), and p.

Referenced by add_child(), and associate_parent().

◆ associate_parent()

template<class TElem >
void ug::MultiGrid::associate_parent ( TElem *  elem,
GridObject parent 
)

establishes a parent child connection between the given elements

Note that the MultGrid class automatically establishes a parent child connection during element creation, based on the suppliend parent argument. This method should thus only be used in the rare cases where this automatic association is not sufficient. Note that only elements of equal or higher dimension can be parent to a given element. Note that while parent may be NULL, elem has to be supplied. The method also sets the parent type if a parent is supplied and leaves the parent type as it is if none is supplied.

References add_child(), ug::GridObject::base_object_id(), get_parent(), remove_child(), set_parent(), set_parent_type(), and UG_THROW.

Referenced by ug::DeserializeMultiGridElements().

◆ begin() [1/4]

template<class TGeomObj >
geometry_traits< TGeomObj >::iterator ug::Grid::begin ( class TGeomObj  )

◆ begin() [2/4]

template<class TGeomObj >
geometry_traits< TGeomObj >::const_iterator ug::Grid::begin ( class TGeomObj  )

◆ begin() [3/4]

template<class TElem >
geometry_traits<TElem>::iterator ug::MultiGrid::begin ( int  level)
inline

References ug::GridSubsetHandler::begin(), m_hierarchy, and num_levels().

Referenced by ug::ApplySmoothManifoldPosToTopLevelAveragingScheme(), ug::ApplySmoothManifoldPosToTopLevelButterflyScheme(), ug::ApplySmoothManifoldPosToTopLevelLoopScheme(), ug::ApplySmoothVolumePosToTopLevel(), ug::GlobalFracturedMediaRefiner::assign_elem_and_side_marks(), ug::HangingNodeRefiner_MultiGrid::assign_hnode_marks(), ug::AssignSubsetsByInterfaceType(), ug::AssignSubsetsByLevel(), ug::AssignSubsetsBySurfaceViewState(), ug::CalculateConstrainedSmoothVolumePosInTopLevel(), ug::CalculateNumElemsVertexAttachmentInTopLevel(), ug::CalculateNumManifoldEdgesVertexAttachmentInParentLevel(), ug::CalculateNumManifoldFacesVertexAttachmentInTopLevel(), ug::CalculateSmoothCreaseManifoldPosInParentLevelLoopScheme(), ug::CalculateSmoothManifoldPosInParentLevelButterflyScheme(), ug::CalculateSmoothManifoldPosInParentLevelLoopScheme(), ug::CalculateSmoothManifoldPosInTopLevelAveragingScheme(), ug::CalculateSmoothVolumePosInTopLevel(), ug::CheckDistributedObjectConstraintTypes(), ug::CheckHangingNodeConsistency(), ug::CheckLocalParentTypes(), ug::CheckMultiGridConsistencyImpl(), ug::CheckValences(), ug::ConstructDualGraphMG(), ug::ConstructDualGraphMGLevel(), ug::ConstructParallelDualGraphMGLevel(), ug::Partitioner_DynamicBisection< TElem, dim >::copy_partitions_to_children(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_2d(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_3d(), ug::CreateLayoutsFromDistInfos(), ug::DeserializeMultiGridElements(), ug::LoadBalancer::estimate_distribution_quality_impl(), ug::ComPol_AdjustType< TLayout >::extract(), ug::Partitioner_DynamicBisection< TElem, dim >::gather_weights_from_level(), ug::ParallelDualGraph< TGeomBaseObj, TIndexType, TConnectingObj >::generate_graph(), ug::PeriodicBoundaryManager::grid_to_be_destroyed(), ug::SurfaceView::mark_shadowing(), ug::GlobalFracturedMediaRefiner::mark_sides_of_marked_top_level_elements(), ug::MarkAnisotropic_LongEdges(), ug::MarkForRefinement_EdgeDirection(), ug::Partitioner_DynamicBisection< TElem, dim >::partition(), ug::PartitionDomain_MetisKWay(), ug::PartitionDomain_RegularGrid(), ug::PartitionMultiGrid_MetisKway(), ug::PartitionMultiGridLevel_MetisKway(), ug::PartitionMultiGridLevel_ParmetisKway(), ug::Partitioner_DynamicBisection< TElem, dim >::perform_bisection(), ug::GlobalFracturedMediaRefiner::perform_refinement(), ug::GlobalMultiGridRefiner::perform_refinement(), ug::ClusterElementStacks< elem_t, vector_t >::post_process(), ug::SmoothPartitionBounds< elem_t >::post_process(), ug::PostProcessDistInfos(), ug::PeriodicBoundaryManager::print_identification(), ug::PrintElementEdgeRatios(), ug::ProjectHierarchyToSubdivisionLimit(), ug::SurfaceView::refresh_surface_states(), ug::DistributedGridManager::reset_elem_infos(), ug::GlobalFracturedMediaRefiner::save_marks_to_file(), ug::GlobalMultiGridRefiner::save_marks_to_file(), ug::SaveGridHierarchyTransformed(), ug::SaveParallelGridLayout(), ug::SaveSurfaceViewTransformed(), ug::SelectNonShadowsAdjacentToShadowsOnLevel(), ug::SelectUnselectedRootElementsAsVMasters(), and ug::TetrahedralizeHybridTetOctGrid().

◆ begin() [4/4]

template<class TElem >
geometry_traits<TElem>::const_iterator ug::MultiGrid::begin ( int  level) const
inline

◆ check_edge_elem_infos()

void ug::MultiGrid::check_edge_elem_infos ( int  level) const

for debug purposes

References get_info(), and UG_LOG.

◆ check_face_elem_infos()

void ug::MultiGrid::check_face_elem_infos ( int  level) const

for debug purposes

References get_info(), and UG_LOG.

◆ check_volume_elem_infos()

void ug::MultiGrid::check_volume_elem_infos ( int  level) const

for debug purposes

References get_info(), and UG_LOG.

◆ clear_child_connections()

template<class TElem >
void ug::MultiGrid::clear_child_connections ( TElem *  parent)

clears the relation between a parent and its children

Use with care. This method should only be called if no other option exists.

References get_info(), has_children(), and ug::MGVertexInfo::unregister_from_children().

Referenced by ug::CreateLayoutsFromDistInfos().

◆ create() [1/4]

template<class TGeomObj >
geometry_traits< TGeomObj >::iterator ug::Grid::create ( class TGeomObj  )

create a custom element from a descriptor.

TGeomObj has to be a geometric object type as described in grid_base_objects.h. You may optionally specify a GridObject pParent. pParent may be used by observers to initialize the created object in a specific way.

◆ create() [2/4]

template<class TGeomObj >
geometry_traits< TGeomObj >::iterator ug::MultiGrid::create ( const typename geometry_traits< TGeomObj >::Descriptor &  descriptor,
size_t  level 
)

create a custom element on a specific level.

TGeomObj has to be a geometric object type as described in grid_base_objects.h. This method should only be used if a geometric object has to be created without a parent in higher levels of the hierarchy. Use the create method derived from ug::Grid if you want to specify a parent.

References ug::GridSubsetHandler::assign_subset(), level_required(), and m_hierarchy.

◆ create() [3/4]

template<class TGeomObj >
geometry_traits< TGeomObj >::iterator ug::Grid::create ( class TGeomObj  )

create a custom element.

TGeomObj has to be a geometric object type as described in grid_base_objects.h. You may optionally specify a GridObject pParent. pParent may be used by observers to initialize the created object in a specific way.

◆ create() [4/4]

template<class TGeomObj >
geometry_traits< TGeomObj >::iterator ug::MultiGrid::create ( size_t  level)

create a custom element on a specific level.

TGeomObj has to be a geometric object type as described in grid_base_objects.h. This method should only be used if a geometric object has to be created without a parent in higher levels of the hierarchy. Use the create method derived from ug::Grid if you want to specify a parent.

References ug::GridSubsetHandler::assign_subset(), level_required(), and m_hierarchy.

Referenced by ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_2d(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_3d(), ug::DeserializeMultiGridElements(), ug::GlobalFracturedMediaRefiner::perform_refinement(), ug::GlobalMultiGridRefiner::perform_refinement(), and ug::HangingNodeRefiner_MultiGrid::pre_refine().

◆ create_by_cloning() [1/8]

EdgeIterator ug::MultiGrid::create_by_cloning ( Edge pCloneMe,
const EdgeVertices ev,
int  level 
)

this method creates a new edge, which has the same type as pCloneMe.

References ug::GridSubsetHandler::assign_subset(), ug::Grid::create_by_cloning(), level_required(), and m_hierarchy.

◆ create_by_cloning() [2/8]

EdgeIterator ug::Grid::create_by_cloning

this method creates a new edge, which has the same type as pCloneMe.

◆ create_by_cloning() [3/8]

FaceIterator ug::MultiGrid::create_by_cloning ( Face pCloneMe,
const FaceVertices fv,
int  level 
)

this method creates a new face, which has the same type as pCloneMe.

References ug::GridSubsetHandler::assign_subset(), ug::Grid::create_by_cloning(), level_required(), and m_hierarchy.

◆ create_by_cloning() [4/8]

FaceIterator ug::Grid::create_by_cloning

this method creates a new face, which has the same type as pCloneMe.

◆ create_by_cloning() [5/8]

VertexIterator ug::Grid::create_by_cloning

this method creates a new vertex, which has the same type as pCloneMe.

◆ create_by_cloning() [6/8]

VertexIterator ug::MultiGrid::create_by_cloning ( Vertex pCloneMe,
int  level 
)

◆ create_by_cloning() [7/8]

VolumeIterator ug::Grid::create_by_cloning

this method creates a new volume, which has the same type as pCloneMe.

References ug::Grid::set_parallel().

◆ create_by_cloning() [8/8]

VolumeIterator ug::MultiGrid::create_by_cloning ( Volume pCloneMe,
const VolumeVertices vv,
int  level 
)

this method creates a new volume, which has the same type as pCloneMe.

References ug::GridSubsetHandler::assign_subset(), ug::Grid::create_by_cloning(), level_required(), and m_hierarchy.

◆ create_child_info() [1/4]

void ug::MultiGrid::create_child_info ( Edge o)
inlineprotected

creates the info-object for the given object (if necessary)

◆ create_child_info() [2/4]

void ug::MultiGrid::create_child_info ( Face o)
inlineprotected

creates the info-object for the given object (if necessary)

References m_aaFaceInf.

◆ create_child_info() [3/4]

void ug::MultiGrid::create_child_info ( Vertex o)
inlineprotected

creates the info-object for the given object (if necessary)

Referenced by add_child(), element_created(), face_created(), and volume_created().

◆ create_child_info() [4/4]

void ug::MultiGrid::create_child_info ( Volume o)
inlineprotected

creates the info-object for the given object (if necessary)

References m_aaVolInf.

◆ create_levels()

void ug::MultiGrid::create_levels ( int  numLevels)
protected

◆ edge_created()

void ug::MultiGrid::edge_created ( Grid grid,
Edge e,
GridObject pParent = NULL,
bool  replacesParent = false 
)
virtual

In order to correctly register e in the hierarchy, we have to replace pParent with e in the list of children of pParents parent. This means that if a grid-observer registered after the multi-grid itself, iterates over the list of children of pParents parent in its edge_created method, it won't find pParent.

Reimplemented from ug::GridObserver.

References ug::MGEdgeInfo::add_child(), ug::GridObject::base_object_id(), ug::MGEdgeInfo::child_edge(), ug::MGEdgeInfo::child_vertex(), ug::EDGE, element_created(), ug::FACE, get_info(), get_parent(), hierarchical_insertion_enabled(), ug::MGEdgeInfo::num_child_edges(), set_parent(), set_parent_type(), UG_ASSERT, and ug::VOLUME.

◆ edge_to_be_erased()

void ug::MultiGrid::edge_to_be_erased ( Grid grid,
Edge e,
Edge replacedBy = NULL 
)
virtual

Notified whenever an element of the given type is erased from the given grid.

Erase callbacks are called in reverse order in which the GridObservers were registered at the given grid.

if replacedBy != NULL the erased object is only replaced by another grid object of the same base type. This usually happens when constraining objects are replaced by regular objects in refinements. (E.g. a constraining edge by become a regular Edge; note that both objects are of type Edge*).

Reimplemented from ug::GridObserver.

References ug::GridObject::base_object_id(), ug::EDGE, element_to_be_erased(), ug::FACE, get_parent(), and ug::VOLUME.

◆ element_created() [1/3]

template<class TElem >
void ug::MultiGrid::element_created ( TElem *  elem)
inlineprotected

◆ element_created() [2/3]

template<class TElem , class TParent >
void ug::MultiGrid::element_created ( TElem *  elem,
TParent *  pParent 
)
protected

◆ element_created() [3/3]

template<class TElem , class TParent >
void ug::MultiGrid::element_created ( TElem *  elem,
TParent *  pParent,
TElem *  pReplaceMe 
)
protected

called if a newly created element shall replace an old one

References ug::GridSubsetHandler::assign_subset(), get_info(), get_level(), level_required(), m_hierarchy, parent_type(), set_parent(), set_parent_type(), and UG_ASSERT.

◆ element_to_be_erased() [1/2]

template<class TElem >
void ug::MultiGrid::element_to_be_erased ( TElem *  elem)
protected

◆ element_to_be_erased() [2/2]

template<class TElem , class TParent >
void ug::MultiGrid::element_to_be_erased ( TElem *  elem,
TParent *  pParent 
)
protected

this method is called for elements with a parent.

References element_to_be_erased(), get_info(), and release_child_info().

◆ elements_to_be_cleared()

void ug::MultiGrid::elements_to_be_cleared ( Grid grid)
virtual

Reimplemented from ug::GridObserver.

◆ enable_hierarchical_insertion()

void ug::MultiGrid::enable_hierarchical_insertion ( bool  bEnable)

◆ end() [1/4]

template<class TGeomObj >
geometry_traits< TGeomObj >::iterator ug::Grid::end ( class TGeomObj  )

◆ end() [2/4]

template<class TGeomObj >
geometry_traits< TGeomObj >::const_iterator ug::Grid::end ( class TGeomObj  )

◆ end() [3/4]

template<class TElem >
geometry_traits<TElem>::iterator ug::MultiGrid::end ( int  level)
inline

References ug::GridSubsetHandler::end(), m_hierarchy, and num_levels().

Referenced by ug::ApplySmoothManifoldPosToTopLevelAveragingScheme(), ug::ApplySmoothManifoldPosToTopLevelButterflyScheme(), ug::ApplySmoothManifoldPosToTopLevelLoopScheme(), ug::ApplySmoothVolumePosToTopLevel(), ug::GlobalFracturedMediaRefiner::assign_elem_and_side_marks(), ug::HangingNodeRefiner_MultiGrid::assign_hnode_marks(), ug::AssignSubsetsByInterfaceType(), ug::AssignSubsetsByLevel(), ug::AssignSubsetsBySurfaceViewState(), ug::CalculateConstrainedSmoothVolumePosInTopLevel(), ug::CalculateNumElemsVertexAttachmentInTopLevel(), ug::CalculateNumManifoldEdgesVertexAttachmentInParentLevel(), ug::CalculateNumManifoldFacesVertexAttachmentInTopLevel(), ug::CalculateSmoothCreaseManifoldPosInParentLevelLoopScheme(), ug::CalculateSmoothManifoldPosInParentLevelButterflyScheme(), ug::CalculateSmoothManifoldPosInParentLevelLoopScheme(), ug::CalculateSmoothManifoldPosInTopLevelAveragingScheme(), ug::CalculateSmoothVolumePosInTopLevel(), ug::CheckDistributedObjectConstraintTypes(), ug::CheckHangingNodeConsistency(), ug::CheckLocalParentTypes(), ug::CheckMultiGridConsistencyImpl(), ug::CheckValences(), ug::ConstructDualGraphMG(), ug::ConstructDualGraphMGLevel(), ug::ConstructParallelDualGraphMGLevel(), ug::Partitioner_DynamicBisection< TElem, dim >::copy_partitions_to_children(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_2d(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_3d(), ug::CreateLayoutsFromDistInfos(), ug::DeserializeMultiGridElements(), ug::LoadBalancer::estimate_distribution_quality_impl(), ug::Partitioner_DynamicBisection< TElem, dim >::gather_weights_from_level(), ug::ParallelDualGraph< TGeomBaseObj, TIndexType, TConnectingObj >::generate_graph(), ug::PeriodicBoundaryManager::grid_to_be_destroyed(), ug::SurfaceView::mark_shadowing(), ug::GlobalFracturedMediaRefiner::mark_sides_of_marked_top_level_elements(), ug::MarkAnisotropic_LongEdges(), ug::MarkForRefinement_EdgeDirection(), ug::Partitioner_DynamicBisection< TElem, dim >::partition(), ug::PartitionDomain_MetisKWay(), ug::PartitionDomain_RegularGrid(), ug::PartitionMultiGrid_MetisKway(), ug::PartitionMultiGridLevel_MetisKway(), ug::PartitionMultiGridLevel_ParmetisKway(), ug::Partitioner_DynamicBisection< TElem, dim >::perform_bisection(), ug::GlobalFracturedMediaRefiner::perform_refinement(), ug::GlobalMultiGridRefiner::perform_refinement(), ug::ClusterElementStacks< elem_t, vector_t >::post_process(), ug::SmoothPartitionBounds< elem_t >::post_process(), ug::PostProcessDistInfos(), ug::PeriodicBoundaryManager::print_identification(), ug::PrintElementEdgeRatios(), ug::ProjectHierarchyToSubdivisionLimit(), ug::SurfaceView::refresh_surface_states(), ug::DistributedGridManager::reset_elem_infos(), ug::GlobalFracturedMediaRefiner::save_marks_to_file(), ug::GlobalMultiGridRefiner::save_marks_to_file(), ug::SaveGridHierarchyTransformed(), ug::SaveParallelGridLayout(), ug::SaveSurfaceViewTransformed(), ug::SelectNonShadowsAdjacentToShadowsOnLevel(), ug::SelectUnselectedRootElementsAsVMasters(), and ug::TetrahedralizeHybridTetOctGrid().

◆ end() [4/4]

template<class TElem >
geometry_traits<TElem>::const_iterator ug::MultiGrid::end ( int  level) const
inline

◆ face_created()

void ug::MultiGrid::face_created ( Grid grid,
Face f,
GridObject pParent = NULL,
bool  replacesParent = false 
)
virtual

In order to correctly register f in the hierarchy, we have to replace pParent with f in the list of children of pParents parent. This means that if a grid-observer registered after the multi-grid itself, iterates over the list of children of pParents parent in its face_created method, it won't find pParent.

Reimplemented from ug::GridObserver.

References ug::MGFaceInfo::add_child(), ug::GridObject::base_object_id(), ug::MGFaceInfo::child_edge(), ug::MGFaceInfo::child_face(), ug::MGFaceInfo::child_vertex(), create_child_info(), element_created(), ug::FACE, get_info(), get_parent(), has_children(), hierarchical_insertion_enabled(), ug::MGFaceInfo::num_child_edges(), ug::MGFaceInfo::num_child_faces(), set_parent(), set_parent_type(), UG_ASSERT, and ug::VOLUME.

◆ face_to_be_erased()

void ug::MultiGrid::face_to_be_erased ( Grid grid,
Face f,
Face replacedBy = NULL 
)
virtual

Notified whenever an element of the given type is erased from the given grid.

Erase callbacks are called in reverse order in which the GridObservers were registered at the given grid.

if replacedBy != NULL the erased object is only replaced by another grid object of the same base type. This usually happens when constraining objects are replaced by regular objects in refinements. (E.g. a constraining edge by become a regular Edge; note that both objects are of type Edge*).

Reimplemented from ug::GridObserver.

References ug::GridObject::base_object_id(), element_to_be_erased(), ug::FACE, get_parent(), and ug::VOLUME.

◆ get_child() [1/6]

template<class TChild >
TChild * ug::MultiGrid::get_child ( GridObject elem,
size_t  ind 
) const

returns the i-th child of the given child-type

References ug::GridObject::base_object_id(), ug::EDGE, ug::FACE, ug::VERTEX, and ug::VOLUME.

◆ get_child() [2/6]

template<class TChild , class TElem >
TChild* ug::MultiGrid::get_child ( TElem *  elem,
size_t  ind 
) const
inline

returns the i-th child of the given child-type

References get_child().

Referenced by ug::GridFunctionComponentSpace< TGridFunction >::add_distance_values(), ug::GridFunctionComponentSpace< TGridFunction >::add_norm_values(), ug::AssembleInjectionByAverageOfChildren(), ug::AssignVerticalMasterAndSlaveStates(), ug::CheckElementConsistency(), ug::CheckHangingNodeConsistency(), ug::CheckMultiGridConsistencyImpl(), ug::SurfaceView::collect_associated(), ug::ConstructDualGraphMG(), ug::Partitioner_DynamicBisection< TElem, dim >::copy_partitions_to_children(), ug::DeselectFamily(), ug::DeserializeMultiGridElements(), ug::PiecewiseConstantElemTransfer< TDomain >::do_restrict(), ug::StdLagrangeElemTransfer< TDomain >::do_restrict(), ug::CrouzeixRaviartElemTransfer< TDomain >::do_restrict(), ug::P1LagrangeElemTransfer< TDomain >::do_restrict(), ug::CompositeConvCheck< TVector, TDomain >::extract_dof_indices(), ug::Partitioner_DynamicBisection< TElem, dim >::gather_weights_from_level(), get_child(), ug::PeriodicBoundaryManager::handle_creation(), ug::IsSubSurfaceElement(), ug::PartitionMultiGridLevel_MetisKway(), ug::PartitionMultiGridLevel_ParmetisKway(), ug::HangingNodeRefiner_MultiGrid::perform_coarsening(), ug::PiecewiseConstantElemTransfer< TDomain >::prolongate(), ug::P1LagrangeElemTransfer< TDomain >::prolongate(), ug::CrouzeixRaviartElemTransfer< TDomain >::prolongate(), ug::StdLagrangeElemTransfer< TDomain >::prolongate(), ug::ProlongateElemwise(), ug::DoFDistribution::reinit(), ug::HangingNodeRefiner_MultiGrid::restrict_selection_to_coarsen_families(), ug::RestrictElemwise(), and ug::RestrictP1().

◆ get_child() [3/6]

template<class TElem >
Edge* ug::MultiGrid::get_child ( TElem *  elem,
size_t  ind,
const Edge  
) const
inlineprotected

returning the i-th child of the type of the dummy-argument.

References get_child_edge().

◆ get_child() [4/6]

template<class TElem >
Face* ug::MultiGrid::get_child ( TElem *  elem,
size_t  ind,
const Face  
) const
inlineprotected

returning the i-th child of the type of the dummy-argument.

References get_child_face().

◆ get_child() [5/6]

template<class TElem >
Vertex* ug::MultiGrid::get_child ( TElem *  elem,
size_t  ind,
const Vertex  
) const
inlineprotected

returning the i-th child of the type of the dummy-argument.

References get_child_vertex().

◆ get_child() [6/6]

template<class TElem >
Volume* ug::MultiGrid::get_child ( TElem *  elem,
size_t  ind,
const Volume  
) const
inlineprotected

returning the i-th child of the type of the dummy-argument.

References get_child_volume().

◆ get_child_edge() [1/2]

template<class TElem >
Edge* ug::MultiGrid::get_child_edge ( TElem *  elem,
size_t  ind 
) const
inline

Returns the child edges of the given element or NULL if there is none.

References get_info().

Referenced by ug::HangingNodeRefiner_MultiGrid::assign_hnode_marks(), get_child(), and ug::SelectChildrenOfSelectedShadowRimEdges().

◆ get_child_edge() [2/2]

Edge* ug::MultiGrid::get_child_edge ( Vertex ,
size_t   
) const
inline

Returns the child edges of the given element or NULL if there is none.

◆ get_child_face() [1/3]

Face* ug::MultiGrid::get_child_face ( Edge ,
size_t   
) const
inline

Returns the child faces of the given element or NULL if there is none.

◆ get_child_face() [2/3]

template<class TElem >
Face* ug::MultiGrid::get_child_face ( TElem *  elem,
size_t  ind 
) const
inline

Returns the child faces of the given element or NULL if there is none.

References get_info().

Referenced by get_child(), and ug::SelectChildrenOfSelectedShadowRimFaces().

◆ get_child_face() [3/3]

Face* ug::MultiGrid::get_child_face ( Vertex ,
size_t   
) const
inline

Returns the child faces of the given element or NULL if there is none.

◆ get_child_vertex()

◆ get_child_volume() [1/2]

template<class TElem >
Volume* ug::MultiGrid::get_child_volume ( TElem *  ,
size_t   
) const
inline

Returns the child volumes of the given element or NULL if there is none.

◆ get_child_volume() [2/2]

Volume* ug::MultiGrid::get_child_volume ( Volume elem,
size_t  ind 
) const
inline

Returns the child volumes of the given element or NULL if there is none.

References get_info().

Referenced by get_child().

◆ get_grid_objects() [1/3]

GridObjectCollection ug::Grid::get_grid_objects
virtual

returns the the GridObjectCollection of the grid:

Reimplemented from ug::Grid.

◆ get_grid_objects() [2/3]

virtual GridObjectCollection ug::MultiGrid::get_grid_objects ( )
inlinevirtual

returns the the GridObjectCollection of the grid:

Reimplemented from ug::Grid.

References ug::GridSubsetHandler::get_grid_objects(), and m_hierarchy.

◆ get_grid_objects() [3/3]

◆ get_hierarchy_handler()

SubsetHandler& ug::MultiGrid::get_hierarchy_handler ( )
inline

this method may be removed in future versions of the MultiGrid-class.

You really shouldn't use this method!!!

References m_hierarchy.

Referenced by ug::bridge::SaveGridHierarchy(), and ug::SaveGridHierarchyTransformed().

◆ get_info() [1/8]

MultiGrid::EdgeInfo & ug::MultiGrid::get_info ( Edge e)
inlineprotected

References m_aaEdgeInf.

◆ get_info() [2/8]

const MultiGrid::EdgeInfo & ug::MultiGrid::get_info ( Edge e) const
inlineprotected

References m_aaEdgeInf.

◆ get_info() [3/8]

MultiGrid::FaceInfo & ug::MultiGrid::get_info ( Face f)
inlineprotected

References m_aaFaceInf, and UG_THROW.

◆ get_info() [4/8]

const MultiGrid::FaceInfo & ug::MultiGrid::get_info ( Face f) const
inlineprotected

References m_aaFaceInf.

◆ get_info() [5/8]

◆ get_info() [6/8]

const MultiGrid::VertexInfo & ug::MultiGrid::get_info ( Vertex v) const
inlineprotected

References m_aaVrtInf.

◆ get_info() [7/8]

MultiGrid::VolumeInfo & ug::MultiGrid::get_info ( Volume v)
inlineprotected

References m_aaVolInf, and UG_THROW.

◆ get_info() [8/8]

const MultiGrid::VolumeInfo & ug::MultiGrid::get_info ( Volume v) const
inlineprotected

References m_aaVolInf.

◆ get_level()

◆ get_parent() [1/5]

GridObject* ug::MultiGrid::get_parent ( Edge o) const
inline

◆ get_parent() [2/5]

GridObject* ug::MultiGrid::get_parent ( Face o) const
inline

References m_aaParentFACE.

◆ get_parent() [3/5]

GridObject * ug::MultiGrid::get_parent ( GridObject parent) const

References ug::GridObject::base_object_id(), ug::EDGE, ug::FACE, ug::VERTEX, and ug::VOLUME.

Referenced by ug::ApplySmoothManifoldPosToTopLevelButterflyScheme(), ug::ApplySmoothManifoldPosToTopLevelLoopScheme(), ug::StdTransfer< TDomain, TAlgebra >::assemble_prolongation(), ug::StdTransfer< TDomain, TAlgebra >::assemble_prolongation_p1(), ug::StdTransfer< TDomain, TAlgebra >::assemble_restriction(), ug::AssembleInjectionForP1Lagrange(), ug::AssignVerticalMasterAndSlaveStates(), associate_parent(), ug::CheckElementConsistency(), ug::CheckHangingNodeConsistency(), ug::CheckLocalParentTypes(), ug::CheckMultiGridConsistencyImpl(), ug::SurfaceView::collect_associated(), ug::HangingNodeRefiner_MultiGrid::collect_objects_for_coarsen(), ug::ConstructDualGraphMG(), ug::DeserializeMultiGridElements(), edge_created(), edge_to_be_erased(), face_created(), face_to_be_erased(), ug::AdaptiveRegularRefiner_MultiGrid::get_parents_of_marked_closure_elements(), ug::SurfaceView::mark_shadowing(), ug::PartitionMultiGridLevel_MetisKway(), ug::HangingNodeRefiner_MultiGrid::perform_coarsening(), ug::ProjectHierarchyToSubdivisionLimit(), ug::ProlongateP1(), ug::MGHNodeAdjuster::ref_marks_changed(), ug::DoFDistribution::reinit(), ug::HangingNodeRefiner_MultiGrid::restrict_selection_to_coarsen_families(), ug::AdaptionSurfaceGridFunction< TDomain >::select_parents(), ug::SelectParents(), ug::TetrahedralizeHybridTetOctGrid(), vertex_created(), vertex_to_be_erased(), volume_created(), volume_to_be_erased(), and ug::WriteParent().

◆ get_parent() [4/5]

GridObject* ug::MultiGrid::get_parent ( Vertex o) const
inline

◆ get_parent() [5/5]

GridObject* ug::MultiGrid::get_parent ( Volume o) const
inline

References m_aaParentVOL.

◆ has_children()

◆ hierarchical_insertion_enabled()

◆ init()

◆ level_required()

void ug::MultiGrid::level_required ( int  lvl)
inline

creates new (empty) levels until num_levels() == lvl+1

References create_levels(), m_hierarchy, and ug::ISubsetHandler::num_subsets().

Referenced by create(), create_by_cloning(), and element_created().

◆ num() [1/2]

template<class TGeomObj >
size_t ug::Grid::num ( class TGeomObj  )

References ug::CompareVertices().

◆ num() [2/2]

◆ num_child_edges() [1/2]

template<class TElem >
size_t ug::MultiGrid::num_child_edges ( TElem *  elem) const
inline

◆ num_child_edges() [2/2]

size_t ug::MultiGrid::num_child_edges ( Vertex ) const
inline

Returns the number of child edges.

◆ num_child_faces() [1/3]

size_t ug::MultiGrid::num_child_faces ( Edge ) const
inline

Returns the number of child faces.

◆ num_child_faces() [2/3]

template<class TElem >
size_t ug::MultiGrid::num_child_faces ( TElem *  elem) const
inline

◆ num_child_faces() [3/3]

size_t ug::MultiGrid::num_child_faces ( Vertex ) const
inline

Returns the number of child faces.

◆ num_child_vertices()

template<class TElem >
size_t ug::MultiGrid::num_child_vertices ( TElem *  elem) const
inline

Returns the number of child vertices.

References get_info(), and ug::MGVertexInfo::num_child_vertices().

Referenced by num_children(), and ug::MGHNodeAdjuster::ref_marks_changed().

◆ num_child_volumes() [1/2]

template<class TElem >
size_t ug::MultiGrid::num_child_volumes ( TElem *  ) const
inline

Returns the number of child volumes.

◆ num_child_volumes() [2/2]

size_t ug::MultiGrid::num_child_volumes ( Volume elem) const
inline

Returns the number of child volumes.

References get_info().

Referenced by num_children().

◆ num_children() [1/6]

template<class TChild >
size_t ug::MultiGrid::num_children ( GridObject elem) const

returns the number of children of the given child-type

References ug::GridObject::base_object_id(), ug::EDGE, ug::FACE, ug::VERTEX, and ug::VOLUME.

◆ num_children() [2/6]

template<class TChild , class TElem >
size_t ug::MultiGrid::num_children ( TElem *  elem) const
inline

returns the number of children of the given child-type

References num_children().

Referenced by ug::GridFunctionComponentSpace< TGridFunction >::add_distance_values(), ug::GridFunctionComponentSpace< TGridFunction >::add_norm_values(), ug::StdTransfer< TDomain, TAlgebra >::assemble_restriction(), ug::AssembleInjectionByAverageOfChildren(), ug::AssignVerticalMasterAndSlaveStates(), ug::CheckElementConsistency(), ug::CheckHangingNodeConsistency(), ug::CheckMultiGridConsistencyImpl(), ug::SurfaceView::collect_associated(), ug::ConstructDualGraphMG(), ug::Partitioner_DynamicBisection< TElem, dim >::copy_partitions_to_children(), ug::DeselectFamily(), ug::DeserializeMultiGridElements(), ug::PiecewiseConstantElemTransfer< TDomain >::do_restrict(), ug::StdLagrangeElemTransfer< TDomain >::do_restrict(), ug::CrouzeixRaviartElemTransfer< TDomain >::do_restrict(), ug::P1LagrangeElemTransfer< TDomain >::do_restrict(), ug::CompositeConvCheck< TVector, TDomain >::extract_dof_indices(), ug::Partitioner_DynamicBisection< TElem, dim >::gather_weights_from_level(), ug::PeriodicBoundaryManager::handle_creation(), ug::IsSubSurfaceElement(), num_children(), ug::PartitionMultiGridLevel_MetisKway(), ug::PartitionMultiGridLevel_ParmetisKway(), ug::HangingNodeRefiner_MultiGrid::perform_coarsening(), ug::PiecewiseConstantElemTransfer< TDomain >::prolongate(), ug::P1LagrangeElemTransfer< TDomain >::prolongate(), ug::CrouzeixRaviartElemTransfer< TDomain >::prolongate(), ug::StdLagrangeElemTransfer< TDomain >::prolongate(), ug::ProlongateElemwise(), ug::DoFDistribution::reinit(), ug::HangingNodeRefiner_MultiGrid::restrict_selection_to_coarsen_families(), ug::RestrictElemwise(), and ug::StdInjection< TDomain, TAlgebra >::set_identity_on_pure_surface().

◆ num_children() [3/6]

template<class TElem >
size_t ug::MultiGrid::num_children ( TElem *  elem,
const Edge  
) const
inlineprotected

returning the number of children of the type of the dummy-argument.

References num_child_edges().

◆ num_children() [4/6]

template<class TElem >
size_t ug::MultiGrid::num_children ( TElem *  elem,
const Face  
) const
inlineprotected

returning the number of children of the type of the dummy-argument.

References num_child_faces().

◆ num_children() [5/6]

template<class TElem >
size_t ug::MultiGrid::num_children ( TElem *  elem,
const Vertex  
) const
inlineprotected

returning the number of children of the type of the dummy-argument.

References num_child_vertices().

◆ num_children() [6/6]

template<class TElem >
size_t ug::MultiGrid::num_children ( TElem *  elem,
const Volume  
) const
inlineprotected

returning the number of children of the type of the dummy-argument.

References num_child_volumes().

◆ num_children_total()

template<class TElem >
size_t ug::MultiGrid::num_children_total ( TElem *  elem) const
inline

returns the total number of children and grand-children.

Only children of the same type as the given elements are regarded here.

Referenced by ug::PartitionMultiGridLevel_MetisKway(), and ug::PartitionMultiGridLevel_ParmetisKway().

◆ num_levels()

size_t ug::MultiGrid::num_levels ( ) const
inline

number of levels

References m_hierarchy, and ug::ISubsetHandler::num_subsets().

Referenced by ug::ApplySmoothManifoldPosToTopLevelButterflyScheme(), ug::ApplySmoothManifoldPosToTopLevelLoopScheme(), ug::ApplySmoothSubdivisionSurfacesToTopLevel(), ug::ApplySmoothSubdivisionVolumesToTopLevel(), ug::GlobalFracturedMediaRefiner::assign_elem_and_side_marks(), ug::MultiGridSubsetHandler::assign_grid(), ug::MGSelector::assign_grid(), ug::DegeneratedLayerManager< dim >::assign_middle_subset(), ug::AssignSubsetsByLevel(), begin(), ug::CalculateNumManifoldEdgesVertexAttachmentInParentLevel(), ug::CalculateSmoothCreaseManifoldPosInParentLevelLoopScheme(), ug::CalculateSmoothManifoldPosInParentLevelButterflyScheme(), ug::CalculateSmoothManifoldPosInParentLevelLoopScheme(), ug::CheckMultiGridConsistencyImpl(), ug::ConstructDualGraphMG(), create_levels(), ug::CreateLayoutsFromDistInfos(), end(), ug::LoadBalancer::estimate_distribution_quality_impl(), ug::Partitioner_DynamicBisection< TElem, dim >::gather_weights_from_level(), ug::InitLinearManifoldSubsetHandler(), ug::SurfaceView::mark_shadowing(), ug::GlobalFracturedMediaRefiner::mark_sides_of_marked_top_level_elements(), ug::DegeneratedLayerManager< dim >::mark_vertices(), ug::GlobalFracturedMediaRefiner::num_marked_elems(), ug::GlobalMultiGridRefiner::num_marked_elems(), ug::PartitionMultiGrid_MetisKway(), ug::PartitionMultiGridLevel_MetisKway(), ug::PartitionMultiGridLevel_ParmetisKway(), ug::GlobalFracturedMediaRefiner::perform_refinement(), ug::GlobalMultiGridRefiner::perform_refinement(), ug::PrintElementEdgeRatios(), ug::ProjectHierarchyToSubdivisionLimit(), ug::SurfaceView::refresh_surface_states(), ug::GlobalFracturedMediaRefiner::save_marks_to_file(), ug::GlobalMultiGridRefiner::save_marks_to_file(), ug::SaveGridHierarchyTransformed(), ug::SaveParallelGridLayout(), ug::SaveSurfaceViewTransformed(), ug::SelectNonShadowsAdjacentToShadowsOnLevel(), and ug::TetrahedralizeHybridTetOctGrid().

◆ parent_type()

template<class TElem >
char ug::MultiGrid::parent_type ( TElem *  elem) const

returns the object-type of the parent of a given object

References m_aaParentType.

Referenced by ug::CheckLocalParentTypes(), element_created(), ug::HangingNodeRefiner_MultiGrid::perform_coarsening(), and ug::WriteParent().

◆ release_child_info() [1/4]

void ug::MultiGrid::release_child_info ( Edge o)
inlineprotected

releases the info-object for the given object (if necessary)

◆ release_child_info() [2/4]

void ug::MultiGrid::release_child_info ( Face o)
inlineprotected

releases the info-object for the given object (if necessary)

References m_aaFaceInf.

◆ release_child_info() [3/4]

void ug::MultiGrid::release_child_info ( Vertex o)
inlineprotected

releases the info-object for the given object (if necessary)

Referenced by element_to_be_erased(), and ~MultiGrid().

◆ release_child_info() [4/4]

void ug::MultiGrid::release_child_info ( Volume o)
inlineprotected

releases the info-object for the given object (if necessary)

References m_aaVolInf.

◆ remove_child() [1/2]

template<class TChild >
void ug::MultiGrid::remove_child ( GridObject p,
TChild *  c 
)
protected

removes a child from the given object

References ug::EDGE, ug::FACE, p, remove_child(), ug::VERTEX, and ug::VOLUME.

◆ remove_child() [2/2]

template<class TParent , class TChild >
void ug::MultiGrid::remove_child ( TParent *  p,
TChild *  c 
)
protected

removes a child from the given object

References get_info(), p, and ug::MGVertexInfo::remove_child().

Referenced by associate_parent(), and remove_child().

◆ set_parent() [1/4]

void ug::MultiGrid::set_parent ( Edge o,
GridObject p 
)
inlineprotected

sets the parent for the given object

References get_info(), ug::MGVertexInfo::m_pParent, and p.

◆ set_parent() [2/4]

void ug::MultiGrid::set_parent ( Face o,
GridObject p 
)
inlineprotected

sets the parent for the given object

References m_aaParentFACE, and p.

◆ set_parent() [3/4]

◆ set_parent() [4/4]

void ug::MultiGrid::set_parent ( Volume o,
GridObject p 
)
inlineprotected

sets the parent for the given object

References m_aaParentVOL, and p.

◆ set_parent_type()

template<class TElem >
void ug::MultiGrid::set_parent_type ( TElem *  elem,
char  type 
)

sets the object-type of the parent of a given object

The parent type is normally handled internally. However, e.g. during parallel redistribution it may have to be set from outside (e.g. if a parent element hasn't been transfered to the same process as its children).

References m_aaParentType.

Referenced by associate_parent(), ug::DeserializeMultiGridElements(), edge_created(), element_created(), face_created(), vertex_created(), and volume_created().

◆ top_level()

◆ vertex_created()

void ug::MultiGrid::vertex_created ( Grid grid,
Vertex vrt,
GridObject pParent = NULL,
bool  replacesParent = false 
)
virtual

In order to correctly register vrt in the hierarchy, we have to replace pParent with vrt in the list of children of pParents parent. This means that if a grid-observer registered after the multi-grid itself, iterates over the list of children of pParents parent in its vertex_created method, it won't find pParent.

Reimplemented from ug::GridObserver.

References ug::MGVertexInfo::add_child(), ug::GridObject::base_object_id(), ug::MGVertexInfo::child_vertex(), ug::EDGE, element_created(), ug::FACE, get_info(), get_parent(), hierarchical_insertion_enabled(), set_parent(), set_parent_type(), UG_ASSERT, ug::VERTEX, and ug::VOLUME.

◆ vertex_to_be_erased()

void ug::MultiGrid::vertex_to_be_erased ( Grid grid,
Vertex vrt,
Vertex replacedBy = NULL 
)
virtual

Notified whenever an element of the given type is erased from the given grid.

Erase callbacks are called in reverse order in which the GridObservers were registered at the given grid.

if replacedBy != NULL the erased object is only replaced by another grid object of the same base type. This usually happens when constraining objects are replaced by regular objects in refinements. (E.g. a constraining edge by become a regular Edge; note that both objects are of type Edge*).

Reimplemented from ug::GridObserver.

References ug::GridObject::base_object_id(), ug::EDGE, element_to_be_erased(), ug::FACE, get_parent(), ug::VERTEX, and ug::VOLUME.

◆ volume_created()

void ug::MultiGrid::volume_created ( Grid grid,
Volume vol,
GridObject pParent = NULL,
bool  replacesParent = false 
)
virtual

In order to correctly register vol in the hierarchy, we have to replace pParent with vol in the list of children of pParents parent. This means that if a grid-observer registered after the multi-grid itself, iterates over the list of children of pParents parent in its volume_created method, it won't find pParent.

Reimplemented from ug::GridObserver.

References ug::MGVolumeInfo::add_child(), ug::GridObject::base_object_id(), ug::MGVolumeInfo::child_edge(), ug::MGVolumeInfo::child_face(), ug::MGVolumeInfo::child_vertex(), ug::MGVolumeInfo::child_volume(), create_child_info(), element_created(), get_info(), get_parent(), has_children(), hierarchical_insertion_enabled(), ug::MGVolumeInfo::num_child_edges(), ug::MGVolumeInfo::num_child_faces(), ug::MGVolumeInfo::num_child_volumes(), set_parent(), set_parent_type(), UG_ASSERT, and ug::VOLUME.

◆ volume_to_be_erased()

void ug::MultiGrid::volume_to_be_erased ( Grid grid,
Volume vol,
Volume replacedBy = NULL 
)
virtual

Notified whenever an element of the given type is erased from the given grid.

Erase callbacks are called in reverse order in which the GridObservers were registered at the given grid.

if replacedBy != NULL the erased object is only replaced by another grid object of the same base type. This usually happens when constraining objects are replaced by regular objects in refinements. (E.g. a constraining edge by become a regular Edge; note that both objects are of type Edge*).

Reimplemented from ug::GridObserver.

References ug::GridObject::base_object_id(), element_to_be_erased(), get_parent(), UG_ASSERT, and ug::VOLUME.

Friends And Related Function Documentation

◆ MGEdgeInfo

friend struct MGEdgeInfo
friend

◆ MGFaceInfo

friend struct MGFaceInfo
friend

◆ MGVertexInfo

friend struct MGVertexInfo
friend

◆ MGVolumeInfo

friend struct MGVolumeInfo
friend

Member Data Documentation

◆ m_aaEdgeInf

Grid::EdgeAttachmentAccessor<AEdgeInfo> ug::MultiGrid::m_aaEdgeInf
protected

Referenced by get_info(), and init().

◆ m_aaFaceInf

Grid::FaceAttachmentAccessor<AFaceInfo> ug::MultiGrid::m_aaFaceInf
protected

◆ m_aaParentFACE

Grid::FaceAttachmentAccessor<AParent> ug::MultiGrid::m_aaParentFACE
protected

Referenced by get_parent(), init(), and set_parent().

◆ m_aaParentType

MultiElementAttachmentAccessor<AParentType> ug::MultiGrid::m_aaParentType
protected

Referenced by init(), parent_type(), and set_parent_type().

◆ m_aaParentVOL

Grid::VolumeAttachmentAccessor<AParent> ug::MultiGrid::m_aaParentVOL
protected

Referenced by get_parent(), init(), and set_parent().

◆ m_aaVolInf

Grid::VolumeAttachmentAccessor<AVolumeInfo> ug::MultiGrid::m_aaVolInf
protected

◆ m_aaVrtInf

Grid::VertexAttachmentAccessor<AVertexInfo> ug::MultiGrid::m_aaVrtInf
protected

Referenced by get_info(), and init().

◆ m_aEdgeInfo

AEdgeInfo ug::MultiGrid::m_aEdgeInfo
protected

Referenced by init().

◆ m_aFaceInfo

AFaceInfo ug::MultiGrid::m_aFaceInfo
protected

Referenced by init().

◆ m_aParent

AParent ug::MultiGrid::m_aParent
protected

Referenced by init().

◆ m_aParentType

AParentType ug::MultiGrid::m_aParentType
protected

Referenced by init().

◆ m_aVertexInfo

AVertexInfo ug::MultiGrid::m_aVertexInfo
protected

Referenced by init().

◆ m_aVolumeInfo

AVolumeInfo ug::MultiGrid::m_aVolumeInfo
protected

Referenced by init().

◆ m_bHierarchicalInsertion

bool ug::MultiGrid::m_bHierarchicalInsertion
protected

◆ m_hierarchy


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