ug4
grid_base_object_traits.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2015: G-CSC, Goethe University Frankfurt
3  * Author: Sebastian Reiter
4  *
5  * This file is part of UG4.
6  *
7  * UG4 is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License version 3 (as published by the
9  * Free Software Foundation) with the following additional attribution
10  * requirements (according to LGPL/GPL v3 §7):
11  *
12  * (1) The following notice must be displayed in the Appropriate Legal Notices
13  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14  *
15  * (2) The following notice must be displayed at a prominent place in the
16  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17  *
18  * (3) The following bibliography is recommended for citation and must be
19  * preserved in all covered files:
20  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21  * parallel geometric multigrid solver on hierarchically distributed grids.
22  * Computing and visualization in science 16, 4 (2013), 151-164"
23  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24  * flexible software system for simulating pde based models on high performance
25  * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  * GNU Lesser General Public License for more details.
31  */
32 
33 #ifndef __H__UG__grid_base_object_traits__
34 #define __H__UG__grid_base_object_traits__
35 
36 #include "element_storage.h"
38 
39 namespace ug
40 {
41 
43 // The geometry_traits. This class can be specialized by each element-type.
66 template <class TElem>
68 {};
69 
70 
75 
78 
81 
84 
85 
86 
88 template <>
90 {
91  public:
92 
93  enum
94  {
95  CONTAINER_SECTION = -1,
96  BASE_OBJECT_ID = -1
97  };
98 };
99 
100 
101 template <>
103 {
104  public:
107 
110 
111  enum
112  {
113  CONTAINER_SECTION = -1,
114  BASE_OBJECT_ID = VERTEX
115  };
116  static const ReferenceObjectID REFERENCE_OBJECT_ID = ROID_VERTEX;
117 };
118 
119 
120 template <>
122 {
123  public:
126 
129 
130  enum
131  {
132  CONTAINER_SECTION = -1,
133  BASE_OBJECT_ID = EDGE
134  };
135  static const ReferenceObjectID REFERENCE_OBJECT_ID = ROID_EDGE;
136 };
137 
138 
139 template <>
141 {
142  public:
145 
148 
149  enum
150  {
151  CONTAINER_SECTION = -1,
152  BASE_OBJECT_ID = FACE
153  };
154  static const ReferenceObjectID REFERENCE_OBJECT_ID = ROID_UNKNOWN;
155 };
156 
157 template <>
159 {
160  public:
163 
166 
167  enum
168  {
169  CONTAINER_SECTION = -1,
170  BASE_OBJECT_ID = VOLUME
171  };
172  static const ReferenceObjectID REFERENCE_OBJECT_ID = ROID_UNKNOWN;
173 };
174 
175 }// end of namespace
176 
177 #endif
Can be used to store information about an edge and to construct an edge.
Definition: grid_base_objects.h:464
Base-class for edges.
Definition: grid_base_objects.h:397
This struct is used to hold GridObjects and their attachment pipes.
Definition: element_storage.h:44
Can be queried for the edges and vertices of a face.
Definition: grid_base_objects.h:684
Faces are 2-dimensional objects.
Definition: grid_base_objects.h:510
The base class for all geometric objects, such as vertices, edges, faces, volumes,...
Definition: grid_base_objects.h:157
This descriptor is mainly useful to avoid compilation errors in templated code.
Definition: grid_base_objects.h:285
Base-class for all vertex-types.
Definition: grid_base_objects.h:231
Holds a set of vertices which represent the corners of a volume element.
Definition: grid_base_objects.h:951
Volumes are 3-dimensional objects.
Definition: grid_base_objects.h:754
EdgeDescriptor GeneralDescriptor
Definition: grid_base_object_traits.h:128
EdgeIterator iterator
Definition: grid_base_object_traits.h:124
ConstEdgeIterator const_iterator
Definition: grid_base_object_traits.h:125
Edge grid_base_object
Definition: grid_base_object_traits.h:127
ConstFaceIterator const_iterator
Definition: grid_base_object_traits.h:144
FaceIterator iterator
Definition: grid_base_object_traits.h:143
FaceDescriptor GeneralDescriptor
Definition: grid_base_object_traits.h:147
Face grid_base_object
Definition: grid_base_object_traits.h:146
ConstVertexIterator const_iterator
Definition: grid_base_object_traits.h:106
VertexDescriptor GeneralDescriptor
Definition: grid_base_object_traits.h:109
Vertex grid_base_object
Definition: grid_base_object_traits.h:108
VertexIterator iterator
Definition: grid_base_object_traits.h:105
VolumeIterator iterator
Definition: grid_base_object_traits.h:161
Volume grid_base_object
Definition: grid_base_object_traits.h:164
VolumeDescriptor GeneralDescriptor
Definition: grid_base_object_traits.h:165
ConstVolumeIterator const_iterator
Definition: grid_base_object_traits.h:162
Definition: grid_base_object_traits.h:68
the ug namespace
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
ReferenceObjectID
these ids are used to identify the shape of a geometric object.
Definition: grid_base_objects.h:74
@ ROID_EDGE
Definition: grid_base_objects.h:77
@ ROID_UNKNOWN
Definition: grid_base_objects.h:75
@ ROID_VERTEX
Definition: grid_base_objects.h:76
ElementStorage< Face >::SectionContainer::iterator FaceIterator
Definition: grid_base_object_traits.h:79
ElementStorage< Face >::SectionContainer::const_iterator ConstFaceIterator
Definition: grid_base_object_traits.h:80
ElementStorage< Edge >::SectionContainer::iterator EdgeIterator
Definition: grid_base_object_traits.h:76
ElementStorage< Edge >::SectionContainer::const_iterator ConstEdgeIterator
Definition: grid_base_object_traits.h:77
@ VOLUME
Definition: grid_base_objects.h:63
@ VERTEX
Definition: grid_base_objects.h:60
@ EDGE
Definition: grid_base_objects.h:61
@ FACE
Definition: grid_base_objects.h:62
ElementStorage< Volume >::SectionContainer::const_iterator ConstVolumeIterator
Definition: grid_base_object_traits.h:83
ElementStorage< Volume >::SectionContainer::iterator VolumeIterator
Definition: grid_base_object_traits.h:82
ElementStorage< Vertex >::SectionContainer::const_iterator ConstVertexIterator
Definition: grid_base_object_traits.h:74