SheafSystem  0.0.0.0
sec_ed.h
Go to the documentation of this file.
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 
20 
21 #ifndef SEC_ED_H
22 #define SEC_ED_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_AT1_H
29 #include "SheafSystem/sec_at1.h"
30 #endif
31 
32 #ifndef ED_H
33 #include "SheafSystem/ed.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 //==============================================================================
40 // CLASS SEC_ED
41 //==============================================================================
42 
47 class SHEAF_DLL_SPEC sec_ed : public sec_at1
48 {
49 
50  // ===========================================================
52  // ===========================================================
54 
55 public:
56 
60  typedef ed fiber_type;
61 
67  static host_type& new_host(namespace_type& xns,
68  const poset_path& xhost_path,
69  const poset_path& xschema_path,
70  const poset_path& xscalar_space_path,
71  bool xauto_access);
72 
73 protected:
74 
75 private:
76 
78 
79 
80  //============================================================================
82  //============================================================================
84 
85 public:
86 
90  sec_ed();
91 
96  sec_ed(const sec_rep_space* xhost, pod_index_type xhub_id);
97 
103  sec_ed(const sec_rep_space* xhost, const scoped_index& xid);
104 
109  sec_ed(const sec_rep_space* xhost, const std::string& xname);
110 
115  sec_ed(const namespace_poset* xnamespace,
116  const poset_path& xpath,
117  bool xauto_access = true);
118 
122  explicit sec_ed(const sec_rep_space_member* xother);
123 
128  sec_ed(sec_rep_space* xhost,
129  section_dof_map* xdof_map = 0,
130  bool xauto_access = true);
131 
137  sec_ed(sec_rep_space* xhost,
138  abstract_poset_member& xbase_mbr,
139  int xbase_version = CURRENT_HOST_VERSION,
140  bool xauto_access = true);
141 
145  virtual sec_ed& operator=(const abstract_poset_member& xother);
146 
150  sec_ed& operator=(const sec_ed& xother);
151 
155  sec_ed& operator=(const ed& xfiber);
156 
160  sec_ed& operator=(const ed_lite& xfiber);
161 
165  ~sec_ed();
166 
170  virtual const fiber_type& fiber_prototype() const;
171 
172 protected:
173 
174 private:
175 
177 
178 
179  //============================================================================
181  //============================================================================
183 
184 public:
185 
186 protected:
187 
188 private:
189 
191 
192 
193  //============================================================================
195  //============================================================================
197 
198 public:
199 
200 protected:
201 
202 private:
203 
205 
206 
207  //============================================================================
209  //============================================================================
211 
212 public:
213 
214 protected:
215 
216 private:
217 
219 
220 
221  //============================================================================
223  //============================================================================
225 
226 public:
227 
228 protected:
229 
230 private:
231 
233 
234 
235  //============================================================================
237  //============================================================================
239 
240 public:
241 
242 protected:
243 
244 private:
245 
247 
248 
249  //============================================================================
251  //============================================================================
253 
254 public:
255 
259  virtual const std::string& class_name() const;
260 
264  static const std::string& static_class_name();
265 
269  virtual sec_ed* clone() const;
270 
276  inline sec_ed* clone(bool xnew_state, bool xauto_access = true) const
277  {
278  return static_cast<sec_ed*>(sec_at1::clone(xnew_state, xauto_access));
279  }
280 
281 protected:
282 
283 private:
284 
286 
287 
288  //============================================================================
290  //============================================================================
292 
293 public:
294 
298  bool fiber_is_ancestor_of(const any* xother) const;
299 
303  bool is_ancestor_of(const any* xother) const;
304 
308  bool invariant() const;
309 
310 protected:
311 
312 private:
313 
315 
316 };
317 
318 
319 //==============================================================================
320 // NON-MEMBER FUNCTIONS
321 //==============================================================================
322 
327 namespace sec_ed_algebra
328 {
329 
333 SHEAF_DLL_SPEC void dot(const sec_ed& x0, const sec_ed& x1, sec_at0& xresult,
334  bool xauto_access);
335 
339 SHEAF_DLL_SPEC void length(const sec_ed& x0, sec_at0& xresult, bool xauto_access);
340 
344 SHEAF_DLL_SPEC void put_length(sec_ed& x0, const vd_value_type& xlength, bool xauto_access);
345 
349 SHEAF_DLL_SPEC void normalize(const sec_ed& x0, sec_ed& xresult, bool xauto_access);
350 
355 SHEAF_DLL_SPEC void normalize(sec_ed& x0, bool xauto_access);
356 
357 } // namespace sec_tp_algebra
358 
359 } // namespace fiber_bundle
360 
361 #endif // ifndef SEC_ED_H
362 
363 
sec_ed * clone(bool xnew_state, bool xauto_access=true) const
Make a new handle instance of current. Attach the new instance to a new state if xnew_state is true...
Definition: sec_ed.h:276
void length(const S &x0, SR &xresult, bool xauto_access)
Definition: sec_ed.impl.h:181
The abstract map from section dof ids to section dof values of heterogeneous type.
A space of scalars viewed as an antisymmetric tensor section space of degree 1.
Definition: sec_at1_space.h:48
The default name space; a poset which contains other posets as members.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
void normalize(const S &x0, SR &xresult, bool xauto_access)
Definition: sec_ed.impl.h:246
ed fiber_type
The fiber type.
Definition: sec_ed.h:60
A path defined by a poset name and a member name separated by a forward slash (&#39;/&#39;). For example: "cell_definitions/triangle".
Definition: poset_path.h:48
A member of a sec_rep_space; a section.
virtual sec_at1 * clone() const
Make a new handle, no state instance of current.
Definition: sec_at1.cc:490
A section of a bundle with fiber type at1.
Definition: sec_at1.h:48
A section of a fiber bundle with a d-dimensional Euclidean vector space fiber.
Definition: sec_ed.h:47
Abstract base class with useful features for all objects.
Definition: any.h:39
Euclidean vector space of dimension d (volatile version).
Definition: ed.h:44
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
Euclidean vector space of dimension d (peresistent version).
Definition: ed.h:210
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
void dot(const S &x0, const S &x1, SR &xresult, bool xauto_access)
Definition: sec_ed.impl.h:144
void put_length(S &x0, const vd_value_type &xlength, bool xauto_access)
Definition: sec_ed.impl.h:213
An abstract client handle for a member of a poset.
Namespace for the fiber_bundles component of the sheaf system.
Antisymetric tensor of degree 0. As the degree is 0 there is nothing to be symmetric or antisymmetric...
Definition: sec_at0.h:51
double vd_value_type
The type of component in the fiber; the scalar type in the fiber vector space.
Definition: fiber_bundle.h:63
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61