SheafSystem  0.0.0.0
sec_e4.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_e4.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_tuple.impl.h"
33 #include "SheafSystem/sec_tuple_space.impl.h"
34 #include "SheafSystem/sec_vd.impl.h"
35 #include "SheafSystem/std_iomanip.h"
36 
37 using namespace std;
38 using namespace fiber_bundle; // Workaround for MS C++ bug.
39 
40 //==============================================================================
41 // CLASS SEC_E4
42 //==============================================================================
43 
44 // ===========================================================
45 // HOST FACTORY FACET OF CLASS SEC_E3
46 // ===========================================================
47 
48 // PUBLIC MEMBER FUNCTIONS
49 
53  const poset_path& xhost_path,
54  const poset_path& xschema_path,
55  const poset_path& xscalar_space_path,
56  bool xauto_access)
57 {
58  // cout << endl << "Entering sec_e4::new_host." << endl;
59 
60  // Preconditions:
61 
62  require(xns.state_is_auto_read_write_accessible(xauto_access));
63 
64  require(!xhost_path.empty());
65  require(!xns.contains_path(xhost_path, xauto_access));
66 
67  require(xschema_path.full());
68  require(xns.path_is_auto_read_accessible<schema_type::host_type>(xschema_path, xauto_access));
69  require(host_type::fiber_space_conforms<fiber_type::host_type>(xns, xschema_path, xauto_access));
70 
71  require(xns.path_is_auto_read_accessible<scalar_type::host_type>(xscalar_space_path, xauto_access));
72 
73  require(host_type::same_scalar_fiber_space(xns, xschema_path, xscalar_space_path, xauto_access));
74 
75  // Body:
76 
77  host_type& result = host_type::new_table(xns, xhost_path, xschema_path, xscalar_space_path, xauto_access);
78 
79  // Postconditions:
80 
81  ensure(xns.owns(result, xauto_access));
82  ensure(result.path(true) == xhost_path);
83  ensure(result.state_is_not_read_accessible());
84  ensure(result.schema(true).path(xauto_access) == xschema_path);
85 
86  ensure(result.factor_ct(true) == result.schema(true).fiber_space<fiber_type::host_type>().factor_ct(xauto_access));
87  ensure(result.d(true) == result.schema(true).fiber_space<fiber_type::host_type>().d(xauto_access));
88  ensure(result.d(true) == result.dd(true));
89  ensure(result.scalar_space_path(true) == xscalar_space_path);
90  ensure(result.p(true) == result.schema(true).fiber_space<fiber_type::host_type>().p(xauto_access));
91  ensure(result.p(true) == 1);
92  ensure(result.dd(true) == result.schema(true).fiber_space<fiber_type::host_type>().dd(xauto_access));
93  ensure(result.vector_space_path(true) == xhost_path);
94 
95  // Exit:
96 
97  // cout << "Leaving sec_e4::new_host." << endl;
98  return result;
99 }
100 
104  const poset_path& xbase_path,
105  const poset_path& xrep_path,
106  const std::string& xsection_suffix,
107  const std::string& xfiber_suffix,
108  bool xauto_access)
109 {
110  // cout << endl << "Entering sec_e4::new_host." << endl;
111 
112  // Preconditions:
113 
114  require(xns.state_is_auto_read_write_accessible(xauto_access));
115 
116  require(xbase_path.full());
117  require(xns.path_is_auto_read_accessible<base_space_poset>(xbase_path, xauto_access));
118 
119  require(xrep_path.empty() || xrep_path.full());
120  require(xrep_path.empty() || xns.path_is_auto_read_accessible<sec_rep_descriptor_poset>(xrep_path, xauto_access));
121 
122  require(xsection_suffix.empty() || poset_path::is_valid_name(xsection_suffix));
123 
124  require(xfiber_suffix.empty() || poset_path::is_valid_name(xfiber_suffix));
125 
126  require(standard_host_is_available<sec_e4>(xns, xbase_path, xrep_path, xsection_suffix, xfiber_suffix, xauto_access));
127  require(fiber_type::standard_host_is_available<fiber_type>(xns, xfiber_suffix, xauto_access));
128  require(schema_type::standard_host_is_available<sec_e4>(xns, xbase_path, xrep_path, xfiber_suffix, xauto_access));
129 
130  // Body:
131 
132  poset_path lstd_path = standard_host_path<sec_e4>(xbase_path, xrep_path, xsection_suffix, xfiber_suffix);
133 
134  host_type* lresult_ptr;
135 
136  if(xns.contains_path(lstd_path, xauto_access))
137  {
138  // Standard host already exists, just return it.
139 
140  lresult_ptr = &xns.member_poset<host_type>(lstd_path, xauto_access);
141  }
142  else
143  {
144  // Standard host doesn't exist, have to create it.
145 
146  // Apply default for rep path if needed.
147 
148  poset_path lrep_path = (!xrep_path.empty() ? xrep_path : standard_rep_path());
149 
150  // Find or create the standard schema member.
151 
152  poset_path lstd_schema_path =
153  schema_type::standard_member<sec_e4>(xns, xbase_path, lrep_path, xfiber_suffix, xauto_access);
154 
155  // Find or create the standard scalar space.
156 
157  poset_path lscalar_space_path =
158  scalar_type::standard_host(xns, xbase_path, lrep_path, xsection_suffix, xfiber_suffix, xauto_access).path(xauto_access);
159 
160  // Create the standard host.
161 
162  lresult_ptr = &new_host(xns, lstd_path, lstd_schema_path, lscalar_space_path, xauto_access);
163  }
164 
165  host_type& result = *lresult_ptr;
166 
167  // Postconditions:
168 
169  ensure(xns.owns(result, xauto_access));
170  ensure(result.path(true) == standard_host_path<sec_e4>(xbase_path, xrep_path, xsection_suffix, xfiber_suffix));
171  ensure(result.state_is_not_read_accessible());
172  ensure(result.schema(true).path(xauto_access) ==
173  schema_type::standard_member_path<sec_e4>(xbase_path, xrep_path, xfiber_suffix));
174 
175  ensure(result.factor_ct(true) == result.schema(true).fiber_space<fiber_type::host_type>().factor_ct(xauto_access));
176  ensure(result.d(true) == result.schema(true).fiber_space<fiber_type::host_type>().d(xauto_access));
177  ensure(result.d(true) == result.dd(true));
178  ensure(result.scalar_space_path(true) ==
179  scalar_type::standard_host_path<scalar_type>(xbase_path, result.rep().path(xauto_access), xsection_suffix, xfiber_suffix));
180  ensure(result.p(true) == result.schema(true).fiber_space<fiber_type::host_type>().p(xauto_access));
181  ensure(result.p(true) == 1);
182  ensure(result.dd(true) == result.schema(true).fiber_space<fiber_type::host_type>().dd(xauto_access));
183  ensure(result.vector_space_path(true) == result.path(true));
184 
185  // Exit:
186 
187  // cout << "Leaving sec_e4::new_host." << endl;
188  return result;
189 }
190 
191 // PROTECTED MEMBER FUNCTIONS
192 
193 // PRIVATE MEMBER FUNCTIONS
194 
195 
196 //==============================================================================
197 // E4 FACET OF CLASS SEC_E4
198 //==============================================================================
199 
200 // PUBLIC MEMBER FUNCTIONS
201 
204 {
205 
206  // Preconditions:
207 
208  // Body:
209 
210  // Postconditions:
211 
212  ensure(invariant());
213 }
214 
216 sec_e4(const sec_rep_space* xhost, const scoped_index& xindex)
217 {
218 
219  // Preconditions:
220 
221  require(xhost != 0);
222  require(xhost->state_is_read_accessible());
223  require(xhost->contains_member(xindex));
224 
225  // Body:
226 
227  attach_to_state(xhost, xindex);
228 
229  // Postconditions:
230 
231  ensure(invariant());
232  //ensure(host() == xhost);
233  ensure(index() ==~ xindex);
234  ensure(is_attached());
235  ensure(!is_restricted());
236 
237 }
238 
240 sec_e4(const sec_rep_space* xhost, const std::string& xname)
241 {
242 
243  // Preconditions:
244 
245  require(xhost != 0);
246  require(xhost->state_is_read_accessible());
247  require(!xname.empty());
248  require(xhost->contains_member(xname));
249 
250  // Body:
251 
252  attach_to_state(xhost, xname);
253 
254  // Postconditions:
255 
256  ensure(invariant());
257  //ensure(host() == xhost);
258  ensure(name() == xname);
259  ensure(is_attached());
260  ensure(!is_restricted());
261 
262 }
263 
264 
266 sec_e4(const namespace_poset* xnamespace,
267  const poset_path& xpath,
268  bool xauto_access)
269 {
270 
271  // Preconditions:
272 
273  require(precondition_of(attach_to_state(same args)));
274 
275  // Body:
276 
277  attach_to_state(xnamespace, xpath, xauto_access);
278 
279  // Postconditions:
280 
281  ensure(postcondition_of(attach_to_state(same args)));
282 
283  // Exit:
284 
285  return;
286 }
287 
288 
291 {
292 
293  // Preconditions:
294 
295  require(xother != 0);
296 
297  // Body:
298 
299  attach_to_state(xother);
300 
301  // Postconditions:
302 
303  ensure(invariant());
304  ensure(is_attached());
305  ensure(is_same_state(xother));
306  ensure(is_same_restriction(xother));
307 
308 }
309 
311 sec_e4(sec_rep_space* xhost, section_dof_map* xdof_map, bool xauto_access)
312 {
313 
314  // Preconditions:
315 
316  require(precondition_of(new_jim_state(xhost, xdof_map, false, xauto_access)));
317 
318  // Body:
319 
320  new_jim_state(xhost, xdof_map, false, xauto_access);
321 
322  // Postconditions:
323 
324  ensure(postcondition_of(new_jim_state(xhost, xdof_map, false, xauto_access)));
325 
326  // Exit:
327 
328  return;
329 }
330 
333  abstract_poset_member& xbase_mbr,
334  int xbase_version, bool xauto_access)
335 {
336 
337  // Preconditions:
338 
339  require(precondition_of(new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access)));
340 
341  // Body:
342 
343  new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access);
344 
345  // Postconditions:
346 
347  ensure(postcondition_of(new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access)));
348 
349  // Exit:
350 
351  return;
352 }
353 
354 
356 sec_e4(sec_rep_space* xhost, const subposet& xbase_parts, bool xauto_access)
357 {
358  // Preconditions:
359 
360  require(precondition_of(new_jim_state(xhost, xbase_parts, xauto_access)));
361 
362  // Body:
363 
364  new_jrm_state(xhost, xbase_parts, xauto_access);
365 
366  // Postconditions:
367 
368  require(postcondition_of(new_jim_state(xhost, xbase_parts, xauto_access)));
369 
370  // Exit:
371 
372  return;
373 }
374 
378 {
379  // Preconditions:
380 
381  require(is_ancestor_of(&xother));
382  require(precondition_of(attach_to_state(&xother)));
383 
384  // Body:
385 
386  attach_to_state(&xother);
387 
388  // Postconditions:
389 
390  ensure(postcondition_of(attach_to_state(&xother)));
391 
392  // Exit:
393 
394  return *this;
395 }
396 
399 operator=(const sec_e4& xother)
400 {
401  // Preconditions:
402 
403  require(precondition_of(attach_to_state(&xother)));
404 
405  // Body:
406 
407  attach_to_state(&xother);
408 
409  // Postconditions:
410 
411  ensure(postcondition_of(attach_to_state(&xother)));
412 
413  // Exit:
414 
415  return *this;
416 }
417 
420 operator=(const e4& xfiber)
421 {
422  // Preconditions:
423 
424  require(precondition_of(sec_vd::operator=(xfiber)));
425 
426  // Body:
427 
428  sec_vd::operator=(xfiber);
429 
430  // Postconditions:
431 
432  ensure(postcondition_of(sec_vd::operator=(xfiber)));
433 
434  // Exit:
435 
436  return *this;
437 }
438 
441 operator=(const e4_lite& xfiber)
442 {
443  // Preconditions:
444 
445  require(precondition_of(sec_vd::operator=(xfiber)));
446 
447  // Body:
448 
449  sec_vd::operator=(xfiber);
450 
451  // Postconditions:
452 
453  ensure(postcondition_of(sec_vd::operator=(xfiber)));
454 
455  // Exit:
456 
457  return *this;
458 }
459 
462 {
463 
464  // Preconditions:
465 
466  // Body:
467 
468  // Postconditions:
469 
470 }
471 
475 {
476  // Preconditions:
477 
478  // Body:
479 
480  static const fiber_type result;
481 
482  // Postconditions:
483 
484  // Exit:
485 
486  return result;
487 }
488 
489 // PROTECTED MEMBER FUNCTIONS
490 
491 // PRIVATE MEMBER FUNCTIONS
492 
493 
494 //==============================================================================
495 // ED FACET OF CLASS SEC_E4
496 //==============================================================================
497 
498 // PUBLIC MEMBER FUNCTIONS
499 
500 // PROTECTED MEMBER FUNCTIONS
501 
502 // PRIVATE MEMBER FUNCTIONS
503 
504 
505 //==============================================================================
506 // AT1 FACET OF CLASS SEC_E4
507 //==============================================================================
508 
509 // PUBLIC MEMBER FUNCTIONS
510 
511 // PROTECTED MEMBER FUNCTIONS
512 
513 // PRIVATE MEMBER FUNCTIONS
514 
515 
516 //==============================================================================
517 // ATP FACET OF CLASS SEC_E4
518 //==============================================================================
519 
520 // PUBLIC MEMBER FUNCTIONS
521 
522 // PROTECTED MEMBER FUNCTIONS
523 
524 // PRIVATE MEMBER FUNCTIONS
525 
526 
527 //==============================================================================
528 // TP FACET OF CLASS SEC_E4
529 //==============================================================================
530 
531 // PUBLIC MEMBER FUNCTIONS
532 
533 // PROTECTED MEMBER FUNCTIONS
534 
535 // PRIVATE MEMBER FUNCTIONS
536 
537 
538 //==============================================================================
539 // VD FACET OF CLASS SEC_E4
540 //==============================================================================
541 
542 // PUBLIC MEMBER FUNCTIONS
543 
544 // PROTECTED MEMBER FUNCTIONS
545 
546 // PRIVATE MEMBER FUNCTIONS
547 
548 
549 //==============================================================================
550 // TUPLE FACET OF CLASS SEC_E4
551 //==============================================================================
552 
553 // PUBLIC MEMBER FUNCTIONS
554 
555 // PROTECTED MEMBER FUNCTIONS
556 
557 // PRIVATE MEMBER FUNCTIONS
558 
559 
560 //==============================================================================
561 // ABSTRACT POSET MEMBER FACET OF CLASS SEC_E4
562 //==============================================================================
563 
564 // PUBLIC MEMBER FUNCTIONS
565 
566 const std::string&
568 class_name() const
569 {
570  // Preconditions:
571 
572  // Body:
573 
574  const string& result = static_class_name();
575 
576  // Postconditions:
577 
578  ensure(!result.empty());
579 
580  // Exit:
581 
582  return result;
583 }
584 
585 const std::string&
588 {
589  // Preconditions:
590 
591  // Body:
592 
593  static const string result("sec_e4");
594 
595  // Postconditions:
596 
597  ensure(!result.empty());
598 
599  // Exit:
600 
601  return result;
602 }
603 
606 clone() const
607 {
608 
609  // Preconditions:
610 
611  // Body:
612 
613  // create new handle of the current class.
614 
615  sec_e4 *result = new sec_e4();
616 
617  // Postconditions:
618 
619  ensure(result != 0);
620  ensure(result->invariant());
621 
622  // Exit:
623 
624  return result;
625 
626 }
627 
628 // PROTECTED MEMBER FUNCTIONS
629 
630 // PRIVATE MEMBER FUNCTIONS
631 
632 
633 //==============================================================================
634 // ANY FACET OF CLASS SEC_E4
635 //==============================================================================
636 
637 // PUBLIC MEMBER FUNCTIONS
638 
639 bool
641 fiber_is_ancestor_of(const any* xother) const
642 {
643 
644  // Preconditions:
645 
646  require(xother != 0);
647 
648  // Body:
649 
650  // If xother may be dynamically cast to the type of this fiber then this
651  // fiber is an ancestor of xother.
652 
653  bool result = dynamic_cast<const e4*>(xother) != 0;
654 
655  // Postconditions:
656 
657  ensure(invariant());
658  ensure(xother->invariant());
659 
660  // Exit:
661 
662  return result;
663 
664 }
665 
666 bool
668 is_ancestor_of(const any* xother) const
669 {
670 
671  // Preconditions:
672 
673  require(xother != 0);
674 
675  // Body:
676 
677  // If other may be dynamically cast to the type of this then this is an
678  // ancestor of other.
679 
680  bool result = dynamic_cast<const sec_e4*>(xother) != 0;
681 
682  // Postconditions:
683 
684  //ensure(invariant());
685 
686  // Exit:
687 
688  return result;
689 
690 }
691 
692 bool
694 invariant() const
695 {
696  bool result = true;
697 
698  // Preconditions:
699 
700  // Body:
701 
702  invariance(sec_ed::invariant());
703 
704  if (invariant_check())
705  {
706  // Prevent recursive calls to invariant.
707 
708  disable_invariant_check();
709 
710  invariance(is_attached() ? df() == 4 : true);
711 
712  // Finished, turn invariant checking back on.
713 
714  enable_invariant_check();
715  }
716 
717  // Postconditions:
718 
719  ensure(is_derived_query);
720 
721  // Exit:
722 
723  return result;
724 
725 }
726 
727 // PROTECTED MEMBER FUNCTIONS
728 
729 // PRIVATE MEMBER FUNCTIONS
730 
731 
732 //==============================================================================
733 // NON-MEMBER FUNCTIONS
734 //==============================================================================
735 
736 std::ostream & fiber_bundle::operator << (std::ostream& xos, sec_e4& xv)
737 {
738  sec_e4::dof_type ldof;
739  int i = 0;
740 
741  xos << "sec_e4 " << xv. name() << " dofs:" << endl;
742 
744 
745  while(!itr.is_done())
746  {
747  xos << setw(10) << xv.dof_map().dof(itr.index()).to_string();
748  if (i%5 == 4)
749  xos << endl;
750  itr.next();
751  i++;
752  }
753 
755 
756  return xos;
757 }
758 
759 
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 ...
A client handle for a subposet.
Definition: subposet.h:86
bool full() const
True if both poset name and member name are not empty.
Definition: poset_path.cc:311
A Cartesian product section space.
const index_space_handle & row_dof_id_space() const
The row dof id space for the schema defined by this.
Euclidean vector space of dimension 4 (persistent version).
Definition: e4.h:410
The abstract map from section dof ids to section dof values of heterogeneous type.
An abstract iterator over the ids of an id space.
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.
virtual const std::string & class_name() const
The name of this class.
Definition: sec_e4.cc:568
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.
A general antisymmetric tensor of degree 1 over an abstract vector space (persistent version)...
Definition: at1.h:211
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
bool fiber_is_ancestor_of(const any *xother) const
True if xother conforms to an instance of the fiber of current.
Definition: sec_e4.cc:641
primitive_value dof(pod_index_type xdof_id) const
The dof referred to by xdof_id.
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.
poset_path vector_space_path() const
The path of the underlying vector space.
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.
virtual void next()=0
Makes id() the next id in the iteration.
sec_e4()
Creates a new sec_e4 handle not attached to any state.
Definition: sec_e4.cc:203
The poset for sec_rep_descriptors.
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)
bool invariant() const
class invariant
Definition: sec_e4.cc:694
bool is_done() const
True if iteration is finished.
static const std::string & static_class_name()
The name of this class.
Definition: sec_e4.cc:587
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)
virtual void release_iterator(index_space_iterator &xitr) const =0
Returns the id space iterator xitr to the iterator pool.
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. ...
Euclidean vector space of dimension 4 (volatile version).
Definition: e4.h:111
~sec_e4()
Destructor.
Definition: sec_e4.cc:461
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
virtual pod_type index() const =0
Index of this space.
virtual index_space_iterator & get_iterator() const =0
Allocates an id space iterator from the iterator pool.
An abstract vector space viewed as an antisymmetric tensor space of degree 1.
Definition: at1_space.h:42
virtual section_space_schema_member & schema()
The restricted schema for this (mutable version).
bool is_ancestor_of(const any *other) const
true if other conforms to current
Definition: sec_e4.cc:668
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).
static host_type & new_host(namespace_type &xns, const poset_path &xhost_path, const poset_path &xschema_path, const poset_path &xscalar_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_e4.cc:52
sec_vd_dof_type dof_type
The type of degree of freedom.
Definition: sec_vd.h:91
virtual sec_e4 & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(&xother).
Definition: sec_e4.cc:377
A section of a fiber bundle with a 4-dimensional Euclidean vector space fiber.
Definition: sec_e4.h:47
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
Namespace for the fiber_bundles component of the sheaf system.
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_e4.cc:103
virtual int d(int xp, int xdd) const
Dimension d() as a function of degree xp and domain dimension xdd.
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 section_dof_map & dof_map(bool xrequire_write_access=false)
The map from client_ids to dof values for this poset member (mutable version)
virtual const fiber_type & fiber_prototype() const
Virtual constructor for the associated fiber type.
Definition: sec_e4.cc:474
virtual sec_e4 * clone() const
Make a new handle, no state instance of current.
Definition: sec_e4.cc:606
SHEAF_DLL_SPEC std::ostream & operator<<(std::ostream &os, const binary_index &xbi)
Insert binary_index& xbi into ostream& os.
Definition: binary_index.cc:35
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61