SheafSystem  0.0.0.0
sec_jcb_e23.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_e23.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_e2.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_e23.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_E23
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_e23::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_e23::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_e23::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_e23>(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_e23>(xns, xbase_path, xrep_path, xfiber_suffix, xauto_access));
137 
138  // Body:
139 
140  poset_path lstd_path = standard_host_path<sec_jcb_e23>(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_e23>(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_e23>(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_e23>(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_e23::new_host." << endl;
204  return result;
205 }
206 
207 // PROTECTED MEMBER FUNCTIONS
208 
209 // PRIVATE MEMBER FUNCTIONS
210 
211 
212 //==============================================================================
213 // JCB_E23 FACET OF CLASS SEC_JCB_E23
214 //==============================================================================
215 
216 // PUBLIC MEMBER FUNCTIONS
217 
220 {
221 
222  // Preconditions:
223 
224  // Body:
225 
226  // Postconditions:
227 
228  ensure(invariant());
229 }
230 
233 {
234  // Preconditions:
235 
236  require(xhost != 0);
237  require(xhost->state_is_read_accessible());
238  require(xhost->contains_member(xhub_id));
239 
240  // Body:
241 
242  attach_to_state(xhost, xhub_id);
243 
244  // Postconditions:
245 
246  ensure(invariant());
247  //ensure(host() == xhost);
248  ensure(index() == xhub_id);
249  ensure(is_attached());
250  ensure(!is_restricted());
251 }
252 
254 sec_jcb_e23(const sec_rep_space* xhost, const scoped_index& xid)
255 {
256  // Preconditions:
257 
258  require(xhost != 0);
259  require(xhost->state_is_read_accessible());
260  require(xhost->contains_member(xid));
261 
262  // Body:
263 
264  attach_to_state(xhost, xid.hub_pod());
265 
266  // Postconditions:
267 
268  ensure(invariant());
269  //ensure(host() == xhost);
270  ensure(index() ==~ xid);
271  ensure(is_attached());
272  ensure(!is_restricted());
273 }
274 
276 sec_jcb_e23(const sec_rep_space* xhost, const std::string& xname)
277 {
278 
279  // Preconditions:
280 
281  require(xhost != 0);
282  require(xhost->state_is_read_accessible());
283  require(!xname.empty());
284  require(xhost->contains_member(xname));
285 
286  // Body:
287 
288  attach_to_state(xhost, xname);
289 
290  // Postconditions:
291 
292  ensure(invariant());
293  //ensure(host() == xhost);
294  ensure(name() == xname);
295  ensure(is_attached());
296  ensure(!is_restricted());
297 
298 }
299 
300 
302 sec_jcb_e23(const namespace_poset* xnamespace,
303  const poset_path& xpath,
304  bool xauto_access)
305 {
306 
307  // Preconditions:
308 
309  require(precondition_of(attach_to_state(same args)));
310 
311  // Body:
312 
313  attach_to_state(xnamespace, xpath, xauto_access);
314 
315  // Postconditions:
316 
317  ensure(postcondition_of(attach_to_state(same args)));
318 
319  // Exit:
320 
321  return;
322 }
323 
326 {
327 
328  // Preconditions:
329 
330  require(xother != 0);
331 
332  // Body:
333 
334  attach_to_state(xother);
335 
336  // Postconditions:
337 
338  ensure(invariant());
339  ensure(is_attached());
340  ensure(is_same_state(xother));
341  ensure(is_same_restriction(xother));
342 
343 }
344 
346 sec_jcb_e23(sec_rep_space* xhost, section_dof_map* xdof_map, bool xauto_access)
347 {
348 
349  // Preconditions:
350 
351  require(precondition_of(new_jim_state(xhost, xdof_map, false, xauto_access)));
352 
353  // Body:
354 
355  new_jim_state(xhost, xdof_map, false, xauto_access);
356 
357  // Postconditions:
358 
359  ensure(postcondition_of(new_jim_state(xhost, xdof_map, false, xauto_access)));
360 
361  // Exit:
362 
363  return;
364 }
365 
369 {
370  // Preconditions:
371 
372  require(is_ancestor_of(&xother));
373  require(precondition_of(attach_to_state(&xother)));
374 
375  // Body:
376 
377  attach_to_state(&xother);
378 
379  // Postconditions:
380 
381  ensure(postcondition_of(attach_to_state(&xother)));
382 
383  // Exit:
384 
385  return *this;
386 }
387 
390 operator=(const sec_jcb_e23& xother)
391 {
392  // Preconditions:
393 
394  require(precondition_of(attach_to_state(&xother)));
395 
396  // Body:
397 
398  attach_to_state(&xother);
399 
400  // Postconditions:
401 
402  ensure(postcondition_of(attach_to_state(&xother)));
403 
404  // Exit:
405 
406  return *this;
407 }
408 
411 operator=(const jcb_e23& xfiber)
412 {
413  // Preconditions:
414 
415  require(precondition_of(sec_vd::operator=(xfiber)));
416 
417  // Body:
418 
419  sec_vd::operator=(xfiber);
420 
421  // Postconditions:
422 
423  ensure(postcondition_of(sec_vd::operator=(xfiber)));
424 
425  // Exit:
426 
427  return *this;
428 }
429 
432 operator=(const jcb_e23_lite& xfiber)
433 {
434  // Preconditions:
435 
436  require(precondition_of(sec_vd::operator=(xfiber)));
437 
438  // Body:
439 
440  sec_vd::operator=(xfiber);
441 
442  // Postconditions:
443 
444  ensure(postcondition_of(sec_vd::operator=(xfiber)));
445 
446  // Exit:
447 
448  return *this;
449 }
450 
453 {
454 
455  // Preconditions:
456 
457  // Body:
458 
459  // Postconditions:
460 
461 }
462 
466 {
467  // Preconditions:
468 
469  // Body:
470 
471  static const fiber_type result;
472 
473  // Postconditions:
474 
475  // Exit:
476 
477  return result;
478 }
479 
480 // PROTECTED MEMBER FUNCTIONS
481 
482 // PRIVATE MEMBER FUNCTIONS
483 
484 
485 //==============================================================================
486 // JCB_ED FACET OF CLASS SEC_JCB_E23
487 //==============================================================================
488 
489 // PUBLIC MEMBER FUNCTIONS
490 
491 // PROTECTED MEMBER FUNCTIONS
492 
493 // PRIVATE MEMBER FUNCTIONS
494 
495 
496 //==============================================================================
497 // JCB FACET OF CLASS SEC_JCB_E23
498 //==============================================================================
499 
500 // PUBLIC MEMBER FUNCTIONS
501 
502 // PROTECTED MEMBER FUNCTIONS
503 
504 // PRIVATE MEMBER FUNCTIONS
505 
506 
507 //==============================================================================
508 // VD FACET OF CLASS SEC_JCB_E23
509 //==============================================================================
510 
511 // PUBLIC MEMBER FUNCTIONS
512 
513 // PROTECTED MEMBER FUNCTIONS
514 
515 // PRIVATE MEMBER FUNCTIONS
516 
517 
518 //==============================================================================
519 // TUPLE FACET OF CLASS SEC_JCB_E23
520 //==============================================================================
521 
522 // PUBLIC MEMBER FUNCTIONS
523 
524 // PROTECTED MEMBER FUNCTIONS
525 
526 // PRIVATE MEMBER FUNCTIONS
527 
528 
529 //==============================================================================
530 // ABSTRACT POSET MEMBER FACET OF CLASS SEC_JCB_E23
531 //==============================================================================
532 
533 // PUBLIC MEMBER FUNCTIONS
534 
535 const std::string&
537 class_name() const
538 {
539  // Preconditions:
540 
541  // Body:
542 
543  const string& result = static_class_name();
544 
545  // Postconditions:
546 
547  ensure(!result.empty());
548 
549  // Exit:
550 
551  return result;
552 }
553 
554 const std::string&
557 {
558  // Preconditions:
559 
560  // Body:
561 
562  static const string result("sec_jcb_e23");
563 
564  // Postconditions:
565 
566  ensure(!result.empty());
567 
568  // Exit:
569 
570  return result;
571 }
572 
575 clone() const
576 {
577 
578  // Preconditions:
579 
580  // Body:
581 
582  // create new handle of the current class.
583 
584  sec_jcb_e23 *result = new sec_jcb_e23();
585 
586  // Postconditions:
587 
588  ensure(result != 0);
589  ensure(result->invariant());
590 
591  // Exit:
592 
593  return result;
594 
595 }
596 
597 // PROTECTED MEMBER FUNCTIONS
598 
599 // PRIVATE MEMBER FUNCTIONS
600 
601 
602 //==============================================================================
603 // ANY FACET OF CLASS SEC_JCB_E23
604 //==============================================================================
605 
606 // PUBLIC MEMBER FUNCTIONS
607 
608 bool
610 fiber_is_ancestor_of(const any* xother) const
611 {
612 
613  // Preconditions:
614 
615  require(xother != 0);
616 
617  // Body:
618 
619  // If xother may be dynamically cast to the type of this fiber then this
620  // fiber is an ancestor of xother.
621 
622  bool result = dynamic_cast<const jcb_e23*>(xother) != 0;
623 
624  // Postconditions:
625 
626  ensure(invariant());
627  ensure(xother->invariant());
628 
629  // Exit:
630 
631  return result;
632 
633 }
634 
635 bool
637 is_ancestor_of(const any* xother) const
638 {
639 
640  // Preconditions:
641 
642  require(xother != 0);
643 
644  // Body:
645 
646  // If other may be dynamically cast to the type of this then this is an
647  // ancestor of other.
648 
649  bool result = dynamic_cast<const sec_jcb_e23*>(xother) != 0;
650 
651  // Postconditions:
652 
653  //ensure(invariant());
654 
655  // Exit:
656 
657  return result;
658 
659 }
660 
661 bool
663 invariant() const
664 {
665  bool result = true;
666 
667  // Preconditions:
668 
669  // Body:
670 
671  // Must satisfy base class invariant.
672 
673  invariance(sec_jcb_ed::invariant());
674 
675  if(invariant_check())
676  {
677  // Prevent recursive calls to invariant.
678 
679  disable_invariant_check();
680 
681  invariance(is_attached() ? dr() == 3 : true);
682  invariance(is_attached() ? dd() == 2 : true);
683 
684  // Finished, turn invariant checking back on.
685 
686  enable_invariant_check();
687  }
688 
689  // Postconditions:
690 
691  ensure(is_derived_query);
692 
693  // Exit:
694 
695  return result;
696 
697 }
698 
699 // PROTECTED MEMBER FUNCTIONS
700 
701 // PRIVATE MEMBER FUNCTIONS
702 
703 
704 //==============================================================================
705 // NON-MEMBER FUNCTIONS
706 //==============================================================================
707 
708 namespace
709 {
710 using namespace fiber_bundle::jcb_algebra;
711 
712 class push_functor
713 {
714 public:
715  void operator()(const jcb_e23_lite& x0, const e2_lite& x1,
716  e3_lite& xresult) const
717  {
718  push(x0, x1, xresult);
719  }
720 };
721 
722 class pull_functor
723 {
724 public:
725  void operator()(const jcb_e23_lite& x0, const e3_lite& x1,
726  e2_lite& xresult) const
727  {
728  pull(x0, x1, xresult);
729  }
730 };
731 
732 } //end unnamed namespace
733 
734 //==============================================================================
735 
736 #include "SheafSystem/sec_e2.h"
737 #include "SheafSystem/sec_e3.h"
738 #include "SheafSystem/sec_vd.impl.h"
739 
740 using namespace fiber_bundle::sec_vd_algebra;
741 
742 void
744 push(const sec_jcb_e23& xjcb, const sec_e2& xvector, sec_e3& xresult,
745  bool xauto_access)
746 {
747  // Preconditions:
748 
749  require(xjcb.state_is_auto_read_accessible(xauto_access));
750  require(xvector.state_is_auto_read_accessible(xauto_access));
751  require(xresult.state_is_auto_read_write_accessible(xauto_access));
752 
753  // Body:
754 
755  binary_op(xjcb, xvector, xresult, push_functor(), xauto_access);
756 
757  // Postconditions:
758 
759 
760  // Exit:
761 
762  return;
763 }
764 
765 void
767 pull(const sec_jcb_e23& xjcb, const sec_e3& xcovector, sec_e2& xresult,
768  bool xauto_access)
769 {
770  // Preconditions:
771 
772  require(xjcb.state_is_auto_read_accessible(xauto_access));
773  require(xcovector.state_is_auto_read_accessible(xauto_access));
774  require(xresult.state_is_auto_read_write_accessible(xauto_access));
775 
776  // Body:
777 
778  binary_op(xjcb, xcovector, xresult, pull_functor(), xauto_access);
779 
780  // Postconditions:
781 
782 
783  // Exit:
784 
785  return;
786 }
787 
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.
virtual const fiber_type & fiber_prototype() const
Virtual constructor for the associated fiber type.
Definition: sec_jcb_e23.cc:465
The abstract map from section dof ids to section dof values of heterogeneous type.
Jacobian of a map from a 2 dimensional domain (u, v) to a 3 dimensional Euclidean space (x...
Definition: jcb_e23.h:421
A space of scalars viewed as an antisymmetric tensor section space of degree 1.
Definition: sec_at1_space.h:48
static const std::string & static_class_name()
The name of this class.
Definition: sec_jcb_e23.cc:556
poset_path domain_path() const
The path of the domain vector space.
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 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_e23.cc:56
bool invariant() const
Class invariant.
Definition: sec_jcb_e23.cc:663
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.
virtual const std::string & class_name() const
The name of this class.
Definition: sec_jcb_e23.cc:537
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.
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_e23.cc:111
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.
sec_jcb_e23()
Default constructor.
Definition: sec_jcb_e23.cc:219
Euclidean vector space of dimension 2 (volatile version).
Definition: e2.h:112
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. ...
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
Jacobian of a map from a 2 dimensional domain (u, v) to a 3 dimensional Euclidean space (x...
Definition: jcb_e23.h:142
Namespace containing the Jacobian algrebra functions for the fiber_bundles component of the sheaf sys...
Definition: jcb.h:578
bool fiber_is_ancestor_of(const any *xother) const
True if xother conforms to an instance of the fiber of current.
Definition: sec_jcb_e23.cc:610
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).
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
virtual sec_jcb_e23 * clone() const
Make a new handle, no state instance of current.
Definition: sec_jcb_e23.cc:575
virtual sec_jcb_e23 & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(&xother).
Definition: sec_jcb_e23.cc:368
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.
bool is_ancestor_of(const any *xother) const
True if xother conforms to current.
Definition: sec_jcb_e23.cc:637
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
~sec_jcb_e23()
Destructor.
Definition: sec_jcb_e23.cc:452
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 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