SheafSystem  0.0.0.0
constant_fcn_space.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_fcn_space
19 
20 #ifndef CONSTANT_FCN_SPACE_H
21 #define CONSTANT_FCN_SPACE_H
22 
23 #ifndef SHEAF_DLL_SPEC_H
24 #include "SheafSystem/sheaf_dll_spec.h"
25 #endif
26 
27 #ifndef LINEAR_FCN_SPACE_H
28 #include "SheafSystem/linear_fcn_space.h"
29 #endif
30 
31 namespace fiber_bundle
32 {
33 
37 class SHEAF_DLL_SPEC constant_fcn_space : public linear_fcn_space
38 {
39 
40  // ===========================================================
42  // ===========================================================
44 
45 public:
46 
51 
56 
57 protected:
58 
59 private:
60 
62 
63  // ===========================================================
65  // ===========================================================
67 
68 public:
69 
73  virtual int dl() const;
74 
78  virtual void basis_at_coord(const dof_type xlocal_coord[], size_type xlocal_coord_ub);
79 
84  virtual void basis_derivs_at_coord(const dof_type xlocal_coords[],
85  size_type xlocal_coords_ub);
86 
87 protected:
88 
94  enum static_const_int {DL = 1};
95 
99  value_type _basis_value_buffer[DL];
100 
101 private:
102 
104 
105  // ===========================================================
107  // ===========================================================
109 
110 public:
111 
113 
117  virtual void integrate(const dof_type xcoord_dofs[],
118  size_type xcoord_dofs_ub,
119  size_type xdf,
120  const dof_type xintegrands[],
121  size_type xintegrands_ub,
122  value_type xresult_integrals[],
123  size_type xresult_integrals_ub);
124 
128  virtual void gauss_point(pod_index_type xindex,
129  coord_type xresult[],
130  size_type xresult_ub);
131 
132 protected:
133 
134 private:
135 
137 
138  // ===========================================================
140  // ===========================================================
142 
143 public:
144 
149  virtual void dxi_local(size_type xlocal_coord_index,
150  const dof_type xsource_dofs[],
151  size_type xsource_dofs_ub,
152  dof_type xresult_dofs[],
153  size_type xresult_dofs_ub) const;
154 
159  virtual void jacobian(const dof_type xcoord_dofs[],
160  size_type xcoord_dofs_ub,
161  size_type xdf,
162  const dof_type xlocal_coords[],
163  size_type xlocal_coords_ub);
164 
169  virtual value_type jacobian_determinant(const dof_type xcoord_dofs[],
170  size_type xcoord_dofs_ub,
171  size_type xdf,
172  const coord_type xlocal_coords[],
173  size_type xlocal_coords_ub);
174 
175 protected:
176 
177 private:
178 
180 
181  // ===========================================================
183  // ===========================================================
185 
186 public:
187 
188 protected:
189 
190 private:
191 
193 
194  // ===========================================================
196  // ===========================================================
198 
199 public:
200 
202 
207  virtual void value_at_coord(const dof_type xdofs[],
208  size_type xdofs_ub,
209  const dof_type xlocal_coords[],
210  size_type xlocal_coords_ub,
211  dof_type xresult[],
212  size_type xresult_ub) const;
213 
218  virtual void coord_at_value(const dof_type xdofs[],
219  size_type xdofs_ub,
220  const dof_type xglobal_coords[],
221  size_type xglobal_coord_ub,
222  dof_type xlocal_coords[],
223  size_type xlocal_coords_ub) const;
224 
225 protected:
226 
227 private:
228 
230 
231  // ===========================================================
233  // ===========================================================
235 
236 public:
237 
241  virtual constant_fcn_space* clone() const = 0;
242 
246  virtual constant_fcn_space& operator=(const section_evaluator& xother);
247 
251  constant_fcn_space& operator=(const constant_fcn_space& xother);
252 
256  virtual ~constant_fcn_space();
257 
261  virtual bool invariant() const;
262 
266  virtual bool is_ancestor_of(const any* xother) const;
267 
268 protected:
269 
270 private:
271 
273 
274 };
275 
276 } // namespace fiber_bundle
277 
278 #endif // ifndef CONSTANT_FCN_SPACE_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
An abstract integrable section evaluator which is a member of a linear function space.
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.
vd_value_type value_type
The type of component in the value; the scalar type in the range vector space.
An abstract local section evaluator; a map from {local coordinates x dofs} to section value...
virtual void value_at_coord(const dof_type xdofs[], size_type xdofs_ub, const dof_type xlocal_coords[], size_type xlocal_coords_ub, dof_type xresult[], size_type xresult_ub) const
Computes the value of the function at local coordinates xlocal_coords using the degrees of freedom xd...
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
virtual void integrate(const dof_type xcoord_dofs[], size_type xcoord_dofs_ub, size_type xdf, const dof_type xintegrands[], size_type xintegrands_ub, value_type xresult_integrals[], size_type xresult_integrals_ub)=0
Computes the value of the integral of the integrand array...
static_const_int
The dimension of this function space; static const version.
An section evaluator with a constant value over an abstract domain.
Namespace for the fiber_bundles component of the sheaf system.