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