SheafSystem  0.0.0.0
linear_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 linear_fcn_space
19 
20 #ifndef LINEAR_FCN_SPACE_H
21 #define LINEAR_FCN_SPACE_H
22 
23 #ifndef INTEGRABLE_SECTION_EVALUATOR_H
24 #include "SheafSystem/integrable_section_evaluator.h"
25 #endif
26 
27 #ifndef SHEAF_DLL_SPEC_H
28 #include "SheafSystem/sheaf_dll_spec.h"
29 #endif
30 
31 
32 namespace fiber_bundle
33 {
34 
38 class SHEAF_DLL_SPEC linear_fcn_space : public integrable_section_evaluator
39 {
40 
41  // ===========================================================
43  // ===========================================================
45 
46 public:
47 
51  linear_fcn_space(const linear_fcn_space& xother);
52 
56  virtual ~linear_fcn_space();
57 
61  virtual int dl() const = 0;
62 
65 
66  virtual void basis_at_coord(const dof_type xlocal_coords[],
67  size_type xlocal_coords_ub) = 0;
68 
73  virtual void basis_derivs_at_coord(const dof_type xlocal_coords[],
74  size_type xlocal_coords_ub) = 0;
75 
79  const value_type* basis_values() const;
80 
84  const value_type* basis_deriv_values() const;
85 
86 protected:
87 
92 
96  value_type* _basis_values;
97 
101  value_type* _basis_deriv_values;
102 
103 private:
104 
106 
107  // ===========================================================
109  // ===========================================================
111 
112 public:
113 
118  virtual size_type dof_ct() const;
119 
121 
126  virtual void value_at_coord(const dof_type xdofs[],
127  size_type xdofs_ub,
128  const dof_type xlocal_coords[],
129  size_type xlocal_coords_ub,
130  dof_type xresult[],
131  size_type xresult_ub) const;
132 
133 protected:
134 
135 private:
136 
138 
139  // ===========================================================
141  // ===========================================================
143 
144 public:
145 
149  virtual linear_fcn_space* clone() const = 0;
150 
154  virtual linear_fcn_space& operator=(const section_evaluator& xother);
155 
159  linear_fcn_space& operator=(const linear_fcn_space& xother);
160 
164  virtual bool invariant() const;
165 
169  virtual bool is_ancestor_of(const any* xother) const;
170 
171 protected:
172 
173 private:
174 
176 
177 };
178 
179 } // namespace fiber_bundle
180 
181 #endif // ifndef LINEAR_FCN_SPACE_H
value_type * _basis_values
The result of the preceding call to basis_at_coord.
value_type * _basis_deriv_values
The result of the preceding call to basis_derivs_at_coord.
sec_vd_dof_type dof_type
The type of degree of freedom.
virtual dof_type value_at_coord(const dof_type xdofs[], size_type xdofs_ub, const dof_type xlocal_coords[], size_type xlocal_coords_ub) const
Value at a specified local_coordinate. Single component version.
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
An abstract local section evaluator; a map from {local coordinates x dofs} to section value...
An abstract section evaluator with a bounded domain that supports integration (volume calculation) as...
Namespace for the fiber_bundles component of the sheaf system.