ug4
|
#include <multi_grid.h>
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 > | |
Vertex * | get_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) |
SubsetHandler & | get_hierarchy_handler () |
this method may be removed in future versions of the MultiGrid-class. More... | |
template<class TElem > | |
int | get_level (TElem *elem) const |
GridObject * | get_parent (Edge *o) const |
GridObject * | get_parent (Face *o) const |
GridObject * | get_parent (GridObject *parent) const |
GridObject * | get_parent (Vertex *o) const |
GridObject * | get_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 > | |
Edge * | get_child_edge (TElem *elem, size_t ind) const |
Returns the child edges of the given element or NULL if there is none. More... | |
Edge * | get_child_edge (Vertex *, size_t) const |
Returns the child edges of the given element or NULL if there is none. More... | |
template<class TElem > | |
Face * | get_child_face (TElem *elem, size_t ind) const |
Returns the child faces of the given element or NULL if there is none. More... | |
Face * | get_child_face (Vertex *, size_t) const |
Returns the child faces of the given element or NULL if there is none. More... | |
Face * | get_child_face (Edge *, size_t) const |
Returns the child faces of the given element or NULL if there is none. More... | |
Volume * | get_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 > | |
Volume * | get_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 >::AttachmentPipe & | get_attachment_pipe () |
returns the attachment-pipe in which data associated with the given objects-types are stored. More... | |
Edge * | get_edge (const EdgeVertices &ev) |
returns the edge that is described by ev. More... | |
Edge * | get_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... | |
Edge * | get_edge (Vertex *v1, Vertex *v2) |
returns the edge between v1 and v2, if it exists. Returns NULL if not. More... | |
Edge * | get_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... | |
Vertex * | get_element (const VertexDescriptor &vd) |
This overload is only useful to avoid compile issues in templated code. More... | |
Face * | get_face (const FaceVertices &fv) |
returns the face that is described by fv. More... | |
Face * | get_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::side * | get_side (Edge *obj, size_t side) |
Face::side * | get_side (Face *obj, size_t side) |
Vertex::side * | get_side (Vertex *obj, size_t side) |
This method returns the i-th side of an Edge, Face or Volume. More... | |
Volume::side * | get_side (Volume *obj, size_t side) |
Volume * | get_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 |
Grid & | operator= (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 () |
DistributedGridManager * | distributed_grid_manager () |
returns a pointer to the associated distributed grid manager. More... | |
const DistributedGridManager * | distributed_grid_manager () const |
returns a pointer to the associated distributed grid manager. More... | |
PeriodicBoundaryManager * | periodic_boundary_manager () |
returns a pointer to the associated periodic boundary manager. More... | |
const PeriodicBoundaryManager * | periodic_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... | |
Edge * | get_element (const EdgeVertices &ev) |
returns the element for the given vertices. More... | |
Face * | get_element (const FaceVertices &fv) |
returns the element for the given vertices. More... | |
Volume * | get_element (const VolumeVertices &vv) |
returns the element for the given vertices. More... | |
GridObject * | get_opposing_object (Vertex *vrt, Face *elem) |
returns the geometric object on the opposing side of the given vertex regarding the given element. More... | |
GridObject * | get_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< EdgeInfo > | AEdgeInfo |
typedef Attachment< FaceInfo * > | AFaceInfo |
typedef Attachment< GridObject * > | AParent |
typedef Attachment< char > | AParentType |
typedef Attachment< VertexInfo > | AVertexInfo |
typedef Attachment< VolumeInfo * > | AVolumeInfo |
typedef MGEdgeInfo | EdgeInfo |
typedef MGFaceInfo | FaceInfo |
typedef MGVertexInfo | VertexInfo |
typedef MGVolumeInfo | VolumeInfo |
Protected Types inherited from ug::Grid | |
typedef Attachment< EdgeContainer > | AEdgeContainer |
typedef Attachment< FaceContainer > | AFaceContainer |
typedef Attachment< int > | AMark |
typedef Attachment< VertexContainer > | AVertexContainer |
typedef Attachment< VolumeContainer > | AVolumeContainer |
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... | |
EdgeInfo & | get_info (Edge *e) |
const EdgeInfo & | get_info (Edge *e) const |
FaceInfo & | get_info (Face *f) |
const FaceInfo & | get_info (Face *f) const |
VertexInfo & | get_info (Vertex *v) |
const VertexInfo & | get_info (Vertex *v) const |
VolumeInfo & | get_info (Volume *v) |
const VolumeInfo & | get_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 > | |
Vertex * | get_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 > | |
Edge * | get_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 > | |
Face * | get_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 > | |
Volume * | get_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 >::ElementStorage & | element_storage () |
returns the element storage for a given element type More... | |
template<class TElem > | |
const traits< TElem >::ElementStorage & | element_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 > | |
Edge * | find_edge_in_associated_edges (TGeomObj *obj, const EdgeVertices &ev) |
template<class TGeomObj > | |
Face * | find_face_in_associated_faces (TGeomObj *obj, const FaceVertices &fv) |
template<class TGeomObj > | |
Volume * | find_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... | |
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< Edge > | edge_traits |
typedef ug::AttachmentPipe< Edge *, EdgeElementStorage > | EdgeAttachmentPipe |
typedef std::vector< Edge * > | EdgeContainer |
Container used to store associated edges. More... | |
typedef traits< Face > | face_traits |
typedef ug::AttachmentPipe< Face *, FaceElementStorage > | FaceAttachmentPipe |
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< Vertex > | vertex_traits |
Convenience access to grid elements. More... | |
typedef ug::AttachmentPipe< Vertex *, VertexElementStorage > | VertexAttachmentPipe |
the attachment-pipe used by Grid More... | |
typedef std::vector< Vertex * > | VertexContainer |
Container used to store associated vertices. More... | |
typedef traits< Volume > | volume_traits |
typedef ug::AttachmentPipe< Volume *, VolumeElementStorage > | VolumeAttachmentPipe |
typedef std::vector< Volume * > | VolumeContainer |
Container used to store associated volumes. More... | |
Inherits from
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.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
ug::MultiGrid::MultiGrid | ( | ) |
References init().
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().
|
virtual |
References release_child_info().
|
protected |
adds a child to the given object
References add_child(), ug::EDGE, ug::FACE, p, ug::VERTEX, and ug::VOLUME.
|
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().
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().
geometry_traits< TGeomObj >::iterator ug::Grid::begin | ( | class TGeomObj | ) |
geometry_traits< TGeomObj >::const_iterator ug::Grid::begin | ( | class TGeomObj | ) |
|
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().
|
inline |
References ug::GridSubsetHandler::begin(), m_hierarchy, and num_levels().
void ug::MultiGrid::check_edge_elem_infos | ( | int | level | ) | const |
for debug purposes
References get_info(), and UG_LOG.
void ug::MultiGrid::check_face_elem_infos | ( | int | level | ) | const |
for debug purposes
References get_info(), and UG_LOG.
void ug::MultiGrid::check_volume_elem_infos | ( | int | level | ) | const |
for debug purposes
References get_info(), and UG_LOG.
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().
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.
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.
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.
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().
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.
EdgeIterator ug::Grid::create_by_cloning |
this method creates a new edge, which has the same type as pCloneMe.
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.
FaceIterator ug::Grid::create_by_cloning |
this method creates a new face, which has the same type as pCloneMe.
VertexIterator ug::Grid::create_by_cloning |
this method creates a new vertex, which has the same type as pCloneMe.
VertexIterator ug::MultiGrid::create_by_cloning | ( | Vertex * | pCloneMe, |
int | level | ||
) |
this method creates a new vertex, which has the same type as pCloneMe.
References ug::GridSubsetHandler::assign_subset(), ug::Grid::create_by_cloning(), level_required(), and m_hierarchy.
Referenced by ug::CopySelected(), ug::CopySelectedElements(), ug::GlobalFracturedMediaRefiner::perform_refinement(), and ug::GlobalMultiGridRefiner::perform_refinement().
VolumeIterator ug::Grid::create_by_cloning |
this method creates a new volume, which has the same type as pCloneMe.
References ug::Grid::set_parallel().
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.
|
inlineprotected |
creates the info-object for the given object (if necessary)
|
inlineprotected |
creates the info-object for the given object (if necessary)
References m_aaFaceInf.
|
inlineprotected |
creates the info-object for the given object (if necessary)
Referenced by add_child(), element_created(), face_created(), and volume_created().
|
inlineprotected |
creates the info-object for the given object (if necessary)
References m_aaVolInf.
|
protected |
References ug::GMMGCT_LEVEL_ADDED, m_hierarchy, ug::Grid::message_hub(), num_levels(), and ug::ISubsetHandler::subset_required().
Referenced by level_required().
|
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.
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.
|
inlineprotected |
Referenced by edge_created(), face_created(), vertex_created(), and volume_created().
|
protected |
|
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.
|
protected |
this method is called for elements that havn't got any parent.
References get_info(), has_children(), release_child_info(), and ug::MGVertexInfo::unregister_from_children().
Referenced by edge_to_be_erased(), element_to_be_erased(), face_to_be_erased(), vertex_to_be_erased(), and volume_to_be_erased().
|
protected |
this method is called for elements with a parent.
References element_to_be_erased(), get_info(), and release_child_info().
|
virtual |
Reimplemented from ug::GridObserver.
void ug::MultiGrid::enable_hierarchical_insertion | ( | bool | bEnable | ) |
References m_bHierarchicalInsertion.
Referenced by ug::GlobalFracturedMediaRefiner::perform_refinement(), and ug::GlobalMultiGridRefiner::perform_refinement().
geometry_traits< TGeomObj >::iterator ug::Grid::end | ( | class TGeomObj | ) |
geometry_traits< TGeomObj >::const_iterator ug::Grid::end | ( | class TGeomObj | ) |
|
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().
|
inline |
References ug::GridSubsetHandler::end(), m_hierarchy, and num_levels().
|
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.
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.
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.
|
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().
|
inlineprotected |
returning the i-th child of the type of the dummy-argument.
References get_child_edge().
|
inlineprotected |
returning the i-th child of the type of the dummy-argument.
References get_child_face().
|
inlineprotected |
returning the i-th child of the type of the dummy-argument.
References get_child_vertex().
|
inlineprotected |
returning the i-th child of the type of the dummy-argument.
References get_child_volume().
|
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().
Returns the child edges of the given element or NULL if there is none.
Returns the child faces of the given element or NULL if there is none.
|
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().
Returns the child faces of the given element or NULL if there is none.
|
inline |
Returns the child vertex of the given element or NULL if there is none.
References ug::MGVertexInfo::child_vertex(), and get_info().
Referenced by ug::CheckElementConsistency(), ug::HangingNodeRefiner_MultiGrid::collect_child_corners(), ug::HangingNodeRefiner_MultiGrid::collect_objects_for_coarsen(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_2d(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_3d(), ug::HangingNodeRefiner_MultiGrid::get_center_vertex(), get_child(), ug::GlobalFracturedMediaRefiner::perform_refinement(), ug::GlobalMultiGridRefiner::perform_refinement(), ug::SubdivisionProjector::refinement_ends(), ug::SelectChildrenOfSelectedShadowVertices(), and ug::HangingNodeRefiner_MultiGrid::set_center_vertex().
|
inline |
Returns the child volumes of the given element or NULL if there is none.
Returns the child volumes of the given element or NULL if there is none.
References get_info().
Referenced by get_child().
|
virtual |
returns the the GridObjectCollection of the grid:
Reimplemented from ug::Grid.
|
inlinevirtual |
returns the the GridObjectCollection of the grid:
Reimplemented from ug::Grid.
References ug::GridSubsetHandler::get_grid_objects(), and m_hierarchy.
|
inline |
References ug::GridSubsetHandler::get_grid_objects_in_subset(), and m_hierarchy.
Referenced by ug::CopyGridLevel(), ug::CopyGridLevelElements(), ug::GlobalFracturedMediaRefiner::perform_refinement(), ug::GlobalMultiGridRefiner::perform_refinement(), ug::PrintGridElementNumbers(), and ug::SerializeMultiGridElements().
|
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().
|
inlineprotected |
References m_aaEdgeInf.
|
inlineprotected |
References m_aaEdgeInf.
|
inlineprotected |
References m_aaFaceInf, and UG_THROW.
|
inlineprotected |
References m_aaFaceInf.
|
inlineprotected |
References m_aaVrtInf.
Referenced by add_child(), check_edge_elem_infos(), check_face_elem_infos(), check_volume_elem_infos(), clear_child_connections(), edge_created(), element_created(), element_to_be_erased(), face_created(), get_child_edge(), get_child_face(), get_child_vertex(), get_child_volume(), get_parent(), has_children(), num_child_edges(), num_child_faces(), num_child_vertices(), num_child_volumes(), remove_child(), set_parent(), vertex_created(), and volume_created().
|
inlineprotected |
References m_aaVrtInf.
|
inlineprotected |
References m_aaVolInf, and UG_THROW.
|
inlineprotected |
References m_aaVolInf.
|
inline |
References ug::ISubsetHandler::get_subset_index(), and m_hierarchy.
Referenced by ug::DistributedGridManager::add_element_to_interface(), ug::MGSelector::add_to_list(), ug::MultiGridSubsetHandler::assign_subset_impl(), ug::CheckDistributedObjectConstraintTypes(), ug::CheckHangingNodeConsistency(), ug::CheckLocalParentTypes(), element_created(), ug::MGSelector::erase_from_list(), ug::SurfaceView::is_contained(), ug::PeriodicBoundaryManager::make_slave(), ug::MarkElementsAbsolute(), ug::PeriodicBoundaryManager::print_identification(), ug::ProlongateElemwise(), ug::ProlongateP1(), ug::RestrictElemwise(), ug::RestrictP1(), ug::SurfaceView::surface_state(), and ug::WriteDebugValuesToFile().
|
inline |
References get_info(), and ug::MGVertexInfo::m_pParent.
|
inline |
References m_aaParentFACE.
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().
|
inline |
References get_info(), and ug::MGVertexInfo::m_pParent.
|
inline |
References m_aaParentVOL.
|
inline |
References get_info(), and ug::MGVertexInfo::has_children().
Referenced by ug::AddEntriesToSurfaceIndexLayout(), ug::CheckHangingNodeConsistency(), clear_child_connections(), ug::CollectSurfaceViewElements(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_2d(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_3d(), ug::CreateLayoutsFromDistInfos(), element_to_be_erased(), face_created(), ug::DomainRayTracer::init(), ug::IsRegularSurfaceElem::is_ok(), ug::MarkAnisotropic_LongEdges(), ug::MarkForRefinement_AnisotropicDirection(), ug::ProlongateElemwise(), ug::MGHNodeAdjuster::ref_marks_changed(), ug::HangingNodeRefiner_MultiGrid::refinement_is_allowed(), ug::HangingNodeRefiner_MultiGrid::restrict_selection_to_surface_coarsen_elements(), ug::RestrictElemwise(), ug::RestrictP1(), ug::SelectChildrenOfSelectedShadowRimEdges(), ug::SelectChildrenOfSelectedShadowRimFaces(), ug::SelectChildrenOfSelectedShadowVertices(), volume_created(), and ug::ZRayTracer< TDomain >::ZRayTracer().
|
inline |
|
protected |
References ug::GridSubsetHandler::assign_grid(), ug::Grid::attach_to_all(), ug::Grid::attach_to_edges(), ug::Grid::attach_to_faces(), ug::Grid::attach_to_faces_dv(), ug::Grid::attach_to_vertices(), ug::Grid::attach_to_volumes(), ug::Grid::attach_to_volumes_dv(), ug::ISubsetHandler::enable_subset_inheritance(), m_aaEdgeInf, m_aaFaceInf, m_aaParentFACE, m_aaParentType, m_aaParentVOL, m_aaVolInf, m_aaVrtInf, m_aEdgeInfo, m_aFaceInfo, m_aParent, m_aParentType, m_aVertexInfo, m_aVolumeInfo, m_bHierarchicalInsertion, m_hierarchy, ug::OT_EDGE_OBSERVER, ug::OT_FACE_OBSERVER, ug::OT_VERTEX_OBSERVER, ug::OT_VOLUME_OBSERVER, and ug::Grid::register_observer().
Referenced by MultiGrid().
|
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().
size_t ug::Grid::num | ( | class TGeomObj | ) |
References ug::CompareVertices().
|
inline |
References m_hierarchy, and ug::GridSubsetHandler::num().
Referenced by ug::GlobalFracturedMediaRefiner::adjust_marks(), ug::ConstructDualGraphMG(), ug::ConstructDualGraphMGLevel(), ug::ParallelHangingNodeRefiner_MultiGrid::contains_edges(), ug::HangingNodeRefiner_MultiGrid::contains_edges(), ug::ParallelHangingNodeRefiner_MultiGrid::contains_faces(), ug::HangingNodeRefiner_MultiGrid::contains_faces(), ug::ParallelHangingNodeRefiner_MultiGrid::contains_volumes(), ug::HangingNodeRefiner_MultiGrid::contains_volumes(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements(), ug::DeserializeMultiGridElements(), ug::LoadBalancer::estimate_distribution_quality(), ug::GlobalFracturedMediaRefiner::num_marked_elems(), ug::GlobalMultiGridRefiner::num_marked_elems(), ug::ParallelLayoutDebugSave(), ug::PartitionDomain_MetisKWay(), ug::PartitionDomain_RegularGrid(), ug::PartitionMultiGrid_MetisKway(), ug::PartitionMultiGridLevel_MetisKway(), ug::Partitioner_DynamicBisection< TElem, dim >::perform_bisection(), ug::GlobalFracturedMediaRefiner::perform_refinement(), ug::GlobalMultiGridRefiner::perform_refinement(), ug::HangingNodeRefiner_MultiGrid::pre_refine(), ug::VTKOutput< TDim >::print(), and ug::SelectElementsForTargetPartition().
|
inline |
Returns the number of child edges.
References get_info().
Referenced by ug::HangingNodeRefiner_MultiGrid::assign_hnode_marks(), num_children(), and ug::SelectChildrenOfSelectedShadowRimEdges().
|
inline |
Returns the number of child edges.
|
inline |
Returns the number of child faces.
|
inline |
Returns the number of child faces.
References get_info().
Referenced by ug::HangingNodeRefiner_MultiGrid::assign_hnode_marks(), num_children(), and ug::SelectChildrenOfSelectedShadowRimFaces().
|
inline |
Returns the number of child faces.
|
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().
|
inline |
Returns the number of child volumes.
|
inline |
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.
|
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().
|
inlineprotected |
returning the number of children of the type of the dummy-argument.
References num_child_edges().
|
inlineprotected |
returning the number of children of the type of the dummy-argument.
References num_child_faces().
|
inlineprotected |
returning the number of children of the type of the dummy-argument.
References num_child_vertices().
|
inlineprotected |
returning the number of children of the type of the dummy-argument.
References num_child_volumes().
|
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().
|
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().
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().
|
inlineprotected |
releases the info-object for the given object (if necessary)
|
inlineprotected |
releases the info-object for the given object (if necessary)
References m_aaFaceInf.
|
inlineprotected |
releases the info-object for the given object (if necessary)
Referenced by element_to_be_erased(), and ~MultiGrid().
|
inlineprotected |
releases the info-object for the given object (if necessary)
References m_aaVolInf.
|
protected |
removes a child from the given object
References ug::EDGE, ug::FACE, p, remove_child(), ug::VERTEX, and ug::VOLUME.
|
protected |
removes a child from the given object
References get_info(), p, and ug::MGVertexInfo::remove_child().
Referenced by associate_parent(), and remove_child().
|
inlineprotected |
sets the parent for the given object
References get_info(), ug::MGVertexInfo::m_pParent, and p.
|
inlineprotected |
sets the parent for the given object
References m_aaParentFACE, and p.
|
inlineprotected |
sets the parent for the given object
References get_info(), ug::MGVertexInfo::m_pParent, and p.
Referenced by associate_parent(), edge_created(), element_created(), face_created(), ug::MGVertexInfo::unregister_from_children(), ug::MGEdgeInfo::unregister_from_children(), ug::MGFaceInfo::unregister_from_children(), ug::MGVolumeInfo::unregister_from_children(), vertex_created(), and volume_created().
|
inlineprotected |
sets the parent for the given object
References m_aaParentVOL, and p.
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().
|
inline |
index of the highest level.
References m_hierarchy, and ug::ISubsetHandler::num_subsets().
Referenced by ug::ApplySmoothManifoldPosToTopLevelAveragingScheme(), ug::ApplySmoothManifoldPosToTopLevelButterflyScheme(), ug::ApplySmoothManifoldPosToTopLevelLoopScheme(), ug::ApplySmoothVolumePosToTopLevel(), ug::CalculateConstrainedSmoothVolumePosInTopLevel(), ug::CalculateNumElemsVertexAttachmentInTopLevel(), ug::CalculateNumManifoldEdgesVertexAttachmentInParentLevel(), ug::CalculateNumManifoldFacesVertexAttachmentInTopLevel(), ug::CalculateSmoothCreaseManifoldPosInParentLevelLoopScheme(), ug::CalculateSmoothManifoldPosInParentLevelButterflyScheme(), ug::CalculateSmoothManifoldPosInParentLevelLoopScheme(), ug::CalculateSmoothManifoldPosInTopLevelAveragingScheme(), ug::CalculateSmoothVolumePosInTopLevel(), ug::CheckValences(), ug::InitLinearManifoldSubsetHandler(), ug::MarkElementsAbsolute(), ug::GlobalFracturedMediaRefiner::num_marked_elems(), ug::GlobalMultiGridRefiner::num_marked_elems(), ug::Partitioner_DynamicBisection< TElem, dim >::partition(), ug::PartitionMultiGridLevel_MetisKway(), ug::PartitionMultiGridLevel_ParmetisKway(), and ug::ProjectHierarchyToSubdivisionLimit().
|
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.
|
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.
|
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.
|
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.
|
friend |
|
friend |
|
friend |
|
friend |
|
protected |
Referenced by get_info(), and init().
|
protected |
Referenced by create_child_info(), get_info(), init(), and release_child_info().
|
protected |
Referenced by get_parent(), init(), and set_parent().
|
protected |
Referenced by init(), parent_type(), and set_parent_type().
|
protected |
Referenced by get_parent(), init(), and set_parent().
|
protected |
Referenced by create_child_info(), get_info(), init(), and release_child_info().
|
protected |
Referenced by get_info(), and init().
|
protected |
Referenced by init().
|
protected |
Referenced by init().
|
protected |
Referenced by init().
|
protected |
Referenced by enable_hierarchical_insertion(), hierarchical_insertion_enabled(), and init().
|
protected |
Referenced by begin(), create(), create_by_cloning(), create_levels(), element_created(), end(), get_grid_objects(), get_hierarchy_handler(), get_level(), init(), level_required(), num(), num_levels(), and top_level().