SheafSystem  0.0.0.0
sec_t3.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_T3_H
22 #define SEC_T3_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_TP_H
29 #include "SheafSystem/sec_tp.h"
30 #endif
31 
32 #ifndef T3_H
33 #include "SheafSystem/t3.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 //==============================================================================
40 // CLASS SEC_T3
41 //==============================================================================
42 
46 class SHEAF_DLL_SPEC sec_t3 : public sec_tp
47 {
48 
49  // ===========================================================
51  // ===========================================================
53 
54 public:
55 
59  typedef t3 fiber_type;
60 
66  static host_type& new_host(namespace_type& xns,
67  const poset_path& xhost_path,
68  const poset_path& xschema_path,
69  const poset_path& xscalar_space_path,
70  bool xauto_access);
71 
72 protected:
73 
74 private:
75 
77 
78 
79  //============================================================================
81  //============================================================================
83 
84 public:
85 
89  sec_t3();
90 
95  sec_t3(const sec_rep_space* xhost, pod_index_type xhub_id);
96 
101  sec_t3(const sec_rep_space* xhost, const scoped_index& xid);
102 
107  sec_t3(const sec_rep_space* xhost, const std::string& xname);
108 
113  sec_t3(const namespace_poset* xnamespace,
114  const poset_path& xpath,
115  bool xauto_access = true);
116 
120  explicit sec_t3(const sec_rep_space_member* xother);
121 
125  sec_t3(sec_rep_space* xhost,
126  section_dof_map* xdof_map = 0,
127  bool xauto_access = true);
128 
134  sec_t3(sec_rep_space* xhost,
135  abstract_poset_member& xbase_mbr,
136  int xbase_version = CURRENT_HOST_VERSION,
137  bool xauto_access = true);
138 
142  virtual sec_t3& operator=(const abstract_poset_member& xother);
143 
147  sec_t3& operator=(const sec_t3& xother);
148 
152  sec_t3& operator=(const t3& xfiber);
153 
157  sec_t3& operator=(const t3_lite& xfiber);
158 
162  ~sec_t3();
163 
167  virtual const fiber_type& fiber_prototype() const;
168 
169 protected:
170 
171 private:
172 
174 
175 
176  //============================================================================
178  //============================================================================
180 
181 public:
182 
183 protected:
184 
185 private:
186 
188 
189 
190  //============================================================================
192  //============================================================================
194 
195 public:
196 
197 protected:
198 
199 private:
200 
202 
203 
204  //============================================================================
206  //============================================================================
208 
209 public:
210 
211 protected:
212 
213 private:
214 
216 
217 
218  //============================================================================
220  //============================================================================
222 
223 public:
224 
228  virtual const std::string& class_name() const;
229 
233  static const std::string& static_class_name();
234 
238  virtual sec_t3* clone() const;
239 
245  inline sec_t3* clone(bool xnew_state, bool xauto_access = true) const
246  {
247  return static_cast<sec_t3*>(sec_tp::clone(xnew_state, xauto_access));
248  }
249 
250 protected:
251 
252 private:
253 
255 
256 
257  //============================================================================
259  //============================================================================
261 
262 public:
263 
267  bool fiber_is_ancestor_of(const any* xother) const;
268 
272  bool is_ancestor_of(const any* xother) const;
273 
277  bool invariant() const;
278 
279 protected:
280 
281 private:
282 
284 
285 public:
286 
287 };
288 
289 //==============================================================================
290 // NON-MEMBER FUNCTIONS
291 //==============================================================================
292 
293 class sec_at1;
294 
295 namespace sec_tp_algebra
296 {
297 
302 SHEAF_DLL_SPEC void alt(const sec_t3& x0, sec_at3& xresult, bool xauto_access);
303 
308 SHEAF_DLL_SPEC void alt(const sec_t3& x0, sec_t3& xresult, bool xauto_access);
309 
314 SHEAF_DLL_SPEC void sym(const sec_t3& x0, sec_st3& xresult, bool xauto_access);
315 
320 SHEAF_DLL_SPEC void sym(const sec_t3& x0, sec_t3& xresult, bool xauto_access);
321 
329 SHEAF_DLL_SPEC void contract(const sec_t3& x0, int xp, int xq, sec_at1& xresult,
330  bool xauto_access);
331 
336 SHEAF_DLL_SPEC void tensor(const sec_t2& x0, const sec_at1& x1, sec_t3& xresult,
337  bool xauto_access);
338 SHEAF_DLL_SPEC void tensor(const sec_at1& x0, const sec_t2& x1, sec_t3& xresult,
339  bool xauto_access);
340 SHEAF_DLL_SPEC void tensor(const sec_at2& x0, const sec_at1& x1, sec_t3& xresult,
341  bool xauto_access);
342 SHEAF_DLL_SPEC void tensor(const sec_at1& x0, const sec_at2& x1, sec_t3& xresult,
343  bool xauto_access);
344 SHEAF_DLL_SPEC void tensor(const sec_st2& x0, const sec_at1& x1, sec_t3& xresult,
345  bool xauto_access);
346 SHEAF_DLL_SPEC void tensor(const sec_at1& x0, const sec_st2& x1, sec_t3& xresult,
347  bool xauto_access);
348 
349 //==============================================================================
350 
351 } // namespace sec_tp_algebra
352 
353 } // namespace fiber_bundle
354 
355 #endif // ifndef SEC_T3_H
356 
357 
A tensor of degree 3 over an abstract vector space (volatile version).
Definition: t3.h:43
void alt(const GT &x0, AT &xresult, bool xauto_access)
Definition: sec_tp.impl.h:140
void sym(const GT &x0, ST &xresult, bool xauto_access)
Definition: sec_tp.impl.h:184
sec_t3 * 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_t3.h:245
The abstract map from section dof ids to section dof values of heterogeneous type.
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...
A tensor of degree 3 over an abstract vector space (persistent version).
Definition: t3.h:222
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.
A section of a bundle with fiber type at1.
Definition: sec_at1.h:48
A section of a bundle with fiber type t3.
Definition: sec_t3.h:46
Abstract base class with useful features for all objects.
Definition: any.h:39
An abstract tensor section space of degree p.
Definition: sec_tp_space.h:53
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
A section of a bundle with fiber type at2.
Definition: sec_at2.h:46
A section of a bundle with fiber type st2.
Definition: sec_st2.h:46
A section of a bundle with fiber type at3.
Definition: sec_at3.h:46
A section of a bundle with fiber type st3.
Definition: sec_st3.h:46
SHEAF_DLL_SPEC tensor_variance contract(const tensor_variance &x0, int xp, int xq)
The variance of the contration of a tensor with variance x0 on indices xp and xq. ...
virtual sec_tp * clone() const
Make a new handle, no state instance of current.
Definition: sec_tp.cc:903
A section of a bundle with fiber type tp.
Definition: sec_t2.h:46
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
An abstract client handle for a member of a poset.
Namespace for the fiber_bundles component of the sheaf system.
t3 fiber_type
The fiber type.
Definition: sec_t3.h:59
void tensor(const S0 &x0, const S1 &x1, SR &xresult, bool xauto_access)
Definition: sec_tp.impl.h:228
A section of a bundle with fiber type tp.
Definition: sec_tp.h:49
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61