20 #include "SheafSystem/base_space_factory.impl.h" 23 #include "SheafSystem/hex_connectivity.h" 24 #include "SheafSystem/line_connectivity.h" 25 #include "SheafSystem/point_block_1d.h" 26 #include "SheafSystem/point_block_2d.h" 27 #include "SheafSystem/point_block_3d.h" 28 #include "SheafSystem/quad_connectivity.h" 29 #include "SheafSystem/structured_block_1d.h" 30 #include "SheafSystem/structured_block_2d.h" 31 #include "SheafSystem/structured_block_3d.h" 32 #include "SheafSystem/tetra_connectivity.h" 33 #include "SheafSystem/triangle_connectivity.h" 34 #include "SheafSystem/unstructured_block.h" 35 #include "SheafSystem/zone_nodes_block.h" 56 require(poset_path::is_valid_name(path.poset_name()));
57 require(poset_path::is_valid_name(xbase_name));
65 poset_path lbase_path(path.poset_name(), xbase_name);
69 result->attach_to_state(&xns, lbase_path);
74 result->new_state(lhost, index_ubs[0],
true);
75 result->put_name(xbase_name,
true,
true);
80 ensure(result->name(
true) == xbase_name);
102 require(poset_path::is_valid_name(path.poset_name()));
103 require(poset_path::is_valid_name(xbase_name));
105 index_ubs.ct() >= 2);
110 poset_path lbase_path(path.poset_name(), xbase_name);
114 result->attach_to_state(&xns, lbase_path);
119 result->new_state(lhost, index_ubs[0], index_ubs[1],
true);
120 result->put_name(xbase_name,
true,
true);
125 ensure(result->name(
true) == xbase_name);
151 require(poset_path::is_valid_name(path.poset_name()));
152 require(poset_path::is_valid_name(xbase_name));
154 index_ubs.ct() >= 3);
160 poset_path lbase_path(path.poset_name(), xbase_name);
163 result->attach_to_state(&xns, lbase_path);
168 result->new_state(lhost,
173 result->put_name(xbase_name,
true,
true);
178 ensure(result->name(
true) == xbase_name);
200 require(poset_path::is_valid_name(path.poset_name()));
201 require(poset_path::is_valid_name(xbase_name));
207 poset_path lbase_path(path.poset_name(), xbase_name);
211 result->attach_to_state(&xns, lbase_path);
216 result->new_state(lhost, index_ubs[0],
true);
217 result->put_name(xbase_name,
true,
true);
222 ensure(result->name(
true) == xbase_name);
244 require(poset_path::is_valid_name(path.poset_name()));
245 require(poset_path::is_valid_name(xbase_name));
251 poset_path lbase_path(path.poset_name(), xbase_name);
255 result->attach_to_state(&xns, lbase_path);
260 result->new_state(lhost, index_ubs[0], index_ubs[1],
true);
261 result->put_name(xbase_name,
true,
true);
266 ensure(result->name(
true) == xbase_name);
288 require(poset_path::is_valid_name(path.poset_name()));
289 require(poset_path::is_valid_name(xbase_name));
295 poset_path lbase_path(path.poset_name(), xbase_name);
299 result->attach_to_state(&xns, lbase_path);
304 result->new_state(lhost,
309 result->put_name(xbase_name,
true,
true);
314 ensure(result->name(
true) == xbase_name);
336 require(!path.empty());
337 require(poset_path::is_valid_name(path.poset_name()));
339 ((1 <= index_ubs.ct()) && (index_ubs.ct() <= 3)));
345 int ldb = index_ubs.ct();
353 result = &zone_nodes_block::standard_host(xns, path.poset_name(), ldb,
false);
376 require(poset_path::is_valid_name(path.poset_name()));
377 require(poset_path::is_valid_name(xbase_name));
379 ((1 <= index_ubs.ct()) && (index_ubs.ct() <= 3)));
384 poset_path lbase_path(path.poset_name(), xbase_name);
386 poset_path llocal_cell_prototype_path(local_cell_prototype_path);
390 result->attach_to_state(&xns, lbase_path);
397 int ldb = index_ubs.ct();
403 result->new_state(*lhost, lconn,
true);
407 if(llocal_cell_prototype_path.member_name() ==
"triangles_nodes")
410 result->new_state(*lhost, lconn,
true);
415 result->new_state(*lhost, lconn,
true);
419 if(llocal_cell_prototype_path.member_name() ==
"tetra_nodes")
422 result->new_state(*lhost, lconn,
true);
427 result->new_state(*lhost, lconn,
true);
431 post_fatal_error_message(
"Unsupported base dimension");
435 result->put_name(xbase_name,
true,
true);
440 ensure(result->name(
true) == xbase_name);
462 require(!path.empty());
463 require(poset_path::is_valid_name(path.poset_name()));
469 int ldb = index_ubs.ct();
478 zone_nodes_block::standard_host(xns, path.poset_name(), ldb,
false);
502 require(poset_path::is_valid_name(path.poset_name()));
503 require(poset_path::is_valid_name(xbase_name));
505 ((1 <= index_ubs.ct()) && (index_ubs.ct() <= 3)));
510 poset_path lbase_path(path.poset_name(), xbase_name);
512 poset_path llocal_cell_prototype_path(local_cell_prototype_path);
516 result->attach_to_state(&xns, lbase_path);
523 string lposet_name(base_space_member::prototypes_poset_name());
525 int ldb = index_ubs.ct();
529 if(llocal_cell_prototype_path.empty())
531 llocal_cell_prototype_path.put_poset_name(lposet_name);
532 llocal_cell_prototype_path.put_member_name(
"segment_complex");
535 result->new_state(lhost,
536 llocal_cell_prototype_path,
541 if(llocal_cell_prototype_path.empty())
543 llocal_cell_prototype_path.put_poset_name(lposet_name);
544 llocal_cell_prototype_path.put_member_name(
"quad_nodes");
546 result->new_state(lhost,
547 llocal_cell_prototype_path,
553 if(llocal_cell_prototype_path.empty())
555 llocal_cell_prototype_path.put_poset_name(lposet_name);
556 llocal_cell_prototype_path.put_member_name(
"hex_nodes");
558 result->new_state(lhost,
559 llocal_cell_prototype_path,
566 post_fatal_error_message(
"Unsupported base dimension");
570 result->put_name(xbase_name,
true,
true);
575 ensure(result->name(
true) == xbase_name);
A homogeneous collection of connected quads arranged in an i_size() x j_size() array.
bool state_is_read_accessible() const
True if this is attached and if the state is accessible for read or access control is disabled...
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
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...
A path defined by a poset name and a member name separated by a forward slash ('/'). For example: "cell_definitions/triangle".
A homogeneous collection of zones with nodal connectivity.
base_space_poset * new_space(fiber_bundles_namespace &xns)
Finds or creates the base space poset specified by path 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.
OBSOLETE: use zone_nodes_block or point_block_*d. A client handle for a base space member which repre...
Nodal connectivity for a block containing zones of type tetra.
A homogeneous collection of connected segments arranged in an i_size() array.
Nodal connectivity for a block containing zones of type triangle.
The lattice of closed cells of a cellular space; a lattice representation of a computational mesh...
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...
A homogeneous collection of i_size() * j_size() disconnected points similar to a structured_block_2d...
Nodal connectivity for a block containing zones of type hex.
bool contains_poset(pod_index_type xhub_id, bool xauto_access=true) const
True if this contains a poset with hub id xhub_id..
A homogeneous collection of connected hexahedra arranged in an i_size() x j_size() x k_size() array...
Nodal connectivity for a block containing zones of type segment.
Nodal connectivity for a block containing zones of type quad.
A homogeneous collection of i_size() disconnected points; similar to a structured_block_1d, but without the segments.
A homogeneous collection of i_size()*j_size()*k_size() disconnected points similar to a structured_bl...
base_type * new_base(fiber_bundles_namespace &xns, const poset_path &xbase_path)
Finds or creates the base space specified by xbase_path in namespace xns.