SheafSystem  0.0.0.0
sec_st3_e3.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_ST3_E3_H
22 #define SEC_ST3_E3_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_ST3_H
29 #include "SheafSystem/sec_st3.h"
30 #endif
31 
32 #ifndef ST3_E3
33 #include "SheafSystem/st3_e3.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 class sec_e3;
40 
41 //==============================================================================
42 // CLASS SEC_ST3_E3
43 //==============================================================================
44 
48 class SHEAF_DLL_SPEC sec_st3_e3 : public sec_st3
49 {
50  // ===========================================================
52  // ===========================================================
54 
55 public:
56 
57  // Typedefs:
58 
62  typedef st3_e3 fiber_type;
63 
68 
74  static host_type& new_host(namespace_type& xns,
75  const poset_path& xhost_path,
76  const poset_path& xschema_path,
77  const poset_path& xvector_space_path,
78  bool xauto_access);
79 
86  static host_type& standard_host(namespace_type& xns,
87  const poset_path& xbase_path,
88  const poset_path& xrep_path,
89  const std::string& xsection_suffix,
90  const std::string& xfiber_suffix,
91  bool xauto_access);
92 
93 protected:
94 
95 private:
96 
98 
99 
100  //============================================================================
102  //============================================================================
104 
105 public:
106 
110  sec_st3_e3();
111 
116  sec_st3_e3(const sec_rep_space* xhost, pod_index_type xhub_id);
117 
122  sec_st3_e3(const sec_rep_space* xhost, const scoped_index& xid);
123 
128  sec_st3_e3(const sec_rep_space* xhost, const std::string& xname);
129 
134  sec_st3_e3(const namespace_poset* xnamespace,
135  const poset_path& xpath,
136  bool xauto_access = true);
137 
141  explicit sec_st3_e3(const sec_rep_space_member* xother);
142 
146  sec_st3_e3(sec_rep_space* xhost,
147  section_dof_map* xdof_map = 0,
148  bool xauto_access = true);
149 
155  sec_st3_e3(sec_rep_space* xhost,
156  abstract_poset_member& xbase_mbr,
157  int xbase_version = CURRENT_HOST_VERSION,
158  bool xauto_access = true);
159 
163  virtual sec_st3_e3& operator=(const abstract_poset_member& xother);
164 
168  sec_st3_e3& operator=(const sec_st3_e3& xother);
169 
173  sec_st3_e3& operator=(const st3_e3& xfiber);
174 
178  sec_st3_e3& operator=(const st3_e3_lite& xfiber);
179 
183  ~sec_st3_e3();
184 
188  virtual const fiber_type& fiber_prototype() const;
189 
190 protected:
191 
192 private:
193 
195 
196 
197  //============================================================================
199  //============================================================================
201 
202 public:
203 
204 protected:
205 
206 private:
207 
209 
210 
211  //============================================================================
213  //============================================================================
215 
216 public:
217 
218 protected:
219 
220 private:
221 
223 
224 
225  //============================================================================
227  //============================================================================
229 
230 public:
231 
232 protected:
233 
234 private:
235 
237 
238 
239  //============================================================================
241  //============================================================================
243 
244 public:
245 
246 protected:
247 
248 private:
249 
251 
252 
253  //============================================================================
255  //============================================================================
257 
258 public:
259 
260 protected:
261 
262 private:
263 
265 
266 
267  //============================================================================
269  //============================================================================
271 
272 public:
273 
277  virtual const std::string& class_name() const;
278 
282  static const std::string& static_class_name();
283 
287  virtual sec_st3_e3* clone() const;
288 
294  inline sec_st3_e3* clone(bool xnew_state, bool xauto_access = true) const
295  {
296  return static_cast<sec_st3_e3*>(sec_st3::clone(xnew_state, xauto_access));
297  }
298 
299 protected:
300 
301 private:
302 
304 
305 
306  //============================================================================
308  //============================================================================
310 
311 public:
312 
316  bool fiber_is_ancestor_of(const any* xother) const;
317 
321  bool is_ancestor_of(const any* xother) const;
322 
326  bool invariant() const;
327 
328 protected:
329 
330 private:
331 
333 
334 public:
335 
336 
337 };
338 
339 } // namespace fiber_bundle
340 
341 #endif // ifndef SEC_ST3_E3_H
342 
343 
A section of a bundle with fiber type st3_e3.
Definition: sec_st3_e3.h:48
An abstract symmetric tensor section space of degree p.
Definition: sec_stp_space.h:47
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 symmetric rank 3 tensor over a 3D Euclidean vector space (persistent version).
Definition: st3_e3.h:370
st3_e3 fiber_type
The fiber type.
Definition: sec_st3_e3.h:62
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_st3 * clone() const
Make a new handle, no state instance of current.
Definition: sec_st3.cc:491
Abstract base class with useful features for all objects.
Definition: any.h:39
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 st3.
Definition: sec_st3.h:46
A section of a fiber bundle with a 3-dimensional Euclidean vector space fiber.
Definition: sec_e3.h:47
sec_st3_e3 * 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_st3_e3.h:294
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
A symmetric rank 3 tensor over a Euclidean vector space of dimension 3. (volatile version)...
Definition: st3_e3.h:118
An abstract client handle for a member of a poset.
sec_e3 vector_space_type
Type of underlying vector space.
Definition: sec_st3_e3.h:67
Namespace for the fiber_bundles component of the sheaf system.
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61