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