33 #ifndef __H__LIB_GRID__GRID__
34 #define __H__LIB_GRID__GRID__
39 #include <boost/function.hpp>
53 #define GRID_PROFILE_FUNC() PROFILE_FUNC()
54 #define GRID_PROFILE(name) PROFILE_BEGIN(name)
55 #define GRID_PROFILE_END() PROFILE_END()
57 #define GRID_PROFILE_FUNC()
58 #define GRID_PROFILE(name)
59 #define GRID_PROFILE_END()
68 class DistributedGridManager;
73 class PeriodicBoundaryManager;
135 template <
class TElem>
178 template <
class TElem,
class TAttachment>
181 typename traits<TElem>::ElementStorage>
199 template <
class TAttachment>
209 template <
class TAttachment>
219 template <
class TAttachment>
229 template <
class TAttachment>
283 Grid& operator = (
const Grid& grid);
291 void set_options(
uint options);
292 uint get_options()
const;
293 void enable_options(
uint options);
294 void disable_options(
uint options);
295 bool option_is_enabled(
uint option)
const;
309 void set_parallel(
bool parallel);
314 inline bool is_parallel()
const;
333 void set_periodic_boundaries(
bool);
335 bool has_periodic_boundaries()
const;
354 void clear_geometry();
366 template<
class TGeomObj>
376 template <
class TGeomObj>
396 template <
class TGeomObj>
418 template <
class TGeomObj>
419 void reserve(
size_t num);
425 void erase(
Edge* edge);
426 void erase(
Face* face);
430 template <
class GeomObjIter>
431 void erase(
const GeomObjIter& iterBegin,
const GeomObjIter& iterEnd);
433 template <
class TGeomObj>
465 bool replace_vertex_is_valid(
Vertex* vrtOld,
Vertex* vrtNew);
493 void flip_orientation(
Edge* e);
497 void flip_orientation(
Face* f);
501 void flip_orientation(
Volume* vol);
505 template <
class TGeomObj>
509 template <
class TGeomObj>
522 template <
class TGeomObj>
526 template <
class TGeomObj>
533 template <
class TGeomObj> TGeomObj* front();
538 template <
class TGeomObj> TGeomObj* back();
549 template <
class TGeomObj>
556 size_t vertex_fragmentation();
557 size_t edge_fragmentation();
558 size_t face_fragmentation();
559 size_t volume_fragmentation();
563 template <
class TGeomObj>
564 size_t attachment_container_size()
const;
676 template <
class TElem>
677 void associated_elements(traits<Vertex>::secure_container& elemsOut, TElem* e);
678 template <
class TElem>
679 void associated_elements(traits<Edge>::secure_container& elemsOut, TElem* e);
680 template <
class TElem>
681 void associated_elements(traits<Face>::secure_container& elemsOut, TElem* e);
682 template <
class TElem>
683 void associated_elements(traits<Volume>::secure_container& elemsOut, TElem* e);
711 template <
class TElem>
712 void associated_elements_sorted(traits<Vertex>::secure_container& elemsOut, TElem* e);
713 template <
class TElem>
714 void associated_elements_sorted(traits<Edge>::secure_container& elemsOut, TElem* e);
715 template <
class TElem>
716 void associated_elements_sorted(traits<Face>::secure_container& elemsOut, TElem* e);
717 template <
class TElem>
718 void associated_elements_sorted(traits<Volume>::secure_container& elemsOut, TElem* e);
725 template <
class TGeomObjClass>
726 void attach_to(
IAttachment& attachment,
bool passOnValues);
733 inline void attach_to_all(
IAttachment& attachment,
bool passOnValues);
737 template <
class TGeomObjClass>
746 inline void attach_to_all(
IAttachment& attachment);
750 template <
class TGeomObjClass,
class TAttachment>
751 void attach_to_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue);
753 template <
class TAttachment>
754 inline void attach_to_vertices_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue) {attach_to_dv<Vertex>(attachment, defaultValue);}
755 template <
class TAttachment>
756 inline void attach_to_edges_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue) {attach_to_dv<Edge>(attachment, defaultValue);}
757 template <
class TAttachment>
758 inline void attach_to_faces_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue) {attach_to_dv<Face>(attachment, defaultValue);}
759 template <
class TAttachment>
760 inline void attach_to_volumes_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue) {attach_to_dv<Volume>(attachment, defaultValue);}
763 template <
class TAttachment>
764 inline void attach_to_all_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue);
768 template <
class TGeomObjClass,
class TAttachment>
769 void attach_to_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue,
bool passOnValues);
771 template <
class TAttachment>
772 inline void attach_to_vertices_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue,
bool passOnValues) {attach_to_dv<Vertex>(attachment, defaultValue, passOnValues);}
773 template <
class TAttachment>
774 inline void attach_to_edges_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue,
bool passOnValues) {attach_to_dv<Edge>(attachment, defaultValue, passOnValues);}
775 template <
class TAttachment>
776 inline void attach_to_faces_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue,
bool passOnValues) {attach_to_dv<Face>(attachment, defaultValue, passOnValues);}
777 template <
class TAttachment>
778 inline void attach_to_volumes_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue,
bool passOnValues) {attach_to_dv<Volume>(attachment, defaultValue, passOnValues);}
780 template <
class TAttachment>
781 inline void attach_to_all_dv(TAttachment& attachment,
const typename TAttachment::ValueType& defaultValue,
bool passOnValues);
784 template <
class TGeomObjClass>
792 inline void detach_from_all(
IAttachment& attachment);
795 template <
class TGeomObjClass>
805 template <
class TGeomObj>
806 uint get_attachment_data_index(TGeomObj* pObj)
const;
808 template <
class TGeomObj,
class TAttachment>
809 typename TAttachment::ContainerType*
810 get_attachment_data_container(TAttachment& attachment);
817 template <
class TGeomObj>
818 typename traits<TGeomObj>::AttachmentPipe&
819 get_attachment_pipe();
842 void pass_on_values(
Edge* objSrc,
Edge* objDest);
843 void pass_on_values(
Face* objSrc,
Face* objDest);
847 AssociatedEdgeIterator associated_edges_begin(
Vertex* vrt);
848 AssociatedEdgeIterator associated_edges_end(
Vertex* vrt);
849 AssociatedEdgeIterator associated_edges_begin(
Face* face);
850 AssociatedEdgeIterator associated_edges_end(
Face* face);
851 AssociatedEdgeIterator associated_edges_begin(
Volume* vol);
852 AssociatedEdgeIterator associated_edges_end(
Volume* vol);
854 AssociatedFaceIterator associated_faces_begin(
Vertex* vrt);
855 AssociatedFaceIterator associated_faces_end(
Vertex* vrt);
856 AssociatedFaceIterator associated_faces_begin(
Edge* edge);
857 AssociatedFaceIterator associated_faces_end(
Edge* edge);
858 AssociatedFaceIterator associated_faces_begin(
Volume* vol);
859 AssociatedFaceIterator associated_faces_end(
Volume* vol);
861 AssociatedVolumeIterator associated_volumes_begin(
Vertex* vrt);
862 AssociatedVolumeIterator associated_volumes_end(
Vertex* vrt);
863 AssociatedVolumeIterator associated_volumes_begin(
Edge* edge);
864 AssociatedVolumeIterator associated_volumes_end(
Edge* edge);
865 AssociatedVolumeIterator associated_volumes_begin(
Face* face);
866 AssociatedVolumeIterator associated_volumes_end(
Face* face);
881 void register_and_replace_element(
Vertex* v,
Vertex* pReplaceMe);
882 void register_and_replace_element(
Edge* e,
Edge* pReplaceMe);
883 void register_and_replace_element(
Face* f,
Face* pReplaceMe);
884 void register_and_replace_element(
Volume* v,
Volume* pReplaceMe);
894 void begin_marking();
903 inline void mark(
Vertex* obj);
904 inline void mark(
Edge* obj);
905 inline void mark(
Face* obj);
906 inline void mark(
Volume* obj);
912 template <
class TIterator>
913 void mark(TIterator begin, TIterator end);
919 inline void unmark(
Vertex* obj);
920 inline void unmark(
Edge* obj);
921 inline void unmark(
Face* obj);
922 inline void unmark(
Volume* obj);
928 template <
class TIterator>
929 void unmark(TIterator begin, TIterator end);
935 inline bool is_marked(
Vertex* obj)
const;
936 inline bool is_marked(
Edge* obj)
const;
937 inline bool is_marked(
Face* obj)
const;
938 inline bool is_marked(
Volume* obj)
const;
948 void test_attached_linked_lists();
968 void notify_and_clear_observers_on_grid_destruction(
GridObserver* initiator = NULL);
971 template <
class TElem>
inline
975 element_storage(m_vertexElementStorage, m_edgeElementStorage,
976 m_faceElementStorage, m_volumeElementStorage);
980 template <
class TElem>
inline
981 const typename traits<TElem>::ElementStorage&
984 element_storage(m_vertexElementStorage, m_edgeElementStorage,
985 m_faceElementStorage, m_volumeElementStorage);
991 void assign_grid(
const Grid& grid);
999 void unregister_vertex(
Vertex* v);
1001 Face* createdByFace = NULL,
Volume* createdByVol = NULL);
1002 void unregister_edge(
Edge* e);
1004 Volume* createdByVol = NULL);
1005 void unregister_face(
Face* f);
1007 void unregister_volume(
Volume* v);
1009 void change_options(
uint optsNew);
1011 void change_vertex_options(
uint optsNew);
1012 void change_edge_options(
uint optsNew);
1013 void change_face_options(
uint optsNew);
1014 void change_volume_options(
uint optsNew);
1016 void vertex_store_associated_edges(
bool bStoreIt);
1017 void vertex_store_associated_faces(
bool bStoreIt);
1018 void vertex_store_associated_volumes(
bool bStoreIt);
1019 void edge_store_associated_faces(
bool bStoreIt);
1020 void edge_store_associated_volumes(
bool bStoreIt);
1021 void face_store_associated_edges(
bool bStoreIt);
1022 void face_store_associated_volumes(
bool bStoreIt);
1023 void face_autogenerate_edges(
bool bAutogen);
1024 void volume_store_associated_edges(
bool bStoreIt);
1025 void volume_store_associated_faces(
bool bStoreIt);
1026 void volume_autogenerate_edges(
bool bAutogen);
1027 void volume_autogenerate_faces(
bool bAutogen);
1029 void volume_sort_associated_edge_container();
1031 template <
class TAttachmentPipe,
class TElem>
1032 void pass_on_values(TAttachmentPipe& attachmentPipe,
1033 TElem* pSrc, TElem* pDest);
1036 inline void autoenable_option(
uint option,
const char* caller,
const char* optionName);
1039 template <
class TGeomObj>
1040 Edge* find_edge_in_associated_edges(TGeomObj* obj,
1043 template <
class TGeomObj>
1044 Face* find_face_in_associated_faces(TGeomObj* obj,
1047 template <
class TGeomObj>
1048 Volume* find_volume_in_associated_volumes(TGeomObj* obj,
1052 void get_associated(SecureVertexContainer& vrts,
Edge* e);
1053 void get_associated(SecureVertexContainer& vrts,
Face* f);
1054 void get_associated(SecureVertexContainer& vrts,
Volume* v);
1056 void get_associated(SecureEdgeContainer& edges,
Vertex* v);
1068 template <
class TContainer>
1069 void get_associated(TContainer& container,
GridObject* o);
1071 template <
class TElem>
1073 ::secure_container& elems, TElem* e);
1095 template <
class TElem>
1097 ::secure_container& elems, TElem* e);
1103 template <
class TAttachmentPipe>
1104 void copy_user_attachments(
const TAttachmentPipe& apSrc, TAttachmentPipe& apDest,
1105 std::vector<int>& srcDataIndices);
1110 void remove_marks();
1120 return m_vertexElementStorage.m_sectionContainer.
1121 get_container().get_iterator(o);
1124 inline traits<Edge>::SectionContainer::iterator
1127 return m_edgeElementStorage.m_sectionContainer.
1128 get_container().get_iterator(o);
1131 inline traits<Face>::SectionContainer::iterator
1134 return m_faceElementStorage.m_sectionContainer.
1135 get_container().get_iterator(o);
1138 inline traits<Volume>::SectionContainer::iterator
1141 return m_volumeElementStorage.m_sectionContainer.
1142 get_container().get_iterator(o);
1148 template <
class TElem>
A linked list of elements living in an attachment.
Definition: attached_list.h:182
A special iterator which allows to iterate over elements in a AttachedElementList.
Definition: attached_list.h:52
Used to access data that has been attached to an attachment pipe.
Definition: attachment_pipe.h:510
manages the layouts and interfaces which are associated with a distributed grid.
Definition: distributed_grid.h:88
Base-class for edges.
Definition: grid_base_objects.h:397
holds the vertices of an Edge or an EdgeDescriptor.
Definition: grid_base_objects.h:362
This struct is used to hold GridObjects and their attachment pipes.
Definition: element_storage.h:44
Faces are 2-dimensional objects.
Definition: grid_base_objects.h:510
Definition: grid_base_objects.h:483
the generic attachment-accessor for access to grids attachment pipes.
Definition: grid.h:182
bool access(Grid &grid, TAttachment &a)
Definition: grid.h:189
Manages the elements of a grid and their interconnection.
Definition: grid.h:132
SPMessageHub message_hub()
gives access to the grid's message-hub
Definition: grid.h:945
bool has_volume_attachment(IAttachment &attachment)
Definition: grid.h:801
traits< TElem >::ElementStorage & element_storage()
returns the element storage for a given element type
Definition: grid.h:973
EdgeContainer::iterator AssociatedEdgeIterator
used to iterate over associated edges of vertices, faces and volumes
Definition: grid.h:249
traits< Vertex >::SectionContainer::iterator get_iterator(Vertex *o)
returns the iterator at which the given element lies in the section container
Definition: grid.h:1118
EdgeElementStorage m_edgeElementStorage
Definition: grid.h:1153
VolumeIterator volumes_begin()
Definition: grid.h:519
void get_associated_sorted(SecureVolumeContainer &vols, Edge *e)
void register_element(Face *f, GridObject *pParent=NULL)
Definition: grid.h:874
void get_associated(SecureEdgeContainer &edges, Volume *v)
void get_associated(SecureFaceContainer &faces, Edge *e)
Attachment< EdgeContainer > AEdgeContainer
Definition: grid.h:954
VolumeAttachmentAccessor< AMark > m_aaMarkVOL
Definition: grid.h:1196
FaceIterator faces_end()
Definition: grid.h:518
void attach_to_edges_dv(TAttachment &attachment, const typename TAttachment::ValueType &defaultValue, bool passOnValues)
Definition: grid.h:774
void unregister_element(Vertex *v)
Definition: grid.h:871
traits< Face >::secure_container SecureFaceContainer
Container to store associated faces.
Definition: grid.h:166
AttachmentAccessor< Face, AVolumeContainer > m_aaVolumeContainerFACE
Definition: grid.h:1183
bool m_bMarking
Definition: grid.h:1191
ObserverContainer m_vertexObservers
Definition: grid.h:1162
std::vector< GridObserver * > ObserverContainer
Definition: grid.h:951
std::vector< Volume * > VolumeContainer
Container used to store associated volumes.
Definition: grid.h:246
AVertexContainer m_aVertexContainer
Definition: grid.h:1168
void attach_to_volumes_dv(TAttachment &attachment, const typename TAttachment::ValueType &defaultValue)
Definition: grid.h:760
EdgeIterator edges_begin()
Definition: grid.h:515
void register_element(Vertex *v, GridObject *pParent=NULL)
Definition: grid.h:870
uint32 m_hashCounter
Definition: grid.h:1158
void attach_to_vertices_dv(TAttachment &attachment, const typename TAttachment::ValueType &defaultValue, bool passOnValues)
Definition: grid.h:772
traits< Volume >::SectionContainer::iterator get_iterator(Volume *o)
returns the iterator at which the given element lies in the section container
Definition: grid.h:1139
void attach_to_vertices_dv(TAttachment &attachment, const typename TAttachment::ValueType &defaultValue)
Definition: grid.h:754
bool has_face_attachment(IAttachment &attachment)
Definition: grid.h:800
SPMessageHub m_messageHub
Definition: grid.h:1198
void get_associated(SecureVolumeContainer &vols, Face *f)
PeriodicBoundaryManager * m_periodicBndMgr
Definition: grid.h:1200
VertexIterator vertices_begin()
Definition: grid.h:513
void get_associated_sorted(SecureVolumeContainer &vols, Vertex *v)
VertexElementStorage m_vertexElementStorage
Definition: grid.h:1152
DistributedGridManager * m_distGridMgr
Definition: grid.h:1199
void attach_to_edges(IAttachment &attachment, bool passOnValues)
Definition: grid.h:729
void get_associated(SecureFaceContainer &faces, Vertex *v)
Attachment< FaceContainer > AFaceContainer
Definition: grid.h:955
Attachment< VolumeContainer > AVolumeContainer
Definition: grid.h:956
void attach_to_edges_dv(TAttachment &attachment, const typename TAttachment::ValueType &defaultValue)
Definition: grid.h:756
void get_associated(SecureFaceContainer &faces, Volume *v)
traits< Vertex >::secure_container SecureVertexContainer
Container to store associated vertices.
Definition: grid.h:162
VertexIterator vertices_end()
Definition: grid.h:514
AEdgeContainer m_aEdgeContainer
Definition: grid.h:1169
AttachmentAccessor< Volume, AVolumeContainer > m_aaVolumeContainerVOLUME
Definition: grid.h:1187
Face * get_element(const FaceVertices &fv)
returns the element for the given vertices.
Definition: grid.h:615
void attach_to_edges(IAttachment &attachment)
Definition: grid.h:741
VolumeContainer::iterator AssociatedVolumeIterator
used to iterate over associated volumes of vertices, edges and faces
Definition: grid.h:253
void register_element(Volume *v, GridObject *pParent=NULL)
Definition: grid.h:876
bool has_attachment(IAttachment &attachment)
Definition: grid.h:796
size_t num_volumes() const
Definition: grid.h:554
ug::AttachmentPipe< Edge *, EdgeElementStorage > EdgeAttachmentPipe
Definition: grid.h:172
void assign_hash_value(Vertex *vrt)
assigns a unique hash value to a Vertex.
Definition: grid.h:996
Volume * get_element(const VolumeVertices &vv)
returns the element for the given vertices.
Definition: grid.h:616
int m_currentMark
Definition: grid.h:1190
std::vector< Vertex * > VertexContainer
Container used to store associated vertices.
Definition: grid.h:240
FaceElementStorage m_faceElementStorage
Definition: grid.h:1154
Vertex * get_element(const VertexDescriptor &vd)
This overload is only useful to avoid compile issues in templated code.
Definition: grid.h:620
void attach_to_vertices(IAttachment &attachment)
Definition: grid.h:740
AttachmentAccessor< Vertex, AFaceContainer > m_aaFaceContainerVERTEX
Definition: grid.h:1174
void detach_from_volumes(IAttachment &attachment)
Definition: grid.h:790
VertexAttachmentAccessor< AMark > m_aaMarkVRT
Definition: grid.h:1193
VolumeIterator volumes_end()
Definition: grid.h:520
void attach_to_faces_dv(TAttachment &attachment, const typename TAttachment::ValueType &defaultValue)
Definition: grid.h:758
AVolumeContainer m_aVolumeContainer
Definition: grid.h:1171
std::vector< Edge * > EdgeContainer
Container used to store associated edges.
Definition: grid.h:242
void attach_to(IAttachment &attachment)
attach with default pass-on behaviour and unspecified default value.
Definition: grid.h:738
void attach_to_faces(IAttachment &attachment)
Definition: grid.h:742
void get_associated(SecureEdgeContainer &edges, Face *f)
AttachmentAccessor< Vertex, AEdgeContainer > m_aaEdgeContainerVERTEX
Definition: grid.h:1173
size_t num_faces() const
Definition: grid.h:553
void attach_to_volumes(IAttachment &attachment)
Definition: grid.h:743
AMark m_aMark
Definition: grid.h:1192
void attach_to_volumes(IAttachment &attachment, bool passOnValues)
Definition: grid.h:731
size_t num_vertices() const
Definition: grid.h:551
ObserverContainer m_gridObservers
Definition: grid.h:1161
ug::AttachmentPipe< Vertex *, VertexElementStorage > VertexAttachmentPipe
the attachment-pipe used by Grid
Definition: grid.h:171
ObserverContainer m_faceObservers
Definition: grid.h:1164
void get_associated(SecureVolumeContainer &vols, Edge *e)
ObserverContainer m_edgeObservers
Definition: grid.h:1163
void detach_from_vertices(IAttachment &attachment)
Definition: grid.h:787
AttachmentAccessor< Face, AFaceContainer > m_aaFaceContainerFACE
Definition: grid.h:1182
void attach_to_volumes_dv(TAttachment &attachment, const typename TAttachment::ValueType &defaultValue, bool passOnValues)
Definition: grid.h:778
ug::AttachmentPipe< Face *, FaceElementStorage > FaceAttachmentPipe
Definition: grid.h:173
uint m_options
Definition: grid.h:1157
AttachmentAccessor< Edge, AVolumeContainer > m_aaVolumeContainerEDGE
Definition: grid.h:1179
void get_associated_sorted(SecureVolumeContainer &vols, Face *f)
AttachmentAccessor< Vertex, AVolumeContainer > m_aaVolumeContainerVERTEX
Definition: grid.h:1175
Edge * get_element(const EdgeVertices &ev)
returns the element for the given vertices.
Definition: grid.h:614
void attach_to_faces(IAttachment &attachment, bool passOnValues)
Definition: grid.h:730
traits< TGeomObj >::AttachmentPipe & get_attachment_pipe()
returns the attachment-pipe in which data associated with the given objects-types are stored.
Definition: grid_impl.hpp:409
void detach_from_edges(IAttachment &attachment)
Definition: grid.h:788
void unregister_element(Volume *v)
Definition: grid.h:877
bool has_vertex_attachment(IAttachment &attachment)
Definition: grid.h:798
AttachmentAccessor< Face, AEdgeContainer > m_aaEdgeContainerFACE
Definition: grid.h:1181
traits< Face >::SectionContainer::iterator get_iterator(Face *o)
returns the iterator at which the given element lies in the section container
Definition: grid.h:1132
ObserverContainer m_volumeObservers
Definition: grid.h:1165
void unregister_element(Face *f)
Definition: grid.h:875
EdgeAttachmentAccessor< AMark > m_aaMarkEDGE
Definition: grid.h:1194
size_t num_edges() const
Definition: grid.h:552
void register_element(Edge *e, GridObject *pParent=NULL)
Definition: grid.h:872
FaceAttachmentAccessor< AMark > m_aaMarkFACE
Definition: grid.h:1195
void get_associated_sorted(SecureFaceContainer &faces, Vertex *v)
bool has_edge_attachment(IAttachment &attachment)
Definition: grid.h:799
void unregister_element(Edge *e)
Definition: grid.h:873
void attach_to_vertices(IAttachment &attachment, bool passOnValues)
Definition: grid.h:728
AttachmentAccessor< Edge, AEdgeContainer > m_aaEdgeContainerEDGE
Definition: grid.h:1177
void get_associated_sorted(SecureFaceContainer &faces, Volume *v)
void attach_to_faces_dv(TAttachment &attachment, const typename TAttachment::ValueType &defaultValue, bool passOnValues)
Definition: grid.h:776
const traits< TElem >::ElementStorage & element_storage() const
returns the const element storage for a given element type
Definition: grid.h:982
traits< Volume >::secure_container SecureVolumeContainer
Container to store associated volumes.
Definition: grid.h:168
void get_associated(SecureVolumeContainer &vols, Vertex *v)
ug::AttachmentPipe< Volume *, VolumeElementStorage > VolumeAttachmentPipe
Definition: grid.h:174
FaceContainer::iterator AssociatedFaceIterator
used to iterate over associated faces of vertices, edges and volumes
Definition: grid.h:251
FaceIterator faces_begin()
Definition: grid.h:517
Attachment< VertexContainer > AVertexContainer
Definition: grid.h:953
AFaceContainer m_aFaceContainer
Definition: grid.h:1170
EdgeIterator edges_end()
Definition: grid.h:516
traits< Edge >::secure_container SecureEdgeContainer
Container to store associated edges.
Definition: grid.h:164
std::vector< Face * > FaceContainer
Container used to store associated faces.
Definition: grid.h:244
Attachment< int > AMark
Definition: grid.h:958
traits< Edge >::SectionContainer::iterator get_iterator(Edge *o)
returns the iterator at which the given element lies in the section container
Definition: grid.h:1125
AttachmentAccessor< Volume, AEdgeContainer > m_aaEdgeContainerVOLUME
Definition: grid.h:1185
VolumeElementStorage m_volumeElementStorage
Definition: grid.h:1155
void detach_from_faces(IAttachment &attachment)
Definition: grid.h:789
AttachmentAccessor< Edge, AFaceContainer > m_aaFaceContainerEDGE
Definition: grid.h:1178
AttachmentAccessor< Volume, AFaceContainer > m_aaFaceContainerVOLUME
Definition: grid.h:1186
a helper class that holds a collection of possibly unconnected geometric-objects.
Definition: grid_object_collection.h:96
The base class for all geometric objects, such as vertices, edges, faces, volumes,...
Definition: grid_base_objects.h:157
Definition: grid_observer.h:80
the interface for attachments.
Definition: attachment_pipe.h:239
virtual bool default_pass_on_behaviour() const =0
Base class for all classes which consist of a group of vertices.
Definition: grid_base_objects.h:317
Definition: periodic_boundary_manager.h:99
Container which holds an array of pointers.
Definition: pointer_const_array.h:84
This descriptor is mainly useful to avoid compilation errors in templated code.
Definition: grid_base_objects.h:285
Vertex * vertex() const
Definition: grid_base_objects.h:299
Base-class for all vertex-types.
Definition: grid_base_objects.h:231
uint32 m_hashValue
Definition: grid_base_objects.h:275
Volumes are 3-dimensional objects.
Definition: grid_base_objects.h:754
holds the vertices of a Volume or a VolumeDescriptor
Definition: grid_base_objects.h:723
Definition: grid_base_object_traits.h:68
traits< Face > face_traits
Definition: grid.h:157
traits< Edge > edge_traits
Definition: grid.h:156
traits< Volume > volume_traits
Definition: grid.h:158
traits< Vertex > vertex_traits
Convenience access to grid elements.
Definition: grid.h:155
virtual void clear_attachments(typename TDomain::grid_type &grid)
ugtypes::uint32_t uint32
Definition: types.h:116
#define UG_API
Definition: ug_config.h:65
unsigned int uint
Definition: types.h:114
function util LuaCallbackHelper create(func)
size_t target(SM_edge< typename T::value_type > const &e, ug::BidirectionalMatrix< T > const &m)
Definition: bidirectional_boost.h:100
ElementStorage< Vertex >::SectionContainer::iterator VertexIterator
This Iterator will be used as base-class for iterators of specialized geometric objects.
Definition: grid_base_object_traits.h:73
ElementStorage< Face >::SectionContainer::iterator FaceIterator
Definition: grid_base_object_traits.h:79
ElementStorage< Edge >::SectionContainer::iterator EdgeIterator
Definition: grid_base_object_traits.h:76
@ OT_FULL_OBSERVER
Definition: grid_observer.h:59
ElementStorage< Volume >::SectionContainer::iterator VolumeIterator
Definition: grid_base_object_traits.h:82
Helper class to access the correct element storage from its element type.
Definition: element_storage.h:148
The traits class holds some important types for each element-type.
Definition: grid.h:136
ug::ElementStorage< base_object > ElementStorage
Definition: grid.h:138
boost::function< bool(base_object *)> callback
callback type for the elements base type.
Definition: grid.h:150
ElementStorage::AttachmentPipe AttachmentPipe
Definition: grid.h:139
geometry_traits< TElem >::const_iterator const_iterator
Definition: grid.h:144
TElem::grid_base_object base_object
Definition: grid.h:137
geometry_traits< TElem >::iterator iterator
Definition: grid.h:143
ElementStorage::SectionContainer SectionContainer
Definition: grid.h:141
PointerConstArray< TElem * > secure_container
Definition: grid.h:146
ElementStorage::AttachedElementList AttachedElementList
Definition: grid.h:140