SheafSystem  0.0.0.0
sec_stp.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_STP_H
22 #define SEC_STP_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 STP_H
33 #include "SheafSystem/stp.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 class sec_stp_space;
40 
41 //==============================================================================
42 // CLASS SEC_STP
43 //==============================================================================
44 
48 class SHEAF_DLL_SPEC sec_stp : public sec_tp
49 {
50  // ===========================================================
52  // ===========================================================
54 
55 public:
56 
61 
65  typedef stp fiber_type;
66 
72  static host_type& new_host(namespace_type& xns,
73  const poset_path& xhost_path,
74  const poset_path& xschema_path,
75  const poset_path& xvector_space_path,
76  bool xauto_access);
77 
78 protected:
79 
80 private:
81 
83 
84 
85  //============================================================================
87  //============================================================================
89 
90 public:
91 
95  sec_stp();
96 
101  sec_stp(const sec_rep_space* xhost, pod_index_type xhub_id);
102 
107  sec_stp(const sec_rep_space* xhost, const scoped_index& xid);
108 
113  sec_stp(const sec_rep_space* xhost, const std::string& xname);
114 
119  sec_stp(const namespace_poset* xnamespace,
120  const poset_path& xpath,
121  bool xauto_access = true);
122 
126  explicit sec_stp(const sec_rep_space_member* xother);
127 
131  sec_stp(sec_rep_space* xhost,
132  section_dof_map* xdof_map = 0,
133  bool xauto_access = true);
134 
140  sec_stp(sec_rep_space* xhost,
141  abstract_poset_member& xbase_mbr,
142  int xbase_version = CURRENT_HOST_VERSION,
143  bool xauto_access = true);
144 
148  virtual sec_stp& operator=(const abstract_poset_member& xother);
149 
153  sec_stp& operator=(const sec_stp& xother);
154 
158  sec_stp& operator=(const stp& xfiber);
159 
163  sec_stp& operator=(const stp_lite& xfiber);
164 
168  ~sec_stp();
169 
173  virtual const fiber_type& fiber_prototype() const;
174 
175 protected:
176 
177 private:
178 
180 
181 
182  //============================================================================
184  //============================================================================
186 
187 public:
188 
189 protected:
190 
191 private:
192 
194 
195 
196  //============================================================================
198  //============================================================================
200 
201 public:
202 
203 protected:
204 
205 private:
206 
208 
209 
210  //============================================================================
212  //============================================================================
214 
215 public:
216 
217 protected:
218 
219 private:
220 
222 
223 
224  //============================================================================
226  //============================================================================
228 
229 public:
230 
234  virtual const std::string& class_name() const;
235 
239  static const std::string& static_class_name();
240 
244  virtual sec_stp* clone() const;
245 
251  inline sec_stp* clone(bool xnew_state, bool xauto_access = true) const
252  {
253  return static_cast<sec_stp*>(sec_tp::clone(xnew_state, xauto_access));
254  }
255 
256 protected:
257 
258 private:
259 
261 
262 
263  // ===========================================================
265  // ===========================================================
267 
268 public:
269 
273  host_type* host() const;
274 
278  virtual bool host_is_ancestor_of(const poset_state_handle* other) const;
279 
280 protected:
281 
282 private:
283 
285 
286 
287  //============================================================================
289  //============================================================================
291 
292 public:
293 
297  bool fiber_is_ancestor_of(const any* xother) const;
298 
302  bool is_ancestor_of(const any* xother) const;
303 
307  bool invariant() const;
308 
309 protected:
310 
311 private:
312 
314 
315 };
316 
317 //==============================================================================
318 // NON-MEMBER FUNCTIONS
319 //==============================================================================
320 
321 //$$SCRIBBLE: Currently all symmetric_product functions are
322 // "not_implemented()" because meaningful
323 // results would be something like Sym(st2 (X) st2) = st4.
324 // But we have not yet implemented any st4 classes.
325 
330 namespace sec_stp_algebra
331 {
332 
336 SHEAF_DLL_SPEC void symmetric_product(const sec_stp& x0, const sec_stp& x1, sec_stp& xresult,
337  bool xauto_access);
338 
339 } // namespace sec_stp_algebra
340 
341 } // namespace fiber_bundle
342 
343 #endif // ifndef SEC_STP_H
344 
345 
An abstract symmetric tensor section space of degree p.
Definition: sec_stp_space.h:47
A symmetric tensor of degree p over an abstract vector space.
Definition: stp.h:190
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 client handle for a general, abstract partially order set.
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.
sec_stp_space host_type
The type of host poset.
Definition: sec_stp.h:60
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
sec_stp * 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_stp.h:251
A section of a bundle with fiber type stp.
Definition: sec_stp.h:48
stp fiber_type
The fiber type.
Definition: sec_stp.h:65
virtual sec_tp * clone() const
Make a new handle, no state instance of current.
Definition: sec_tp.cc:903
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.
A symmetric tensor of degree p over an abstract vector space (volatile version).
Definition: stp.h:44
Namespace for the fiber_bundles component of the sheaf system.
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