6#include <kernel/geometry/test_aux/tetris_quad.hpp> 
    7#include <kernel/geometry/test_aux/copy_comp_set.hpp> 
   15      QuadMesh* create_tetris_mesh_2d()
 
   17        Index num_entities[] =
 
   25        QuadMesh* mesh = 
new QuadMesh(num_entities);
 
   28        static const Real vtx[10*2] =
 
   41        copy_vtx(mesh->get_vertex_set(), vtx);
 
   44        static const Index v_e[13*2] =
 
   60        copy_idx(mesh->get_index_set<1,0>(), v_e);
 
   63        static const Index v_q[4*4] =
 
   70        copy_idx(mesh->get_index_set<2,0>(), v_q);
 
   73        static const Index e_q[4*4] =
 
   80        copy_idx(mesh->get_index_set<2,1>(), e_q);
 
   86      void validate_refined_tetris_mesh_2d(
const QuadMesh& mesh)
 
   89        if(mesh.get_num_entities(0) != 27)
 
   90          throw String(
"Vertex count mismatch");
 
   91        if(mesh.get_num_entities(1) != 42)
 
   92          throw String(
"Edge count mismatch");
 
   93        if(mesh.get_num_entities(2) != 16)
 
   94          throw String(
"Quad count mismatch");
 
   97        static const Real vtx[] =
 
  127        if(!comp_vtx(mesh.get_vertex_set(), vtx))
 
  128          throw String(
"Vertex coordinate refinement failure");
 
  131        static const Index v_e[] =
 
  176        if(!comp_idx(mesh.get_index_set<1,0>(), v_e))
 
  177          throw String(
"Vertex-At-Edge index set refinement failure");
 
  180        static const Index v_q[] =
 
  199        if(!comp_idx(mesh.get_index_set<2,0>(), v_q))
 
  200          throw String(
"Vertex-At-Quad index set refinement failure");
 
  203        static const Index e_q[] =
 
  222        if(!comp_idx(mesh.get_index_set<2,1>(), e_q))
 
  223          throw String(
"Edge-At-Quad index set refinement failure");
 
  226      QuadSubMesh* create_tetris_edge_submesh_2d()
 
  228        Index num_entities[] =
 
  236        QuadSubMesh* mesh = 
new QuadSubMesh(num_entities, 
true);
 
  238        std::unique_ptr<QuadSubMesh::AttributeSetType> my_attrib_set(
new QuadSubMesh::AttributeSetType(num_entities[0],1));
 
  240        mesh->add_attribute(std::move(my_attrib_set), 
"EdgeSubAttributeSet");
 
  250        copy_attr(*(mesh->find_attribute(
"EdgeSubAttributeSet")), attr);
 
  259        copy_idx(mesh->get_index_set<1,0>(), v_e);
 
  266        copy_trg(mesh->get_target_set<0>(), vti);
 
  273        copy_trg(mesh->get_target_set<1>(), eti);
 
  279      void validate_refined_tetris_edge_submesh_2d(
const QuadSubMesh& mesh)
 
  282        if(mesh.get_num_entities(0) != 7)
 
  283          throw String(
"Vertex count mismatch");
 
  284        if(mesh.get_num_entities(1) != 6)
 
  285          throw String(
"Edge count mismatch");
 
  286        if(mesh.get_num_entities(2) != 0)
 
  287          throw String(
"Quad count mismatch");
 
  300        if(!comp_attr(*(mesh.find_attribute(
"EdgeSubAttributeSet")), attr))
 
  301          throw String(
"Attribute refinement failure");
 
  313        if(!comp_idx(mesh.get_index_set<1,0>(), v_e))
 
  314          throw String(
"Vertex-At-Edge index set refinement failure");
 
  319          1, 5, 4, 8, 13, 16, 19
 
  321        if(!comp_trg(mesh.get_target_set<0>(), vti))
 
  322          throw String(
"Vertex target set refinement failure");
 
  329        if(!comp_trg(mesh.get_target_set<1>(), eti))
 
  330          throw String(
"Edge target set refinement failure");
 
  333      QuadSubMesh* create_tetris_quad_submesh_2d()
 
  348        Index num_entities[] =
 
  356        QuadSubMesh* mesh = 
new QuadSubMesh(num_entities, 
true);
 
  358        std::unique_ptr<QuadSubMesh::AttributeSetType> my_attrib_set(
new QuadSubMesh::AttributeSetType(num_entities[0],2));
 
  360        mesh->add_attribute(std::move(my_attrib_set), 
"QuadSubAttributeSet");
 
  372        copy_attr(*(mesh->find_attribute(
"QuadSubAttributeSet")), attr);
 
  385        copy_idx(mesh->get_index_set<1,0>(), v_e);
 
  393        copy_idx(mesh->get_index_set<2,0>(), v_q);
 
  401        copy_idx(mesh->get_index_set<2,1>(), e_q);
 
  408        copy_trg(mesh->get_target_set<0>(), vti);
 
  413          0, 9, 12, 3, 2, 10, 6,
 
  415        copy_trg(mesh->get_target_set<1>(), eti);
 
  422        copy_trg(mesh->get_target_set<2>(), qti);
 
  428      void validate_refined_tetris_quad_submesh_2d(
const QuadSubMesh& mesh)
 
  449        if(mesh.get_num_entities(0) != 15)
 
  450          throw String(
"Vertex count mismatch");
 
  451        if(mesh.get_num_entities(1) != 22)
 
  452          throw String(
"Edge count mismatch");
 
  453        if(mesh.get_num_entities(2) != 8)
 
  454          throw String(
"Quad count mismatch");
 
  475        if(!comp_attr(*(mesh.find_attribute(
"QuadSubAttributeSet")), attr))
 
  476          throw String(
"Attribute refinement failure");
 
  504        if(!comp_idx(mesh.get_index_set<1,0>(), v_e))
 
  505          throw String(
"Vertex-At-Edge index set refinement failure");
 
  519        if(!comp_idx(mesh.get_index_set<2,0>(), v_q))
 
  520          throw String(
"Vertex-At-Quad index set refinement failure");
 
  534        if(!comp_idx(mesh.get_index_set<2,1>(), e_q))
 
  535          throw String(
"Edges-At-Quad refinement failure");
 
  540          0, 5, 8, 4, 9, 1, 10, 19, 22, 13, 12, 20, 16, 26, 23
 
  542        if(!comp_trg(mesh.get_target_set<0>(), vti))
 
  543          throw String(
"Vertex-Target-Indices refinement failure");
 
  548          0, 1, 18, 19, 25, 24, 7, 6, 5, 4, 21, 20, 13, 12, 41, 40, 39, 38, 28, 29, 27, 26
 
  550        if(!comp_trg(mesh.get_target_set<1>(), eti))
 
  551          throw String(
"Edge-Target-Indices refinement failure");
 
  556          15, 13, 14, 12, 2, 0, 3, 1
 
  558        if(!comp_trg(mesh.get_target_set<2>(), qti))
 
  559          throw String(
"Quad-Target-Indices refinement failure");
 
  562      QuadSubMesh* create_tetris_quad_edge_submesh_2d()
 
  564        Index num_entities[] =
 
  572        QuadSubMesh* mesh = 
new QuadSubMesh(num_entities, 
true);
 
  574        std::unique_ptr<QuadSubMesh::AttributeSetType> my_attrib_set(
new QuadSubMesh::AttributeSetType(num_entities[0],1));
 
  576        mesh->add_attribute(std::move(my_attrib_set), 
"QuadSubAttributeSet");
 
  586        copy_attr(*(mesh->find_attribute(
"QuadSubAttributeSet")), attr);
 
  595        copy_idx(mesh->get_index_set<1,0>(), v_e);
 
  602        copy_trg(mesh->get_target_set<0>(), vti);
 
  609        copy_trg(mesh->get_target_set<1>(), eti);
 
  615      void validate_refined_tetris_quad_edge_submesh_2d(
const QuadSubMesh& mesh)
 
  618        if(mesh.get_num_entities(0) != 7)
 
  619          throw String(
"Vertex count mismatch");
 
  620        if(mesh.get_num_entities(1) != 6)
 
  621          throw String(
"Edge count mismatch");
 
  622        if(mesh.get_num_entities(2) != 0)
 
  623          throw String(
"Quad count mismatch");
 
  636        if(!comp_attr(*(mesh.find_attribute(
"QuadSubAttributeSet")), attr))
 
  637          throw String(
"Attribute refinement failure");
 
  649        if(!comp_idx(mesh.get_index_set<1,0>(), v_e))
 
  650          throw String(
"Vertex-At-Edge index set refinement failure");
 
  657        if(!comp_trg(mesh.get_target_set<0>(), vti))
 
  658          throw String(
"Vertex target set refinement failure");
 
  666        if(!comp_trg(mesh.get_target_set<1>(), eti))
 
  667          throw String(
"Edge target set refinement failure");
 
  670      QuadCellSubSet* create_tetris_quad_cellsubset_2d()
 
  681        Index num_entities[] =
 
  687        QuadCellSubSet* subset = 
new QuadCellSubSet(num_entities);
 
  697        copy_trg(subset->get_target_set<0>(), t_v);
 
  706        copy_trg(subset->get_target_set<1>(), t_e);
 
  714        copy_trg(subset->get_target_set<2>(), t_q);
 
  720      void validate_refined_tetris_quad_cellsubset_2d(
const QuadCellSubSet& subset)
 
  723        if(subset.get_num_entities(0) != 9)
 
  724          throw String(
"Vertex count mismatch");
 
  725        if(subset.get_num_entities(1) != 14)
 
  726          throw String(
"Edge count mismatch");
 
  727        if(subset.get_num_entities(2) != 8)
 
  728          throw String(
"Quad count mismatch");
 
  737        if(!comp_trg(subset.get_target_set<0>(), vti))
 
  738          throw String(
"Vertex-Target-Indices refinement failure");
 
  749        if(!comp_trg(subset.get_target_set<1>(), eti))
 
  750          throw String(
"Edge-Target-Indices refinement failure");
 
  758        if(!comp_trg(subset.get_target_set<2>(), qti))
 
  759          throw String(
"Quad-Target-Indices refinement failure");
 
  762      QuadCellSubSet* create_tetris_quad_edge_cellsubset_2d()
 
  769        Index num_entities[] =
 
  775        QuadCellSubSet* subset = 
new QuadCellSubSet(num_entities);
 
  784        copy_trg(subset->get_target_set<0>(), t_v);
 
  791        copy_trg(subset->get_target_set<1>(), t_e);
 
  797      void validate_refined_tetris_quad_edge_cellsubset_2d(
const QuadCellSubSet& subset)
 
  800        if(subset.get_num_entities(0) != 4)
 
  801          throw String(
"Vertex count mismatch");
 
  802        if(subset.get_num_entities(1) != 2)
 
  803          throw String(
"Edge count mismatch");
 
  804        if(subset.get_num_entities(2) != 0)
 
  805          throw String(
"Quad count mismatch");
 
  813        if(!comp_trg(subset.get_target_set<0>(), vti))
 
  814          throw String(
"Vertex-Target-Indices refinement failure");
 
  821        if(!comp_trg(subset.get_target_set<1>(), eti))
 
  822          throw String(
"Edge-Target-Indices refinement failure");
 
  825      void validate_tetris_quad_boundary_cellsubset_2d(
const QuadCellSubSet& subset)
 
  828        if(subset.get_num_entities(0) != 10)
 
  829          throw String(
"Vertex count mismatch");
 
  830        if(subset.get_num_entities(1) != 10)
 
  831          throw String(
"Edge count mismatch");
 
  832        if(subset.get_num_entities(2) != 0)
 
  833          throw String(
"Quad count mismatch");
 
  838          0, 1, 2, 3, 4, 5, 6, 7, 8, 9
 
  840        if(!comp_trg(subset.get_target_set<0>(), vti))
 
  841          throw String(
"Vertex-Target-Indices refinement failure");
 
  852        if(!comp_trg(subset.get_target_set<1>(), eti))
 
  853          throw String(
"Edge-Target-Indices refinement failure");
 
  856      void validate_refined_tetris_quad_boundary_cellsubset_2d(
const QuadCellSubSet& subset)
 
  859        if(subset.get_num_entities(0) != 20)
 
  860          throw String(
"Vertex count mismatch");
 
  861        if(subset.get_num_entities(1) != 20)
 
  862          throw String(
"Edge count mismatch");
 
  863        if(subset.get_num_entities(2) != 0)
 
  864          throw String(
"Quad count mismatch");
 
  869          0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
 
  870          10, 11, 12, 14, 15, 17, 18, 20, 21, 22
 
  872        if(!comp_trg(subset.get_target_set<0>(), vti))
 
  873          throw String(
"Vertex-Target-Indices refinement failure");
 
  884        if(!comp_trg(subset.get_target_set<1>(), eti))
 
  885          throw String(
"Edge-Target-Indices refinement failure");
 
double Real
Real data type.
std::uint64_t Index
Index data type.