SheafSystem  0.0.0.0
sec_jcb_e33.cc
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 #include "SheafSystem/sec_jcb_e33.h"
22 
23 #include "SheafSystem/assert_contract.h"
24 #include "SheafSystem/base_space_poset.h"
25 #include "SheafSystem/binary_section_space_schema_member.impl.h"
26 #include "SheafSystem/fiber_bundles_namespace.h"
27 #include "SheafSystem/namespace_poset.impl.h"
28 #include "SheafSystem/section_space_schema_member.impl.h"
29 #include "SheafSystem/section_space_schema_poset.h"
30 #include "SheafSystem/sec_at0.h"
31 #include "SheafSystem/sec_at1.h"
32 #include "SheafSystem/sec_at1_space.h"
33 #include "SheafSystem/sec_e3.h"
34 #include "SheafSystem/sec_jcb_space.h"
35 #include "SheafSystem/sec_tuple.impl.h"
36 #include "SheafSystem/sec_tuple_space.impl.h"
37 #include "SheafSystem/jcb_e33.h"
38 #include "SheafSystem/jcb_space.h"
39 
40 using namespace std;
41 using namespace fiber_bundle; // Workaround for MS C++ bug.
42 
43 //==============================================================================
44 // CLASS SEC_JCB_E33
45 //==============================================================================
46 
47 // ===========================================================
48 // HOST FACTORY FACET
49 // ===========================================================
50 
51 // PUBLIC MEMBER FUNCTIONS
52 
56  const poset_path& xhost_path,
57  const poset_path& xschema_path,
58  const poset_path& xdomain_path,
59  const poset_path& xrange_path,
60  bool xauto_access)
61 {
62  // cout << endl << "Entering sec_jcb_e33::new_host." << endl;
63 
64  // Preconditions:
65 
66  require(xns.state_is_auto_read_write_accessible(xauto_access));
67 
68  require(!xhost_path.empty());
69  require(!xns.contains_path(xhost_path, xauto_access));
70 
71  require(xschema_path.full());
72  require(xns.path_is_auto_read_accessible<schema_type::host_type>(xschema_path, xauto_access));
73  require(host_type::fiber_space_conforms<fiber_type::host_type>(xns, xschema_path, xauto_access));
74 
75  require(xns.path_is_auto_read_accessible<domain_type::host_type>(xdomain_path, xauto_access));
76  require(xns.path_is_auto_read_accessible<range_type::host_type>(xrange_path, xauto_access));
77 
78  require(host_type::same_vector_fiber_space(xns, xschema_path, xdomain_path, xrange_path, xauto_access));
79 
80  // Body:
81 
82  host_type& result = host_type::new_table(xns, xhost_path, xschema_path, xdomain_path, xrange_path, xauto_access);
83 
84  // Postconditions:
85 
86  ensure(xns.owns(result, xauto_access));
87  ensure(result.path(true) == xhost_path);
88  ensure(result.state_is_not_read_accessible());
89  ensure(result.schema(true).path(xauto_access) == xschema_path);
90 
91  ensure(result.factor_ct(true) == result.schema(true).fiber_space<fiber_type::host_type>().factor_ct(xauto_access));
92  ensure(result.d(true) == result.schema(true).fiber_space<fiber_type::host_type>().d(xauto_access));
93  ensure(result.scalar_space_path(true) ==
94  xns.member_poset<domain_type::host_type>(xdomain_path, xauto_access).scalar_space_path(xauto_access));
95  ensure(result.scalar_space_path(true) ==
96  xns.member_poset<range_type::host_type>(xrange_path, xauto_access).scalar_space_path(xauto_access));
97  ensure(result.dd(true) == result.schema(true).fiber_space<fiber_type::host_type>().dd(xauto_access));
98  ensure(result.dr(true) == result.schema(true).fiber_space<fiber_type::host_type>().dr(xauto_access));
99  ensure(result.domain_path(true) == xdomain_path);
100  ensure(result.range_path(true) == xrange_path);
101 
102  // Exit:
103 
104  // cout << "Leaving sec_jcb_e33::new_host." << endl;
105  return result;
106 }
107 
111  const poset_path& xbase_path,
112  const poset_path& xrep_path,
113  const std::string& xsection_suffix,
114  const std::string& xfiber_suffix,
115  bool xauto_access)
116 {
117  // cout << endl << "Entering sec_jcb_e33::new_host." << endl;
118 
119  // Preconditions:
120 
121  require(xns.state_is_auto_read_write_accessible(xauto_access));
122 
123  require(xbase_path.full());
124  require(xns.path_is_auto_read_accessible<base_space_poset>(xbase_path, xauto_access));
125 
126  require(xrep_path.empty() || xrep_path.full());
127  require(xrep_path.empty() || xns.path_is_auto_read_accessible<sec_rep_descriptor_poset>(xrep_path, xauto_access));
128 
129  require(xsection_suffix.empty() || poset_path::is_valid_name(xsection_suffix));
130 
131  require(xfiber_suffix.empty() || poset_path::is_valid_name(xfiber_suffix));
132 
133  require(standard_host_is_available<sec_jcb_e33>(xns, xbase_path, xrep_path, xsection_suffix, xfiber_suffix, xauto_access));
134  require(fiber_type::standard_host_is_available<fiber_type>(xns, xfiber_suffix, xauto_access));
135  require(schema_type::standard_host_is_available<sec_jcb_e33>(xns, xbase_path, xrep_path, xfiber_suffix, xauto_access));
136 
137  // Body:
138 
139  poset_path lstd_path = standard_host_path<sec_jcb_e33>(xbase_path, xrep_path, xsection_suffix, xfiber_suffix);
140 
141  host_type* lresult_ptr;
142 
143  if(xns.contains_path(lstd_path, xauto_access))
144  {
145  // Standard host already exists, just return it.
146 
147  lresult_ptr = &xns.member_poset<host_type>(lstd_path, xauto_access);
148  }
149  else
150  {
151  // Standard host doesn't exist, have to create it.
152 
153  // Apply default for rep path if needed.
154 
155  poset_path lrep_path = (!xrep_path.empty() ? xrep_path : standard_rep_path());
156 
157  // Find or create the standard schema member.
158 
159  poset_path lstd_schema_path =
160  schema_type::standard_member<sec_jcb_e33>(xns, xbase_path, lrep_path, xfiber_suffix, xauto_access);
161 
162  // Find or create the standard domain space.
163 
164  poset_path ldomain_path =
165  domain_type::standard_host(xns, xbase_path, lrep_path, xsection_suffix, xfiber_suffix, xauto_access).path(xauto_access);
166 
167  // Find or create the standard range space.
168 
169  poset_path lrange_path =
170  range_type::standard_host(xns, xbase_path, lrep_path, xsection_suffix, xfiber_suffix, xauto_access).path(xauto_access);
171 
172  // Create the standard host.
173 
174  lresult_ptr = &new_host(xns, lstd_path, lstd_schema_path, ldomain_path, lrange_path, xauto_access);
175  }
176 
177  host_type& result = *lresult_ptr;
178 
179  // Postconditions:
180 
181  ensure(xns.owns(result, xauto_access));
182  ensure(result.path(true) == standard_host_path<sec_jcb_e33>(xbase_path, xrep_path, xsection_suffix, xfiber_suffix));
183  ensure(result.state_is_not_read_accessible());
184  ensure(result.schema(true).path(xauto_access) ==
185  schema_type::standard_member_path<sec_jcb_e33>(xbase_path, xrep_path, xfiber_suffix));
186 
187  ensure(result.factor_ct(true) == result.schema(true).fiber_space<fiber_type::host_type>().factor_ct(xauto_access));
188  ensure(result.d(true) == result.schema(true).fiber_space<fiber_type::host_type>().d(xauto_access));
189  ensure(result.scalar_space_path(true) ==
190  standard_host_path<domain_type::scalar_type>(xbase_path, xrep_path, xsection_suffix, xfiber_suffix));
191  ensure(result.scalar_space_path(true) ==
192  standard_host_path<range_type::scalar_type>(xbase_path, xrep_path, xsection_suffix, xfiber_suffix));
193  ensure(result.dd(true) == result.schema(true).fiber_space<fiber_type::host_type>().dd(xauto_access));
194  ensure(result.dr(true) == result.schema(true).fiber_space<fiber_type::host_type>().dr(xauto_access));
195  ensure(result.domain_path(true) ==
196  standard_host_path<domain_type>(xbase_path, xrep_path, xsection_suffix, xfiber_suffix));
197  ensure(result.range_path(true) ==
198  standard_host_path<range_type>(xbase_path, xrep_path, xsection_suffix, xfiber_suffix));
199 
200  // Exit:
201 
202  // cout << "Leaving sec_jcb_e33::new_host." << endl;
203  return result;
204 }
205 
206 // PROTECTED MEMBER FUNCTIONS
207 
208 // PRIVATE MEMBER FUNCTIONS
209 
210 
211 //==============================================================================
212 // JCB_E33 FACET OF CLASS SEC_JCB_E33
213 //==============================================================================
214 
215 // PUBLIC MEMBER FUNCTIONS
216 
219 {
220  // Preconditions:
221 
222  // Body:
223 
224  // Postconditions:
225 
226  ensure(invariant());
227 }
228 
231 {
232  // Preconditions:
233 
234  require(xhost != 0);
235  require(xhost->state_is_read_accessible());
236  require(xhost->contains_member(xhub_id));
237 
238  // Body:
239 
240  attach_to_state(xhost, xhub_id);
241 
242  // Postconditions:
243 
244  ensure(invariant());
245  //ensure(host() == xhost);
246  ensure(index() == xhub_id);
247  ensure(is_attached());
248  ensure(!is_restricted());
249 }
250 
252 sec_jcb_e33(const sec_rep_space* xhost, const scoped_index& xid)
253 {
254  // Preconditions:
255 
256  require(xhost != 0);
257  require(xhost->state_is_read_accessible());
258  require(xhost->contains_member(xid));
259 
260  // Body:
261 
262  attach_to_state(xhost, xid.hub_pod());
263 
264  // Postconditions:
265 
266  ensure(invariant());
267  //ensure(host() == xhost);
268  ensure(index() ==~ xid);
269  ensure(is_attached());
270  ensure(!is_restricted());
271 }
272 
274 sec_jcb_e33(const sec_rep_space* xhost, const std::string& xname)
275 {
276 
277  // Preconditions:
278 
279  require(xhost != 0);
280  require(xhost->state_is_read_accessible());
281  require(!xname.empty());
282  require(xhost->contains_member(xname));
283 
284  // Body:
285 
286  attach_to_state(xhost, xname);
287 
288  // Postconditions:
289 
290  ensure(invariant());
291  //ensure(host() == xhost);
292  ensure(name() == xname);
293  ensure(is_attached());
294  ensure(!is_restricted());
295 
296 }
297 
299 sec_jcb_e33(const namespace_poset* xnamespace,
300  const poset_path& xpath,
301  bool xauto_access)
302 {
303  // Preconditions:
304 
305  require(precondition_of(attach_to_state(same args)));
306 
307  // Body:
308 
309  attach_to_state(xnamespace, xpath, xauto_access);
310 
311  // Postconditions:
312 
313  ensure(postcondition_of(attach_to_state(same args)));
314 
315  // Exit:
316 
317  return;
318 }
319 
322 {
323  // Preconditions:
324 
325  require(xother != 0);
326 
327  // Body:
328 
329  attach_to_state(xother);
330 
331  // Postconditions:
332 
333  ensure(invariant());
334  ensure(is_attached());
335  ensure(is_same_state(xother));
336  ensure(is_same_restriction(xother));
337 
338 }
339 
341 sec_jcb_e33(sec_rep_space* xhost, section_dof_map* xdof_map, bool xauto_access)
342 {
343  // Preconditions:
344 
345  require(precondition_of(new_jim_state(xhost, xdof_map, false, xauto_access)));
346 
347  // Body:
348 
349  new_jim_state(xhost, xdof_map, false, xauto_access);
350 
351  // Postconditions:
352 
353  ensure(postcondition_of(new_jim_state(xhost, xdof_map, false, xauto_access)));
354 
355  // Exit:
356 
357  return;
358 }
359 
363 {
364  // Preconditions:
365 
366  require(is_ancestor_of(&xother));
367  require(precondition_of(attach_to_state(&xother)));
368 
369  // Body:
370 
371  attach_to_state(&xother);
372 
373  // Postconditions:
374 
375  ensure(postcondition_of(attach_to_state(&xother)));
376 
377  // Exit:
378 
379  return *this;
380 }
381 
384 operator=(const sec_jcb_e33& xother)
385 {
386  // Preconditions:
387 
388  require(precondition_of(attach_to_state(&xother)));
389 
390  // Body:
391 
392  attach_to_state(&xother);
393 
394  // Postconditions:
395 
396  ensure(postcondition_of(attach_to_state(&xother)));
397 
398  // Exit:
399 
400  return *this;
401 }
402 
405 operator=(const jcb_e33& xfiber)
406 {
407  // Preconditions:
408 
409  require(precondition_of(sec_vd::operator=(xfiber)));
410 
411  // Body:
412 
413  sec_vd::operator=(xfiber);
414 
415  // Postconditions:
416 
417  ensure(postcondition_of(sec_vd::operator=(xfiber)));
418 
419  // Exit:
420 
421  return *this;
422 }
423 
426 operator=(const jcb_e33_lite& xfiber)
427 {
428  // Preconditions:
429 
430  require(precondition_of(sec_vd::operator=(xfiber)));
431 
432  // Body:
433 
434  sec_vd::operator=(xfiber);
435 
436  // Postconditions:
437 
438  ensure(postcondition_of(sec_vd::operator=(xfiber)));
439 
440  // Exit:
441 
442  return *this;
443 }
444 
447 {
448 
449  // Preconditions:
450 
451  // Body:
452 
453  // Postconditions:
454 
455 }
456 
460 {
461  // Preconditions:
462 
463  // Body:
464 
465  static const fiber_type result;
466 
467  // Postconditions:
468 
469  // Exit:
470 
471  return result;
472 }
473 
474 // PROTECTED MEMBER FUNCTIONS
475 
476 // PRIVATE MEMBER FUNCTIONS
477 
478 
479 //==============================================================================
480 // JCB_ED FACET OF CLASS SEC_JCB_E33
481 //==============================================================================
482 
483 // PUBLIC MEMBER FUNCTIONS
484 
485 // PROTECTED MEMBER FUNCTIONS
486 
487 // PRIVATE MEMBER FUNCTIONS
488 
489 
490 //==============================================================================
491 // JCB FACET OF CLASS SEC_JCB_E33
492 //==============================================================================
493 
494 // PUBLIC MEMBER FUNCTIONS
495 
496 // PROTECTED MEMBER FUNCTIONS
497 
498 // PRIVATE MEMBER FUNCTIONS
499 
500 
501 //==============================================================================
502 // VD FACET OF CLASS SEC_JCB_E33
503 //==============================================================================
504 
505 // PUBLIC MEMBER FUNCTIONS
506 
507 // PROTECTED MEMBER FUNCTIONS
508 
509 // PRIVATE MEMBER FUNCTIONS
510 
511 
512 //==============================================================================
513 // TUPLE FACET OF CLASS SEC_JCB_E33
514 //==============================================================================
515 
516 // PUBLIC MEMBER FUNCTIONS
517 
518 // PROTECTED MEMBER FUNCTIONS
519 
520 // PRIVATE MEMBER FUNCTIONS
521 
522 
523 //==============================================================================
524 // ABSTRACT POSET MEMBER FACET OF CLASS SEC_JCB_E33
525 //==============================================================================
526 
527 // PUBLIC MEMBER FUNCTIONS
528 
529 const std::string&
531 class_name() const
532 {
533  // Preconditions:
534 
535  // Body:
536 
537  const string& result = static_class_name();
538 
539  // Postconditions:
540 
541  ensure(!result.empty());
542 
543  // Exit:
544 
545  return result;
546 }
547 
548 const std::string&
551 {
552  // Preconditions:
553 
554  // Body:
555 
556  static const string result("sec_jcb_e33");
557 
558  // Postconditions:
559 
560  ensure(!result.empty());
561 
562  // Exit:
563 
564  return result;
565 }
566 
569 clone() const
570 {
571 
572  // Preconditions:
573 
574  // Body:
575 
576  // create new handle of the current class.
577 
578  sec_jcb_e33 *result = new sec_jcb_e33();
579 
580  // Postconditions:
581 
582  ensure(result != 0);
583  ensure(result->invariant());
584 
585  // Exit:
586 
587  return result;
588 
589 }
590 
591 // PROTECTED MEMBER FUNCTIONS
592 
593 // PRIVATE MEMBER FUNCTIONS
594 
595 
596 //==============================================================================
597 // ANY FACET OF CLASS SEC_JCB_E33
598 //==============================================================================
599 
600 // PUBLIC MEMBER FUNCTIONS
601 
602 bool
604 fiber_is_ancestor_of(const any* xother) const
605 {
606 
607  // Preconditions:
608 
609  require(xother != 0);
610 
611  // Body:
612 
613  // If xother may be dynamically cast to the type of this fiber then this
614  // fiber is an ancestor of xother.
615 
616  bool result = dynamic_cast<const jcb_e33*>(xother) != 0;
617 
618  // Postconditions:
619 
620  ensure(invariant());
621  ensure(xother->invariant());
622 
623  // Exit:
624 
625  return result;
626 }
627 
628 bool
630 is_ancestor_of(const any* xother) const
631 {
632 
633  // Preconditions:
634 
635  require(xother != 0);
636 
637  // Body:
638 
639  // If other may be dynamically cast to the type of this then this is an
640  // ancestor of other.
641 
642  bool result = dynamic_cast<const sec_jcb_e33*>(xother) != 0;
643 
644  // Postconditions:
645 
646  //ensure(invariant());
647 
648  // Exit:
649 
650  return result;
651 
652 }
653 
654 bool
656 invariant() const
657 {
658  bool result = true;
659 
660  // Preconditions:
661 
662  // Body:
663 
664  // Must satisfy base class invariant.
665 
666  invariance(sec_jcb_ed::invariant());
667 
668  if(invariant_check())
669  {
670  // Prevent recursive calls to invariant.
671 
672  disable_invariant_check();
673 
674  invariance(is_attached() ? dr() == 3 : true);
675  invariance(is_attached() ? dd() == 3 : true);
676 
677  // Finished, turn invariant checking back on.
678 
679  enable_invariant_check();
680  }
681 
682  // Postconditions:
683 
684  ensure(is_derived_query);
685 
686  // Exit:
687 
688  return result;
689 
690 }
691 
692 // PROTECTED MEMBER FUNCTIONS
693 
694 // PRIVATE MEMBER FUNCTIONS
695 
696 
697 //==============================================================================
698 // NON-MEMBER FUNCTIONS
699 //==============================================================================
700 
701 namespace
702 {
703 using namespace fiber_bundle::jcb_algebra;
704 
705 class push_functor
706 {
707 public:
708  void operator()(const jcb_e33_lite& x0, const e3_lite& x1,
709  e3_lite& xresult) const
710  {
711  push(x0, x1, xresult);
712  }
713 };
714 
715 class pull_functor
716 {
717 public:
718  void operator()(const jcb_e33_lite& x0, const e3_lite& x1,
719  e3_lite& xresult) const
720  {
721  pull(x0, x1, xresult);
722  }
723 };
724 
725 } //end unnamed namespace
726 
727 //==============================================================================
728 
729 
730 #include "SheafSystem/sec_e3.h"
731 #include "SheafSystem/sec_vd.impl.h"
732 
733 using namespace fiber_bundle::sec_vd_algebra;
734 
735 void
737 push(const sec_jcb_e33& xjcb, const sec_e3& xvector, sec_e3& xresult,
738  bool xauto_access)
739 {
740  // Preconditions:
741 
742  require(xjcb.state_is_auto_read_accessible(xauto_access));
743  require(xvector.state_is_auto_read_accessible(xauto_access));
744  require(xresult.state_is_auto_read_write_accessible(xauto_access));
745 
746  // Body:
747 
748  binary_op(xjcb, xvector, xresult, push_functor(), xauto_access);
749 
750  // Postconditions:
751 
752 
753  // Exit:
754 
755  return;
756 }
757 
758 void
760 pull(const sec_jcb_e33& xjcb, const sec_e3& xcovector, sec_e3& xresult,
761  bool xauto_access)
762 {
763  // Preconditions:
764 
765  require(xjcb.state_is_auto_read_accessible(xauto_access));
766  require(xcovector.state_is_auto_read_accessible(xauto_access));
767  require(xresult.state_is_auto_read_write_accessible(xauto_access));
768 
769  // Body:
770 
771  binary_op(xjcb, xcovector, xresult, pull_functor(), xauto_access);
772 
773  // Postconditions:
774 
775 
776  // Exit:
777 
778  return;
779 }
780 
781 
static int d(int xdd, int xdr)
Dimension d() as a function of domain dimension xdd and range dimension xdr.
virtual bool invariant() const
Class invariant, intended to be redefined in each descendant. See below for template for invariant in...
Definition: any.cc:153
static int factor_ct(int xd)
Factor_ct() as a function of dimension xd.
virtual poset_path path(bool xauto_access=true) const
The path of this poset.
bool state_is_auto_read_write_accessible(bool xauto_access) const
True if state is auto accessible for read and write, that is, if the state is already accessible for ...
static host_type & standard_host(namespace_type &xns, const poset_path &xbase_path, const poset_path &xrep_path, const std::string &xsection_suffix, const std::string &xfiber_suffix, bool xauto_access)
The standard host for sections of this type with base space xbase_path, representation xrep_path...
Definition: sec_jcb_e33.cc:110
Jacobian of a map from a 3 dimensional domain (u, v, w) to a 3 dimensional Euclidean space (x...
Definition: jcb_e33.h:144
bool full() const
True if both poset name and member name are not empty.
Definition: poset_path.cc:311
Euclidean vector space of dimension 3 (volatile version).
Definition: e3.h:116
poset_path range_path() const
The path of the range vector space.
The abstract map from section dof ids to section dof values of heterogeneous type.
A space of scalars viewed as an antisymmetric tensor section space of degree 1.
Definition: sec_at1_space.h:48
poset_path domain_path() const
The path of the domain vector space.
bool is_ancestor_of(const any *xother) const
True if xother conforms to current.
Definition: sec_jcb_e33.cc:630
poset_path path(bool xauto_access=true) const
A path to this component.
The default name space; a poset which contains other posets as members.
bool state_is_read_accessible() const
True if this is attached and if the state is accessible for read or access control is disabled...
bool path_is_auto_read_accessible(const poset_path &xpath, bool xauto_access) const
True if the state referred to xpath exists and is auto read accessible.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
static const std::string & static_class_name()
The name of this class.
Definition: sec_jcb_e33.cc:550
bool state_is_auto_read_accessible(bool xauto_access) const
True if the state is auto accessible for read, that is, if the state is already accessible for read o...
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.
STL namespace.
A schema poset for a section space. A binary Cartesian product subspace of the binary tensor product ...
bool fiber_is_ancestor_of(const any *xother) const
True if xother conforms to an instance of the fiber of current.
Definition: sec_jcb_e33.cc:604
poset_state_handle & member_poset(pod_index_type xhub_id, bool xauto_access=true) const
The poset_state_handle object referred to by hub id xhub_id.
The poset for sec_rep_descriptors.
virtual sec_jcb_e33 * clone() const
Make a new handle, no state instance of current.
Definition: sec_jcb_e33.cc:569
~sec_jcb_e33()
Destructor.
Definition: sec_jcb_e33.cc:446
Abstract base class with useful features for all objects.
Definition: any.h:39
The lattice of closed cells of a cellular space; a lattice representation of a computational mesh...
virtual section_space_schema_member & schema()
The schema for this poset (mutable version)
virtual int dr() const
Dimension of the range.
int dd() const
The dimension of the underlying ("domain") vector space.
void binary_op(const S0 &x0, const S1 &x1, SR &xresult, F xfunctor, bool xauto_access)
Binary operator.
Definition: sec_vd.impl.h:48
bool owns(const poset_state_handle &xposet, bool xauto_access) const
True if and only if this contains the poset xposet. synonym for contains_poset(xposet.poset_path(true), xauto_access)
SHEAF_DLL_SPEC void push(const sec_jcb &xjcb, const sec_at1 &xvector, sec_at1 &xresult, bool xauto_access)
Push vector forward (pre-allocated version).
Definition: sec_jcb.cc:847
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
virtual const std::string & class_name() const
The name of this class.
Definition: sec_jcb_e33.cc:531
bool contains_path(const poset_path &xpath, bool xauto_access=true) const
True if this contains the poset or poset member specified by xpath.
virtual bool contains_member(pod_index_type xmbr_hub_id, bool xauto_access=true) const
True if some version of this poset contains poset member with hub id xmbr_hub_id. ...
bool empty() const
True if both poset name and member name are empty.
Definition: poset_path.cc:291
A section of a fiber bundle with a 3-dimensional Euclidean vector space fiber.
Definition: sec_e3.h:47
SHEAF_DLL_SPEC void pull(const jcb &xjcb, const at1 &xcovector, at1 &xresult, bool xauto_access)
Pull covector back (pre-allocated version for persistent types).
Definition: jcb.cc:1440
Abstract jacobian class.
Definition: jcb.h:229
virtual sec_jcb_e33 & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(&xother).
Definition: sec_jcb_e33.cc:362
Jacobian of a map from a 3 dimensional domain (u, v, w) to a 3 dimensional Euclidean space (x...
Definition: jcb_e33.h:434
Namespace containing the Jacobian algrebra functions for the fiber_bundles component of the sheaf sys...
Definition: jcb.h:578
static host_type & new_host(namespace_type &xns, const poset_path &xhost_path, const poset_path &xschema_path, const poset_path &xdomain_space_path, const poset_path &xrange_space_path, bool xauto_access)
Creates a new host table for members of this type. The poset is created in namespace xns with path xh...
Definition: sec_jcb_e33.cc:55
SHEAF_DLL_SPEC void pull(const sec_jcb &xjcb, const sec_at1 &xcovector, sec_at1 &xresult, bool xauto_access)
Pull covector back (pre-allocated version).
Definition: sec_jcb.cc:901
An abstract space of Jacobians.
Definition: jcb_space.h:46
virtual const fiber_type & fiber_prototype() const
Virtual constructor for the associated fiber type.
Definition: sec_jcb_e33.cc:459
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
poset_path scalar_space_path() const
The path of the underlying space of scalars.
poset & fiber_space()
The fiber space for section spaces on this schema (mutable version).
An abstract section space of Jacobians.
Definition: sec_jcb_space.h:53
Namespace containing the algrebra functions for a a section of a fiber bundle with a d-dimensional ve...
Definition: sec_vd.h:691
An abstract client handle for a member of a poset.
std::string path() const
The full path as a string.
Definition: poset_path.cc:450
SHEAF_DLL_SPEC void push(const jcb &xjcb, const at1 &xvector, at1 &xresult, bool xauto_access)
Push vector forward (pre-allocated version for persistent types).
Definition: jcb.cc:1374
bool invariant() const
Class invariant.
Definition: sec_jcb_e33.cc:656
Namespace for the fiber_bundles component of the sheaf system.
sec_jcb_e33()
Default constructor.
Definition: sec_jcb_e33.cc:218
bool state_is_not_read_accessible() const
True if this is attached and if the state is accessible for read or if access control is disabled...
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.
Definition: scoped_index.h:710
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61