21 #include "SheafSystem/arg_list.h" 22 #include "SheafSystem/assert_contract.h" 23 #include "SheafSystem/at0.h" 24 #include "SheafSystem/at0_space.h" 25 #include "SheafSystem/at1.h" 26 #include "SheafSystem/at1_space.h" 27 #include "SheafSystem/at2.h" 28 #include "SheafSystem/at2_e2.h" 29 #include "SheafSystem/at2_e3.h" 30 #include "SheafSystem/at3.h" 31 #include "SheafSystem/at3_e3.h" 32 #include "SheafSystem/atp.h" 33 #include "SheafSystem/atp_space.h" 34 #include "SheafSystem/array_index_space_handle.h" 35 #include "SheafSystem/array_index_space_state.h" 36 #include "SheafSystem/base_space_member.h" 37 #include "SheafSystem/base_space_poset.h" 38 #include "SheafSystem/biorder_iterator.h" 39 #include "SheafSystem/block.impl.h" 40 #include "SheafSystem/e1.h" 41 #include "SheafSystem/e2.h" 42 #include "SheafSystem/e3.h" 43 #include "SheafSystem/e4.h" 44 #include "SheafSystem/ed.h" 45 #include "SheafSystem/fiber_bundles_namespace.h" 46 #include "SheafSystem/gl2.h" 47 #include "SheafSystem/gl3.h" 48 #include "SheafSystem/gln.h" 49 #include "SheafSystem/gln_space.h" 50 #include "SheafSystem/homogeneous_block.h" 51 #include "SheafSystem/i_adjacency_index_space_interval.h" 52 #include "SheafSystem/i_connectivity_index_space_interval.h" 53 #include "SheafSystem/ij_adjacency_index_space_interval.h" 54 #include "SheafSystem/ij_connectivity_index_space_interval.h" 55 #include "SheafSystem/ijk_adjacency_index_space_interval.h" 56 #include "SheafSystem/ijk_connectivity_index_space_interval.h" 57 #include "SheafSystem/index_iterator.h" 58 #include "SheafSystem/index_space_iterator.h" 59 #include "SheafSystem/jcb.h" 60 #include "SheafSystem/jcb_space.h" 61 #include "SheafSystem/jcb_e13.h" 62 #include "SheafSystem/jcb_e23.h" 63 #include "SheafSystem/jcb_e33.h" 64 #include "SheafSystem/jcb_ed.h" 65 #include "SheafSystem/met.h" 66 #include "SheafSystem/met_e1.h" 67 #include "SheafSystem/met_e2.h" 68 #include "SheafSystem/met_e3.h" 69 #include "SheafSystem/met_ed.h" 70 #include "SheafSystem/namespace_poset.h" 71 #include "SheafSystem/namespace_poset_member.h" 72 #include "SheafSystem/point_block_1d.h" 73 #include "SheafSystem/point_block_2d.h" 74 #include "SheafSystem/point_block_3d.h" 75 #include "SheafSystem/point_block_crg_interval.h" 76 #include "SheafSystem/poset.h" 77 #include "SheafSystem/poset_handle_factory.h" 78 #include "SheafSystem/poset_member_iterator.h" 79 #include "SheafSystem/postorder_iterator.h" 80 #include "SheafSystem/primitives_poset.h" 81 #include "SheafSystem/primitives_poset_schema.h" 82 #include "SheafSystem/binary_section_space_schema_member.h" 83 #include "SheafSystem/binary_section_space_schema_poset.h" 84 #include "SheafSystem/schema_poset_member.h" 85 #include "SheafSystem/sec_at0_space.h" 86 #include "SheafSystem/sec_at1_space.h" 87 #include "SheafSystem/sec_atp_space.h" 88 #include "SheafSystem/sec_jcb_space.h" 89 #include "SheafSystem/sec_rep_descriptor.h" 90 #include "SheafSystem/sec_rep_descriptor_poset.h" 91 #include "SheafSystem/sec_rep_space.h" 92 #include "SheafSystem/sec_stp_space.h" 93 #include "SheafSystem/sec_tp_space.h" 94 #include "SheafSystem/sec_vd_space.h" 95 #include "SheafSystem/section_space_schema_jims_index_space_state.h" 96 #include "SheafSystem/st2.h" 97 #include "SheafSystem/st2_e2.h" 98 #include "SheafSystem/st2_e3.h" 99 #include "SheafSystem/st3.h" 100 #include "SheafSystem/st3_e3.h" 101 #include "SheafSystem/st4.h" 102 #include "SheafSystem/st4_e2.h" 103 #include "SheafSystem/st4_e3.h" 104 #include "SheafSystem/std_cstring.h" 105 #include "SheafSystem/std_iostream.h" 106 #include "SheafSystem/std_string.h" 107 #include "SheafSystem/stp.h" 108 #include "SheafSystem/stp_space.h" 109 #include "SheafSystem/structured_block_1d.h" 110 #include "SheafSystem/structured_block_2d.h" 111 #include "SheafSystem/structured_block_3d.h" 112 #include "SheafSystem/structured_block_1d_crg_interval.h" 113 #include "SheafSystem/structured_block_2d_crg_interval.h" 114 #include "SheafSystem/structured_block_3d_crg_interval.h" 115 #include "SheafSystem/t2.h" 116 #include "SheafSystem/t2_e2.h" 117 #include "SheafSystem/t2_e3.h" 118 #include "SheafSystem/t3.h" 119 #include "SheafSystem/t3_e3.h" 120 #include "SheafSystem/t4.h" 121 #include "SheafSystem/t4_e2.h" 122 #include "SheafSystem/t4_e3.h" 123 #include "SheafSystem/tp.h" 124 #include "SheafSystem/tp_space.h" 125 #include "SheafSystem/tern.h" 126 #include "SheafSystem/tuple.h" 127 #include "SheafSystem/unstructured_block.h" 128 #include "SheafSystem/vd.h" 129 #include "SheafSystem/vd_space.h" 130 #include "SheafSystem/zone_nodes_block.h" 131 #include "SheafSystem/zone_nodes_block_crg_interval.h" 135 #include "SheafSystem/array_section_dof_map.h" 136 #include "SheafSystem/sparse_section_dof_map.h" 152 require(precondition_of(new_state(xname)));
162 ensure(postcondition_of(new_state(xname)));
174 require(is_attached() ? state_is_read_write_accessible() :
true);
199 ensure(!is_attached());
285 poset& lbase_space_schema_poset =
poset::new_table(const_cast<fiber_bundles_namespace&>(*
this), lname, lschema_path,
false);
301 lbase_space_schema_poset.
schematize(&table_dofs, &row_dofs,
true);
412 require(xspace != 0);
490 require(xspace != 0);
497 lpt.detach_from_state();
515 require(xspace != 0);
522 lseg.detach_from_state();
539 require(xspace != 0);
549 v0.
put_name(
"segment_complex_vertex_0",
true,
false);
552 v1.
put_name(
"segment_complex_vertex_1",
true,
false);
566 lpt.detach_from_state();
584 require(xspace != 0);
590 ltriangle.detach_from_state();
607 require(xspace != 0);
617 v0.
put_name(
"triangle_nodes_vertex_0",
true,
false);
620 v1.
put_name(
"triangle_nodes_vertex_1",
true,
false);
623 v2.
put_name(
"triangle_nodes_vertex_2",
true,
false);
635 lpt.detach_from_state();
659 require(xspace != 0);
669 v0.
put_name(
"triangle_complex_vertex_0",
true,
false);
672 v1.
put_name(
"triangle_complex_vertex_1",
true,
false);
675 v2.
put_name(
"triangle_complex_vertex_2",
true,
false);
682 e0.
put_name(
"triangle_complex_edge_0",
true,
false);
687 e1.
put_name(
"triangle_complex_edge_1",
true,
false);
692 e2.
put_name(
"triangle_complex_edge_2",
true,
false);
706 lpt.detach_from_state();
733 require(xspace != 0);
740 lquad.detach_from_state();
759 require(xspace != 0);
769 v0.
put_name(
"quad_nodes_vertex_0",
true,
false);
772 v1.
put_name(
"quad_nodes_vertex_1",
true,
false);
775 v2.
put_name(
"quad_nodes_vertex_2",
true,
false);
778 v3.
put_name(
"quad_nodes_vertex_3",
true,
false);
792 lpt.detach_from_state();
815 require(xspace != 0);
825 v0.
put_name(
"quad_complex_vertex_0",
true,
false);
828 v1.
put_name(
"quad_complex_vertex_1",
true,
false);
831 v2.
put_name(
"quad_complex_vertex_2",
true,
false);
834 v3.
put_name(
"quad_complex_vertex_3",
true,
false);
841 e0.
put_name(
"quad_complex_edge_0",
true,
false);
846 e1.
put_name(
"quad_complex_edge_1",
true,
false);
851 e2.
put_name(
"quad_complex_edge_2",
true,
false);
856 e3.
put_name(
"quad_complex_edge_3",
true,
false);
871 lpt.detach_from_state();
902 require(xspace != 0);
908 lpoly.detach_from_state();
926 require(xspace != 0);
932 ltetra.detach_from_state();
949 require(xspace != 0);
959 v0.
put_name(
"tetra_nodes_vertex_0",
true,
false);
962 v1.
put_name(
"tetra_nodes_vertex_1",
true,
false);
965 v2.
put_name(
"tetra_nodes_vertex_2",
true,
false);
968 v3.
put_name(
"tetra_nodes_vertex_3",
true,
false);
981 lpt.detach_from_state();
1005 require(xspace != 0);
1015 v0.
put_name(
"tetra_complex_vertex_0",
true,
false);
1018 v1.
put_name(
"tetra_complex_vertex_1",
true,
false);
1021 v2.
put_name(
"tetra_complex_vertex_2",
true,
false);
1024 v3.
put_name(
"tetra_complex_vertex_3",
true,
false);
1031 e0.
put_name(
"tetra_complex_edge_0",
true,
false);
1036 e1.
put_name(
"tetra_complex_edge_1",
true,
false);
1041 e2.
put_name(
"tetra_complex_edge_2",
true,
false);
1046 e3.
put_name(
"tetra_complex_edge_3",
true,
false);
1051 e4.
put_name(
"tetra_complex_edge_4",
true,
false);
1056 e5.
put_name(
"tetra_complex_edge_5",
true,
false);
1065 f0.
put_name(
"tetra_complex_face_0",
true,
false);
1071 f1.
put_name(
"tetra_complex_face_1",
true,
false);
1077 f2.
put_name(
"tetra_complex_face_2",
true,
false);
1083 f3.
put_name(
"tetra_complex_face_3",
true,
false);
1099 lpt.detach_from_state();
1137 require(xspace != 0);
1143 lhex.detach_from_state();
1160 require(xspace != 0);
1170 v0.
put_name(
"hex_nodes_vertex_0",
true,
false);
1173 v1.
put_name(
"hex_nodes_vertex_1",
true,
false);
1176 v2.
put_name(
"hex_nodes_vertex_2",
true,
false);
1179 v3.
put_name(
"hex_nodes_vertex_3",
true,
false);
1182 v4.
put_name(
"hex_nodes_vertex_4",
true,
false);
1185 v5.
put_name(
"hex_nodes_vertex_5",
true,
false);
1188 v6.
put_name(
"hex_nodes_vertex_6",
true,
false);
1191 v7.
put_name(
"hex_nodes_vertex_7",
true,
false);
1208 lpt.detach_from_state();
1236 require(xspace != 0);
1246 v0.
put_name(
"hex_faces_nodes_vertex_0",
true,
false);
1249 v1.
put_name(
"hex_faces_nodes_vertex_1",
true,
false);
1252 v2.
put_name(
"hex_faces_nodes_vertex_2",
true,
false);
1255 v3.
put_name(
"hex_faces_nodes_vertex_3",
true,
false);
1258 v4.
put_name(
"hex_faces_nodes_vertex_4",
true,
false);
1261 v5.
put_name(
"hex_faces_nodes_vertex_5",
true,
false);
1264 v6.
put_name(
"hex_faces_nodes_vertex_6",
true,
false);
1267 v7.
put_name(
"hex_faces_nodes_vertex_7",
true,
false);
1274 f0.
put_name(
"hex_faces_nodes_face_0",
true,
false);
1283 f1.
put_name(
"hex_faces_nodes_face_1",
true,
false);
1291 f2.
put_name(
"hex_faces_nodes_face_2",
true,
false);
1299 f3.
put_name(
"hex_faces_nodes_face_3",
true,
false);
1307 f4.
put_name(
"hex_faces_nodes_face_4",
true,
false);
1315 f5.
put_name(
"hex_faces_nodes_face_5",
true,
false);
1336 lpt.detach_from_state();
1372 require(xspace != 0);
1382 v0.
put_name(
"hex_complex_vertex_0",
true,
false);
1385 v1.
put_name(
"hex_complex_vertex_1",
true,
false);
1388 v2.
put_name(
"hex_complex_vertex_2",
true,
false);
1391 v3.
put_name(
"hex_complex_vertex_3",
true,
false);
1394 v4.
put_name(
"hex_complex_vertex_4",
true,
false);
1397 v5.
put_name(
"hex_complex_vertex_5",
true,
false);
1400 v6.
put_name(
"hex_complex_vertex_6",
true,
false);
1403 v7.
put_name(
"hex_complex_vertex_7",
true,
false);
1410 e0.
put_name(
"hex_complex_edge_0",
true,
false);
1415 e1.
put_name(
"hex_complex_edge_1",
true,
false);
1420 e2.
put_name(
"hex_complex_edge_2",
true,
false);
1425 e3.
put_name(
"hex_complex_edge_3",
true,
false);
1430 e4.
put_name(
"hex_complex_edge_4",
true,
false);
1435 e5.
put_name(
"hex_complex_edge_5",
true,
false);
1440 e6.
put_name(
"hex_complex_edge_6",
true,
false);
1445 e7.
put_name(
"hex_complex_edge_7",
true,
false);
1450 e8.
put_name(
"hex_complex_edge_8",
true,
false);
1455 e9.
put_name(
"hex_complex_edge_9",
true,
false);
1460 e10.
put_name(
"hex_complex_edge_10",
true,
false);
1465 e11.
put_name(
"hex_complex_edge_11",
true,
false);
1474 f0.
put_name(
"hex_complex_face_0",
true,
false);
1481 f1.
put_name(
"hex_complex_face_1",
true,
false);
1488 f2.
put_name(
"hex_complex_face_2",
true,
false);
1495 f3.
put_name(
"hex_complex_face_3",
true,
false);
1502 f4.
put_name(
"hex_complex_face_4",
true,
false);
1509 f5.
put_name(
"hex_complex_face_5",
true,
false);
1529 lpt.detach_from_state();
1579 require(xspace != 0);
1585 lpoly.detach_from_state();
1602 require(xspace != 0);
1627 require(xspace != 0);
1653 require(xspace != 0);
1680 require(xspace != 0);
1706 require(xspace != 0);
1734 require(xspace != 0);
1762 require(xspace != 0);
1790 require(xspace != 0);
1816 require(xspace != 0);
1822 lblk.detach_from_state();
1880 poset* lfiber_space_schema_poset = &
poset::new_table(const_cast<fiber_bundles_namespace&>(*
this), lname, lschema_path,
false);
1895 lfiber_space_schema_poset->
schematize(&table_dofs, &row_dofs,
true);
1907 ltype_blocks.
set_ct(ltype_blocks.ub());
1908 ltype_blocks.assign(0);
1917 ltype_blocks[lat0_id] = &lat0_types;
1926 ltype_blocks[lat1_id] = &lat1_types;
1935 ltype_blocks[lmet_id] = &lmet_types;
1944 ltype_blocks[lstp_id] = &lstp_types;
1953 ltype_blocks[latp_id] = &latp_types;
1962 ltype_blocks[ltp_id] = <p_types;
1971 ltype_blocks[lgln_id] = &lgln_types;
1980 ltype_blocks[ljcb_id] = &ljcb_types;
1987 ltype_blocks[lbot_id] = &lbot_types;
1989 stack<block<scoped_index>*> ltype_block_stack;
1990 ltype_block_stack.push(&lbot_types);
1998 while(!lmbr_itr.is_done())
2002 switch(lmbr_itr.action())
2004 case biorder_iterator::PREVISIT_ACTION:
2005 if(ltype_blocks[lmbr_id.
pod()] != 0)
2011 ltype_block_stack.push(ltype_blocks[lmbr_id.
pod()]);
2014 case biorder_iterator::POSTVISIT_ACTION:
2016 if(!lfiber_space_schema_poset->
is_atom(lmbr_id))
2020 ltype_block_stack.top()->push_back(lmbr_id);
2024 if(ltype_blocks[lmbr_id.
pod()] == ltype_block_stack.top())
2031 ltype_block_stack.pop();
2050 lscalar_group.
put_name(
"scalars",
true,
false);
2051 lscalar_group.detach_from_state();
2053 subposet lat0_sp(lfiber_space_schema_poset, lat0_types,
false);
2054 lat0_sp.
put_name(
"scalars",
true,
false);
2064 lvector_group.
put_name(
"vectors",
true,
false);
2065 lvector_group.detach_from_state();
2067 subposet lat1_sp(lfiber_space_schema_poset, lat1_types,
false);
2068 lat1_sp.
put_name(
"vectors",
true,
false);
2078 ltensor_group.
put_name(
"general_tensors",
true,
false);
2079 ltensor_group.detach_from_state();
2081 subposet ltp_sp(lfiber_space_schema_poset, ltp_types,
false);
2082 ltp_sp.
put_name(
"general_tensors",
true,
false);
2092 lmetric_group.
put_name(
"metric_tensors",
true,
false);
2093 lstp_types.
push_back(lmetric_group.index());
2094 lmetric_group.detach_from_state();
2096 subposet lmet_sp(lfiber_space_schema_poset, lmet_types,
false);
2097 lmet_sp.
put_name(
"metric_tensors",
true,
false);
2107 lsym_group.
put_name(
"symmetric_tensors",
true,
false);
2108 lsym_group.detach_from_state();
2110 subposet lstp_sp(lfiber_space_schema_poset, lstp_types,
false);
2111 lstp_sp.
put_name(
"symmetric_tensors",
true,
false);
2121 lantisym_group.
put_name(
"antisymmetric_tensors",
true,
false);
2122 lantisym_group.detach_from_state();
2124 subposet latp_sp(lfiber_space_schema_poset, latp_types,
false);
2125 latp_sp.
put_name(
"antisymmetric_tensors",
true,
false);
2135 ljcb_group.
put_name(
"Jacobians",
true,
false);
2137 lgln_types.
push_back(ljcb_group.index());
2138 ljcb_group.detach_from_state();
2140 subposet ljcb_sp(lfiber_space_schema_poset, ljcb_types,
false);
2141 ljcb_sp.
put_name(
"Jacobians",
true,
false);
2151 lgln_group.
put_name(
"linear_transformations",
true,
false);
2152 lgln_group.detach_from_state();
2154 subposet lgln_sp(lfiber_space_schema_poset, lgln_types,
false);
2155 lgln_sp.
put_name(
"linear_transformations",
true,
false);
2165 lother_group.
put_name(
"other_types",
true,
false);
2166 lother_group.detach_from_state();
2168 subposet lbot_sp(lfiber_space_schema_poset, lbot_types,
false);
2169 lbot_sp.
put_name(
"other_types",
true,
false);
2177 subposet lconcrete_sp(lfiber_space_schema_poset);
2178 lconcrete_sp.
put_name(
"concrete_types",
true,
false);
2180 subposet lrow_dof_sp(lfiber_space_schema_poset,
2182 stack<int> lrow_dof_ct;
2183 lrow_dof_ct.push(0);
2186 while(!lc_itr.is_done())
2190 switch(lc_itr.action())
2192 case biorder_iterator::PREVISIT_ACTION:
2198 lrow_dof_ct.push(0);
2201 case biorder_iterator::POSTVISIT_ACTION:
2208 ++lrow_dof_ct.top();
2214 lc_itr.put_has_visited(lmbr_id,
false);
2220 int lct = lrow_dof_ct.top();
2232 lrow_dof_ct.top() += lct;
2396 poset* lschema_host = &
poset::new_table(const_cast<fiber_bundles_namespace&>(*
this), lname, lschema_path,
false);
2411 lschema_host->
schematize(&table_dofs, &row_dofs,
true);
2505 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2509 lsrd.put_name(
"vertex_element_dlinear",
true,
false);
2513 lsrd.new_jim_state(xhost,
2518 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2522 lsrd.put_name(
"vertex_cells_dlinear",
true,
false);
2524 lsrd.new_jim_state(xhost,
2529 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2533 lsrd.put_name(
"element_element_constant",
true,
false);
2535 lsrd.new_jim_state(xhost,
2540 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2544 lsrd.put_name(
"vertex_block_dlinear",
true,
false);
2546 lsrd.new_jim_state(xhost,
2551 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2555 lsrd.put_name(
"vertex_block_uniform",
true,
false);
2557 lsrd.new_jim_state(xhost,
2562 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2566 lsrd.put_name(
"face_face_const_2D",
true,
false);
2568 lsrd.new_jim_state(xhost,
2573 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2577 lsrd.put_name(
"face_face_const_3D",
true,
false);
2579 lsrd.new_jim_state(xhost,
2580 "__neumann_face_vertices",
2584 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2588 lsrd.put_name(
"neumann_vertex_face_dlinear_2D",
true,
false);
2590 lsrd.new_jim_state(xhost,
2591 "__neumann_face_vertices",
2595 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2599 lsrd.put_name(
"neumann_vertex_face_dlinear_3D",
true,
false);
2601 lsrd.new_jim_state(xhost,
2602 "__dirichlet_face_vertices",
2606 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2610 lsrd.put_name(
"dirichlet_vertex_face_dlinear_2D",
true,
false);
2612 lsrd.new_jim_state(xhost,
2613 "__dirichlet_face_vertices",
2617 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2621 lsrd.put_name(
"dirichlet_vertex_face_dlinear_3D",
true,
false);
2623 lsrd.new_jim_state(xhost,
2624 "__neumann_face_vertices",
2628 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2632 lsrd.put_name(
"neumann_vertex_face_dlinear_1D",
true,
false);
2634 lsrd.new_jim_state(xhost,
2635 "__dirichlet_face_vertices",
2639 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2643 lsrd.put_name(
"dirichlet_vertex_face_dlinear_1D",
true,
false);
2645 lsrd.new_jim_state(xhost,
2650 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2654 lsrd.put_name(
"vertex_vertex_constant",
true,
false);
2656 lsrd.new_jim_state(xhost,
2661 "www.lpsweb.com/fiber_bundles/fiber_bundles_namespace.html",
2665 lsrd.put_name(
"cells_cells_constant",
true,
false);
2667 lsrd.detach_from_state();
2693 poset* lschema_host = &
poset::new_table(const_cast<fiber_bundles_namespace&>(*
this), lname, lschema_path,
false);
2708 lschema_host->
schematize(&table_dofs, &row_dofs,
true);
2774 if((lmbr_schema_id == PRIMITIVES_SCHEMA_INDEX) ||
2775 (lmbr_schema_id ==
member_id(
"section_space_schema_schema",
false)))
2793 lbase_spaces_id =
new_member(
false, 0,
false);
2796 new_link(TOP_INDEX, lbase_spaces_id);
2810 lfiber_spaces_id =
new_member(
false, 0,
false);
2813 new_link(TOP_INDEX, lfiber_spaces_id);
2832 ltensor_family_id =
new_member(
false, 0,
false);
2833 put_member_name(ltensor_family_id,
"tensor_space_family",
true,
false);
2835 new_link(lfiber_spaces_id, ltensor_family_id);
2852 else if(dynamic_cast<sec_rep_space*>(xmbr.
poset_pointer()) != 0)
2862 lsection_spaces_id =
new_member(
false, 0,
false);
2865 new_link(TOP_INDEX, lsection_spaces_id);
2867 else if(
is_jem(lsection_spaces_id, BOTTOM_INDEX))
2888 lgeneral_sets_id =
new_member(
false, 0,
false);
2891 new_link(TOP_INDEX, lgeneral_sets_id);
2942 static bool lposet_prototypes_initialized =
false;
2944 if(!lposet_prototypes_initialized)
2950 base_space_poset::make_prototype();
2953 sec_at0_space::make_prototype();
2954 sec_at1_space::make_prototype();
2955 sec_atp_space::make_prototype();
2956 sec_jcb_space::make_prototype();
2957 sec_rep_space::make_prototype();
2959 sec_stp_space::make_prototype();
2960 sec_tp_space::make_prototype();
2961 sec_tuple_space::make_prototype();
2962 sec_vd_space::make_prototype();
2964 at0_space::make_prototype();
2965 at1_space::make_prototype();
2966 atp_space::make_prototype();
2967 gln_space::make_prototype();
2968 jcb_space::make_prototype();
2969 stp_space::make_prototype();
2970 tp_space::make_prototype();
2971 tuple_space::make_prototype();
2972 vd_space::make_prototype();
2976 lposet_prototypes_initialized =
true;
2978 #ifdef DIAGNOSTIC_OUTPUT 2979 cout <<
"Initialized fiber bundles poset prototypes" << endl;
2999 static bool lcrg_interval_prototypes_initialized =
false;
3001 if(!lcrg_interval_prototypes_initialized)
3007 point_block_crg_interval::make_prototype();
3008 structured_block_1d_crg_interval::make_prototype();
3009 structured_block_2d_crg_interval::make_prototype();
3010 structured_block_3d_crg_interval::make_prototype();
3011 zone_nodes_block_crg_interval::make_prototype();
3015 lcrg_interval_prototypes_initialized =
true;
3017 #ifdef DIAGNOSTIC_OUTPUT 3018 cout <<
"Initialized fiber bundles crg interval prototypes" << endl;
3037 static bool ldof_map_prototypes_initialized =
false;
3039 if(!ldof_map_prototypes_initialized)
3045 array_section_dof_map::make_prototype();
3046 sparse_section_dof_map::make_prototype();
3050 ldof_map_prototypes_initialized =
true;
3052 #ifdef DIAGNOSTIC_OUTPUT 3053 cout <<
"Initialized fiber bundles dof map prototypes" << endl;
3072 static bool lid_space_prototypes_initialized =
false;
3074 if(!lid_space_prototypes_initialized)
3080 section_space_schema_jims_index_space_state::make_prototype();
3082 i_adjacency_index_space_interval::make_prototype();
3083 i_connectivity_index_space_interval::make_prototype();
3084 ij_adjacency_index_space_interval::make_prototype();
3085 ij_connectivity_index_space_interval::make_prototype();
3086 ijk_adjacency_index_space_interval::make_prototype();
3087 ijk_connectivity_index_space_interval::make_prototype();
3091 lid_space_prototypes_initialized =
true;
3093 #ifdef DIAGNOSTIC_OUTPUT 3094 cout <<
"Initialized fiber bundles id space prototypes" << endl;
3143 return FIBER_BUNDLES_NAMESPACE_ID;
3155 static const char* result =
"fiber_bundles_namespace";
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
virtual void get_read_write_access(bool xrelease_read_only_access=false)
Get read write access to the state associated with this. If release_read_only_access is requested...
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
virtual void delete_link(pod_index_type xgreater, pod_index_type xlesser)
Delete the cover link between hub id xgreater and hub id xlesser.
A client handle for a subposet.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static const poset_path & standard_schema_path()
The path of the schema required by this class.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static const poset_path & static_local_cell_prototype_path()
The path of the local cell prototype required by this class.
void make_hex_nodes_prototype(base_space_poset *xspace)
Create prototype for a hex with nodes in poset xspace.
static const poset_path & static_prototype_path()
The path of the prototype required by this class.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
void make_structured_block_1d_prototype(base_space_poset *xspace)
Create prototype for a 1D structured block in poset xspace.
virtual void schematize(subposet *xtable_dof_subposet, subposet *xrow_dof_subposet, bool xall_members=false)
Prepare this poset and its top member for use as a schema. If xall_members = true, schematize all other members as well.
virtual void new_link(pod_index_type xgreater, pod_index_type xlesser)
Insert a cover link from greater to lesser (that is, hub id xgreater covers hub id xlesser)...
virtual void create_cover_link(abstract_poset_member *xlesser)
Insert a link from this to lesser; make lesser <= this.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void initialize_crg_interval_prototypes()
Initialize the prototypes needed by crg interval factory method,.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
abstract_poset_member & top()
The top member of the poset (mutable version)
size_type ct() const
The number of items currently in use.
static const poset_path & static_local_cell_prototype_path()
The path of the local cell prototype required by this class.
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
const pod_type & pod() const
The "plain old data" storage of this; the value in the external id space.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
Euclidean vector space of dimension 4 (persistent version).
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
sheaves_namespace()
Default constructor; creates an unattached handle.
void make_unstructured_block_prototype(base_space_poset *xspace)
Create prototype for an unstructured block in poset xspace.
Euclidean vector space of dimension 2 (persistent version).
static poset & new_table(namespace_type &xhost, const poset_path &xpath, const poset_path &xschema_path, bool xauto_access)
Creates a new poset in namespace xns with path xpath and schema specified by xschema_path.
virtual poset_type type_id() const
Identifier for the type of this poset.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
void make_triangle_prototype(base_space_poset *xspace)
Create prototype for a triangle in poset xspace.
void make_hex_complex_prototype(base_space_poset *xspace)
Create prototype for a hex with faces, edges, and nodes in poset xspace.
poset_path path(bool xauto_access=true) const
A path to this component.
bool conforms_to(const schema_poset_member &xother) const
True if the dofs defined by this agree in type and in order with the dofs defined by xother...
static const poset_path & standard_host_path()
The standard path for host spaces for this class.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
poset_type
Identifiers for poset types.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
bool contains_poset_member(pod_index_type xposet_hub_id, pod_index_type xmember_hub_id, bool xauto_access=true) const
True if this contains a poset with hub id xposet_hub_id which contains a member with hub id xmember_h...
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
virtual void make_sec_rep_descriptors(sec_rep_descriptor_poset *xhost)
Create standard section representation descriptors in poset xhost.
primitives_poset & primitives()
The poset of primitives for this namespace (mutable version)
static const poset_path & static_prototype_path()
The path of the prototype required by this class.
void make_point_block_3d_prototype(base_space_poset *xspace)
Create prototype for a 3D point block in poset xspace.
void make_sec_rep_descriptor_schema_poset()
Create schema poset for standard sec_rep_descritpors.
void make_quad_nodes_prototype(base_space_poset *xspace)
Create prototype for a quad with nodes in poset xspace.
A path defined by a poset name and a member name separated by a forward slash ('/'). For example: "cell_definitions/triangle".
const index_space_family & member_id_spaces(bool xauto_access) const
Collection of member id spaces for this (const version).
virtual bool is_atom(pod_index_type xmbr_hub_id) const
True if the member with hub id xmbr_hub_id covers the bottom.
virtual bool contains_member(pod_index_type xmbr_hub_id) const
True if this poset contains poset member with hub id xmbr_hub_id.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static const poset_path & static_prototype_path()
The path of the prototype required by this class.
static const poset_path & standard_schema_path()
The path of the schema required by this class.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
std::string row_dof_subposet_name() const
The standard name for the row dof subposet associated with this schema member. Synonym for dof_subpos...
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
The standard sheaves name space.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
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.
static const poset_path & static_local_cell_prototype_path()
The path of the local cell prototype required by this class.
const scoped_index & index() const
The index of the component state this handle is attached to.
The poset for sec_rep_descriptors.
abstract_poset_member & bottom()
The bottom member of the poset (mutable version)
virtual void put_member_name(pod_index_type xmbr_hub_id, const std::string &xname, bool xunique, bool xauto_access=false)
Make xname a name for the member with hub id xmbr_hub_id. if xunique, make xname the only name...
static const std::string & prototypes_poset_name()
The name of the prototypes poset.
Euclidean vector space of dimension 3 (persistent version).
T::row_dofs_type & row_dofs(T &x0)
The row dofs pod type for x0 (mutable version).
void make_segment_prototype(base_space_poset *xspace)
Create prototype for a line segement (i.e. an edge) in poset xspace.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
virtual pod_index_type new_member(bool xis_jim, pod_index_type xtuple_hub_id)
Create a disconnected member with is_jim == xis_jim and the dof tuple identified by hub id xtuple_hub...
Euclidean vector space of dimension 1 (persistent version).
static void initialize_dof_map_prototypes()
Initialize the prototypes needed by dof map factory method,.
A client handle for a member of a base space poset.
static void initialize_dof_map_prototypes()
Initialize the prototypes needed by dof map factory method,.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
virtual bool is_jem(pod_index_type xmbr_hub_id, pod_index_type xother_hub_id) const
True if hub id xother_hub_id is join equivalent to hub id xmbr_hub_id.
static void initialize_poset_prototypes()
Initialize the prototypes needed by poset factory method,.
void make_general_polyhedron_prototype(base_space_poset *xspace)
Create prototype for a general polyhedron in poset xspace.
virtual void make_base_space_member_prototypes(base_space_poset *xspace)
Create standard base space member prototypes.
A client handle for a member of a namespace poset.
static void initialize_poset_prototypes()
Initialize the prototypes needed by poset factory method,.
virtual ~fiber_bundles_namespace()
Destructor.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
void make_hex_prototype(base_space_poset *xspace)
Create prototype for a hex in poset xspace.
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
virtual void link_poset(const namespace_poset_member &xmbr)
Links xmbr into the appropriate group.
The lattice of closed cells of a cellular space; a lattice representation of a computational mesh...
void make_point_block_1d_prototype(base_space_poset *xspace)
Create prototype for a 1D point block in poset xspace.
virtual void put_name(const std::string &xname, bool xunique, bool xauto_access)
Make xname a name for this; if xunique, make xname the only name.
const bool NOT_STRICT
Iteration strictness control.
const bool DOWN
Iteration directions.
virtual void make_fiber_spaces()
Create standard fiber spaces.
virtual schema_poset_member & schema()
The schema for this poset (mutable version).
virtual void make_sec_rep_descriptor_schema_members()
Create schema members for standard sec_rep_descriptors.
void push_back(const_reference_type item)
Insert item at the end of the items in the auto_block.
static const poset_path & static_prototype_path()
The path of the prototype required by this class.
void make_fiber_space_definitions()
Create standard fiber schema and fiber spaces.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
pod_index_type poset_prereq_id(int xi) const
The id of the xi-th prerequisite poset for the poset associated with this namespace member...
void make_point_block_2d_prototype(base_space_poset *xspace)
Create prototype for a 2D point block in poset xspace.
fiber_bundles_namespace()
Default constructor; creates an unattached handle.
static const poset_path & static_prototype_path()
The path of the prototype required by this class.
A client handle for a mutable partially ordered set.
bool state_is_read_write_accessible() const
True if this is attached and if the state is accessible for read and write or access control is disab...
static void initialize_crg_interval_prototypes()
Initialize the prototypes needed by crg interval factory method,.
pointer_type base() const
The underlying storage array.
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
static const poset_path & static_local_cell_prototype_path()
The path of the local cell prototype required by this class.
void * table_dofs()
The table dofs for this instance (mutable version).
void set_ct(size_type xct)
Sets ct() == xct.
An index within the external ("client") scope of a given id space.
static const poset_path & static_prototype_path()
The path of the prototype required by this class.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
poset_state_handle * poset_pointer() const
The pointer to the poset associated with this namespace member.
void make_tetra_nodes_prototype(base_space_poset *xspace)
Create prototype for a tetrahedron with nodes in poset xspace.
Specialization of the filtered depth-first iterator which exposes the PREVISIT_ACTION and the POSTVIS...
virtual const char * class_name() const
The name of this class.
std::string poset_name() const
The poset name part of the path.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
virtual void insert_member(pod_index_type xmbr_hub_id)
Inserts the member of host() with hub id xmbr_hub_id.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
virtual void make_section_space_schema_schema_members()
Create schema members for standard section space schema.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
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. ...
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
void make_tetra_prototype(base_space_poset *xspace)
Create prototype for a tetrahedron in poset xspace.
virtual std::string member_name(pod_index_type xmbr_hub_id, bool xauto_access=false) const
A name for the member with hub id xmbr_hub_id.
virtual void initialize_additional_members()
Creates additional members for this namespace.
virtual void put_name(const std::string &xname, bool xunique, bool xauto_access)
Make xname a name for this; if xunique, make xname the only name.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
void make_section_space_schema_schema_poset()
Create schema poset for standard section space schema.
virtual void release_access(bool xall=false) const
Release access. If xall is true, release all levels of access. Otherwise, release one level of access...
const bool UP
Iteration directions.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
void make_triangle_nodes_prototype(base_space_poset *xspace)
Create prototype for a triangle with nodes in poset xspace.
void make_triangle_complex_prototype(base_space_poset *xspace)
Create prototype for a triangle with edges and nodes in poset xspace.
void make_segment_complex_prototype(base_space_poset *xspace)
Create prototype for a line segement complex, i.e. an edge and the veritices it contains, in poset xspace.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
bool contains_poset(pod_index_type xhub_id, bool xauto_access=true) const
True if this contains a poset with hub id xhub_id..
static void initialize_prototypes()
Initialize all the prototypes needed by various factory methods,.
static void initialize_id_space_prototypes()
Initialize the prototypes needed by id space factory method,.
virtual void make_base_space_schema_members()
Create schema members for standard base space member types.
static host_type & standard_host(namespace_type &xns, const poset_path &xhost_path, int xmax_db, bool xauto_access)
The host with path xhost_path. Returns the host if it already exists, otherwise, creates it in namesp...
void make_sec_rep_descriptor_poset()
Create the standard sec_rep_descriptor poset.
static const poset_path & standard_schema_path()
The path of the schema required by this class.
void make_structured_block_3d_prototype(base_space_poset *xspace)
Create prototype for a 3D structured block in poset xspace.
virtual void detach_from_state()
Detach this handle from its state, if any.
static void initialize_id_space_prototypes()
Initialize the prototypes needed by id space factory method,.
void make_quad_prototype(base_space_poset *xspace)
Create prototype for a quad in poset xspace.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
int access_request_depth() const
The number of times access has been requested and granted without being released. ...
virtual void make_fiber_space_schema_members()
Create schema members for standard fiber space types.
static bool make_prototype()
Creates prototype for this class and enters in in factory.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
void make_general_polygon_prototype(base_space_poset *xspace)
Create prototype for a general polygon in poset xspace.
void make_structured_block_2d_prototype(base_space_poset *xspace)
Create prototype for a 2D structured block in poset xspace.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
void make_tetra_complex_prototype(base_space_poset *xspace)
Create prototype for a tetrahedron with faces, edges, and nodes in poset xspace.
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
static const poset_path & static_local_cell_prototype_path()
The path of the local cell prototype required by this class.
static bool make_prototype()
Creates prototype for this class and enters in in factory.
int_type pod_index_type
The plain old data index type.
std::string member_name() const
The member name part of the path.
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
virtual scoped_index member_index_ub() const
The upper bound on the member_index;.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
void make_point_prototype(base_space_poset *xspace)
Create prototype for a single point (i.e. a vertex) in poset xspace.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
void make_base_space_schema_poset()
Create schema poset for standard base space member types.
static array_index_space_handle new_space(index_space_family &xid_spaces, const std::string &xname, bool xis_persistent, size_type xcapacity)
Create a new array id space in the id space family xid_spaces at the next available id space index wi...
static const poset_path & static_prototype_path()
The path of the prototype required by this class.
void make_part_prototype(base_space_poset *xspace)
Create prototype for a part in poset xspace.
static host_type & standard_host(namespace_type &xns, bool xauto_access)
The host with path standard_host_path(). Returns the host if it already exists, otherwise, creates it in namespace xns with schema specified by standard_schema_path() and standard paths for prerequisites, which are also created if needed.
static const poset_path & static_prototype_path()
The path of the prototype required by this class.
virtual void end_jim_edit_mode(bool xensure_lattice_invariant=true, bool xauto_access=true)
Prevent editing of jims and jim order relation.
static void make_standard_schema(namespace_poset &xns)
Creates standard schema for this class in namespace xns.
void make_fiber_space_schema_poset()
Create schema poset for standard fiber space types.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
virtual void new_jim_state(poset_dof_map *xdof_map=0, bool xcopy_dof_map=false, bool xauto_access=true)
Creates a new jim (join-irreducible member) state in host() and attaches this to it. If xdof_map == 0 a new dof map is created. If xdof_map != 0 and xcopy_dof_map == false, xdof_map is used as the dof map. If xdof_map != 0 and xcopy_dof_map is true, a copy of xdof_map is used.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
bool in_jim_edit_mode() const
True if editing jims and jim order relation is allowed.
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
SHEAF_DLL_SPEC bool is_valid(pod_index_type xpod_index)
True if an only if xpod_index is valid.
An auto_block with a no-initialization initialization policy.
void make_hex_faces_nodes_prototype(base_space_poset *xspace)
Create prototype for a hex with faces and nodes in poset xspace.
Namespace for the fiber_bundles component of the sheaf system.
static const poset_path & standard_schema_path()
The path of the schema required by this class.
std::string table_dof_subposet_name() const
The standard name for the table dof subposet associated with this schema member. Synonym for dof_subp...
void make_zone_nodes_block_prototype(base_space_poset *xspace)
Create prototype for an zone_nodes block in poset xspace.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
A client handle for a poset member which has been prepared for use as a schema.
static const poset_path & static_local_cell_prototype_path()
The path of the local cell prototype required by this class.
void make_base_space_definitions()
Create schema and prototypes for standard base space member types.
void make_section_space_definitions()
Create standard section representations and section schema.
virtual void virtual_initialize_prototypes()
Initialize all the prototypes needed by various factory methods; virtual version. ...
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
void make_quad_complex_prototype(base_space_poset *xspace)
Create prototype for a quad with edges and nodes in poset xspace.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
A description for a section representation scheme.
virtual const scoped_index & member_id(bool xauto_access) const
An id in the member hub id space; intended for copying to initialize ids to the member id space...
void make_base_space_member_prototypes_poset()
Create standard base space member prototypes poset.
virtual void begin_jim_edit_mode(bool xauto_access=true)
Allow editing of jims and jim order relation.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.