SheafSystem  0.0.0.0
sec_jcb_e33.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_E33_H
22 #define SEC_JCB_E33_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_E33_H
33 #include "SheafSystem/jcb_e33.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 class sec_e3;
40 
41 //==============================================================================
42 // CLASS SEC_JCB_E33
43 //==============================================================================
44 
48 class SHEAF_DLL_SPEC sec_jcb_e33 : public sec_jcb_ed
49 {
50 
51  // ===========================================================
53  // ===========================================================
55 
56 public:
57 
62 
67 
71  typedef sec_e3 range_type;
72 
78  static host_type& new_host(namespace_type& xns,
79  const poset_path& xhost_path,
80  const poset_path& xschema_path,
81  const poset_path& xdomain_space_path,
82  const poset_path& xrange_space_path,
83  bool xauto_access);
84 
91  static host_type& standard_host(namespace_type& xns,
92  const poset_path& xbase_path,
93  const poset_path& xrep_path,
94  const std::string& xsection_suffix,
95  const std::string& xfiber_suffix,
96  bool xauto_access);
97 
98 protected:
99 
100 private:
101 
103 
104 
105  //============================================================================
107  //============================================================================
109 
110 public:
111 
115  sec_jcb_e33();
116 
121  sec_jcb_e33(const sec_rep_space* xhost, pod_index_type xhub_id);
122 
127  sec_jcb_e33(const sec_rep_space* xhost, const scoped_index& xid);
128 
133  sec_jcb_e33(const sec_rep_space* xhost, const std::string& xname);
134 
139  sec_jcb_e33(const namespace_poset* xnamespace,
140  const poset_path& xpath,
141  bool xauto_access = true);
142 
146  explicit sec_jcb_e33(const sec_rep_space_member* xother);
147 
151  sec_jcb_e33(sec_rep_space* xhost,
152  section_dof_map* xdof_map = 0,
153  bool xauto_access = true);
154 
158  virtual sec_jcb_e33& operator=(const abstract_poset_member& xother);
159 
163  sec_jcb_e33& operator=(const sec_jcb_e33& xother);
164 
168  sec_jcb_e33& operator=(const jcb_e33& xfiber);
169 
173  sec_jcb_e33& operator=(const jcb_e33_lite& xfiber);
174 
178  ~sec_jcb_e33();
179 
183  virtual const fiber_type& fiber_prototype() const;
184 
185 protected:
186 
187 private:
188 
190 
191 
192  //============================================================================
194  //============================================================================
196 
197 public:
198 
199 protected:
200 
201 private:
202 
204 
205 
206  //============================================================================
208  //============================================================================
210 
211 public:
212 
213 protected:
214 
215 private:
216 
218 
219 
220  //============================================================================
222  //============================================================================
224 
225 public:
226 
227 protected:
228 
229 private:
230 
232 
233 
234  //============================================================================
236  //============================================================================
238 
239 public:
240 
241 protected:
242 
243 private:
244 
246 
247 
248  //============================================================================
250  //============================================================================
252 
253 public:
254 
258  virtual const std::string& class_name() const;
259 
263  static const std::string& static_class_name();
264 
268  virtual sec_jcb_e33* clone() const;
269 
275  inline sec_jcb_e33* clone(bool xnew_state, bool xauto_access = true) const
276  {
277  return static_cast<sec_jcb_e33*>(sec_jcb_ed::clone(xnew_state, xauto_access));
278  }
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 class sec_e3;
322 
323 namespace sec_jcb_algebra
324 {
325 
326 #ifndef DOXYGEN_SKIP_UNKNOWN
327 SHEAF_DLL_SPEC void push(const sec_jcb_e33& xjcb, const sec_e3& xvector, sec_e3& xresult,
331  bool xauto_access);
332 #endif // ifndef DOXYGEN_SKIP_UNKNOWN
333 
337 SHEAF_DLL_SPEC void pull(const sec_jcb_e33& xjcb, const sec_e3& xcovector, sec_e3& xresult,
338  bool xauto_access);
339 
340 } // namespace sec_jcb_algebra
341 
342 } // namespace fiber_bundle
343 
344 #endif // ifndef SEC_JCB_E33_H
345 
346 
Jacobian of a map from a 3 dimensional domain (u, v, w) to a 3 dimensional Euclidean space (x...
Definition: jcb_e33.h:144
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
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.
jcb_e33 fiber_type
The fiber type.
Definition: sec_jcb_e33.h:61
void push(const SJCB &xjcb, const SVECTOR &xvector, SR &xresult, bool xauto_access)
Definition: sec_jcb.impl.h:143
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 jcb_e33.
Definition: sec_jcb_e33.h:48
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 3 dimensional domain (u, v, w) to a 3 dimensional Euclidean space (x...
Definition: jcb_e33.h:434
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
sec_jcb_e33 * 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_e33.h:275
sec_e3 range_type
The type of range vector space.
Definition: sec_jcb_e33.h:71
An abstract client handle for a member of a poset.
Namespace for the fiber_bundles component of the sheaf system.
sec_e3 domain_type
The type of domain vector space.
Definition: sec_jcb_e33.h:66
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61