SheafSystem  0.0.0.0
section_traits.h
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 
18 // Licensed under the Apache License, Version 2.0 (the "License");
19 // you may not use this file except in compliance with the License.
20 // You may obtain a copy of the License at
21 
22 // http://www.apache.org/licenses/LICENSE-2.0
23 
24 // Unless required by applicable law or agreed to in writing, software
25 // distributed under the License is distributed on an "AS IS" BASIS,
26 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
27 // See the License for the specific language governing permissions and
28 // limitations under the License.
29 
30 //
31 
32 // Interface for class section_traits
33 
34 #ifndef SECTION_TRAITS_H
35 #define SECTION_TRAITS_H
36 
37 #ifndef SHEAF_DLL_SPEC_H
38 #include "SheafSystem/sheaf_dll_spec.h"
39 #endif
40 
41 #ifndef STD_STRING_H
42 #include "SheafSystem/std_string.h"
43 #endif
44 
45 namespace sheaf
46 {
47 class poset_path;
48 }
49 
50 namespace fiber_bundle
51 {
52 
53 using namespace sheaf;
54 
55 
61 template <typename sec_type>
63 
64 class base_space_member;
65 class sec_at0;
66 class at0;
67 
71 template <>
72 struct SHEAF_DLL_SPEC section_traits<sec_at0>
73 {
78 
83 
87  static bool must_use_standard_base_type();
88 
92  static const poset_path& standard_fiber_schema_path();
93 
97  static const poset_path& standard_rep_path();
98 
102  static bool must_use_standard_rep();
103 
104 };
105 
106 class sec_at1;
107 class at1;
108 
112 template <>
113 struct SHEAF_DLL_SPEC section_traits<sec_at1>
114 {
119 
124 
128  static bool must_use_standard_base_type();
129 
133  static const poset_path& standard_fiber_schema_path();
134 
138  static const poset_path& standard_rep_path();
139 
143  static bool must_use_standard_rep();
144 
145 };
146 
147 class sec_at2_e2;
148 class at2_e2;
149 
153 template <>
154 struct SHEAF_DLL_SPEC section_traits<sec_at2_e2>
155 {
160 
165 
169  static bool must_use_standard_base_type();
170 
174  static const poset_path& standard_fiber_schema_path();
175 
179  static const poset_path& standard_rep_path();
180 
184  static bool must_use_standard_rep();
185 
186 };
187 
188 class sec_at2_e3;
189 class at2_e3;
190 
194 template <>
195 struct SHEAF_DLL_SPEC section_traits<sec_at2_e3>
196 {
201 
206 
210  static bool must_use_standard_base_type();
211 
215  static const poset_path& standard_fiber_schema_path();
216 
220  static const poset_path& standard_rep_path();
221 
225  static bool must_use_standard_rep();
226 };
227 
228 class sec_at3_e3;
229 class at3_e3;
230 
234 template <>
235 struct SHEAF_DLL_SPEC section_traits<sec_at3_e3>
236 {
241 
246 
250  static bool must_use_standard_base_type();
251 
255  static const poset_path& standard_fiber_schema_path();
256 
260  static const poset_path& standard_rep_path();
261 
265  static bool must_use_standard_rep();
266 };
267 
268 class sec_e1;
269 class e1;
270 
274 template <>
275 struct SHEAF_DLL_SPEC section_traits<sec_e1>
276 {
281 
286 
290  static bool must_use_standard_base_type();
291 
295  static const poset_path& standard_fiber_schema_path();
296 
300  static const poset_path& standard_rep_path();
301 
305  static bool must_use_standard_rep();
306 };
307 
308 class sec_e1_uniform;
309 class e1;
310 class structured_block_1d;
311 
315 template <>
316 struct SHEAF_DLL_SPEC section_traits<sec_e1_uniform>
317 {
322 
327 
331  static bool must_use_standard_base_type();
332 
336  static const poset_path& standard_fiber_schema_path();
337 
341  static const poset_path& standard_rep_path();
342 
346  static bool must_use_standard_rep();
347 };
348 
349 class sec_e2;
350 class e2;
351 
355 template <>
356 struct SHEAF_DLL_SPEC section_traits<sec_e2>
357 {
362 
367 
371  static bool must_use_standard_base_type();
372 
376  static const poset_path& standard_fiber_schema_path();
377 
381  static const poset_path& standard_rep_path();
382 
386  static bool must_use_standard_rep();
387 };
388 
389 class sec_e2_uniform;
390 class e2;
391 class structured_block_2d;
392 
396 template <>
397 struct SHEAF_DLL_SPEC section_traits<sec_e2_uniform>
398 {
403 
408 
412  static bool must_use_standard_base_type();
413 
417  static const poset_path& standard_fiber_schema_path();
418 
422  static const poset_path& standard_rep_path();
423 
427  static bool must_use_standard_rep();
428 };
429 
430 class sec_e3;
431 class e3;
432 
436 template <>
437 struct SHEAF_DLL_SPEC section_traits<sec_e3>
438 {
443 
448 
452  static bool must_use_standard_base_type();
453 
457  static const poset_path& standard_fiber_schema_path();
458 
462  static const poset_path& standard_rep_path();
463 
467  static bool must_use_standard_rep();
468 };
469 
470 class sec_e3_uniform;
471 class e3;
472 class structured_block_3d;
473 
477 template <>
478 struct SHEAF_DLL_SPEC section_traits<sec_e3_uniform>
479 {
484 
489 
493  static bool must_use_standard_base_type();
494 
498  static const poset_path& standard_fiber_schema_path();
499 
503  static const poset_path& standard_rep_path();
504 
508  static bool must_use_standard_rep();
509 };
510 
511 class sec_jcb_e13;
512 class jcb_e13;
513 
517 template <>
518 struct SHEAF_DLL_SPEC section_traits<sec_jcb_e13>
519 {
524 
529 
533  static bool must_use_standard_base_type();
534 
538  static const poset_path& standard_fiber_schema_path();
539 
543  static const poset_path& standard_rep_path();
544 
548  static bool must_use_standard_rep();
549 };
550 
551 class sec_jcb_e23;
552 class jcb_e23;
553 
557 template <>
558 struct SHEAF_DLL_SPEC section_traits<sec_jcb_e23>
559 {
564 
569 
573  static bool must_use_standard_base_type();
574 
578  static const poset_path& standard_fiber_schema_path();
579 
583  static const poset_path& standard_rep_path();
584 
588  static bool must_use_standard_rep();
589 };
590 
591 class sec_jcb_e33;
592 class jcb_e33;
593 
597 template <>
598 struct SHEAF_DLL_SPEC section_traits<sec_jcb_e33>
599 {
604 
609 
613  static bool must_use_standard_base_type();
614 
618  static const poset_path& standard_fiber_schema_path();
619 
623  static const poset_path& standard_rep_path();
624 
628  static bool must_use_standard_rep();
629 };
630 
631 
632 class sec_met_e1;
633 class met_e1;
634 
638 template <>
639 struct SHEAF_DLL_SPEC section_traits<sec_met_e1>
640 {
645 
650 
654  static bool must_use_standard_base_type();
655 
659  static const poset_path& standard_fiber_schema_path();
660 
664  static const poset_path& standard_rep_path();
665 
669  static bool must_use_standard_rep();
670 };
671 
672 class sec_met_e2;
673 class met_e2;
674 
678 template <>
679 struct SHEAF_DLL_SPEC section_traits<sec_met_e2>
680 {
685 
690 
694  static bool must_use_standard_base_type();
695 
699  static const poset_path& standard_fiber_schema_path();
700 
704  static const poset_path& standard_rep_path();
705 
709  static bool must_use_standard_rep();
710 };
711 
712 class sec_met_e3;
713 class met_e3;
714 
718 template <>
719 struct SHEAF_DLL_SPEC section_traits<sec_met_e3>
720 {
725 
730 
734  static bool must_use_standard_base_type();
735 
739  static const poset_path& standard_fiber_schema_path();
740 
744  static const poset_path& standard_rep_path();
745 
749  static bool must_use_standard_rep();
750 };
751 
752 
753 class sec_st2_e2;
754 class st2_e2;
755 
759 template <>
760 struct SHEAF_DLL_SPEC section_traits<sec_st2_e2>
761 {
766 
771 
775  static bool must_use_standard_base_type();
776 
780  static const poset_path& standard_fiber_schema_path();
781 
785  static const poset_path& standard_rep_path();
786 
790  static bool must_use_standard_rep();
791 };
792 
793 class sec_st2_e3;
794 class st2_e3;
795 
799 template <>
800 struct SHEAF_DLL_SPEC section_traits<sec_st2_e3>
801 {
806 
811 
815  static bool must_use_standard_base_type();
816 
820  static const poset_path& standard_fiber_schema_path();
821 
825  static const poset_path& standard_rep_path();
826 
830  static bool must_use_standard_rep();
831 };
832 
833 class sec_st3_e3;
834 class st3_e3;
835 
839 template <>
840 struct SHEAF_DLL_SPEC section_traits<sec_st3_e3>
841 {
846 
851 
855  static bool must_use_standard_base_type();
856 
860  static const poset_path& standard_fiber_schema_path();
861 
865  static const poset_path& standard_rep_path();
866 
870  static bool must_use_standard_rep();
871 };
872 
873 
874 class sec_st4_e2;
875 class st4_e2;
876 
880 template <>
881 struct SHEAF_DLL_SPEC section_traits<sec_st4_e2>
882 {
887 
892 
896  static bool must_use_standard_base_type();
897 
901  static const poset_path& standard_fiber_schema_path();
902 
906  static const poset_path& standard_rep_path();
907 
911  static bool must_use_standard_rep();
912 };
913 
914 class sec_st4_e3;
915 class st4_e3;
916 
920 template <>
921 struct SHEAF_DLL_SPEC section_traits<sec_st4_e3>
922 {
927 
932 
936  static bool must_use_standard_base_type();
937 
941  static const poset_path& standard_fiber_schema_path();
942 
946  static const poset_path& standard_rep_path();
947 
951  static bool must_use_standard_rep();
952 };
953 
954 class sec_t2_e2;
955 class t2_e2;
956 
960 template <>
961 struct SHEAF_DLL_SPEC section_traits<sec_t2_e2>
962 {
967 
972 
976  static bool must_use_standard_base_type();
977 
981  static const poset_path& standard_fiber_schema_path();
982 
986  static const poset_path& standard_rep_path();
987 
991  static bool must_use_standard_rep();
992 };
993 
994 class sec_t2_e3;
995 class t2_e3;
996 
1000 template <>
1001 struct SHEAF_DLL_SPEC section_traits<sec_t2_e3>
1002 {
1007 
1012 
1016  static bool must_use_standard_base_type();
1017 
1021  static const poset_path& standard_fiber_schema_path();
1022 
1026  static const poset_path& standard_rep_path();
1027 
1031  static bool must_use_standard_rep();
1032 };
1033 
1034 class sec_t3_e3;
1035 class t3_e3;
1036 
1040 template <>
1041 struct SHEAF_DLL_SPEC section_traits<sec_t3_e3>
1042 {
1047 
1052 
1056  static bool must_use_standard_base_type();
1057 
1061  static const poset_path& standard_fiber_schema_path();
1062 
1066  static const poset_path& standard_rep_path();
1067 
1071  static bool must_use_standard_rep();
1072 };
1073 
1074 class sec_t4_e2;
1075 class t4_e2;
1076 
1080 template <>
1081 struct SHEAF_DLL_SPEC section_traits<sec_t4_e2>
1082 {
1087 
1092 
1096  static bool must_use_standard_base_type();
1097 
1101  static const poset_path& standard_fiber_schema_path();
1102 
1106  static const poset_path& standard_rep_path();
1107 
1111  static bool must_use_standard_rep();
1112 };
1113 
1114 class sec_t4_e3;
1115 class t4_e3;
1116 
1120 template <>
1121 struct SHEAF_DLL_SPEC section_traits<sec_t4_e3>
1122 {
1127 
1132 
1136  static bool must_use_standard_base_type();
1137 
1141  static const poset_path& standard_fiber_schema_path();
1142 
1146  static const poset_path& standard_rep_path();
1147 
1151  static bool must_use_standard_rep();
1152 };
1153 
1154 
1155 class sec_vd;
1156 class vd;
1157 
1161 template <>
1162 struct SHEAF_DLL_SPEC section_traits<sec_vd>
1163 {
1168 
1173 
1177  static bool must_use_standard_base_type();
1178 
1182  static const poset_path& standard_fiber_schema_path();
1183 
1187  static const poset_path& standard_rep_path();
1188 
1192  static bool must_use_standard_rep();
1193 };
1194 
1195 } // namespace fiber_bundle
1196 
1197 #endif // ifndef SECTION_TRAITS_H
A section of a fiber bundle with a 1-dimensional Euclidean vector space fiber.
A section of a bundle with fiber type st3_e3.
Definition: sec_st3_e3.h:48
e2 standard_fiber_type
The standard fiber type.
at3_e3 standard_fiber_type
The standard fiber type.
base_space_member standard_base_type
The standard base type.
met_e1 standard_fiber_type
The standard fiber type.
A section of a bundle with fiber type at2_e3.
Definition: sec_at2_e3.h:48
base_space_member standard_base_type
The standard base type.
An antisymmetric rank 2 tensor over a Euclidean vector space of dimension 2 (persistent version)...
Definition: at2_e2.h:412
A homogeneous collection of connected quads arranged in an i_size() x j_size() array.
A section of a bundle with fiber type at3_e3.
Definition: sec_at3_e3.h:48
t2_e2 standard_fiber_type
The standard fiber type.
t4_e2 standard_fiber_type
The standard fiber type.
Euclidean vector space of dimension 2 (persistent version).
Definition: e2.h:405
A section of a bundle with fiber type met_e1.
Definition: sec_met_e1.h:48
Jacobian of a map from a 2 dimensional domain (u, v) to a 3 dimensional Euclidean space (x...
Definition: jcb_e23.h:421
base_space_member standard_base_type
The standard base type.
t3_e3 standard_fiber_type
The standard fiber type.
An antisymmetric rank 2 tensor over a Euclidean vector space of dimension 3. (persistent version)...
Definition: at2_e3.h:424
A section of a fiber bundle with a 3-dimensional Euclidean vector space fiber.
A general antisymmetric tensor of degree 1 over an abstract vector space (persistent version)...
Definition: at1.h:211
A tensor of degree 2 over a Euclidean vector space of dimension 2 (persistent version).
Definition: t2_e2.h:444
base_space_member standard_base_type
The standard base type.
vd standard_fiber_type
The standard fiber type.
at2_e2 standard_fiber_type
The standard fiber type.
A metric tensor over a 1 dimensional Euclidean vector space.
Definition: met_e1.h:396
base_space_member standard_base_type
The standard base type.
A symmetric rank 3 tensor over a 3D Euclidean vector space (persistent version).
Definition: st3_e3.h:370
base_space_member standard_base_type
The standard base type.
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 section of a bundle with fiber type st2_e2.
Definition: sec_st2_e2.h:48
A tensor of degree 4 over a Euclidean vector space of dimension 2 (persistent version).
Definition: t4_e2.h:378
A tensor of degree 2 over a Euclidean vector space of dimension 3 (persistent version).
Definition: t2_e3.h:457
met_e2 standard_fiber_type
The standard fiber type.
A section of a bundle with fiber type at1.
Definition: sec_at1.h:48
structured_block_2d standard_base_type
The standard base type.
jcb_e33 standard_fiber_type
The standard fiber type.
Euclidean vector space of dimension 3 (persistent version).
Definition: e3.h:467
base_space_member standard_base_type
The standard base type.
A tensor of degree 4 over a Euclidean vector space of dimension 3 (persistent version).
Definition: t4_e3.h:438
base_space_member standard_base_type
The standard base type.
A homogeneous collection of connected segments arranged in an i_size() array.
Euclidean vector space of dimension 1 (persistent version).
Definition: e1.h:400
A section of a bundle with fiber type t3_e3.
Definition: sec_t3_e3.h:48
A client handle for a member of a base space poset.
st2_e3 standard_fiber_type
The standard fiber type.
base_space_member standard_base_type
The standard base type.
An antisymmetric rank 3 tensor over a 3D Euclidean vector space.
Definition: at3_e3.h:372
structured_block_3d standard_base_type
The standard base type.
jcb_e13 standard_fiber_type
The standard fiber type.
A section of a bundle with fiber type jcb_e13.
Definition: sec_jcb_e13.h:49
A metric tensor over a 2 dimensional Euclidean vector space (persistent version). ...
Definition: met_e2.h:448
A section of a bundle with fiber type at2_e2.
Definition: sec_at2_e2.h:48
base_space_member standard_base_type
The standard base type.
base_space_member standard_base_type
The standard base type.
base_space_member standard_base_type
The standard base type.
A section of a bundle with fiber type st4_e3.
Definition: sec_st4_e3.h:48
Features describing a section type. Declaration only; there is no generic implementation for this tem...
t4_e3 standard_fiber_type
The standard fiber type.
st3_e3 standard_fiber_type
The standard fiber type.
base_space_member standard_base_type
The standard base type.
A section of a bundle with fiber type jcb_e33.
Definition: sec_jcb_e33.h:48
A scalar viewed as an antisymmetric tensor of degree 0. As the degree is 0 there is nothing to be sym...
Definition: at0.h:424
A section of a bundle with fiber type met_e3.
Definition: sec_met_e3.h:48
base_space_member standard_base_type
The standard base type.
e3 standard_fiber_type
The standard fiber type.
Jacobian of a map from a 1 dimensional domain (u) to a 3 dimensional Euclidean space (x...
Definition: jcb_e13.h:433
base_space_member standard_base_type
The standard base type.
met_e3 standard_fiber_type
The standard fiber type.
A symmetric rank 3 tensor over a 3D Euclidean vector space (persistent version).
Definition: st4_e2.h:376
st4_e3 standard_fiber_type
The standard fiber type.
at1 standard_fiber_type
The standard fiber type.
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
A section of a fiber bundle with a d-dimensional vector space fiber.
Definition: sec_vd.h:54
base_space_member standard_base_type
The standard base type.
e2 standard_fiber_type
The standard fiber type.
st2_e2 standard_fiber_type
The standard fiber type.
base_space_member standard_base_type
The standard base type.
A homogeneous collection of connected hexahedra arranged in an i_size() x j_size() x k_size() array...
structured_block_1d standard_base_type
The standard base type.
Jacobian of a map from a 3 dimensional domain (u, v, w) to a 3 dimensional Euclidean space (x...
Definition: jcb_e33.h:434
base_space_member standard_base_type
The standard base type.
A section of a bundle with fiber type st4_e2.
Definition: sec_st4_e2.h:48
A section of a bundle with fiber type t4_e2.
Definition: sec_t4_e2.h:48
e3 standard_fiber_type
The standard fiber type.
base_space_member standard_base_type
The standard base type.
A section of a bundle with fiber type t4_e3.
Definition: sec_t4_e3.h:48
A section of a fiber bundle with a 2-dimensional Euclidean vector space fiber.
st4_e2 standard_fiber_type
The standard fiber type.
A section of a fiber bundle with a 1-dimensional Euclidean vector space fiber.
Definition: sec_e1.h:47
A symmetric tensor of degree 2 over a Euclidean vector space of dimension 2 (persistent version)...
Definition: st2_e2.h:431
A section of a bundle with fiber type t2_e2.
Definition: sec_t2_e2.h:48
Namespace for the sheaves component of the sheaf system.
A symmetric rank 3 tensor over a 3D Euclidean vector space (persistent version).
Definition: st4_e3.h:386
t2_e3 standard_fiber_type
The standard fiber type.
A section of a bundle with fiber type t2_e3.
Definition: sec_t2_e3.h:48
A section of a bundle with fiber type jcb_e23.
Definition: sec_jcb_e23.h:49
base_space_member standard_base_type
The standard base type.
base_space_member standard_base_type
The standard base type.
base_space_member standard_base_type
The standard base type.
base_space_member standard_base_type
The standard base type.
A section of a bundle with fiber type met_e2.
Definition: sec_met_e2.h:48
at2_e3 standard_fiber_type
The standard fiber type.
Namespace for the fiber_bundles component of the sheaf system.
A tensor of degree 3 over a Euclidean vector space of dimension 3 (persistent version).
Definition: t3_e3.h:401
at0 standard_fiber_type
The standard fiber type.
Abstract vector space over dof_type.
Definition: vd.h:350
e1 standard_fiber_type
The standard fiber type.
Antisymetric tensor of degree 0. As the degree is 0 there is nothing to be symmetric or antisymmetric...
Definition: sec_at0.h:51
jcb_e23 standard_fiber_type
The standard fiber type.
e1 standard_fiber_type
The standard fiber type.
A symmetric tensor of degree 2 over a Euclidean vector space of dimension 3 (persistent version)...
Definition: st2_e3.h:435
A section of a bundle with fiber type st2_e3.
Definition: sec_st2_e3.h:48
base_space_member standard_base_type
The standard base type.
base_space_member standard_base_type
The standard base type.
A section of a fiber bundle with a 2-dimensional Euclidean vector space fiber.
Definition: sec_e2.h:48