SheafSystem  0.0.0.0
constant_tet.h
1 
2 //
3 // Copyright (c) 2014 Limit Point Systems, Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 
18 // Interface for class constant_tet
19 
20 #ifndef CONSTANT_TET_H
21 #define CONSTANT_TET_H
22 
23 #ifndef SHEAF_DLL_SPEC_H
24 #include "SheafSystem/sheaf_dll_spec.h"
25 #endif
26 
27 #ifndef CONSTANT_FCN_SPACE_H
28 #include "SheafSystem/constant_fcn_space.h"
29 #endif
30 
31 namespace fiber_bundle
32 {
33 
38 class SHEAF_DLL_SPEC constant_tet : public constant_fcn_space
39 {
40 
41  // ===========================================================
43  // ===========================================================
45 
46 public:
47 
51  constant_tet();
52 
56  constant_tet(const constant_tet& xother);
57 
61  virtual ~constant_tet();
62 
63 
64 protected:
65 
66 private:
67 
69 
70  // ===========================================================
72  // ===========================================================
74 
75 public:
76 
77 protected:
78 
79 private:
80 
82 
83  // ===========================================================
85  // ===========================================================
87 
88 public:
89 
90 protected:
91 
98  enum domain_constants {DB=3};
99 
103  value_type _basis_deriv_value_buffer[int(DB)*int(DL)];
104 
105 private:
106 
108 
109  // ===========================================================
111  // ===========================================================
113 
114 public:
115 
120  virtual value_type volume(const dof_type xcoord_dofs[],
121  size_type xcoord_dofs_ub,
122  size_type xdf);
123 
124 protected:
125 
126 private:
127 
129 
130  // ===========================================================
132  // ===========================================================
134 
135 public:
136 
137 protected:
138 
139 private:
140 
142 
143  // ===========================================================
145  // ===========================================================
147 
148 public:
149 
154  virtual int db() const;
155 
159  virtual void local_coordinates(pod_index_type xindex,
160  coord_type xresult[],
161  size_type xresult_ub) const;
165  virtual void center(coord_type xresult[], size_type xresult_ub) const;
166 
171  virtual bool in_standard_domain(const dof_type xlocal_coords[],
172  size_type xlocal_coords_ub) const;
173 
174 protected:
175 
176 private:
177 
179 
180  // ===========================================================
182  // ===========================================================
184 
185 public:
186 
187 protected:
188 
189 private:
190 
192 
193  // ===========================================================
195  // ===========================================================
197 
198 public:
199 
203  virtual constant_tet* clone() const;
204 
208  virtual constant_tet& operator=(const section_evaluator& xother);
209 
213  constant_tet& operator=(const constant_tet& xother);
214 
218  virtual bool invariant() const;
219 
223  virtual bool is_ancestor_of(const any* xother) const;
224 
225 protected:
226 
227 private:
228 
230 
231 };
232 
233 } // namespace fiber_bundle
234 
235 #endif // ifndef CONSTANT_TET_H
sec_vd_dof_type dof_type
The type of degree of freedom.
Abstract base class with useful features for all objects.
Definition: any.h:39
domain_constants
The base dimension; the dimension of the local coordinates (static const version).
Definition: constant_tet.h:98
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
chart_point_coord_type coord_type
The type of local coordinate; the scalar type for the local coordinate vector space.
An abstract local section evaluator; a map from {local coordinates x dofs} to section value...
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
A section evaluator with a constant value over a tetrahedral 3D domain.
Definition: constant_tet.h:38
An section evaluator with a constant value over an abstract domain.
Namespace for the fiber_bundles component of the sheaf system.