SheafSystem  0.0.0.0
sec_jcb_e23.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_JCB_E23_H
22 #define SEC_JCB_E23_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_JCB_ED_H
29 #include "SheafSystem/sec_jcb_ed.h"
30 #endif
31 
32 #ifndef JCB_E23_H
33 #include "SheafSystem/jcb_e23.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 class sec_e2;
40 class sec_e3;
41 
42 //==============================================================================
43 // CLASS SEC_JCB_E23
44 //==============================================================================
45 
49 class SHEAF_DLL_SPEC sec_jcb_e23 : public sec_jcb_ed
50 {
51 
52  // ===========================================================
54  // ===========================================================
56 
57 public:
58 
63 
68 
72  typedef sec_e3 range_type;
73 
79  static host_type& new_host(namespace_type& xns,
80  const poset_path& xhost_path,
81  const poset_path& xschema_path,
82  const poset_path& xdomain_space_path,
83  const poset_path& xrange_space_path,
84  bool xauto_access);
85 
92  static host_type& standard_host(namespace_type& xns,
93  const poset_path& xbase_path,
94  const poset_path& xrep_path,
95  const std::string& xsection_suffix,
96  const std::string& xfiber_suffix,
97  bool xauto_access);
98 
99 protected:
100 
101 private:
102 
104 
105 
106  //============================================================================
108  //============================================================================
110 
111 public:
112 
116  sec_jcb_e23();
117 
122  sec_jcb_e23(const sec_rep_space* xhost, pod_index_type xhub_id);
123 
128  sec_jcb_e23(const sec_rep_space* xhost, const scoped_index& xid);
129 
134  sec_jcb_e23(const sec_rep_space* xhost, const std::string& xname);
135 
140  sec_jcb_e23(const namespace_poset* xnamespace,
141  const poset_path& xpath,
142  bool xauto_access = true);
143 
147  explicit sec_jcb_e23(const sec_rep_space_member* xother);
148 
152  sec_jcb_e23(sec_rep_space* xhost,
153  section_dof_map* xdof_map = 0,
154  bool xauto_access = true);
155 
159  virtual sec_jcb_e23& operator=(const abstract_poset_member& xother);
160 
164  sec_jcb_e23& operator=(const sec_jcb_e23& xother);
165 
169  sec_jcb_e23& operator=(const jcb_e23& xfiber);
170 
174  sec_jcb_e23& operator=(const jcb_e23_lite& xfiber);
175 
179  ~sec_jcb_e23();
180 
184  virtual const fiber_type& fiber_prototype() const;
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_jcb_e23* clone() const;
270 
271 
272 
278  inline sec_jcb_e23* clone(bool xnew_state, bool xauto_access = true) const
279  {
280  return static_cast<sec_jcb_e23*>(sec_jcb_ed::clone(xnew_state, xauto_access));
281  }
282 
283 protected:
284 
285 private:
286 
288 
289 
290  //============================================================================
292  //============================================================================
294 
295 public:
296 
300  bool fiber_is_ancestor_of(const any* xother) const;
301 
305  bool is_ancestor_of(const any* xother) const;
306 
310  bool invariant() const;
311 
312 protected:
313 
314 private:
315 
317 
318 };
319 
320 
321 //==============================================================================
322 // NON-MEMBER FUNCTIONS
323 //==============================================================================
324 
325 class sec_e2;
326 class sec_e3;
327 
328 namespace sec_jcb_algebra
329 {
330 
331 #ifndef DOXYGEN_SKIP_UNKNOWN
332 SHEAF_DLL_SPEC void push(const sec_jcb_e23& xjcb, const sec_e2& xvector, sec_e3& xresult,
336  bool xauto_access);
337 #endif // ifndef DOXYGEN_SKIP_UNKNOWN
338 
342 SHEAF_DLL_SPEC void pull(const sec_jcb_e23& xjcb, const sec_e3& xcovector, sec_e2& xresult,
343  bool xauto_access);
344 
345 } // namespace sec_jcb_algebra
346 
347 } // namespace fiber_bundle
348 
349 #endif // ifndef SEC_JCB_E23_H
350 
sec_e3 range_type
The type of range vector space.
Definition: sec_jcb_e23.h:72
The abstract map from section dof ids to section dof values of heterogeneous type.
virtual sec_jcb_ed * clone() const
Make a new handle, no state instance of current.
Definition: sec_jcb_ed.cc:465
sec_e2 domain_type
The type of domain vector space.
Definition: sec_jcb_e23.h:67
Jacobian of a map from a 2 dimensional domain (u, v) to a 3 dimensional Euclidean space (x...
Definition: jcb_e23.h:421
The default name space; a poset which contains other posets as members.
void pull(const SJCB &xjcb, const SCOVECTOR &xcovector, SR &xresult, bool xauto_access)
Definition: sec_jcb.impl.h:95
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
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.
void push(const SJCB &xjcb, const SVECTOR &xvector, SR &xresult, bool xauto_access)
Definition: sec_jcb.impl.h:143
jcb_e23 fiber_type
The fiber type.
Definition: sec_jcb_e23.h:62
Abstract base class with useful features for all objects.
Definition: any.h:39
sec_jcb_e23 * 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_jcb_e23.h:278
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 jcb_ed.
Definition: sec_jcb_ed.h:46
A section of a fiber bundle with a 3-dimensional Euclidean vector space fiber.
Definition: sec_e3.h:47
Jacobian of a map from a 2 dimensional domain (u, v) to a 3 dimensional Euclidean space (x...
Definition: jcb_e23.h:142
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
An abstract section space of Jacobians.
Definition: sec_jcb_space.h:53
A section of a bundle with fiber type jcb_e23.
Definition: sec_jcb_e23.h:49
An abstract client handle for a member of a poset.
Namespace for the fiber_bundles component of the sheaf system.
A section of a fiber bundle with a 2-dimensional Euclidean vector space fiber.
Definition: sec_e2.h:48
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61