ug4
ug::Grid Class Reference

Manages the elements of a grid and their interconnection. More...

#include <grid.h>

+ Inheritance diagram for ug::Grid:

Classes

class  AttachmentAccessor
 the generic attachment-accessor for access to grids attachment pipes. More...
 
class  EdgeAttachmentAccessor
 
class  FaceAttachmentAccessor
 
struct  traits
 The traits class holds some important types for each element-type. More...
 
class  VertexAttachmentAccessor
 
class  VolumeAttachmentAccessor
 

Public Types

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...
 

Public Member Functions

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...
 
virtual GridObjectCollection get_grid_objects ()
 returns the the GridObjectCollection of the grid: 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...
 

Protected Types

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 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

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
 

Detailed Description

Manages the elements of a grid and their interconnection.

The Grid class is the heart of libGrid. It can be used to create elements of custom types, for example Vertices, Triangles or Tetrahedrons. All elements have to be derived from either Vertex, Edge, Face or Volume and have to specialize the template-class geometry_traits (both defined in grid_base_objects.h). The grid can automatically create information about connected geometric objects. You could for example query a face for associated volumes. Associated elements are however only stored, if the according options are set. This reduces storage space if only particular associations are required. Since these options can be changed dynamically at runtime on could in practice always start with a grid holding minimal connection informations. Options are then enabled on the fly, as required by called methods. Note however that some algorithms do run faster if particular options are enabled. On the other hand a grid serves as the connection between geometric objects and their associated data. This connection is realized by so called attachments. You can attach data to vertices, edges, faces, and volumes. Note, that data is attached to all elements of one type at once. No sub-types are considered. This allows for efficient storage and data-access. thanks to this way of storing data, methods and classes can temporarily attach data to the grids elements and thus store and access data of given elements in an efficient way. The data-access is handled by so called attachment-accessors. Grid defines one for each base-type as well as a generic one.

The Grid class itself only knows about the concepts of Vertex, Edge, Face and Volume (classes Vertex, Edge, Face, Volume). In order to implement algorithms one needs more specialized element-types, like Triangles, Quadrilaterals or Tetrahedrons. Those special types are supported by the use of templates. All that a custom type has to satisfy is that it is derived from one of the four basic elements and that it specializes the class geometry_traits. By calling Grids methods with those specialized types as template parameters, you can create, erase and iterate over specialized elements. You could for example iterate over all faces using the calls Grid::begin<Face>() and Grid::end<Face>() (or by calling Grid::faces_begin() and Grid::faces_end()). if you want to iterate only over elements of type Triangle (given this type has been defined), you could call Grid::begin<Triangle>() and Grid::end<Triangle>(). This is applicable to all methods that take an TGeomObj as their template parameter. If a template function takes the parameter TGeomObjClass, then only one of the four base objects should be passed (Vertex, Edge, Face and Volume). This use if templates allows for a arbitrary number of custom elements, without requiring any changes to the Grid-class itself.

The Grid class features a message-hub, which can be used to distribute messages to registered callbacks.

Member Typedef Documentation

◆ AEdgeContainer

◆ AFaceContainer

◆ AMark

typedef Attachment<int> ug::Grid::AMark
protected

◆ AssociatedEdgeIterator

typedef EdgeContainer::iterator ug::Grid::AssociatedEdgeIterator

used to iterate over associated edges of vertices, faces and volumes

◆ AssociatedFaceIterator

typedef FaceContainer::iterator ug::Grid::AssociatedFaceIterator

used to iterate over associated faces of vertices, edges and volumes

◆ AssociatedVolumeIterator

typedef VolumeContainer::iterator ug::Grid::AssociatedVolumeIterator

used to iterate over associated volumes of vertices, edges and faces

◆ AVertexContainer

◆ AVolumeContainer

◆ EdgeAttachmentPipe

◆ EdgeContainer

typedef std::vector<Edge*> ug::Grid::EdgeContainer

Container used to store associated edges.

◆ FaceAttachmentPipe

◆ FaceContainer

typedef std::vector<Face*> ug::Grid::FaceContainer

Container used to store associated faces.

◆ ObserverContainer

typedef std::vector<GridObserver*> ug::Grid::ObserverContainer
protected

◆ SecureEdgeContainer

typedef traits<Edge>::secure_container ug::Grid::SecureEdgeContainer

Container to store associated edges.

◆ SecureFaceContainer

typedef traits<Face>::secure_container ug::Grid::SecureFaceContainer

Container to store associated faces.

◆ SecureVertexContainer

typedef traits<Vertex>::secure_container ug::Grid::SecureVertexContainer

Container to store associated vertices.

◆ SecureVolumeContainer

typedef traits<Volume>::secure_container ug::Grid::SecureVolumeContainer

Container to store associated volumes.

◆ VertexAttachmentPipe

◆ VertexContainer

typedef std::vector<Vertex*> ug::Grid::VertexContainer

Container used to store associated vertices.

◆ VolumeAttachmentPipe

◆ VolumeContainer

typedef std::vector<Volume*> ug::Grid::VolumeContainer

Container used to store associated volumes.

Constructor & Destructor Documentation

◆ Grid() [1/3]

ug::Grid::Grid ( )

initialises the grid and sets the option GRIDOPT_DEFAULT.

Pass a custom option to the alternative constructor in order to initialise the grid with your options.

See also
Grid(uint options)

References change_options(), ug::GRIDOPT_DEFAULT, ug::GRIDOPT_NONE, m_currentMark, m_hashCounter, m_messageHub, and m_options.

◆ Grid() [2/3]

ug::Grid::Grid ( uint  options)

initialises the grid with the given option.

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

References change_options(), ug::GRIDOPT_NONE, m_currentMark, m_hashCounter, m_messageHub, and m_options.

◆ Grid() [3/3]

ug::Grid::Grid ( const Grid grid)

copies all elements and some attachments from the passed grid to this grid.

While all elements and the options are copied completely from the source-grid, the attachments are only copied if their pass-on behaviour is set to true.

References assign_grid(), ug::GRIDOPT_NONE, m_currentMark, m_hashCounter, m_messageHub, and m_options.

◆ ~Grid()

Member Function Documentation

◆ assign_grid()

◆ assign_hash_value()

void ug::Grid::assign_hash_value ( Vertex vrt)
inlineprotected

assigns a unique hash value to a Vertex.

overflow is not handled properly. If sombody creates 2^32 elements, the uniquness can no longer be guaranteed.

References ug::Vertex::m_hashValue.

◆ associated_edges_begin() [1/3]

Grid::AssociatedEdgeIterator ug::Grid::associated_edges_begin ( Face face)

◆ associated_edges_begin() [2/3]

◆ associated_edges_begin() [3/3]

Grid::AssociatedEdgeIterator ug::Grid::associated_edges_begin ( Volume vol)

◆ associated_edges_end() [1/3]

Grid::AssociatedEdgeIterator ug::Grid::associated_edges_end ( Face face)

◆ associated_edges_end() [2/3]

◆ associated_edges_end() [3/3]

Grid::AssociatedEdgeIterator ug::Grid::associated_edges_end ( Volume vol)

◆ associated_elements() [1/4]

template<class TElem >
void ug::Grid::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.

One shouldn't depend on the order of elements in elemsOut. Use Grid::associated_elements_sorted if the order matters.

Note
The returned container is only valid until changes to the queried grid are performed.
The following typedefs might ease your work with associated elements: AssociatedVertices, AssociatedEdges, AssociatedFaces and AssociatedVolumes. Those are typedefs for Grid::traits<Vertex>::container, ...
Depending on the current grid options, this method may use Grid::mark. Valid arguments for TElem are Vertex, Edge, Face, Volume.
See also
Grid::associated_elements_sorted

References get_associated().

◆ associated_elements() [2/4]

template<class TElem >
void ug::Grid::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.

One shouldn't depend on the order of elements in elemsOut. Use Grid::associated_elements_sorted if the order matters.

Note
The returned container is only valid until changes to the queried grid are performed.
The following typedefs might ease your work with associated elements: AssociatedVertices, AssociatedEdges, AssociatedFaces and AssociatedVolumes. Those are typedefs for Grid::traits<Vertex>::container, ...
Depending on the current grid options, this method may use Grid::mark. Valid arguments for TElem are Vertex, Edge, Face, Volume.
See also
Grid::associated_elements_sorted

References get_associated().

◆ associated_elements() [3/4]

template<class TElem >
void ug::Grid::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.

One shouldn't depend on the order of elements in elemsOut. Use Grid::associated_elements_sorted if the order matters.

Note
The returned container is only valid until changes to the queried grid are performed.
The following typedefs might ease your work with associated elements: AssociatedVertices, AssociatedEdges, AssociatedFaces and AssociatedVolumes. Those are typedefs for Grid::traits<Vertex>::container, ...
Depending on the current grid options, this method may use Grid::mark. Valid arguments for TElem are Vertex, Edge, Face, Volume.
See also
Grid::associated_elements_sorted

References get_associated().

Referenced by ug::DoFDistribution::_algebra_indices(), ug::AdaptSurfaceGridToCylinder(), ug::AdjustEdgeOrientationToFaceOrientation(), ug::HangingNodeRefiner_MultiGrid::assign_hnode_marks(), ug::AssignSelectionStateToSides(), ug::CheckElementConsistency(), ug::CheckHangingNodeConstrainingFace(), ug::CheckValences(), ug::CollapseEdge(), ug::HangingNodeRefiner_MultiGrid::collect_objects_for_coarsen(), ug::HangingNodeRefinerBase< MGSelector >::collect_objects_for_refine(), ug::CollectUnconnectedSides(), ug::ComputeLocalSubsetDimensions(), ug::SubdivisionProjector::concerned_nbr_faces(), ug::ConvertToTetrahedra(), ug::CopySubsetFromHigherDimNbr(), ug::CopySubsetIndicesToSides(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_2d(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_3d(), ug::ElementDiameterSq(), ug::ExportGridToSWC(), ug::ExtrudeLayers(), ug::FixFaceOrientation(), ug::ParallelDualGraph< TGeomBaseObj, TIndexType, TConnectingObj >::generate_graph(), ug::SideAndElemErrEstData< TDomain >::get_elem_error_indicator(), ug::DegeneratedLayerManager< dim >::get_layer_sides(), ug::GetConnectedNeighbor(), ug::GetConnectingEdge(), ug::GetInnerEdgesOfFaceSoup(), ug::GetOpposingSide(), ug::GetSharedSide(), ug::PeriodicBoundaryManager::handle_creation(), ug::PeriodicBoundaryManager::identify(), ug::AssocElemIter< TElem, TAssocElem, VSorted >::init(), ug::IntersectCloseEdges(), ug::LaplacianSmooth(), ug::MarkAlongSurface(), ug::MarkAnisotropic(), ug::MarkAnisotropic_LongEdges(), ug::MarkAnisotropicOnlyX(), ug::MarkCorners(), ug::MarkForAnisotropicRefinement(), ug::MarkForRefinement_AnisotropicDirection(), ug::MarkForRefinement_SubsetInterfaceElements(), ug::MarkForRefinementByDirection(), ug::MarkOutOfRangeElems(), ug::SubdivisionProjector::nbr_crease_edges(), ug::SubdivisionProjector::new_vertex(), ug::NumAssociatedEdges(), ug::NumAssociatedFaces(), ug::ClusterElementStacks< elem_t, vector_t >::post_process(), ug::SmoothPartitionBounds< elem_t >::post_process(), ug::PrintElementEdgeRatios(), ug::RayElementIntersectionImpl(), ug::HorizontalAnisotropyAdjuster< TAPos >::ref_marks_changed(), ug::LocalMarkAdjuster::ref_marks_changed(), ug::MGHNodeAdjuster::ref_marks_changed(), ug::ShadowCopyAdjuster::ref_marks_changed(), ug::StdHNodeAdjuster::ref_marks_changed(), ug::SubdivisionProjector::refinement_begins(), ug::SmoothProjector::refinement_ends(), ug::RemoveDuplicates(), ug::ReplaceByQuadrilaterals_EdgeBased(), ug::ReplaceByQuadrilaterals_EdgeBasedNoSort(), ug::ReplaceLowValenceVertices(), ug::ReplaceValence3Vertices(), ug::SelectAssociatedSides(), ug::SelectChildrenOfSelectedShadowRimEdges(), ug::SelectChildrenOfSelectedShadowRimFaces(), ug::SelectChildrenOfSelectedShadowVertices(), ug::SelectLinkedElements(), ug::SelectShortPolychains(), ug::SlopeSmooth(), ug::TangentialSmooth(), ug::TangentialSmoothSimple(), ug::ProtectSubsetPartitionWeighting::weigh(), ug::WeightedEdgeSmooth(), ug::WeightedFaceSmooth(), ug::WeightedNormalSmooth(), and ug::GridWriterVTU::write_cells().

◆ associated_elements() [4/4]

template<class TElem >
void ug::Grid::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.

One shouldn't depend on the order of elements in elemsOut. Use Grid::associated_elements_sorted if the order matters.

Note
The returned container is only valid until changes to the queried grid are performed.
The following typedefs might ease your work with associated elements: AssociatedVertices, AssociatedEdges, AssociatedFaces and AssociatedVolumes. Those are typedefs for Grid::traits<Vertex>::container, ...
Depending on the current grid options, this method may use Grid::mark. Valid arguments for TElem are Vertex, Edge, Face, Volume.
See also
Grid::associated_elements_sorted

References get_associated().

◆ associated_elements_sorted() [1/4]

template<class TElem >
void ug::Grid::associated_elements_sorted ( traits< Edge >::secure_container &  elemsOut,
TElem *  e 
)

◆ associated_elements_sorted() [2/4]

template<class TElem >
void ug::Grid::associated_elements_sorted ( traits< Face >::secure_container &  elemsOut,
TElem *  e 
)

◆ associated_elements_sorted() [3/4]

template<class TElem >
void ug::Grid::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.

The order of elements in elemsOut is the same as the order in the reference element. Note that, depending on active grid options, this method may take more time than associated_elements, and should thus only be invoked, if the order of elements matters. Use Grid::associated_elements if the order does not matter.

Valid arguments for TElem are Vertex, Edge, Face, Volume. Let TAss be the type of queried elements in elemsOut. Only associated elements of lower dimension can be sorted. The method thus behaves as follows: TAss::dim < TElem::dim -> associated elements are written to 'elemsOut' with the same order as in the reference element TAss::dim == TElem::dim -> onle 'e' itself will be written to 'elemsOut' TAss::dim > TElem::dim -> elemsOut will be empty.

Note
The returned container is only valid until changes to the queried grid are performed.
The following typedefs might ease your work with associated elements: AssociatedVertices, AssociatedEdges, AssociatedFaces and AssociatedVolumes. Those are typedefs for traits<Vertex>::container, ...
Depending on the current grid options, this method may use Grid::mark.
See also
Grid::associated_elements

References get_associated_sorted().

Referenced by ug::DoFDistribution::_dof_indices(), ug::DoFDistribution::_indices(), ug::HangingNodeRefinerBase< TSelector >::assign_hnode_marks(), ug::close_sides_of_anisotropic_elem(), ug::NeumannBoundaryFV1< TDomain >::compute_err_est_rhs_elem(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_2d(), ug::AdaptiveRegularRefiner_MultiGrid::create_closure_elements_3d(), ug::AssocElemIter< TElem, TAssocElem, VSorted >::init(), ug::IntegralNormalComponentOnManifoldGeneral(), ug::long_edges_of_anisotropic_elem(), and ug::LocalMarkAdjuster::ref_marks_changed().

◆ associated_elements_sorted() [4/4]

template<class TElem >
void ug::Grid::associated_elements_sorted ( traits< Volume >::secure_container &  elemsOut,
TElem *  e 
)

◆ associated_faces_begin() [1/3]

Grid::AssociatedFaceIterator ug::Grid::associated_faces_begin ( Edge edge)

◆ associated_faces_begin() [2/3]

◆ associated_faces_begin() [3/3]

Grid::AssociatedFaceIterator ug::Grid::associated_faces_begin ( Volume vol)

◆ associated_faces_end() [1/3]

Grid::AssociatedFaceIterator ug::Grid::associated_faces_end ( Edge edge)

◆ associated_faces_end() [2/3]

◆ associated_faces_end() [3/3]

Grid::AssociatedFaceIterator ug::Grid::associated_faces_end ( Volume vol)

◆ associated_volumes_begin() [1/3]

Grid::AssociatedVolumeIterator ug::Grid::associated_volumes_begin ( Edge edge)

◆ associated_volumes_begin() [2/3]

Grid::AssociatedVolumeIterator ug::Grid::associated_volumes_begin ( Face face)

◆ associated_volumes_begin() [3/3]

◆ associated_volumes_end() [1/3]

Grid::AssociatedVolumeIterator ug::Grid::associated_volumes_end ( Edge edge)

◆ associated_volumes_end() [2/3]

Grid::AssociatedVolumeIterator ug::Grid::associated_volumes_end ( Face face)

◆ associated_volumes_end() [3/3]

◆ attach_to() [1/2]

template<class TGeomObjClass >
void ug::Grid::attach_to ( IAttachment attachment)
inline

attach with default pass-on behaviour and unspecified default value.

References ug::IAttachment::default_pass_on_behaviour().

◆ attach_to() [2/2]

◆ attach_to_all() [1/2]

void ug::Grid::attach_to_all ( IAttachment attachment)
inline

attaches to vertices, edges, faces and volumes at once.

◆ attach_to_all() [2/2]

◆ attach_to_all_dv() [1/2]

template<class TAttachment >
void ug::Grid::attach_to_all_dv ( TAttachment &  attachment,
const typename TAttachment::ValueType &  defaultValue 
)
inline

attaches to vertices, edges, faces and volumes at once.

Referenced by ug::SurfaceView::SurfaceView().

◆ attach_to_all_dv() [2/2]

template<class TAttachment >
void ug::Grid::attach_to_all_dv ( TAttachment &  attachment,
const typename TAttachment::ValueType &  defaultValue,
bool  passOnValues 
)
inline

◆ attach_to_dv() [1/2]

template<class TGeomObjClass , class TAttachment >
void ug::Grid::attach_to_dv ( TAttachment &  attachment,
const typename TAttachment::ValueType &  defaultValue 
)

Referenced by ug::ConstructDualGraph().

◆ attach_to_dv() [2/2]

template<class TGeomObjClass , class TAttachment >
void ug::Grid::attach_to_dv ( TAttachment &  attachment,
const typename TAttachment::ValueType &  defaultValue,
bool  passOnValues 
)

References STATIC_ASSERT.

◆ attach_to_edges() [1/2]

void ug::Grid::attach_to_edges ( IAttachment attachment)
inline

◆ attach_to_edges() [2/2]

◆ attach_to_edges_dv() [1/2]

◆ attach_to_edges_dv() [2/2]

template<class TAttachment >
void ug::Grid::attach_to_edges_dv ( TAttachment &  attachment,
const typename TAttachment::ValueType &  defaultValue,
bool  passOnValues 
)
inline

◆ attach_to_faces() [1/2]

void ug::Grid::attach_to_faces ( IAttachment attachment)
inline

◆ attach_to_faces() [2/2]

◆ attach_to_faces_dv() [1/2]

template<class TAttachment >
void ug::Grid::attach_to_faces_dv ( TAttachment &  attachment,
const typename TAttachment::ValueType &  defaultValue 
)
inline

◆ attach_to_faces_dv() [2/2]

template<class TAttachment >
void ug::Grid::attach_to_faces_dv ( TAttachment &  attachment,
const typename TAttachment::ValueType &  defaultValue,
bool  passOnValues 
)
inline

◆ attach_to_vertices() [1/2]

void ug::Grid::attach_to_vertices ( IAttachment attachment)
inline

◆ attach_to_vertices() [2/2]

void ug::Grid::attach_to_vertices ( IAttachment attachment,
bool  passOnValues 
)
inline

Referenced by ug::RasterLayersProjector::add_attachments(), ug::GridSubsetHandler::assign_grid(), ug::MultiGridSubsetHandler::assign_grid(), ug::CopyGrid(), ug::CopyGridLevel(), ug::CopySelected(), ug::CopySelection(), ug::FileReaderSWC::create_grid(), ug::GridPointsOrdering< TDomain, TAlgebra >::create_vtkoutput_ordering(), ug::CreateOctree(), ug::Duplicate(), ug::ISelector::enable_element_support(), ug::MGSelector::enable_element_support(), ug::ISubsetHandler::enable_element_support(), ug::ExpandFractures2d(), ug::ExpandFractures3d(), ug::ExportGridToSMESH(), ug::ExportGridToTETGEN(), ug::ExportGridToUG(), ug::ExportGridToUG_2D(), ug::Extrude(), ug::ExtrudeLayers(), ug::ExtrudeLayersMixed(), ug::GenerateIcosahedron(), ug::GenerateIcosphere(), ug::GridReaderUGX::grid(), ug::GridReaderVTU::grid(), ug::ImportGridFromLGM(), ug::ImportGridFromNG(), ug::ImportGridFromTETGEN(), ug::MultiGrid::init(), ug::GridWriterUGX::init_grid_attachments(), ug::LoadGrid3d(), ug::LoadGridFrom2DF(), ug::LoadGridFromART(), ug::LoadGridFromASC(), ug::LoadGridFromDUMP(), ug::LoadGridFromGRDECL(), ug::LoadGridFromLGB(), ug::LoadGridFromMSH(), ug::LoadGridFromOBJ(), ug::LoadGridFromSMESH(), ug::LoadGridFromSTL(), ug::LoadGridFromTXT(), ug::LoadGridFromUGX(), ug::LoadGridFromVTU(), ug::MergeGrids(), ug::GridWriterVTU::new_piece(), ug::NTreeGridData< world_dim >::NTreeGridData(), ug::PPP_ReplaceCoordinate< dim >::partitioning_starts(), ug::PerformRetetrahedralization(), ug::PerformTetrahedralization(), ug::VTKOutput< TDim >::print(), ug::VTKOutput< TDim >::print_subset(), ug::VTKOutput< TDim >::print_subsets(), ug::ProjectToLimitPLoop(), ug::ProjectToLimitSubdivBoundary(), ug::RemoveDoubles(), ug::ResolveTriangleIntersections(), ug::SaveGrid3d(), ug::SaveGridLevel(), ug::SaveGridTo2DF(), ug::SaveGridToART(), ug::SaveGridToNCDF(), ug::SaveGridToOBJ(), ug::SaveGridToTXT(), ug::SerializeGridElements(), ug::DistributedGridManager::set_grid(), and ug::SimplifySmoothedPolylines().

◆ attach_to_vertices_dv() [1/2]

◆ attach_to_vertices_dv() [2/2]

template<class TAttachment >
void ug::Grid::attach_to_vertices_dv ( TAttachment &  attachment,
const typename TAttachment::ValueType &  defaultValue,
bool  passOnValues 
)
inline

◆ attach_to_volumes() [1/2]

void ug::Grid::attach_to_volumes ( IAttachment attachment)
inline

◆ attach_to_volumes() [2/2]

◆ attach_to_volumes_dv() [1/2]

template<class TAttachment >
void ug::Grid::attach_to_volumes_dv ( TAttachment &  attachment,
const typename TAttachment::ValueType &  defaultValue 
)
inline

◆ attach_to_volumes_dv() [2/2]

template<class TAttachment >
void ug::Grid::attach_to_volumes_dv ( TAttachment &  attachment,
const typename TAttachment::ValueType &  defaultValue,
bool  passOnValues 
)
inline

◆ attachment_container_size()

template<class TGeomObj >
size_t ug::Grid::attachment_container_size

returns the size of the associated attachment containers.

valid types for TGeomObj are Vertex, Edge, Face, Volume.

Referenced by assign_grid().

◆ autoenable_option()

void ug::Grid::autoenable_option ( uint  option,
const char *  caller,
const char *  optionName 
)
inlineprotected

◆ back()

template<class TGeomObj >
TGeomObj * ug::Grid::back

returns the last element of the given type.

Make sure that elements of the given type exist! Behaviour is undefined, if not.

References STATIC_ASSERT.

◆ begin() [1/2]

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

References STATIC_ASSERT.

Referenced by ug::GridWriterUGX::add_attachment(), ug::GridWriterUGX::add_elements_to_node(), ug::GridWriterUGX::add_grid(), ug::AdjustEdgeLength(), ug::AdjustSubsetsForSimulation(), assign_grid(), ug::ISubsetHandler::assign_subset_handler(), ug::AssignGridToSubset(), ug::AssignInnerAndBoundarySubsets(), ug::AssignSidesToSubsets(), ug::AssignSubset_VerticesInCube(), ug::AssignSubset_VerticesInSphere(), ug::AssignTetrahedronAttributesByAspectRatio(), ug::AssignUnassignedElemsToSubset(), ug::CalculateAverageEdgeLength(), ug::CalculateVertexNormals(), ug::CheckForUnconnectedSidesIMPL(), ug::CheckHangingNodeConsistency(), ug::BoolMarker::clear(), ug::GridWriterVTU::collect_cells(), ug::ColorControlVolume(), ug::ColorSubControlVolume(), ug::ColorSubControlVolumeFaces(), ug::ComputeLocalSubsetDimensions(), ug::CopyAttachments(), ug::CopySelectionStatus(), ug::CreateAndDistributeGlobalIDs(), ug::CreateGridOfControlVolumes(), ug::OverlyingSubsetFinder< TDomain >::debug(), ug::DeserializeAttachment(), ug::ISelector::enable_element_support(), ug::ExportGridToSWC(), ug::ExportGridToTETGEN(), ug::ExtrudeLayers(), ug::ExtrudeLayersMixed(), ug::GenerateIcosphere(), ug::GetGridObjectIndex(), ug::GetSelectedElementIndices(), ug::GridReaderUGX::grid(), ug::GridWriterUGX::init_grid_attachments(), ug::InvertSelection(), ug::LoadGridFromOBJ(), ug::LoadMarkerPointsFromFile(), mark(), ug::MarkAllElemsForAssemblyButHSlaves(), ug::MarkForAdaption_VerticesInCube(), ug::MarkForAdaption_VerticesInSphereMaxLvl(), ug::MarkForRefinement_AllAnisotropic(), ug::MarkForRefinement_AnisotropicElements(), ug::MarkForRefinement_ElementsInSphere(), ug::MarkForRefinement_SubsetInterfaceElements(), ug::MergeGrids(), ug::GridWriterVTU::new_piece(), ug::OverlyingSubsetFinder< TDomain >::OverlyingSubsetFinder(), ug::PartitionGrid_MetisKway(), ug::PerformRetetrahedralization(), ug::PerformTetrahedralization(), ug::ProjectToLayer(), ug::QualityGridGeneration(), ug::GlobalAttachments::read_attachment_from_stream(), ug::ReplaceByQuadrilaterals_FaceBased(), ug::ReplaceByQuadrilaterals_FaceBasedNoSort(), ug::ReplaceLowValenceVertices(), ug::ResetSubsetIndices(), ug::ResolveTriangleIntersections(), ug::DelaunayDebugSaver::save(), ug::SaveGridTo2DF(), ug::SaveGridToART(), ug::SaveGridToELE(), ug::SaveGridToSTL(), ug::SaveGridToTXT(), ug::SelectDomainElements(), ug::SelectElementsByIndex(), ug::SelectRegion(), ug::SelectShortPolychains(), ug::SeparateRegions(), ug::SeparateSubsetsByLowerDimSeparators(), ug::SerializeAttachment(), ug::SimplifySmoothedPolylines(), ug::SnapMarkerPointToGridVertex(), ug::Triangulate(), unmark(), ug::PeriodicBoundaryManager::validity_check(), ug::GlobalAttachments::write_attachment_to_stream(), ug::GridWriterVTU::write_vector_data(), ug::WriteDebugValuesToFile(), and ug::ZRayTracer< TDomain >::ZRayTracer().

◆ begin() [2/2]

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

◆ begin_marking()

void ug::Grid::begin_marking ( )

begin marking.

Call this method whenever you want to start a marking sequence. On a call to this method all old marks are deleted. When called for the first time, some preparations have to be taken, which may consume some time. Successive calls however are very fast.

References init_marks(), m_bMarking, m_currentMark, and reset_marks().

Referenced by ug::AssignFixedVertices(), ug::CalculateCenter(), ug::CalculateCreaseNormal(), ug::grid_unit_tests::CheckAssociatedEdgesOfVolumes(), ug::grid_unit_tests::CheckAssociatedVolumesOfEdges(), clear_marks(), ug::CollectAssociatedSides(), ug::CollectNeighborhood(), ug::CollectNeighbors(), ug::CollectSurfaceNeighborsSorted(), ug::CollectVerticesTouchingSelection(), ug::ConvertToTetrahedra(), ug::VTKOutput< TDim >::count_piece_sizes(), ug::GridPointsOrdering< TDomain, TAlgebra >::create_vtkoutput_ordering(), ug::CreateHexahedronFromPrisms(), ug::CreatePolyChain(), ug::CreatePyramid(), ug::CreateTetrahedron(), ug::DistributedGridManager::end_element_deletion(), ug::ExportGridToSWC(), ug::ExtendSelection(), ug::ExtendSelectionInDirection(), ug::ExtrudeLayers(), ug::FixEdgeOrientation(), ug::FixFaceOrientation(), ug::GetFirstRegularVertex(), ug::GetNeighborhood(), ug::GetNeighbours(), ug::PeriodicBoundaryManager::handle_creation(), ug::IntersectCloseEdges(), ug::MarkFixedCreaseVertices(), ug::NumAssociatedFaces(), ug::NumSharedVertices(), ug::ObtainSimpleGrid(), ug::ObtainSimpleGrid_CollapseEdge(), ug::PartitionElements_RegularGrid(), ug::QualityGridGeneration(), ug::SmoothProjector::refinement_ends(), ug::RemoveDuplicates(), ug::HangingNodeRefiner_MultiGrid::restrict_selection_to_coarsen_families(), ug::SelectAreaBoundary(), ug::SelectInnerSelectionEdges(), ug::SelectInnerSelectionFaces(), ug::SelectInnerSelectionVertices(), ug::SelectShortPolychains(), ug::SerializeMultiGridElements(), ug::SimplifyPolylines(), ug::SplitIrregularManifoldSubset(), ug::SplitIrregularPolyChain(), ug::SwapEdge(), ug::TangentialSmooth(), ug::TangentialSmoothSimple(), ug::TranslateSelection(), ug::TriangleFill_SweepLine(), ug::VisitAreaBoundary(), ug::VTKOutput< TDim >::write_nodal_data(), ug::VTKOutput< TDim >::write_nodal_values(), ug::VTKOutput< TDim >::write_points(), and ug::WriteLGM().

◆ change_edge_options()

void ug::Grid::change_edge_options ( uint  optsNew)
protected

◆ change_face_options()

void ug::Grid::change_face_options ( uint  optsNew)
protected

◆ change_options()

void ug::Grid::change_options ( uint  optsNew)
protected

◆ change_vertex_options()

void ug::Grid::change_vertex_options ( uint  optsNew)
protected

◆ change_volume_options()

◆ clear() [1/2]

void ug::Grid::clear ( )

clears the grids geometry and attachments

References clear_attachments(), and clear_geometry().

Referenced by ug::CreateSCV(), ug::CreateSCVF(), and ug::GetSelectedElementIndices().

◆ clear() [2/2]

template<class TGeomObj >
void ug::Grid::clear

References erase().

◆ clear_attachments() [1/2]

void ug::Grid::clear_attachments ( )

clears the grids attachments. The geometry remains.

Referenced by clear().

◆ clear_attachments() [2/2]

◆ clear_geometry()

void ug::Grid::clear_geometry ( )

◆ clear_marks()

void ug::Grid::clear_marks ( )

◆ copy_user_attachments()

template<class TAttachmentPipe >
void ug::Grid::copy_user_attachments ( const TAttachmentPipe &  apSrc,
TAttachmentPipe &  apDest,
std::vector< int > &  srcDataIndices 
)
protected

helps in copying attachment pipes during assign_grid

Note that this method only copies attachments with m_userData==1.

Todo:
Copy behavior should be changed to all user-attachments.

References ug::IAttachmentDataContainer::copy_to_container(), ug::AttachmentEntry::m_pAttachment, ug::AttachmentEntry::m_pContainer, ug::AttachmentEntry::m_userData, and ug::IAttachmentDataContainer::size().

Referenced by assign_grid().

◆ create() [1/2]

template<class TGeomObj >
geometry_traits< TGeomObj >::iterator ug::Grid::create ( const typename geometry_traits< TGeomObj >::Descriptor &  descriptor,
GridObject pParent = NULL 
)

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.

References get_iterator(), register_element(), and STATIC_ASSERT.

◆ create() [2/2]

template<class TGeomObj >
geometry_traits< TGeomObj >::iterator ug::Grid::create ( GridObject pParent = NULL)

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.

References get_iterator(), register_element(), and STATIC_ASSERT.

Referenced by ug::computeDiamondPointXCrossType(), ug::ConvertToTetrahedra(), ug::GridReaderUGX::create_constrained_edges(), ug::GridReaderUGX::create_constrained_quadrilaterals(), ug::GridReaderUGX::create_constrained_triangles(), ug::GridReaderUGX::create_constrained_vertices(), ug::GridReaderUGX::create_constraining_edges(), ug::GridReaderUGX::create_constraining_quadrilaterals(), ug::GridReaderUGX::create_constraining_triangles(), ug::GridReaderUGX::create_edges(), ug::FileReaderSWC::create_grid(), ug::GridReaderUGX::create_hexahedrons(), ug::GridReaderUGX::create_octahedrons(), ug::GridReaderUGX::create_prisms(), ug::GridReaderUGX::create_pyramids(), ug::GridReaderUGX::create_quadrilaterals(), ug::GridReaderUGX::create_tetrahedrons(), ug::GridReaderUGX::create_triangles(), ug::GridReaderUGX::create_vertices(), ug::GridReaderVTU::create_vertices(), ug::createDiamondFacesXCrossType(), ug::CreateEdge(), ug::CreateEdgeSplitGeometry(), ug::CreateFace(), ug::CreateGridFromField(), ug::CreateGridFromFieldBoundary(), ug::CreateHexahedronFromPrisms(), ug::ArteExpandFracs3D::createNewElements(), ug::createNewFacesForExtXCrossFracs(), ug::CreatePlane(), ug::CreatePrism(), ug::CreatePyramid(), ug::CreateSCV(), ug::CreateSCVF(), ug::CreateTetrahedron(), ug::CreateTKDVertices(), ug::CreateVertex(), ug::CreateVolume(), ug::CreateVolumesFromElementIndexList(), ug::DeserializeGridElements(), ug::ExpandFractures2d(), ug::ExpandFractures2dArte(), ug::ExpandFractures3d(), ug::expandSingleFractureAtGivenSide(), ug::expandSingleFractureAtGivenSide< VecVertexOfFaceInfo >(), ug::Extrude(), ug::ExtrudeLayersMixed(), ug::GenerateIcosahedron(), ug::ImportGridFromLGM(), ug::ImportGridFromNG(), ug::ImportGridFromTETGEN(), ug::InsertCenterVertex(), ug::LoadGridFrom2DF(), ug::LoadGridFromART(), ug::LoadGridFromGRDECL(), ug::LoadGridFromMSH(), ug::LoadGridFromOBJ(), ug::LoadGridFromSMESH(), ug::LoadGridFromSTL(), ug::LoadGridFromTXT(), ug::MultiEdgeSplit(), ug::PerformRetetrahedralization(), ug::PerformTetrahedralization(), ug::QualityGridGeneration(), ug::ReadTetrahedrons(), ug::ReadTriangles(), ug::Refine(), ug::HangingNodeRefinerBase< TSelector >::refine_edge_with_hanging_vertex(), ug::HangingNodeRefinerBase< TSelector >::refine_edge_with_normal_vertex(), ug::HangingNodeRefinerBase< TSelector >::refine_face_with_hanging_vertex(), ug::ReplaceLowValenceVertices(), ug::ReplaceValence3Vertices(), ug::ResolveEdgeFaceIntersection(), ug::ResolveTriangleIntersections(), ug::ResolveVertexFaceIntersection(), ug::SimplifyPolylines(), ug::SplitEdge(), ug::SplitOctahedronToTetrahedrons(), ug::SwapEdge(), ug::TriangleFill(), ug::TriangleFill_SweepLine(), and ug::Triangulate().

◆ create_and_replace()

template<class TGeomObj >
geometry_traits< TGeomObj >::iterator ug::Grid::create_and_replace ( typename geometry_traits< TGeomObj >::grid_base_object *  pReplaceMe)

create a custom element and replaces an old one.

Be sure, that TGeomObj has the same reference-element as pReplaceMe. Similar to create. With pReplaceMe you may specify an element of the same base-type as TGeomObj, which shall be replaced. The replaced element will be deleted from grid. pReplaceMe will be treated as pParent for GridObservers.

Calls pass_on_values.

Notes for GridObservers: create_and_replace will call in the given order (replace elem with the appropriate name).

  • elem_created(newElem)
  • elem_to_be_replaced(oldElem, newElem)
  • elem_to_be_deleted(oldElem)

References get_iterator(), LOG, register_and_replace_element(), and STATIC_ASSERT.

Referenced by ug::HangingNodeRefiner_MultiGrid::perform_coarsening(), ug::HangingNodeRefinerBase< TSelector >::process_constrained_edge(), ug::HangingNodeRefinerBase< TSelector >::process_constrained_face(), ug::HangingNodeRefinerBase< TSelector >::process_constrained_vertex(), ug::HangingNodeRefiner_MultiGrid::process_constraining_edge(), ug::HangingNodeRefinerBase< TSelector >::process_constraining_face(), ug::HangingNodeRefinerBase< TSelector >::refine_edge_with_hanging_vertex(), ug::HangingNodeRefinerBase< TSelector >::refine_face_with_hanging_vertex(), ug::ReplaceByConstrained(), ug::ReplaceByConstraining(), and ug::ReplaceByNormal().

◆ create_by_cloning() [1/4]

EdgeIterator ug::Grid::create_by_cloning ( Edge pCloneMe,
const IVertexGroup ev,
GridObject pParent = NULL 
)

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

References ug::GridObject::create_empty_instance(), get_iterator(), register_edge(), ug::Edge::set_vertex(), and ug::IVertexGroup::vertex().

◆ create_by_cloning() [2/4]

FaceIterator ug::Grid::create_by_cloning ( Face pCloneMe,
const IVertexGroup fv,
GridObject pParent = NULL 
)

◆ create_by_cloning() [3/4]

◆ create_by_cloning() [4/4]

VolumeIterator ug::Grid::create_by_cloning ( Volume pCloneMe,
const IVertexGroup vv,
GridObject pParent = NULL 
)

◆ detach_from()

◆ detach_from_all()

◆ detach_from_edges()

◆ detach_from_faces()

◆ detach_from_vertices()

void ug::Grid::detach_from_vertices ( IAttachment attachment)
inline

Referenced by ug::ApplySmoothManifoldPosToTopLevelAveragingScheme(), ug::ApplySmoothManifoldPosToTopLevelButterflyScheme(), ug::ApplySmoothManifoldPosToTopLevelLoopScheme(), ug::ApplySmoothVolumePosToTopLevel(), ug::CheckValences(), ug::CopyGrid(), ug::CopyGridLevel(), ug::CopySelected(), ug::CopySelection(), ug::CreateOctree(), ug::GridSubsetHandler::detach_data(), ug::MultiGridSubsetHandler::detach_data(), ug::ArteExpandFracs3D::detachMarkers(), ug::ISelector::disable_element_support(), ug::MGSelector::disable_element_support(), ug::ISubsetHandler::disable_element_support(), ug::ExpandFractures2d(), ug::ExpandFractures2dArte(), ug::ExpandFractures3d(), ug::ExportGridToSMESH(), ug::ExportGridToUG_2D(), ug::ExtrudeLayers(), ug::ExtrudeLayersMixed(), ug::DistributedGridManager::free_grid_data(), ug::LoadGrid3d(), ug::MergeGrids(), ug::GridWriterVTU::new_piece(), ug::PPP_ReplaceCoordinate< dim >::partitioning_done(), ug::PerformRetetrahedralization(), ug::PerformTetrahedralization(), ug::VTKOutput< TDim >::print(), ug::VTKOutput< TDim >::print_subset(), ug::VTKOutput< TDim >::print_subsets(), ug::ProjectToLimitPLoop(), ug::ProjectToLimitSubdivBoundary(), ug::RasterLayersProjector::remove_attachments(), remove_marks(), ug::RemoveDoubles(), ug::SaveGrid3d(), ug::SaveGridHierarchyTransformed(), ug::SaveGridTo2DF(), ug::SaveGridToART(), ug::SaveGridToNCDF(), ug::SaveGridToOBJ(), ug::SaveGridToTXT(), ug::SaveParallelGridLayout(), ug::SaveSurfaceViewTransformed(), ug::SerializeGridElements(), ug::PeriodicBoundaryManager::set_grid(), ug::SimplifySmoothedPolylines(), ug::TangentialSmooth(), and ug::DistributedGridManager::~DistributedGridManager().

◆ detach_from_volumes()

◆ disable_options()

void ug::Grid::disable_options ( uint  options)

see set_options for a description of valid parameters.

References change_options(), and m_options.

◆ distributed_grid_manager() [1/2]

DistributedGridManager * ug::Grid::distributed_grid_manager ( )
inline

returns a pointer to the associated distributed grid manager.

The method returns NULL, if no distributed grid manager for the given grid exists. This should be the case for serial environments or for serial grids in parallel environments. Use ug::Grid::set_parallel() to enable or disable parallelism in a grid. You have to include "lib_grid/parallelization/distributed_grid.h" to access methods of a distributed grid manager.

References m_distGridMgr.

Referenced by ug::ApplySmoothManifoldPosToTopLevelAveragingScheme(), ug::ApplySmoothManifoldPosToTopLevelButterflyScheme(), ug::ApplySmoothManifoldPosToTopLevelLoopScheme(), ug::ApplySmoothVolumePosToTopLevel(), ug::AssignSubsetsByInterfaceType(), ug::AssignVerticalMasterAndSlaveStates(), ug::AttachmentAllReduce(), ug::ISelector::broadcast_selection_states(), ug::CalculateConstrainedSmoothVolumePosInTopLevel(), ug::CalculateNumElemsVertexAttachmentInTopLevel(), ug::CalculateNumManifoldEdgesVertexAttachmentInParentLevel(), ug::CalculateNumManifoldFacesVertexAttachmentInTopLevel(), ug::CalculateSmoothCreaseManifoldPosInParentLevelLoopScheme(), ug::CalculateSmoothManifoldPosInParentLevelButterflyScheme(), ug::CalculateSmoothManifoldPosInParentLevelLoopScheme(), ug::CalculateSmoothManifoldPosInTopLevelAveragingScheme(), ug::CalculateSmoothVolumePosInTopLevel(), ug::CheckDistributedObjectConstraintTypes(), ug::CheckMultiGridConsistencyImpl(), ug::ConstructParallelDualGraphMGLevel(), ug::Partitioner_DynamicBisection< TElem, dim >::copy_partitions_to_children(), ug::DistributedGridManager::create_missing_constrained_h_interfaces(), ug::DistributeGrid(), ug::LoadBalancer::estimate_distribution_quality_impl(), ug::Partitioner_DynamicBisection< TElem, dim >::gather_weights_from_level(), ug::ParallelDualGraph< TGeomBaseObj, TIndexType, TConnectingObj >::generate_graph(), ug::GridFunction< TDomain, TAlgebra >::grid_changed_callback(), ug::GridFunction< TDomain, TAlgebra >::grid_distribution_callback(), ug::MarkAllElemsForAssemblyButHSlaves(), ug::PartitionMultiGridLevel_ParmetisKway(), ug::Partitioner_DynamicBisection< TElem, dim >::perform_bisection(), ug::PrintElementEdgeRatios(), ug::ProjectHierarchyToSubdivisionLimit(), ug::ParallelHNodeAdjuster::ref_marks_changed(), ug::SelectChildrenOfSelectedShadowRimEdges(), ug::SelectChildrenOfSelectedShadowRimFaces(), ug::SelectChildrenOfSelectedShadowVertices(), ug::SelectElementsForTargetPartition(), ug::SelectSelectedRootElementsAsVSlaves(), ug::SelectUnselectedRootElementsAsVMasters(), ug::SideAndElemErrEstData< TDomain >::summarize_err_est_data(), ug::SynchronizeDistInfos(), ug::TetrahedralizeHybridTetOctGrid(), and ug::ZRayTracer< TDomain >::ZRayTracer().

◆ distributed_grid_manager() [2/2]

const DistributedGridManager * ug::Grid::distributed_grid_manager ( ) const
inline

returns a pointer to the associated distributed grid manager.

The method returns NULL, if no distributed grid manager for the given grid exists. This should be the case for serial environments or for serial grids in parallel environments. Use ug::Grid::set_parallel() to enable or disable parallelism in a grid. You have to include "lib_grid/parallelization/distributed_grid.h" to access methods of a distributed grid manager.

References m_distGridMgr.

◆ edge_fragmentation()

◆ edge_store_associated_faces()

void ug::Grid::edge_store_associated_faces ( bool  bStoreIt)
protected

◆ edge_store_associated_volumes()

void ug::Grid::edge_store_associated_volumes ( bool  bStoreIt)
protected

◆ edges_begin()

◆ edges_end()

◆ element_storage() [1/2]

template<class TElem >
traits<TElem>::ElementStorage& ug::Grid::element_storage ( )
inlineprotected

returns the element storage for a given element type

◆ element_storage() [2/2]

template<class TElem >
const traits<TElem>::ElementStorage& ug::Grid::element_storage ( ) const
inlineprotected

returns the const element storage for a given element type

◆ enable_options()

◆ end() [1/2]

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

References STATIC_ASSERT.

Referenced by ug::GridWriterUGX::add_attachment(), ug::GridWriterUGX::add_elements_to_node(), ug::GridWriterUGX::add_grid(), ug::AdjustEdgeLength(), ug::AdjustSubsetsForSimulation(), assign_grid(), ug::ISubsetHandler::assign_subset_handler(), ug::AssignGridToSubset(), ug::AssignInnerAndBoundarySubsets(), ug::AssignSidesToSubsets(), ug::AssignSubset_VerticesInCube(), ug::AssignSubset_VerticesInSphere(), ug::AssignTetrahedronAttributesByAspectRatio(), ug::AssignUnassignedElemsToSubset(), ug::CalculateAverageEdgeLength(), ug::CalculateVertexNormals(), ug::CheckForUnconnectedSidesIMPL(), ug::CheckHangingNodeConsistency(), ug::BoolMarker::clear(), ug::GridWriterVTU::collect_cells(), ug::ColorControlVolume(), ug::ColorSubControlVolume(), ug::ColorSubControlVolumeFaces(), ug::ComputeLocalSubsetDimensions(), ug::CopyAttachments(), ug::CopySelectionStatus(), ug::CreateAndDistributeGlobalIDs(), ug::CreateGridOfControlVolumes(), ug::OverlyingSubsetFinder< TDomain >::debug(), ug::DeserializeAttachment(), ug::ISelector::enable_element_support(), ug::ExportGridToSWC(), ug::ExportGridToTETGEN(), ug::ExtrudeLayers(), ug::ExtrudeLayersMixed(), ug::GenerateIcosphere(), ug::GetGridObjectIndex(), ug::GetSelectedElementIndices(), ug::GridWriterUGX::init_grid_attachments(), ug::InvertSelection(), ug::LoadGridFromOBJ(), ug::LoadMarkerPointsFromFile(), mark(), ug::MarkAllElemsForAssemblyButHSlaves(), ug::MarkForAdaption_VerticesInCube(), ug::MarkForAdaption_VerticesInSphereMaxLvl(), ug::MarkForRefinement_AllAnisotropic(), ug::MarkForRefinement_AnisotropicElements(), ug::MarkForRefinement_ElementsInSphere(), ug::MarkForRefinement_SubsetInterfaceElements(), ug::MergeGrids(), ug::GridWriterVTU::new_piece(), ug::OverlyingSubsetFinder< TDomain >::OverlyingSubsetFinder(), ug::PartitionGrid_MetisKway(), ug::PerformRetetrahedralization(), ug::PerformTetrahedralization(), ug::ProjectToLayer(), ug::GlobalAttachments::read_attachment_from_stream(), ug::ResetSubsetIndices(), ug::ResolveTriangleIntersections(), ug::DelaunayDebugSaver::save(), ug::SaveGridTo2DF(), ug::SaveGridToART(), ug::SaveGridToELE(), ug::SaveGridToSTL(), ug::SaveGridToTXT(), ug::SelectDomainElements(), ug::SelectElementsByIndex(), ug::SelectRegion(), ug::SelectShortPolychains(), ug::SeparateRegions(), ug::SeparateSubsetsByLowerDimSeparators(), ug::SerializeAttachment(), ug::SimplifySmoothedPolylines(), ug::SnapMarkerPointToGridVertex(), ug::Triangulate(), unmark(), ug::PeriodicBoundaryManager::validity_check(), ug::GlobalAttachments::write_attachment_to_stream(), ug::GridWriterVTU::write_vector_data(), ug::WriteDebugValuesToFile(), and ug::ZRayTracer< TDomain >::ZRayTracer().

◆ end() [2/2]

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

References STATIC_ASSERT.

◆ end_marking()

void ug::Grid::end_marking ( )

ends a marking sequence. Call this method when you're done with marking.

References m_bMarking.

Referenced by ug::AssignFixedVertices(), ug::CalculateCenter(), ug::CalculateCreaseNormal(), ug::grid_unit_tests::CheckAssociatedEdgesOfVolumes(), ug::grid_unit_tests::CheckAssociatedVolumesOfEdges(), clear_marks(), ug::CollectAssociatedSides(), ug::CollectNeighborhood(), ug::CollectNeighbors(), ug::CollectSurfaceNeighborsSorted(), ug::CollectVerticesTouchingSelection(), ug::ConvertToTetrahedra(), ug::VTKOutput< TDim >::count_piece_sizes(), ug::GridPointsOrdering< TDomain, TAlgebra >::create_vtkoutput_ordering(), ug::CreateHexahedronFromPrisms(), ug::CreatePolyChain(), ug::CreatePyramid(), ug::CreateTetrahedron(), ug::DistributedGridManager::end_element_deletion(), ug::ExportGridToSWC(), ug::ExtendSelection(), ug::ExtendSelectionInDirection(), ug::ExtrudeLayers(), ug::FixEdgeOrientation(), ug::FixFaceOrientation(), ug::GetFirstRegularVertex(), ug::GetNeighborhood(), ug::GetNeighbours(), ug::PeriodicBoundaryManager::handle_creation(), ug::IntersectCloseEdges(), ug::MarkFixedCreaseVertices(), ug::NumAssociatedFaces(), ug::NumSharedVertices(), ug::ObtainSimpleGrid(), ug::ObtainSimpleGrid_CollapseEdge(), ug::PartitionElements_RegularGrid(), ug::QualityGridGeneration(), ug::SmoothProjector::refinement_ends(), ug::RemoveDuplicates(), ug::HangingNodeRefiner_MultiGrid::restrict_selection_to_coarsen_families(), ug::SelectAreaBoundary(), ug::SelectInnerSelectionEdges(), ug::SelectInnerSelectionFaces(), ug::SelectInnerSelectionVertices(), ug::SelectShortPolychains(), ug::SerializeMultiGridElements(), ug::SimplifyPolylines(), ug::SplitIrregularManifoldSubset(), ug::SplitIrregularPolyChain(), ug::SwapEdge(), ug::TangentialSmooth(), ug::TangentialSmoothSimple(), ug::TranslateSelection(), ug::TriangleFill_SweepLine(), ug::VTKOutput< TDim >::write_nodal_data(), ug::VTKOutput< TDim >::write_nodal_values(), ug::VTKOutput< TDim >::write_points(), and ug::WriteLGM().

◆ erase() [1/6]

template<class GeomObjIter >
void ug::Grid::erase ( const GeomObjIter &  iterBegin,
const GeomObjIter &  iterEnd 
)
Todo:
: This erase method can cause problems if used with multi-grids.

References erase().

◆ erase() [2/6]

void ug::Grid::erase ( Edge edge)

◆ erase() [3/6]

void ug::Grid::erase ( Face face)

◆ erase() [4/6]

◆ erase() [5/6]

void ug::Grid::erase ( Vertex vrt)

◆ erase() [6/6]

void ug::Grid::erase ( Volume vol)

◆ face_autogenerate_edges()

◆ face_fragmentation()

◆ face_store_associated_edges()

void ug::Grid::face_store_associated_edges ( bool  bStoreIt)
protected

◆ face_store_associated_volumes()

void ug::Grid::face_store_associated_volumes ( bool  bStoreIt)
protected

◆ faces_begin()

◆ faces_end()

◆ find_edge_in_associated_edges()

template<class TGeomObj >
Edge * ug::Grid::find_edge_in_associated_edges ( TGeomObj *  obj,
const EdgeVertices ev 
)
protected

◆ find_face_in_associated_faces()

template<class TGeomObj >
Face * ug::Grid::find_face_in_associated_faces ( TGeomObj *  obj,
const FaceVertices fv 
)
protected

◆ find_volume_in_associated_volumes()

template<class TGeomObj >
Volume * ug::Grid::find_volume_in_associated_volumes ( TGeomObj *  obj,
const VolumeVertices vv 
)
protected

◆ flip_orientation() [1/3]

void ug::Grid::flip_orientation ( Edge e)

◆ flip_orientation() [2/3]

◆ flip_orientation() [3/3]

◆ front()

template<class TGeomObj >
TGeomObj * ug::Grid::front

returns the first element of the given type.

Make sure that elements of the given type exist! Behaviour is undefined, if not.

References STATIC_ASSERT.

Referenced by ug::PartitionMultiGrid_MetisKway(), ug::PartitionMultiGridLevel_MetisKway(), and ug::SelectionFill().

◆ get_associated() [1/14]

void ug::Grid::get_associated ( SecureEdgeContainer edges,
Face f 
)
protected

◆ get_associated() [2/14]

◆ get_associated() [3/14]

void ug::Grid::get_associated ( SecureEdgeContainer edges,
Volume v 
)
protected

◆ get_associated() [4/14]

void ug::Grid::get_associated ( SecureFaceContainer faces,
Edge e 
)
protected

◆ get_associated() [5/14]

void ug::Grid::get_associated ( SecureFaceContainer faces,
Vertex v 
)
protected

◆ get_associated() [6/14]

void ug::Grid::get_associated ( SecureFaceContainer faces,
Volume v 
)
protected

◆ get_associated() [7/14]

◆ get_associated() [8/14]

◆ get_associated() [9/14]

◆ get_associated() [10/14]

void ug::Grid::get_associated ( SecureVolumeContainer vols,
Edge e 
)
protected

◆ get_associated() [11/14]

void ug::Grid::get_associated ( SecureVolumeContainer vols,
Face f 
)
protected

◆ get_associated() [12/14]

void ug::Grid::get_associated ( SecureVolumeContainer vols,
Vertex v 
)
protected

◆ get_associated() [13/14]

template<class TContainer >
void ug::Grid::get_associated ( TContainer &  container,
GridObject o 
)
protected

◆ get_associated() [14/14]

template<class TElem >
void ug::Grid::get_associated ( typename traits< typename TElem::grid_base_object > ::secure_container &  elems,
TElem *  e 
)
protected

◆ get_associated_sorted() [1/13]

◆ get_associated_sorted() [2/13]

void ug::Grid::get_associated_sorted ( SecureEdgeContainer edges,
Vertex v 
)
protected

◆ get_associated_sorted() [3/13]

◆ get_associated_sorted() [4/13]

void ug::Grid::get_associated_sorted ( SecureFaceContainer faces,
Edge e 
)
protected

◆ get_associated_sorted() [5/13]

void ug::Grid::get_associated_sorted ( SecureFaceContainer faces,
Vertex v 
)
protected

◆ get_associated_sorted() [6/13]

void ug::Grid::get_associated_sorted ( SecureFaceContainer faces,
Volume v 
)
protected

◆ get_associated_sorted() [7/13]

void ug::Grid::get_associated_sorted ( SecureVertexContainer vrts,
Edge e 
) const
protected

◆ get_associated_sorted() [8/13]

void ug::Grid::get_associated_sorted ( SecureVertexContainer vrts,
Face f 
) const
protected

◆ get_associated_sorted() [9/13]

void ug::Grid::get_associated_sorted ( SecureVertexContainer vrts,
Volume v 
) const
protected

◆ get_associated_sorted() [10/13]

void ug::Grid::get_associated_sorted ( SecureVolumeContainer vols,
Edge e 
)
protected

◆ get_associated_sorted() [11/13]

void ug::Grid::get_associated_sorted ( SecureVolumeContainer vols,
Face f 
)
protected

◆ get_associated_sorted() [12/13]

void ug::Grid::get_associated_sorted ( SecureVolumeContainer vols,
Vertex v 
)
protected

◆ get_associated_sorted() [13/13]

template<class TElem >
void ug::Grid::get_associated_sorted ( typename traits< typename TElem::grid_base_object > ::secure_container &  elems,
TElem *  e 
)
protected

◆ get_associated_vols_raw()

void ug::Grid::get_associated_vols_raw ( SecureVolumeContainer vols,
Face f 
)
protected

this method does not use possibly attached containers and can thus be used, when such containers are to be built.

References ug::PointerConstArray< TPtr >::clear(), LOG, ug::PointerConstArray< TPtr >::push_back(), ug::FaceVertices::vertex(), ug::VolumeContains(), and ug::VRTOPT_STORE_ASSOCIATED_VOLUMES.

◆ get_attachment_data_container()

template<class TGeomObj , class TAttachment >
TAttachment::ContainerType * ug::Grid::get_attachment_data_container ( TAttachment &  attachment)

◆ get_attachment_data_index()

template<class TGeomObj >
uint ug::Grid::get_attachment_data_index ( TGeomObj *  pObj) const

◆ get_attachment_pipe()

template<class TGeomObj >
Grid::traits< TGeomObj >::AttachmentPipe & ug::Grid::get_attachment_pipe

returns the attachment-pipe in which data associated with the given objects-types are stored.

This method is seldomly used, can however be useful. Use with care. If in doubt please use the methods featured by Grid instead of directly operating on the attachment pipe.

References STATIC_ASSERT.

Referenced by ug::Grid::AttachmentAccessor< TElem, TAttachment >::access(), ug::MGSelector::add_level(), ug::GridSubsetHandler::add_required_subset_lists(), ug::Selector::enable_element_support(), ug::MGSelector::enable_element_support(), ug::MultiGridSubsetHandler::new_subset(), and ug::PrintAttachmentInfo().

◆ get_edge() [1/4]

Edge * ug::Grid::get_edge ( const EdgeVertices ev)

returns the edge that is described by ev.

Note that you may pass an EdgeDescriptor to this method.

References find_edge_in_associated_edges(), and ug::EdgeVertices::vertex().

◆ get_edge() [2/4]

Edge * ug::Grid::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.

To make sure that associated edges always exist, enable the grid-option FACEOPT_AUTOGENERATE_EDGES. For maximal performance, the option FACEOPT_STORE_ASSOCIATED_EDGES should be enabled.

Note
If all edges of a face have to be processed, it may be faster to get all edges in one single call. This can be done using Grid::associated_elements.

References ug::Face::edge_desc(), ug::FACEOPT_AUTOGENERATE_EDGES, ug::FACEOPT_STORE_ASSOCIATED_EDGES, find_edge_in_associated_edges(), m_aaEdgeContainerFACE, option_is_enabled(), and ug::EdgeVertices::vertex().

◆ get_edge() [3/4]

◆ get_edge() [4/4]

Edge * ug::Grid::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.

To make sure that associated edges always exist, enable the grid-option VOLOPT_AUTOGENERATE_EDGES. For maximal performance, the option VOLOPT_STORE_ASSOCIATED_EDGES should be enabled.

Note
If all edges of a volume have to be processed, it may be faster to get all edges in one single call. This can be done using Grid::associated_elements.

References ug::Volume::edge_desc(), ug::FACEOPT_AUTOGENERATE_EDGES, find_edge_in_associated_edges(), m_aaEdgeContainerVOLUME, option_is_enabled(), ug::EdgeVertices::vertex(), ug::VOLOPT_AUTOGENERATE_EDGES, ug::VOLOPT_AUTOGENERATE_FACES, and ug::VOLOPT_STORE_ASSOCIATED_EDGES.

◆ get_element() [1/4]

Edge* ug::Grid::get_element ( const EdgeVertices ev)
inline

returns the element for the given vertices.

Note that you can either pass an element type (Edge, Face, Volume) or a descriptor (EdgeDescriptor, FaceDescriptor, VolumeDescriptor). The method returns NULL, if the specified element does not exist. A special overload exists for Vertex*, which simply returns the specified vertex. Useful for template programming...

Referenced by ug::GlobalFracturedMediaRefiner::assign_elem_and_side_marks(), ug::CalculatePyramidAspectRatio(), ug::MultiEdgeSplit(), ug::ResolveTriangleIntersections(), and ug::ResolveVertexFaceIntersection().

◆ get_element() [2/4]

Face* ug::Grid::get_element ( const FaceVertices fv)
inline

returns the element for the given vertices.

Note that you can either pass an element type (Edge, Face, Volume) or a descriptor (EdgeDescriptor, FaceDescriptor, VolumeDescriptor). The method returns NULL, if the specified element does not exist. A special overload exists for Vertex*, which simply returns the specified vertex. Useful for template programming...

◆ get_element() [3/4]

Vertex* ug::Grid::get_element ( const VertexDescriptor vd)
inline

This overload is only useful to avoid compile issues in templated code.

References ug::VertexDescriptor::vertex().

◆ get_element() [4/4]

Volume* ug::Grid::get_element ( const VolumeVertices vv)
inline

returns the element for the given vertices.

Note that you can either pass an element type (Edge, Face, Volume) or a descriptor (EdgeDescriptor, FaceDescriptor, VolumeDescriptor). The method returns NULL, if the specified element does not exist. A special overload exists for Vertex*, which simply returns the specified vertex. Useful for template programming...

◆ get_face() [1/2]

◆ get_face() [2/2]

Face * ug::Grid::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.

To make sure that associated faces always exist, enable the grid-option VOLOPT_AUTOGENERATE_FACES. For maximal performance, the option VOLOPT_STORE_ASSOCIATED_FACES should be enabled.

Note
If all faces of a volume have to be processed, it may be faster to get all faces in one single call. This can be done using Grid::associated_elements.

References ug::Volume::face_desc(), find_face_in_associated_faces(), m_aaFaceContainerVOLUME, option_is_enabled(), ug::FaceDescriptor::vertex(), ug::VOLOPT_AUTOGENERATE_FACES, and ug::VOLOPT_STORE_ASSOCIATED_FACES.

◆ get_grid_objects()

◆ get_iterator() [1/4]

traits<Edge>::SectionContainer::iterator ug::Grid::get_iterator ( Edge o)
inlineprotected

returns the iterator at which the given element lies in the section container

This method may only be called if the element has already been registered at the grid.

◆ get_iterator() [2/4]

traits<Face>::SectionContainer::iterator ug::Grid::get_iterator ( Face o)
inlineprotected

returns the iterator at which the given element lies in the section container

This method may only be called if the element has already been registered at the grid.

◆ get_iterator() [3/4]

traits<Vertex>::SectionContainer::iterator ug::Grid::get_iterator ( Vertex o)
inlineprotected

returns the iterator at which the given element lies in the section container

This method may only be called if the element has already been registered at the grid.

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

◆ get_iterator() [4/4]

traits<Volume>::SectionContainer::iterator ug::Grid::get_iterator ( Volume o)
inlineprotected

returns the iterator at which the given element lies in the section container

This method may only be called if the element has already been registered at the grid.

◆ get_opposing_object() [1/2]

GridObject * ug::Grid::get_opposing_object ( Vertex vrt,
Face elem 
)

returns the geometric object on the opposing side of the given vertex regarding the given element.

Note
Currently only implemented for Face and Volume.

References ug::EDGE, get_edge(), ug::Face::get_opposing_object(), UG_THROW, ug::VERTEX, and ug::FaceVertices::vertex().

Referenced by ug::LaplacianSmooth().

◆ get_opposing_object() [2/2]

GridObject * ug::Grid::get_opposing_object ( Vertex vrt,
Volume elem 
)

returns the geometric object on the opposing side of the given vertex regarding the given element.

Note
Currently only implemented for Face and Volume.

References ug::EDGE, ug::FACE, get_edge(), get_face(), ug::Volume::get_opposing_object(), UG_THROW, ug::VERTEX, and ug::VolumeVertices::vertex().

◆ get_options()

◆ get_side() [1/4]

Edge::side * ug::Grid::get_side ( Edge obj,
size_t  side 
)

◆ get_side() [2/4]

Face::side * ug::Grid::get_side ( Face obj,
size_t  side 
)

◆ get_side() [3/4]

Vertex::side * ug::Grid::get_side ( Vertex obj,
size_t  side 
)

This method returns the i-th side of an Edge, Face or Volume.

If obj has dimension d, then all associated elements of dimension d-1 are regarded as sides. (Face -> Edge). Only derivates of Volume, Face or Edge may be queried for their sides. If you call this method with Vertex*, an assertion is triggered, since vertices do not have sides.

It is not in all cases guaranteed that an object has sides. If i.e. the FACEOPT_AUTOGENERATE_EDGES is not enabled in the grids options, then it is not guaranteed that all side-edges of each face exist (in most cases they wont exist). The method returns NULL in this case. If however FACEOPT_AUTOGENERATE_EDGES is enabled then this method always will return an edge if queried for the side of a face. For volumes the appropriate option is called VOLOPT_AUTOGENERATE_FACES.

The method will be faster if elements store associated lower dimensional elements. Options VOLOPT_STORE_ASSOCIATED_FACES and FACEOPT_STORE_ASSOCIATED_EDGES have to be enabled for this.

Note
If all sides of an element have to be processed, it may be faster to get all sides in one single call. This can be done using Grid::associated_elements.

References GRID_PROFILE_FUNC.

Referenced by ug::CalculateCreaseNormal(), ug::close_sides_of_anisotropic_elem(), ug::ArteExpandFracs3D::createNewElements(), ug::ExpandFractures3d(), ug::ArteExpandFracs3D::generateVertexInfos(), ug::DegeneratedLayerManager< dim >::get_layer_sides(), ug::IsSubSurfaceElement(), and ug::SeparateSubsetsByLowerDimSeparators().

◆ get_side() [4/4]

Volume::side * ug::Grid::get_side ( Volume obj,
size_t  side 
)

◆ get_volume()

Volume * ug::Grid::get_volume ( const VolumeVertices vv)

returns the volume that is described by ev.

Note that you may pass an VolumeDescriptor to this method.

References find_volume_in_associated_volumes(), and ug::VolumeVertices::vertex().

Referenced by ug::CreateVolume().

◆ has_attachment()

◆ has_edge_attachment()

bool ug::Grid::has_edge_attachment ( IAttachment attachment)
inline

Referenced by ug::Refine().

◆ has_face_attachment()

bool ug::Grid::has_face_attachment ( IAttachment attachment)
inline

◆ has_periodic_boundaries()

bool ug::Grid::has_periodic_boundaries ( ) const

returns true, if grid has the possibility to handle periodic boundaries.

References m_periodicBndMgr.

Referenced by ug::mark_if_periodic(), ug::bridge::periodicBoundary::print_all_identifications(), and ug::StdHNodeAdjuster::ref_marks_changed().

◆ has_vertex_attachment()

bool ug::Grid::has_vertex_attachment ( IAttachment attachment)
inline

Referenced by ug::AdaptSurfaceGridToCylinder(), ug::GridWriterUGX::add_grid(), ug::AdjustEdgeLength(), ug::NeuriteProjector::attach_surf_params(), ug::SomaProjector::attach_surf_params(), ug::CalculateFaceNormals(), ug::CopySelected(), ug::FileReaderSWC::create_grid(), ug::CreateEdgeSplitGeometry(), ug::CreateOctree(), ug::bridge::CreateSmoothHierarchy(), ug::CutEdgesWithPlane(), ug::Duplicate(), ug::ExpandFractures2d(), ug::ExpandFractures2dArte(), ug::ExpandFractures3d(), ug::ExportGridToSMESH(), ug::ExportGridToSWC(), ug::ExportGridToTETGEN(), ug::Extrude(), ug::ExtrudeLayers(), ug::ExtrudeLayersMixed(), ug::GenerateIcosahedron(), ug::Geometry< dim, attachmentDim >::Geometry(), ug::GetGridObjectCenter(), ug::GridReaderUGX::grid(), ug::GridReaderVTU::grid(), ug::ImportGridFromLGM(), ug::ImportGridFromNG(), ug::ImportGridFromTETGEN(), ug::ArteExpandFracs3D::initialize(), ug::LoadGridFrom2DF(), ug::LoadGridFromART(), ug::LoadGridFromASC(), ug::LoadGridFromDUMP(), ug::LoadGridFromGRDECL(), ug::LoadGridFromLGB(), ug::LoadGridFromMSH(), ug::LoadGridFromOBJ(), ug::LoadGridFromSMESH(), ug::LoadGridFromSTL(), ug::LoadGridFromTXT(), ug::LoadGridFromUGX(), ug::LoadGridFromVTU(), ug::LoadMarkerPointsFromFile(), ug::MarkCorners(), ug::MarkCreaseEdges(), ug::NTreeGridData< world_dim >::NTreeGridData(), ug::PPP_ReplaceCoordinate< dim >::partitioning_done(), ug::PPP_ReplaceCoordinate< dim >::partitioning_starts(), ug::PerformRetetrahedralization(), ug::PerformTetrahedralization(), ug::ClusterElementStacks< elem_t, vector_t >::post_process(), ug::ProjectToLimitPLoop(), ug::ProjectToLimitSubdivBoundary(), ug::IRefiner::refine(), ug::Refine(), ug::RasterLayersProjector::remove_attachments(), ug::RemoveDoubles(), ug::SaveGridHierarchyTransformed(), ug::SaveGridLevelToFile(), ug::SaveGridTo2DF(), ug::SaveGridToART(), ug::SaveGridToFile(), ug::SaveGridToLGB(), ug::SaveGridToNCDF(), ug::SaveGridToOBJ(), ug::SaveGridToSTL(), ug::SaveGridToTXT(), ug::SaveGridToUGX(), ug::SaveParallelGridLayout(), ug::SaveSurfaceViewTransformed(), ug::SelectCreaseEdges(), ug::SelectLinkedFlatAndDegeneratedFaces(), ug::SelectLinkedFlatFaces(), ug::SelectSmoothEdgePath(), ug::SeparateFaceSubsetsByNormal(), ug::SeparateRegions(), ug::SerializeGridElements(), ug::TestGridLayoutMap(), ug::ToElementPosition< TElem, TAVrtPos >::ToElementPosition(), ug::TriangleFill(), and ug::TriangleFill_SweepLine().

◆ has_volume_attachment()

bool ug::Grid::has_volume_attachment ( IAttachment attachment)
inline

◆ init_marks()

◆ is_marked() [1/5]

bool ug::Grid::is_marked ( Edge obj) const
inline

returns true if the object is marked, false if not.

Only pass objects that are contained by the grid.

References m_aaMarkEDGE, and m_currentMark.

◆ is_marked() [2/5]

bool ug::Grid::is_marked ( Face obj) const
inline

returns true if the object is marked, false if not.

Only pass objects that are contained by the grid.

References m_aaMarkFACE, and m_currentMark.

◆ is_marked() [3/5]

bool ug::Grid::is_marked ( GridObject obj) const
inline

returns true if the object is marked, false if not.

Only pass objects that are contained by the grid.

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

Referenced by ug::AssignFixedVertices(), ug::CalculateCenter(), ug::CalculateCreaseNormal(), ug::IsMarked::callback(), ug::IsNotMarked::callback(), ug::grid_unit_tests::CheckAssociatedEdgesOfVolumes(), ug::grid_unit_tests::CheckAssociatedVolumesOfEdges(), ug::CollectAssociatedSides(), ug::CollectNeighborhood(), ug::CollectNeighbors(), ug::CollectSurfaceNeighborsSorted(), ug::CollectVerticesTouchingSelection(), ug::ConvertToTetrahedra(), ug::GridPointsOrdering< TDomain, TAlgebra >::count_sizes(), ug::VTKOutput< TDim >::count_sizes(), ug::CreateHexahedronFromPrisms(), ug::CreatePolyChain(), ug::CreatePyramid(), ug::CreateTetrahedron(), ug::DistributedGridManager::end_element_deletion(), ug::ExportGridToSWC(), ug::ExtendSelection(), ug::ExtendSelectionInDirection(), ug::ExtrudeLayers(), ug::FixEdgeOrientation(), ug::FixFaceOrientation(), ug::GetFirstRegularVertex(), ug::GetNeighborhood(), ug::GetNeighbours(), ug::PeriodicBoundaryManager::handle_creation(), ug::IntersectCloseEdges(), ug::MarkFixedCreaseVertices(), ug::NumAssociatedFaces(), ug::GridPointsOrdering< TDomain, TAlgebra >::number_points_elementwise(), ug::NumSharedVertices(), ug::ObtainSimpleGrid(), ug::ObtainSimpleGrid_CollapseEdge(), ug::PartitionElements_RegularGrid(), ug::QualityGridGeneration(), ug::SmoothProjector::refinement_ends(), ug::RemoveDuplicates(), ug::HangingNodeRefiner_MultiGrid::restrict_selection_to_coarsen_families(), ug::SelectAreaBoundary(), ug::SelectInnerSelectionEdges(), ug::SelectInnerSelectionFaces(), ug::SelectInnerSelectionVertices(), ug::SelectShortPolychains(), ug::SerializeMultiGridElements(), ug::SimplifyPolylines(), ug::SplitIrregularManifoldSubset(), ug::SplitIrregularPolyChain(), ug::SwapEdge(), ug::TangentialSmooth(), ug::TangentialSmoothSimple(), ug::TranslateSelection(), ug::TriangleFill_SweepLine(), ug::VisitAreaBoundary(), ug::VTKOutput< TDim >::write_nodal_data_elementwise(), ug::VTKOutput< TDim >::write_nodal_values_elementwise(), ug::VTKOutput< TDim >::write_points_elementwise(), ug::WriteLGM(), and ug::WriteParent().

◆ is_marked() [4/5]

bool ug::Grid::is_marked ( Vertex obj) const
inline

returns true if the object is marked, false if not.

Only pass objects that are contained by the grid.

References m_aaMarkVRT, and m_currentMark.

◆ is_marked() [5/5]

bool ug::Grid::is_marked ( Volume obj) const
inline

returns true if the object is marked, false if not.

Only pass objects that are contained by the grid.

References m_aaMarkVOL, and m_currentMark.

◆ is_parallel()

bool ug::Grid::is_parallel ( ) const
inline

returns true if the grid is prepared for parallel computations.

If the method returns true, it is also clear, that a distributed grid manager exists in the grid. The manager can be queried through ug::Grid::distributed_grid_manager.

References m_distGridMgr.

Referenced by ug::Partitioner_DynamicBisection< TElem, dim >::copy_partitions_to_children(), ug::DistributeGrid(), ug::PartitionMultiGridLevel_ParmetisKway(), ug::ParallelHNodeAdjuster::ref_marks_changed(), ug::StdHNodeAdjuster::ref_marks_changed(), and set_parallel().

◆ mark() [1/6]

void ug::Grid::mark ( Edge obj)
inline

marks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking.

Only pass objects that are contained by the grid.

References m_aaMarkEDGE, m_bMarking, and m_currentMark.

◆ mark() [2/6]

void ug::Grid::mark ( Face obj)
inline

marks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking.

Only pass objects that are contained by the grid.

References m_aaMarkFACE, m_bMarking, and m_currentMark.

◆ mark() [3/6]

void ug::Grid::mark ( GridObject obj)
inline

marks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking.

Only pass objects that are contained by the grid.

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

Referenced by ug::AssignFixedVertices(), ug::CalculateCenter(), ug::CalculateCreaseNormal(), ug::grid_unit_tests::CheckAssociatedEdgesOfVolumes(), ug::grid_unit_tests::CheckAssociatedVolumesOfEdges(), ug::CollectAssociatedSides(), ug::CollectNeighborhood(), ug::CollectNeighbors(), ug::CollectSurfaceNeighborsSorted(), ug::CollectVerticesTouchingSelection(), ug::ConvertToTetrahedra(), ug::GridPointsOrdering< TDomain, TAlgebra >::count_sizes(), ug::VTKOutput< TDim >::count_sizes(), ug::CreateHexahedronFromPrisms(), ug::CreatePolyChain(), ug::CreatePyramid(), ug::CreateTetrahedron(), ug::DistributedGridManager::end_element_deletion(), ug::ExportGridToSWC(), ug::ExtendSelection(), ug::ExtendSelectionInDirection(), ug::ExtrudeLayers(), ug::FixEdgeOrientation(), ug::FixFaceOrientation(), ug::GetFirstRegularVertex(), ug::GetNeighborhood(), ug::GetNeighbours(), ug::PeriodicBoundaryManager::handle_creation(), ug::IntersectCloseEdges(), mark(), ug::MarkFixedCreaseVertices(), ug::NumAssociatedFaces(), ug::GridPointsOrdering< TDomain, TAlgebra >::number_points_elementwise(), ug::NumSharedVertices(), ug::ObtainSimpleGrid(), ug::ObtainSimpleGrid_CollapseEdge(), ug::PartitionElements_RegularGrid(), ug::QualityGridGeneration(), ug::SmoothProjector::refinement_ends(), ug::RemoveDuplicates(), ug::HangingNodeRefiner_MultiGrid::restrict_selection_to_coarsen_families(), ug::SelectAreaBoundary(), ug::SelectInnerSelectionEdges(), ug::SelectInnerSelectionFaces(), ug::SelectInnerSelectionVertices(), ug::SelectShortPolychains(), ug::SerializeMultiGridElements(), ug::SimplifyPolylines(), ug::SplitIrregularManifoldSubset(), ug::SplitIrregularPolyChain(), ug::SwapEdge(), ug::TangentialSmooth(), ug::TangentialSmoothSimple(), ug::TranslateSelection(), ug::TriangleFill_SweepLine(), ug::VisitAreaBoundary(), ug::VTKOutput< TDim >::write_nodal_data_elementwise(), ug::VTKOutput< TDim >::write_nodal_values_elementwise(), ug::VTKOutput< TDim >::write_points_elementwise(), and ug::WriteLGM().

◆ mark() [4/6]

template<class TIterator >
void ug::Grid::mark ( TIterator  begin,
TIterator  end 
)

marks all objects between begin and end

TIterator::value_type has to be either Vertex*, Edge*, Face* or Volume*.

References begin(), end(), and mark().

◆ mark() [5/6]

void ug::Grid::mark ( Vertex obj)
inline

marks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking.

Only pass objects that are contained by the grid.

References m_aaMarkVRT, m_bMarking, and m_currentMark.

◆ mark() [6/6]

void ug::Grid::mark ( Volume obj)
inline

marks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking.

Only pass objects that are contained by the grid.

References m_aaMarkVOL, m_bMarking, and m_currentMark.

◆ message_hub()

◆ notify_and_clear_observers_on_grid_destruction()

void ug::Grid::notify_and_clear_observers_on_grid_destruction ( GridObserver initiator = NULL)
protected

unregisters all observers. Call this method in destructors of derived classes.

If the derived class is an observer itself and if you don't want it to be notified on grid-destruction, e.g., because you call this method in the destructor of your derived class, then pass a pointer to your class through the initiator parameter to this function.

Parameters
initiatorThe initiator won't be notified about grid destruction

References m_edgeObservers, m_faceObservers, m_gridObservers, m_vertexObservers, m_volumeObservers, and unregister_observer().

Referenced by ~Grid().

◆ num()

◆ num_edges()

◆ num_faces()

◆ num_vertices()

◆ num_volumes()

◆ objects_will_be_merged() [1/4]

void ug::Grid::objects_will_be_merged ( Edge target,
Edge elem1,
Edge elem2 
)
inline

notifies the grid that two objects will be merged.

The grid forwards this notification to its GridObservers. The notification is not relevant for the grid itself.

References m_edgeObservers, and boost::target().

◆ objects_will_be_merged() [2/4]

void ug::Grid::objects_will_be_merged ( Face target,
Face elem1,
Face elem2 
)
inline

notifies the grid that two objects will be merged.

The grid forwards this notification to its GridObservers. The notification is not relevant for the grid itself.

References m_faceObservers, and boost::target().

◆ objects_will_be_merged() [3/4]

void ug::Grid::objects_will_be_merged ( Vertex target,
Vertex elem1,
Vertex elem2 
)
inline

notifies the grid that two objects will be merged.

The grid forwards this notification to its GridObservers. The notification is not relevant for the grid itself.

References m_vertexObservers, and boost::target().

Referenced by ug::CollapseEdge(), ug::MergeVertices(), and ug::RemoveDuplicates().

◆ objects_will_be_merged() [4/4]

void ug::Grid::objects_will_be_merged ( Volume target,
Volume elem1,
Volume elem2 
)
inline

notifies the grid that two objects will be merged.

The grid forwards this notification to its GridObservers. The notification is not relevant for the grid itself.

References m_volumeObservers, and boost::target().

◆ operator=()

Grid & ug::Grid::operator= ( const Grid grid)

copies all elements and some attachments from the passed grid to this grid.

While all elements and the options are copied completely from the source-grid, the attachments are only copied if their pass-on behaviour is set to true. Attachments that were already attached to this grid are removed prior to copying if their pass-on behaviour was set to true. They will be kept otherwise. This is relevant to ensure that observers like GridSubsetHandler will work after the assignment.

References assign_grid(), clear_geometry(), ug::GRIDOPT_NONE, and set_options().

◆ option_is_enabled()

bool ug::Grid::option_is_enabled ( uint  option) const

see set_options for a description of valid parameters.

References m_options.

Referenced by ug::AdjustEdgeLength(), associated_edges_begin(), associated_edges_end(), associated_faces_begin(), associated_faces_end(), associated_volumes_begin(), associated_volumes_end(), autoenable_option(), ug::CalculateAngles(), ug::CalculateCreaseNormal(), ug::CalculateMaxAngle(), ug::CalculateMaxDihedral(), ug::CalculateMinAngle(), ug::CalculateMinDihedral(), ug::grid_unit_tests::CheckAssociatedEdgesOfVolumes(), ug::grid_unit_tests::CheckAssociatedVolumesOfEdges(), ug::CollectEdges(), ug::CollectEdgesSorted(), ug::CollectFaces(), ug::CollectFacesSorted(), ug::CollectNeighbors(), ug::CollectSurfaceNeighborsSorted(), ug::CollectVolumes(), ug::CreateSurfaceView(), ug::DelaunayInfo< TAAPos >::DelaunayInfo(), ug::ExpandFractures2d(), ug::ExpandFractures2dArte(), ug::ExpandFractures3d(), flip_orientation(), ug::ArteExpandFracs3D::generateVertexInfos(), get_edge(), get_face(), ug::GetAssociatedFaces(), ug::GetNeighbours(), ug::GetNextSectionOfPolyChain(), ug::ArteExpandFracs3D::initialize(), ug::IsBoundaryEdge(), ug::IsBoundaryEdge3D(), ug::IsBoundaryVertex1D(), ug::IsBoundaryVertex2D(), ug::IsBoundaryVertex3D(), ug::MergeVertices(), ug::NumAssociatedFaces(), ug::NumAssociatedVolumes(), ug::GlobalFracturedMediaRefiner::perform_refinement(), ug::GlobalMultiGridRefiner::perform_refinement(), ug::HangingNodeRefinerBase< TSelector >::perform_refinement(), ug::Refine(), ug::SaveGridToART(), ug::SelectAssociatedGridObjects(), ug::SelectSmoothEdgePath(), ug::SplitEdge(), ug::SplitIrregularManifoldSubset(), and ug::SplitIrregularPolyChain().

◆ pass_on_values() [1/5]

void ug::Grid::pass_on_values ( Edge objSrc,
Edge objDest 
)

◆ pass_on_values() [2/5]

void ug::Grid::pass_on_values ( Face objSrc,
Face objDest 
)

◆ pass_on_values() [3/5]

template<class TAttachmentPipe , class TElem >
void ug::Grid::pass_on_values ( TAttachmentPipe &  attachmentPipe,
TElem *  pSrc,
TElem *  pDest 
)
protected

◆ pass_on_values() [4/5]

void ug::Grid::pass_on_values ( Vertex objSrc,
Vertex objDest 
)

◆ pass_on_values() [5/5]

void ug::Grid::pass_on_values ( Volume objSrc,
Volume objDest 
)

◆ periodic_boundary_manager() [1/2]

PeriodicBoundaryManager * ug::Grid::periodic_boundary_manager ( )

returns a pointer to the associated periodic boundary manager.

The method returns NULL, if no periodic boundary get_attachment_accessor for the given grid exists. Use ug::Grid::set_periodic_boundaries() to enable or disable periodic boundaries in a grid. You have to include "lib_grid/tools/periodic_boundary_manager.h" to access methods of the peridodic boundary manager.

References m_periodicBndMgr.

Referenced by ug::PeriodicAttachmentAccessor< TElem, TAttachment >::access(), ug::ElementDebugInfo_IMPL(), ug::mark_if_periodic(), and ug::bridge::periodicBoundary::print_all_identifications().

◆ periodic_boundary_manager() [2/2]

const PeriodicBoundaryManager * ug::Grid::periodic_boundary_manager ( ) const

returns a pointer to the associated periodic boundary manager.

The method returns NULL, if no periodic boundary get_attachment_accessor for the given grid exists. Use ug::Grid::set_periodic_boundaries() to enable or disable periodic boundaries in a grid. You have to include "lib_grid/tools/periodic_boundary_manager.h" to access methods of the peridodic boundary manager.

References m_periodicBndMgr.

◆ register_and_replace_element() [1/4]

◆ register_and_replace_element() [2/4]

◆ register_and_replace_element() [3/4]

◆ register_and_replace_element() [4/4]

◆ register_edge()

◆ register_element() [1/4]

void ug::Grid::register_element ( Edge e,
GridObject pParent = NULL 
)
inline

◆ register_element() [2/4]

void ug::Grid::register_element ( Face f,
GridObject pParent = NULL 
)
inline

◆ register_element() [3/4]

◆ register_element() [4/4]

void ug::Grid::register_element ( Volume v,
GridObject pParent = NULL 
)
inline

◆ register_face()

◆ register_observer()

◆ register_vertex()

void ug::Grid::register_vertex ( Vertex v,
GridObject pParent = NULL 
)
protected

pDF specifies the element from which v derives its values

creates and removes connectivity data, as specified in optsNew.

References ug::Vertex::container_section(), GCM_PROFILE, GCM_PROFILE_END, GCM_PROFILE_FUNC, and NOTIFY_OBSERVERS.

Referenced by create_by_cloning().

◆ register_volume()

◆ remove_marks()

void ug::Grid::remove_marks ( )
protected

◆ replace_vertex()

bool ug::Grid::replace_vertex ( Vertex vrtOld,
Vertex vrtNew 
)

Replace vrtOld with vrtNew.

WARNING: USE THIS METHOD WITH CARE! vrtOld and vrtNew have both to be registered vertices of this grid. vrtOld will be erased during this method. Make sure that no geometric object in the grid references both vrtOld and vrtNew. This method iterates through all geometric objects that are connected with vrtOld and replaces vrtOld by vrtNew in each. Connectivity information will be updated on the fly. Elements that reference both vrtOld and vrtNew will reference vrtNew two times after the completion of replace_vertex. This leads to degenerate elements and most likely to bad runtime behavior.

requires options in GRIDOPT_VERTEXCENTRIC_INTERCONNECTION.

References ug::CollectEdges(), ug::CollectFaces(), ug::CollectVolumes(), ug::Vertex::container_section(), ug::Edge::container_section(), ug::Face::container_section(), ug::Volume::container_section(), ug::Face::edge_desc(), ug::Volume::edge_desc(), ug::EDGEOPT_STORE_ASSOCIATED_FACES, ug::EDGEOPT_STORE_ASSOCIATED_VOLUMES, ug::Volume::face_desc(), ug::FACEOPT_STORE_ASSOCIATED_EDGES, ug::FACEOPT_STORE_ASSOCIATED_VOLUMES, ug::find(), NOTIFY_OBSERVERS_REVERSE, ug::Face::num_edges(), ug::Volume::num_edges(), ug::Volume::num_faces(), ug::FaceVertices::num_vertices(), ug::FaceDescriptor::num_vertices(), ug::VolumeVertices::num_vertices(), ug::FaceDescriptor::set_num_vertices(), ug::VolumeDescriptor::set_num_vertices(), ug::Edge::set_vertex(), ug::Face::set_vertex(), ug::Volume::set_vertex(), ug::FaceDescriptor::set_vertex(), ug::VolumeDescriptor::set_vertex(), ug::EdgeDescriptor::set_vertices(), ug::EdgeVertices::vertex(), ug::FaceVertices::vertices(), ug::FaceDescriptor::vertices(), ug::VolumeVertices::vertices(), ug::VOLOPT_STORE_ASSOCIATED_EDGES, ug::VOLOPT_STORE_ASSOCIATED_FACES, ug::VRTOPT_STORE_ASSOCIATED_EDGES, ug::VRTOPT_STORE_ASSOCIATED_FACES, and ug::VRTOPT_STORE_ASSOCIATED_VOLUMES.

Referenced by ug::CollapseEdge().

◆ replace_vertex_is_valid()

bool ug::Grid::replace_vertex_is_valid ( Vertex vrtOld,
Vertex vrtNew 
)

checks if replace_vertex would be a valid operation

Checks if a call of replace_vertex with vertices vrtOld and vrtNew would lead to degenerate elements. If so false is returned. If not true is returned.

requires options in GRIDOPT_VERTEXCENTRIC_INTERCONNECTION.

References ug::FaceContains(), ug::VolumeContains(), ug::VRTOPT_STORE_ASSOCIATED_EDGES, ug::VRTOPT_STORE_ASSOCIATED_FACES, and ug::VRTOPT_STORE_ASSOCIATED_VOLUMES.

◆ reserve()

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

Reserves memory for the creation of the given object type.

Calls to this method are optional, but can improve runtime. Specify the total number of objects which the grid should be capable to hold (if more are required, the grid will automatically adjust sizes)

References num(), and STATIC_ASSERT.

Referenced by ug::ExtrudeLayers(), ug::ExtrudeLayersMixed(), ug::ImportGridFromTETGEN(), ug::LoadGridFromSTL(), ug::GlobalFracturedMediaRefiner::perform_refinement(), ug::GlobalMultiGridRefiner::perform_refinement(), and ug::HangingNodeRefiner_MultiGrid::pre_refine().

◆ reset_marks()

void ug::Grid::reset_marks ( )
protected

◆ set_options()

void ug::Grid::set_options ( uint  options)

you can pass any option enumerated in GridOptions or specify a custom option using an or-combination of the constants enumerated in VertexOptions, EdgeOptions, FaceOptions and VolumeOptions. See GridOptions for possible combinations.

References change_options().

Referenced by clear_geometry(), ug::GridReaderUGX::grid(), ug::GridReaderVTU::grid(), ug::LoadGridFromLGB(), and operator=().

◆ set_parallel()

void ug::Grid::set_parallel ( bool  parallel)

tell the grid whether it will be used in a serial or in a parallel environment.

If parallelism is enabled, the grid will internally create a distributed grid manager, which will handle horizontal and vertical process interfaces. The manager can be queried through the method ug::Grid::distributed_grid_manager. If false is passed and a distributed grid manager already existed, it will be destroyed. parallelism is disabled by default.

Note
set_parallel(true) may currently only be executed on ug::MultiGrid. There is currently no parallelization support for plain ug::Grid.
parallelism may only be activated if ug was compiled with PARALLEL=ON.

References ug::DistributedGridManager::assign(), is_parallel(), m_distGridMgr, and UG_THROW.

Referenced by ug::MultiGrid::create_by_cloning().

◆ set_periodic_boundaries()

void ug::Grid::set_periodic_boundaries ( bool  is_periodic)

tell the grid whether it may contain periodic boundaries.

If the grid may contain periodic boundaries, it instantiate a PeriodicBoundaryManager.

References m_periodicBndMgr, and ug::PeriodicBoundaryManager::set_grid().

◆ test_attached_linked_lists()

void ug::Grid::test_attached_linked_lists ( )

a temporary testing method

References UG_LOG.

◆ unmark() [1/6]

void ug::Grid::unmark ( Edge obj)
inline

unmarks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking.

Only pass objects that are contained by the grid.

References m_aaMarkEDGE, and m_bMarking.

◆ unmark() [2/6]

void ug::Grid::unmark ( Face obj)
inline

unmarks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking.

Only pass objects that are contained by the grid.

References m_aaMarkFACE, and m_bMarking.

◆ unmark() [3/6]

void ug::Grid::unmark ( GridObject obj)
inline

unmarks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking.

Only pass objects that are contained by the grid.

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

Referenced by ug::FixEdgeOrientation(), ug::FixFaceOrientation(), ug::SimplifyPolylines(), and unmark().

◆ unmark() [4/6]

template<class TIterator >
void ug::Grid::unmark ( TIterator  begin,
TIterator  end 
)

unmarks all objects between begin and end

TIterator::value_type has to be either Vertex*, Edge*, Face* or Volume*.

References begin(), end(), and unmark().

◆ unmark() [5/6]

void ug::Grid::unmark ( Vertex obj)
inline

unmarks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking.

Only pass objects that are contained by the grid.

References m_aaMarkVRT, and m_bMarking.

◆ unmark() [6/6]

void ug::Grid::unmark ( Volume obj)
inline

unmarks the object. Calls are only valid between calls to Grid::begin_marking and Grid::end_marking.

Only pass objects that are contained by the grid.

References m_aaMarkVOL, and m_bMarking.

◆ unregister_edge()

◆ unregister_element() [1/4]

void ug::Grid::unregister_element ( Edge e)
inline

◆ unregister_element() [2/4]

void ug::Grid::unregister_element ( Face f)
inline

◆ unregister_element() [3/4]

void ug::Grid::unregister_element ( Vertex v)
inline

◆ unregister_element() [4/4]

void ug::Grid::unregister_element ( Volume v)
inline

◆ unregister_face()

◆ unregister_observer()

◆ unregister_vertex()

◆ unregister_volume()

◆ vertex_fragmentation()

◆ vertex_store_associated_edges()

void ug::Grid::vertex_store_associated_edges ( bool  bStoreIt)
protected

◆ vertex_store_associated_faces()

void ug::Grid::vertex_store_associated_faces ( bool  bStoreIt)
protected

◆ vertex_store_associated_volumes()

void ug::Grid::vertex_store_associated_volumes ( bool  bStoreIt)
protected

◆ vertices_begin()

◆ vertices_end()

◆ volume_autogenerate_edges()

◆ volume_autogenerate_faces()

◆ volume_fragmentation()

◆ volume_sort_associated_edge_container()

void ug::Grid::volume_sort_associated_edge_container ( )
protected

◆ volume_store_associated_edges()

◆ volume_store_associated_faces()

◆ volumes_begin()

◆ volumes_end()

Member Data Documentation

◆ m_aaEdgeContainerEDGE

AttachmentAccessor<Edge, AEdgeContainer> ug::Grid::m_aaEdgeContainerEDGE
protected

◆ m_aaEdgeContainerFACE

AttachmentAccessor<Face, AEdgeContainer> ug::Grid::m_aaEdgeContainerFACE
protected

◆ m_aaEdgeContainerVERTEX

AttachmentAccessor<Vertex, AEdgeContainer> ug::Grid::m_aaEdgeContainerVERTEX
protected

◆ m_aaEdgeContainerVOLUME

AttachmentAccessor<Volume, AEdgeContainer> ug::Grid::m_aaEdgeContainerVOLUME
protected

◆ m_aaFaceContainerEDGE

AttachmentAccessor<Edge, AFaceContainer> ug::Grid::m_aaFaceContainerEDGE
protected

◆ m_aaFaceContainerFACE

AttachmentAccessor<Face, AFaceContainer> ug::Grid::m_aaFaceContainerFACE
protected

◆ m_aaFaceContainerVERTEX

AttachmentAccessor<Vertex, AFaceContainer> ug::Grid::m_aaFaceContainerVERTEX
protected

◆ m_aaFaceContainerVOLUME

AttachmentAccessor<Volume, AFaceContainer> ug::Grid::m_aaFaceContainerVOLUME
protected

◆ m_aaMarkEDGE

EdgeAttachmentAccessor<AMark> ug::Grid::m_aaMarkEDGE
protected

Referenced by init_marks(), is_marked(), mark(), and unmark().

◆ m_aaMarkFACE

FaceAttachmentAccessor<AMark> ug::Grid::m_aaMarkFACE
protected

Referenced by init_marks(), is_marked(), mark(), and unmark().

◆ m_aaMarkVOL

VolumeAttachmentAccessor<AMark> ug::Grid::m_aaMarkVOL
protected

Referenced by init_marks(), is_marked(), mark(), and unmark().

◆ m_aaMarkVRT

VertexAttachmentAccessor<AMark> ug::Grid::m_aaMarkVRT
protected

Referenced by init_marks(), is_marked(), mark(), and unmark().

◆ m_aaVolumeContainerEDGE

AttachmentAccessor<Edge, AVolumeContainer> ug::Grid::m_aaVolumeContainerEDGE
protected

◆ m_aaVolumeContainerFACE

AttachmentAccessor<Face, AVolumeContainer> ug::Grid::m_aaVolumeContainerFACE
protected

◆ m_aaVolumeContainerVERTEX

AttachmentAccessor<Vertex, AVolumeContainer> ug::Grid::m_aaVolumeContainerVERTEX
protected

◆ m_aaVolumeContainerVOLUME

AttachmentAccessor<Volume, AVolumeContainer> ug::Grid::m_aaVolumeContainerVOLUME
protected

◆ m_aEdgeContainer

AEdgeContainer ug::Grid::m_aEdgeContainer
protected

◆ m_aFaceContainer

AFaceContainer ug::Grid::m_aFaceContainer
protected

◆ m_aMark

AMark ug::Grid::m_aMark
protected

◆ m_aVertexContainer

AVertexContainer ug::Grid::m_aVertexContainer
protected

◆ m_aVolumeContainer

AVolumeContainer ug::Grid::m_aVolumeContainer
protected

◆ m_bMarking

bool ug::Grid::m_bMarking
protected

◆ m_currentMark

int ug::Grid::m_currentMark
protected

◆ m_distGridMgr

DistributedGridManager* ug::Grid::m_distGridMgr
protected

◆ m_edgeElementStorage

EdgeElementStorage ug::Grid::m_edgeElementStorage
protected

◆ m_edgeObservers

◆ m_faceElementStorage

FaceElementStorage ug::Grid::m_faceElementStorage
protected

◆ m_faceObservers

◆ m_gridObservers

◆ m_hashCounter

uint32 ug::Grid::m_hashCounter
protected

Referenced by Grid().

◆ m_messageHub

SPMessageHub ug::Grid::m_messageHub
protected

Referenced by Grid().

◆ m_options

uint ug::Grid::m_options
protected

◆ m_periodicBndMgr

◆ m_vertexElementStorage

VertexElementStorage ug::Grid::m_vertexElementStorage
protected

◆ m_vertexObservers

◆ m_volumeElementStorage

VolumeElementStorage ug::Grid::m_volumeElementStorage
protected

◆ m_volumeObservers


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