SheafSystem  0.0.0.0
sec_jcb.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_H
22 #define SEC_JCB_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_VD_H
29 #include "SheafSystem/sec_vd.h"
30 #endif
31 
32 #ifndef JCB_H
33 #include "SheafSystem/jcb.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 class sec_at1;
40 class sec_jcb_space;
41 
42 //==============================================================================
43 // CLASS SEC_JCB
44 //==============================================================================
45 
49 class SHEAF_DLL_SPEC sec_jcb : public sec_vd
50 {
51 
52  // ===========================================================
54  // ===========================================================
56 
57 public:
58 
63 
68 
73 
77  typedef jcb fiber_type;
78 
84  static host_type& new_host(namespace_type& xns,
85  const poset_path& xhost_path,
86  const poset_path& xschema_path,
87  const poset_path& xdomain_space_path,
88  const poset_path& xrange_space_path,
89  bool xauto_access);
90 
91 protected:
92 
93 private:
94 
96 
97 
98  //============================================================================
100  //============================================================================
102 
103 public:
104 
108  sec_jcb();
109 
114  sec_jcb(const sec_rep_space* xhost, pod_index_type xhub_id);
115 
120  sec_jcb(const sec_rep_space* xhost, const scoped_index& xid);
121 
126  sec_jcb(const sec_rep_space* xhost, const std::string& xname);
127 
132  sec_jcb(const namespace_poset* xnamespace,
133  const poset_path& xpath,
134  bool xauto_access = true);
135 
139  explicit sec_jcb(const sec_rep_space_member* xother);
140 
144  sec_jcb(sec_rep_space* xhost,
145  section_dof_map* xdof_map = 0,
146  bool xauto_access = true);
147 
151  virtual sec_jcb& operator=(const abstract_poset_member& xother);
152 
156  sec_jcb& operator=(const sec_jcb& xother);
157 
161  sec_jcb& operator=(const jcb& xfiber);
162 
166  sec_jcb& operator=(const jcb_lite& xfiber);
167 
171  ~sec_jcb();
172 
176  virtual const fiber_type& fiber_prototype() const;
177 
181  virtual int dd() const;
182 
186  int dd(bool xauto_access) const;
187 
191  poset_path domain_path() const;
192 
196  poset_path domain_path(bool xauto_access) const;
197 
201  virtual int dr() const;
202 
206  int dr(bool xauto_access) const;
207 
211  poset_path range_path() const;
212 
216  poset_path range_path(bool xauto_access) const;
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 
263  virtual const std::string& class_name() const;
264 
268  static const std::string& static_class_name();
269 
273  virtual sec_jcb* clone() const;
274 
280  inline sec_jcb* clone(bool xnew_state, bool xauto_access = true) const
281  {
282  return static_cast<sec_jcb*>(sec_vd::clone(xnew_state, xauto_access));
283  }
284 
285 protected:
286 
287 private:
288 
290 
291 
292  // ===========================================================
294  // ===========================================================
296 
297 public:
298 
302  host_type* host() const;
303 
307  virtual bool host_is_ancestor_of(const poset_state_handle* other) const;
308 
309 protected:
310 
311 private:
312 
314 
315 
316  //============================================================================
318  //============================================================================
320 
321 public:
322 
326  bool fiber_is_ancestor_of(const any* xother) const;
327 
331  bool is_ancestor_of(const any* other) const;
332 
336  bool invariant() const;
337 
338 protected:
339 
340 private:
341 
343 
344 
345  //############################################################################
346  //############################################################################
347 
348 public:
349 
353  sec_at0* comp2(int row, int col) const;
354 
358  void set_comp2(int row, int col, sec_at0* new_comp);
359 
360 protected:
361 private:
362 
363 };
364 
365 //==============================================================================
366 // NON-MEMBER FUNCTIONS
367 //==============================================================================
368 
369 class sec_at1;
370 
375 namespace sec_jcb_algebra
376 {
377 
378 #ifndef DOXYGEN_SKIP_UNKNOWN
379 SHEAF_DLL_SPEC void push(const sec_jcb& xjcb, const sec_at1& xvector, sec_at1& xresult,
383  bool xauto_access);
384 #endif // ifndef DOXYGEN_SKIP_UNKNOWN
385 
389 SHEAF_DLL_SPEC void pull(const sec_jcb& xjcb, const sec_at1& xcovector, sec_at1& xresult,
390  bool xauto_access);
391 
392 } // namespace sec_jcb_algebra
393 
394 } // namespace fiber_bundle
395 
396 #endif // ifndef SEC_JCB_H
397 
398 
sec_at1 range_type
The type of range vector space.
Definition: sec_jcb.h:72
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.
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 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.
A section of a bundle with fiber type at1.
Definition: sec_at1.h:48
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
Abstract jacobian class (volatile version).
Definition: jcb.h:54
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
sec_jcb * 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.h:280
A section of a fiber bundle with a d-dimensional vector space fiber.
Definition: sec_vd.h:54
Abstract jacobian class.
Definition: jcb.h:229
A section of a bundle with fiber type jcb.
Definition: sec_jcb.h:49
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
virtual sec_vd * clone() const
Make a new handle, no state instance of current.
Definition: sec_vd.cc:1318
sec_jcb_space host_type
The type of host poset.
Definition: sec_jcb.h:62
An abstract client handle for a member of a poset.
Namespace for the fiber_bundles component of the sheaf system.
Antisymetric tensor of degree 0. As the degree is 0 there is nothing to be symmetric or antisymmetric...
Definition: sec_at0.h:51
jcb fiber_type
The fiber type.
Definition: sec_jcb.h:77
sec_at1 domain_type
The type of domain vector space.
Definition: sec_jcb.h:67
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61