From 79749d355530566a5308ec2eb92143632374ae9b Mon Sep 17 00:00:00 2001 From: mtao Date: Tue, 16 Jan 2024 21:27:21 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20wildmesh?= =?UTF-8?q?ing/wildmeshing-toolkit@c29f375475a0390ce18589232086deefdc1252b?= =?UTF-8?q?2=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _accessor_8hpp__incl.md5 | 2 +- _accessor_8hpp__incl.svg | 56 +- _accessor_8hpp__incl_org.svg | 56 +- _accessor_base_8hpp_source.html | 4 +- _accessor_base_8hxx_source.html | 20 +- _attribute_8cpp_source.html | 277 ++-- _attribute_8hpp_source.html | 269 ++-- _attribute_cache_8cpp_source.html | 2 +- _attribute_manager_8cpp_source.html | 12 +- _attribute_manager_8hpp_source.html | 22 +- _attribute_transfer_strategy_8cpp_source.html | 4 +- _attribute_transfer_strategy_8hpp_source.html | 8 +- ...te_transfer_strategy_base_8cpp_source.html | 8 +- ...te_transfer_strategy_base_8hpp_source.html | 6 +- _attributes_update_8hpp__incl.md5 | 2 +- _attributes_update_8hpp__incl.svg | 40 +- _attributes_update_8hpp__incl_org.svg | 40 +- _attributes_update_8hpp_source.html | 6 +- _boundary_checker_8cpp_source.html | 4 +- _boundary_checker_8hpp_source.html | 4 +- _caching_accessor_8hpp__incl.md5 | 2 +- _caching_accessor_8hpp__incl.svg | 56 +- _caching_accessor_8hpp__incl_org.svg | 56 +- _caching_accessor_8hxx.html | 4 +- _caching_accessor_8hxx__incl.map | 90 +- _caching_accessor_8hxx__incl.md5 | 2 +- _caching_accessor_8hxx__incl.svg | 1196 ++++++++-------- _caching_accessor_8hxx__incl_org.svg | 1198 ++++++++--------- _caching_accessor_8hxx_source.html | 31 +- _cell_8cpp_source.html | 8 +- _cell_8hpp_source.html | 4 +- ...se_new_attribute_strategy_8cpp_source.html | 20 +- ...se_new_attribute_strategy_8hpp_source.html | 6 +- ...apse_new_value_applicator_8hpp_source.html | 12 +- _const_accessor_8hpp__incl.md5 | 2 +- _const_accessor_8hpp__incl.svg | 56 +- _const_accessor_8hpp__incl_org.svg | 56 +- _const_accessor_8hxx__incl.md5 | 2 +- _const_accessor_8hxx__incl.svg | 56 +- _const_accessor_8hxx__incl_org.svg | 56 +- _disk_options_8cpp_source.html | 6 +- _edge_collapse_8cpp_source.html | 10 +- _edge_collapse_8hpp_source.html | 6 +- _edge_mesh_8cpp_source.html | 90 +- _edge_mesh_8hpp_source.html | 20 +- ...e_mesh_operation_executor_8cpp_source.html | 16 +- ...e_mesh_operation_executor_8hpp_source.html | 4 +- _edge_operation_data_8cpp_source.html | 4 +- _edge_operation_data_8hpp_source.html | 4 +- _edge_split_8cpp_source.html | 26 +- _edge_split_8hpp_source.html | 6 +- _edge_valence_energy_8cpp_source.html | 16 +- _edge_valence_invariant_8cpp_source.html | 4 +- _envelope_invariant_8cpp_source.html | 48 +- _function_8cpp_source.html | 2 +- _function_8hpp__incl.md5 | 2 +- _function_8hpp__incl.svg | 54 +- _function_8hpp__incl_org.svg | 54 +- _function_8hpp_source.html | 4 +- _function_invariant_8cpp_source.html | 4 +- _function_invariant_8hpp_source.html | 6 +- _grid2_options_8cpp_source.html | 4 +- _grid3_options_8cpp_source.html | 4 +- _h_d_f5_reader_8cpp_source.html | 38 +- _h_d_f5_reader_8hpp_source.html | 4 +- _h_d_f5_writer_8cpp_source.html | 4 +- _h_d_f5_writer_8hpp_source.html | 4 +- ...ous_simplex_equal_functor_8hpp_source.html | 6 +- ...eous_simplex_less_functor_8hpp_source.html | 6 +- _interior_edge_invariant_8cpp_source.html | 6 +- _interior_simplex_invariant_8cpp_source.html | 4 +- _interior_simplex_invariant_8hpp_source.html | 6 +- _interior_vertex_invariant_8cpp_source.html | 6 +- _isotropic_remeshing_8cpp_source.html | 10 +- _local_neighbors_sum_function_8hpp__incl.md5 | 2 +- _local_neighbors_sum_function_8hpp__incl.svg | 54 +- ..._neighbors_sum_function_8hpp__incl_org.svg | 54 +- ...al_neighbors_sum_function_8hpp_source.html | 4 +- _marching_8cpp_source.html | 12 +- _max_edge_length_invariant_8cpp_source.html | 2 +- _max_function_invariant_8cpp_source.html | 4 +- _max_function_invariant_8hpp_source.html | 6 +- _mesh_8cpp_source.html | 42 +- _mesh_8hpp_source.html | 1130 ++++++++-------- _mesh__attributes_8cpp_source.html | 563 ++++---- _mesh__construction_8cpp_source.html | 71 +- _mesh__hash_8cpp_source.html | 8 +- _mesh__multimesh_8cpp_source.html | 8 +- _mesh_attribute_handle_8cpp_source.html | 4 +- _mesh_attribute_handle_8hpp_source.html | 4 +- _mesh_attributes_8cpp_source.html | 343 ++--- _mesh_attributes_8hpp_source.html | 48 +- _mesh_operation_8cpp_source.html | 18 +- _mesh_operation_8hpp__incl.md5 | 2 +- _mesh_operation_8hpp__incl.svg | 40 +- _mesh_operation_8hpp__incl_org.svg | 40 +- _mesh_writer_8hpp_source.html | 4 +- _min_edge_length_invariant_8cpp_source.html | 2 +- ...ncident_valence_invariant_8cpp_source.html | 14 +- _msh_reader_8cpp_source.html | 4 +- ..._link_condition_invariant_8cpp_source.html | 4 +- _multi_mesh_manager_8cpp_source.html | 124 +- _multi_mesh_manager_8hpp__incl.md5 | 2 +- _multi_mesh_manager_8hpp__incl.svg | 32 +- _multi_mesh_manager_8hpp__incl_org.svg | 32 +- _multi_mesh_manager_8hpp_source.html | 8 +- ..._mesh_map_valid_invariant_8cpp_source.html | 4 +- ...i_mesh_topology_invariant_8cpp_source.html | 12 +- _mutable_accessor_8hpp__incl.md5 | 2 +- _mutable_accessor_8hpp__incl.svg | 56 +- _mutable_accessor_8hpp__incl_org.svg | 56 +- _mutable_accessor_8hxx__incl.md5 | 2 +- _mutable_accessor_8hxx__incl.svg | 56 +- _mutable_accessor_8hxx__incl_org.svg | 56 +- _new_attribute_strategy_8cpp_source.html | 4 +- _new_attribute_strategy_8hpp_source.html | 6 +- ...pse_to_interior_invariant_8cpp_source.html | 10 +- _operation_8cpp_source.html | 2 +- _operation_8hpp__incl.md5 | 2 +- _operation_8hpp__incl.svg | 50 +- _operation_8hpp__incl_org.svg | 50 +- _operation_8hpp_source.html | 4 +- _optimization_smoothing_8hpp__incl.md5 | 2 +- _optimization_smoothing_8hpp__incl.svg | 32 +- _optimization_smoothing_8hpp__incl_org.svg | 32 +- _paraview_writer_8cpp_source.html | 30 +- _paraview_writer_8hpp_source.html | 4 +- ...simplex_autodiff_function_8cpp_source.html | 6 +- ...simplex_autodiff_function_8hpp_source.html | 4 +- _per_simplex_function_8cpp_source.html | 6 +- _per_simplex_function_8hpp_source.html | 6 +- _point_mesh_8cpp_source.html | 54 +- _point_mesh_8hpp_source.html | 12 +- _position_map_a_m_i_p_s2_d_8cpp_source.html | 10 +- _primitive_8cpp_source.html | 30 +- _primitive_8hpp_source.html | 8 +- _primitive_type_8cpp.html | 9 +- _primitive_type_8cpp.js | 3 +- _primitive_type_8cpp_source.html | 48 +- _primitive_type_8hpp.html | 32 +- _primitive_type_8hpp.js | 18 +- _primitive_type_8hpp_source.html | 110 +- _project_operation_8cpp_source.html | 10 +- _project_operation_8hpp__incl.md5 | 2 +- _project_operation_8hpp__incl.svg | 38 +- _project_operation_8hpp__incl_org.svg | 38 +- _project_operation_8hpp_source.html | 6 +- _raw_simplex_8cpp_source.html | 12 +- _raw_simplex_collection_8cpp_source.html | 4 +- _raw_simplex_collection_8hpp_source.html | 4 +- _regular_space_8cpp_source.html | 36 +- _scheduler_8hpp__incl.md5 | 2 +- _scheduler_8hpp__incl.svg | 40 +- _scheduler_8hpp__incl_org.svg | 40 +- _simplex_8hpp_source.html | 28 +- _simplex_collection_8cpp_source.html | 8 +- _simplex_collection_8hpp_source.html | 8 +- _simplex_comparisons_8cpp_source.html | 14 +- _simplex_comparisons_8hpp_source.html | 10 +- _simplex_getter_8cpp__incl.md5 | 2 +- _simplex_getter_8cpp__incl.svg | 4 +- _simplex_getter_8cpp__incl_org.svg | 4 +- _simplex_getter_8cpp_source.html | 14 +- _simplex_getter_8hpp__incl.md5 | 2 +- _simplex_getter_8hpp__incl.svg | 56 +- _simplex_getter_8hpp__incl_org.svg | 56 +- _simplex_getter_8hpp_source.html | 4 +- _simplex_inversion_invariant_8cpp_source.html | 16 +- ...it_new_attribute_strategy_8cpp_source.html | 22 +- ...it_new_attribute_strategy_8hpp_source.html | 8 +- _split_new_value_applicator_8hpp_source.html | 10 +- _tag_intersection_8cpp_source.html | 16 +- _tag_intersection_8hpp_source.html | 6 +- _tet_cell_split_8cpp_source.html | 4 +- _tet_cell_split_8hpp_source.html | 6 +- _tet_edge_swap_8cpp_source.html | 8 +- _tet_edge_swap_8hpp_source.html | 6 +- _tet_face_swap_8cpp_source.html | 20 +- _tet_face_swap_8hpp_source.html | 6 +- _tet_mesh_8cpp_source.html | 122 +- _tet_mesh_8hpp_source.html | 28 +- _tet_mesh_operation_executor_8cpp_source.html | 56 +- _tet_mesh_operation_executor_8hpp_source.html | 4 +- ...logy_preserving_invariant_8cpp_source.html | 34 +- _todo_invariant_8cpp_source.html | 2 +- _tri_edge_swap_8cpp_source.html | 4 +- _tri_edge_swap_8hpp_source.html | 6 +- _tri_face_split_8cpp_source.html | 4 +- _tri_face_split_8hpp_source.html | 6 +- _tri_mesh_8cpp_source.html | 1083 +++++++-------- _tri_mesh_8hpp_source.html | 122 +- _tri_mesh_operation_executor_8cpp_source.html | 46 +- _tri_mesh_operation_executor_8hpp_source.html | 4 +- ...logy_preserving_invariant_8cpp_source.html | 20 +- _triangle_a_m_i_p_s_8cpp_source.html | 10 +- _triangle_fan_options_8cpp_source.html | 6 +- _tuple_accessor_8hpp__incl.md5 | 2 +- _tuple_accessor_8hpp__incl.svg | 56 +- _tuple_accessor_8hpp__incl_org.svg | 56 +- _tuple_accessor_8hpp_source.html | 4 +- _tuple_accessor_8hxx__incl.md5 | 2 +- _tuple_accessor_8hxx__incl.svg | 56 +- _tuple_accessor_8hxx__incl_org.svg | 56 +- _tuple_accessor_8hxx_source.html | 24 +- _tuple_tag_8cpp_source.html | 36 +- _typed_attribute_handle_8hpp_source.html | 10 +- ...on_multi_mesh_map_functor_8cpp_source.html | 40 +- ...ertex_multi_mesh_map_hash_8cpp_source.html | 34 +- ..._vertex_multi_mesh_map_hash_8hpp__incl.md5 | 2 +- ..._vertex_multi_mesh_map_hash_8hpp__incl.svg | 54 +- ...tex_multi_mesh_map_hash_8hpp__incl_org.svg | 54 +- ...nce_improvement_invariant_8cpp_source.html | 20 +- _vertex_laplacian_smooth_8cpp_source.html | 6 +- ...ngential_laplacian_smooth_8cpp_source.html | 18 +- ...e_new_attribute_topo_info_8hpp_source.html | 6 +- ...t_new_attribute_topo_info_8hpp_source.html | 10 +- ...esh_2local__switch__tuple_8cpp_source.html | 24 +- ...esh_2local__switch__tuple_8hpp_source.html | 4 +- ...gen_2local__switch__tuple_8cpp_source.html | 24 +- ...gen_2local__switch__tuple_8hpp_source.html | 4 +- ...esh_2local__switch__tuple_8cpp_source.html | 24 +- ...esh_2local__switch__tuple_8hpp_source.html | 4 +- ...esh_2local__switch__tuple_8hpp_source.html | 4 +- boundary_8cpp_source.html | 42 +- boundary_8hpp_source.html | 4 +- ...__with__preserved__coface_8cpp_source.html | 32 +- ...__with__preserved__coface_8hpp_source.html | 6 +- ...ry__with__preserved__face_8cpp_source.html | 52 +- ...ry__with__preserved__face_8hpp_source.html | 14 +- classwmtk_1_1_cell.html | 4 +- classwmtk_1_1_edge_mesh-members.html | 69 +- classwmtk_1_1_edge_mesh.html | 82 +- ...mesh_1_1_edge_mesh_operation_executor.html | 10 +- ...8f9df6b90e9a063e83d77141f0ccc76_cgraph.map | 2 +- ...8f9df6b90e9a063e83d77141f0ccc76_cgraph.md5 | 2 +- ...8f9df6b90e9a063e83d77141f0ccc76_cgraph.svg | 2 +- ...f6b90e9a063e83d77141f0ccc76_cgraph_org.svg | 2 +- ...b42aca716850f7017290140eef6d94e_cgraph.map | 2 +- ...b42aca716850f7017290140eef6d94e_cgraph.md5 | 2 +- ...b42aca716850f7017290140eef6d94e_cgraph.svg | 2 +- ...ca716850f7017290140eef6d94e_cgraph_org.svg | 2 +- ...bf6f960d630d1e3a79a09c71a43100f_cgraph.map | 2 +- ...bf6f960d630d1e3a79a09c71a43100f_cgraph.md5 | 2 +- ...bf6f960d630d1e3a79a09c71a43100f_cgraph.svg | 2 +- ...960d630d1e3a79a09c71a43100f_cgraph_org.svg | 2 +- ...b11a77971448cf4bc93efe610e80bb5_cgraph.map | 2 +- ...b11a77971448cf4bc93efe610e80bb5_cgraph.md5 | 2 +- ...b11a77971448cf4bc93efe610e80bb5_cgraph.svg | 2 +- ...77971448cf4bc93efe610e80bb5_cgraph_org.svg | 2 +- classwmtk_1_1_h_d_f5_reader.html | 8 +- ...4253eae6c0cdca26556f7dee93d7a7c_cgraph.map | 1 - ...4253eae6c0cdca26556f7dee93d7a7c_cgraph.md5 | 2 +- ...4253eae6c0cdca26556f7dee93d7a7c_cgraph.svg | 20 +- ...eae6c0cdca26556f7dee93d7a7c_cgraph_org.svg | 20 +- classwmtk_1_1_h_d_f5_writer.html | 4 +- classwmtk_1_1_max_edge_length_invariant.html | 2 +- classwmtk_1_1_mesh-members.html | 69 +- classwmtk_1_1_mesh.html | 421 +++--- classwmtk_1_1_mesh.js | 1 - ...5eaf6f3eeb78949f3b95c359cc6df68_cgraph.svg | 2 +- ...eaf6f3eeb78949f3b95c359cc6df68_icgraph.svg | 2 +- ...d7627098b83729f1060ec22677450cf_cgraph.map | 4 +- ...d7627098b83729f1060ec22677450cf_cgraph.md5 | 2 +- ...d7627098b83729f1060ec22677450cf_cgraph.svg | 4 +- ...7098b83729f1060ec22677450cf_cgraph_org.svg | 4 +- ...0dc60988327a1f0ace86051df4f3e65_cgraph.svg | 2 +- ...12e2b6207157042f792ca9b12601abf_cgraph.map | 2 +- ...12e2b6207157042f792ca9b12601abf_cgraph.md5 | 2 +- ...12e2b6207157042f792ca9b12601abf_cgraph.svg | 2 +- ...b6207157042f792ca9b12601abf_cgraph_org.svg | 2 +- ...6b0600a273bc261624633441e1497cb_cgraph.map | 4 - ...6b0600a273bc261624633441e1497cb_cgraph.md5 | 1 - ...6b0600a273bc261624633441e1497cb_cgraph.svg | 38 - ...e03bc39a1e568157c3e16c25904c365_cgraph.map | 2 +- ...e03bc39a1e568157c3e16c25904c365_cgraph.md5 | 2 +- ...e03bc39a1e568157c3e16c25904c365_cgraph.svg | 2 +- ...33e19ee5ddb037313fa7dbdb0e41771_cgraph.map | 98 +- ...33e19ee5ddb037313fa7dbdb0e41771_cgraph.md5 | 2 +- ...33e19ee5ddb037313fa7dbdb0e41771_cgraph.svg | 806 +++++------ ...9ee5ddb037313fa7dbdb0e41771_cgraph_org.svg | 806 +++++------ ...3e19ee5ddb037313fa7dbdb0e41771_icgraph.svg | 2 +- ...805489402321155d4a1f7023faaf3a_icgraph.svg | 2 +- ...793b1f71479e8b68632f21b32ec3175_cgraph.map | 2 +- ...793b1f71479e8b68632f21b32ec3175_cgraph.md5 | 2 +- ...793b1f71479e8b68632f21b32ec3175_cgraph.svg | 2 +- ...bb2f7ff22ab4aab437168c5962d6266_cgraph.svg | 2 +- ...e8ff83c4a5526a40d18bb9883c6c6c9_cgraph.map | 2 +- ...e8ff83c4a5526a40d18bb9883c6c6c9_cgraph.md5 | 2 +- ...e8ff83c4a5526a40d18bb9883c6c6c9_cgraph.svg | 2 +- ...faf39088ce02c2a2f208c762d6f2b52_cgraph.map | 3 +- ...faf39088ce02c2a2f208c762d6f2b52_cgraph.md5 | 2 +- ...faf39088ce02c2a2f208c762d6f2b52_cgraph.svg | 48 +- ...af39088ce02c2a2f208c762d6f2b52_icgraph.svg | 2 +- ...20345b64402fcc3b0a2432857606b7a_cgraph.map | 2 +- ...20345b64402fcc3b0a2432857606b7a_cgraph.md5 | 2 +- ...20345b64402fcc3b0a2432857606b7a_cgraph.svg | 2 +- ...5b64402fcc3b0a2432857606b7a_cgraph_org.svg | 2 +- ...58b1910b87752dc0e806742108bec4e_cgraph.map | 2 +- ...58b1910b87752dc0e806742108bec4e_cgraph.md5 | 2 +- ...58b1910b87752dc0e806742108bec4e_cgraph.svg | 4 +- ...910b87752dc0e806742108bec4e_cgraph_org.svg | 2 +- ...a590c0a2c7ce5f06703ce15cbf39548_cgraph.map | 2 +- ...a590c0a2c7ce5f06703ce15cbf39548_cgraph.md5 | 2 +- ...a590c0a2c7ce5f06703ce15cbf39548_cgraph.svg | 2 +- ...c0a2c7ce5f06703ce15cbf39548_cgraph_org.svg | 2 +- ...f76f66400fb4351468954fe0bf28154_cgraph.map | 2 +- ...f76f66400fb4351468954fe0bf28154_cgraph.md5 | 2 +- ...f76f66400fb4351468954fe0bf28154_cgraph.svg | 2 +- ...66400fb4351468954fe0bf28154_cgraph_org.svg | 2 +- ...165ceb4c2db2731df90e4ac100637d_icgraph.svg | 2 +- ...a10a23367f4d8804e0ac778475f02f_icgraph.svg | 2 +- ...a480b3f16ac2aadc9887c42748e239_icgraph.svg | 2 +- ...3d77f76d0adb7ae6fafee9db8b701b4_cgraph.svg | 2 +- ...6fd4d3656d2d3f21257842041ccebcf_cgraph.map | 2 +- ...6fd4d3656d2d3f21257842041ccebcf_cgraph.md5 | 2 +- ...6fd4d3656d2d3f21257842041ccebcf_cgraph.svg | 2 +- ...861740d52c82dbc451f131884a6791c_cgraph.map | 4 +- ...861740d52c82dbc451f131884a6791c_cgraph.md5 | 2 +- ...861740d52c82dbc451f131884a6791c_cgraph.svg | 4 +- ...40d52c82dbc451f131884a6791c_cgraph_org.svg | 4 +- ...8a7b7d592fdbf672f2c6c9653487ea_icgraph.svg | 2 +- ...93e47f5da1a44ca19eb2b1665506cce_cgraph.map | 2 +- ...93e47f5da1a44ca19eb2b1665506cce_cgraph.md5 | 2 +- ...93e47f5da1a44ca19eb2b1665506cce_cgraph.svg | 2 +- ...7f5da1a44ca19eb2b1665506cce_cgraph_org.svg | 2 +- ...da8bcf73599ceb286598d82dd38f9f9_cgraph.map | 2 +- ...da8bcf73599ceb286598d82dd38f9f9_cgraph.md5 | 2 +- ...da8bcf73599ceb286598d82dd38f9f9_cgraph.svg | 2 +- ...5a8a24158c4aa8580c57ba09f885f7_icgraph.svg | 2 +- ...326d46e931aebe5707255618d4a0b0_icgraph.svg | 2 +- ...77d8cd19421d1ce5959c8c0d3cb0b7e_cgraph.svg | 2 +- ...7d8cd19421d1ce5959c8c0d3cb0b7e_icgraph.svg | 2 +- ...f00438d0700358b160e310d69725c9_icgraph.svg | 2 +- ...c3435610b9ad07e2d0b7e11774ec83a_cgraph.map | 4 +- ...c3435610b9ad07e2d0b7e11774ec83a_cgraph.md5 | 2 +- ...c3435610b9ad07e2d0b7e11774ec83a_cgraph.svg | 4 +- ...5610b9ad07e2d0b7e11774ec83a_cgraph_org.svg | 4 +- ...5c88264301a97108b4c4789944b880_icgraph.map | 19 - ...5c88264301a97108b4c4789944b880_icgraph.md5 | 1 - ...5c88264301a97108b4c4789944b880_icgraph.svg | 367 ----- ...264301a97108b4c4789944b880_icgraph_org.svg | 279 ---- ...e12857f52985bd548a968a4c819659_icgraph.svg | 2 +- ...205d6addf4e76f000c70547253735f0_cgraph.map | 2 +- ...205d6addf4e76f000c70547253735f0_cgraph.md5 | 2 +- ...205d6addf4e76f000c70547253735f0_cgraph.svg | 4 +- ...6addf4e76f000c70547253735f0_cgraph_org.svg | 2 +- ...05d6addf4e76f000c70547253735f0_icgraph.svg | 2 +- ...303dff226282b38e9110fb6d1c4c853_cgraph.map | 4 +- ...303dff226282b38e9110fb6d1c4c853_cgraph.md5 | 2 +- ...303dff226282b38e9110fb6d1c4c853_cgraph.svg | 6 +- ...ff226282b38e9110fb6d1c4c853_cgraph_org.svg | 4 +- ...90cad0755b0052b0ca4502e401bcd3_icgraph.svg | 2 +- ...8e5c13a9c5368402ace7c326b4bb58_icgraph.svg | 2 +- ...61bda1e62667a0892f7f2e2af6f597a_cgraph.map | 2 +- ...61bda1e62667a0892f7f2e2af6f597a_cgraph.md5 | 2 +- ...61bda1e62667a0892f7f2e2af6f597a_cgraph.svg | 2 +- classwmtk_1_1_mesh_writer.html | 4 +- classwmtk_1_1_min_edge_length_invariant.html | 2 +- classwmtk_1_1_msh_reader.html | 2 +- ..._1_multi_mesh_edge_topology_invariant.html | 2 +- ...1_multi_mesh_link_condition_invariant.html | 2 +- classwmtk_1_1_multi_mesh_manager.html | 72 +- ...6c3aa0f1dc8a6e3462ad447053836cf_cgraph.map | 2 +- ...6c3aa0f1dc8a6e3462ad447053836cf_cgraph.md5 | 2 +- ...6c3aa0f1dc8a6e3462ad447053836cf_cgraph.svg | 2 +- ...a0f1dc8a6e3462ad447053836cf_cgraph_org.svg | 2 +- ...aad8ca50d303cadf32df9e9f6f2eae9_cgraph.map | 2 +- ...aad8ca50d303cadf32df9e9f6f2eae9_cgraph.md5 | 2 +- ...aad8ca50d303cadf32df9e9f6f2eae9_cgraph.svg | 2 +- ...ca50d303cadf32df9e9f6f2eae9_cgraph_org.svg | 2 +- ...f71707b6590c3cf2224513119fa4c89_cgraph.map | 2 +- ...f71707b6590c3cf2224513119fa4c89_cgraph.md5 | 2 +- ...f71707b6590c3cf2224513119fa4c89_cgraph.svg | 2 +- ...07b6590c3cf2224513119fa4c89_cgraph_org.svg | 2 +- ...241611f1d6e79bfb048162effeebd28_cgraph.map | 2 +- ...241611f1d6e79bfb048162effeebd28_cgraph.md5 | 2 +- ...241611f1d6e79bfb048162effeebd28_cgraph.svg | 2 +- ...11f1d6e79bfb048162effeebd28_cgraph_org.svg | 2 +- ...f75c13c6e1e4531f605e1cae19a86c0_cgraph.map | 4 +- ...f75c13c6e1e4531f605e1cae19a86c0_cgraph.md5 | 2 +- ...f75c13c6e1e4531f605e1cae19a86c0_cgraph.svg | 4 +- ...13c6e1e4531f605e1cae19a86c0_cgraph_org.svg | 4 +- ...a85ae5901f9c5b6a383bc072f182a57_cgraph.map | 2 +- ...a85ae5901f9c5b6a383bc072f182a57_cgraph.md5 | 2 +- ...a85ae5901f9c5b6a383bc072f182a57_cgraph.svg | 2 +- ...e5901f9c5b6a383bc072f182a57_cgraph_org.svg | 2 +- ...b976bb8988f1222287c54e10e4366de_cgraph.map | 2 +- ...b976bb8988f1222287c54e10e4366de_cgraph.md5 | 2 +- ...b976bb8988f1222287c54e10e4366de_cgraph.svg | 2 +- ...bb8988f1222287c54e10e4366de_cgraph_org.svg | 2 +- ...6ad95e6f65b0e38ce1de249158db6f3_cgraph.map | 47 +- ...6ad95e6f65b0e38ce1de249158db6f3_cgraph.md5 | 2 +- ...6ad95e6f65b0e38ce1de249158db6f3_cgraph.svg | 470 ++++--- ...5e6f65b0e38ce1de249158db6f3_cgraph_org.svg | 472 ++++--- ...tk_1_1_multi_mesh_map_valid_invariant.html | 2 +- classwmtk_1_1_point_mesh-members.html | 67 +- classwmtk_1_1_point_mesh.html | 72 +- ...323586140fbd128b9d52c3d6a6ccae8_cgraph.map | 2 +- ...323586140fbd128b9d52c3d6a6ccae8_cgraph.md5 | 2 +- ...323586140fbd128b9d52c3d6a6ccae8_cgraph.svg | 2 +- ...86140fbd128b9d52c3d6a6ccae8_cgraph_org.svg | 2 +- ...2a8d977bbf881485efb9843f5348918_cgraph.map | 2 +- ...2a8d977bbf881485efb9843f5348918_cgraph.md5 | 2 +- ...2a8d977bbf881485efb9843f5348918_cgraph.svg | 2 +- ...977bbf881485efb9843f5348918_cgraph_org.svg | 2 +- classwmtk_1_1_primitive.html | 22 +- ...swmtk_1_1_simplex_inversion_invariant.html | 2 +- classwmtk_1_1_tet_mesh-members.html | 77 +- classwmtk_1_1_tet_mesh.html | 90 +- ..._mesh_1_1_tet_mesh_operation_executor.html | 14 +- ...dbbc55e551845492a5befcccf9bc541_cgraph.map | 4 +- ...dbbc55e551845492a5befcccf9bc541_cgraph.md5 | 2 +- ...dbbc55e551845492a5befcccf9bc541_cgraph.svg | 4 +- ...55e551845492a5befcccf9bc541_cgraph_org.svg | 4 +- ...e496b934eb7e07ae7abaf7b5f8b7d5d_cgraph.map | 4 +- ...e496b934eb7e07ae7abaf7b5f8b7d5d_cgraph.md5 | 2 +- ...e496b934eb7e07ae7abaf7b5f8b7d5d_cgraph.svg | 4 +- ...b934eb7e07ae7abaf7b5f8b7d5d_cgraph_org.svg | 4 +- ...6e6f877419cd3489a5b223b5b8bb094_cgraph.map | 4 +- ...6e6f877419cd3489a5b223b5b8bb094_cgraph.md5 | 2 +- ...6e6f877419cd3489a5b223b5b8bb094_cgraph.svg | 4 +- ...877419cd3489a5b223b5b8bb094_cgraph_org.svg | 4 +- ...e78900d46e2ca46aa716eadb00892c1_cgraph.map | 2 +- ...e78900d46e2ca46aa716eadb00892c1_cgraph.md5 | 2 +- ...e78900d46e2ca46aa716eadb00892c1_cgraph.svg | 2 +- ...00d46e2ca46aa716eadb00892c1_cgraph_org.svg | 2 +- ...dafef0c67dc0d9b6f2aef827d638eb6_cgraph.map | 2 +- ...dafef0c67dc0d9b6f2aef827d638eb6_cgraph.md5 | 2 +- ...dafef0c67dc0d9b6f2aef827d638eb6_cgraph.svg | 2 +- ...f0c67dc0d9b6f2aef827d638eb6_cgraph_org.svg | 2 +- ...5ff78f32516c14f745a2860477f7114_cgraph.map | 2 +- ...5ff78f32516c14f745a2860477f7114_cgraph.md5 | 2 +- ...5ff78f32516c14f745a2860477f7114_cgraph.svg | 2 +- ...8f32516c14f745a2860477f7114_cgraph_org.svg | 2 +- ...1b2ec618edb4d478e36f0868a85d86e_cgraph.map | 4 +- ...1b2ec618edb4d478e36f0868a85d86e_cgraph.md5 | 2 +- ...1b2ec618edb4d478e36f0868a85d86e_cgraph.svg | 4 +- ...c618edb4d478e36f0868a85d86e_cgraph_org.svg | 4 +- ...d9f4016fdd79930e161da787889bdf7_cgraph.map | 4 +- ...d9f4016fdd79930e161da787889bdf7_cgraph.md5 | 2 +- ...d9f4016fdd79930e161da787889bdf7_cgraph.svg | 4 +- ...016fdd79930e161da787889bdf7_cgraph_org.svg | 4 +- ...eb060aa0a69f3ce5108fe199decc578_cgraph.map | 4 +- ...eb060aa0a69f3ce5108fe199decc578_cgraph.md5 | 2 +- ...eb060aa0a69f3ce5108fe199decc578_cgraph.svg | 4 +- ...0aa0a69f3ce5108fe199decc578_cgraph_org.svg | 4 +- ...8609916210858129ba39958a273e78e_cgraph.map | 2 +- ...8609916210858129ba39958a273e78e_cgraph.md5 | 2 +- ...8609916210858129ba39958a273e78e_cgraph.svg | 2 +- ...916210858129ba39958a273e78e_cgraph_org.svg | 2 +- ...d216046ac28a11f7d0fd07f9e090ba3_cgraph.map | 2 +- ...d216046ac28a11f7d0fd07f9e090ba3_cgraph.md5 | 2 +- ...d216046ac28a11f7d0fd07f9e090ba3_cgraph.svg | 2 +- ...046ac28a11f7d0fd07f9e090ba3_cgraph_org.svg | 2 +- ...e0e56365f9c2cb86588a9d7b1874203_cgraph.map | 2 +- ...e0e56365f9c2cb86588a9d7b1874203_cgraph.md5 | 2 +- ...e0e56365f9c2cb86588a9d7b1874203_cgraph.svg | 2 +- ...6365f9c2cb86588a9d7b1874203_cgraph_org.svg | 2 +- ...66e68dbc9ac6c9ecb34a8e023cb1ae2_cgraph.map | 2 +- ...66e68dbc9ac6c9ecb34a8e023cb1ae2_cgraph.md5 | 2 +- ...66e68dbc9ac6c9ecb34a8e023cb1ae2_cgraph.svg | 2 +- ...8dbc9ac6c9ecb34a8e023cb1ae2_cgraph_org.svg | 2 +- ...87b10e7c3a6956e37ebfa95da145d05_cgraph.map | 2 +- ...87b10e7c3a6956e37ebfa95da145d05_cgraph.md5 | 2 +- ...87b10e7c3a6956e37ebfa95da145d05_cgraph.svg | 2 +- ...0e7c3a6956e37ebfa95da145d05_cgraph_org.svg | 2 +- ...247e83a140cafd3d62e06508ba128c7_cgraph.map | 2 +- ...247e83a140cafd3d62e06508ba128c7_cgraph.md5 | 2 +- ...247e83a140cafd3d62e06508ba128c7_cgraph.svg | 2 +- ...83a140cafd3d62e06508ba128c7_cgraph_org.svg | 2 +- ...8b4b3182fb3778fa8da52ea4fa156b6_cgraph.map | 2 +- ...8b4b3182fb3778fa8da52ea4fa156b6_cgraph.md5 | 2 +- ...8b4b3182fb3778fa8da52ea4fa156b6_cgraph.svg | 2 +- ...3182fb3778fa8da52ea4fa156b6_cgraph_org.svg | 2 +- ...021ae8290eda4fbad7ab4b742072084_cgraph.map | 2 +- ...021ae8290eda4fbad7ab4b742072084_cgraph.md5 | 2 +- ...021ae8290eda4fbad7ab4b742072084_cgraph.svg | 2 +- ...e8290eda4fbad7ab4b742072084_cgraph_org.svg | 2 +- classwmtk_1_1_todo_invariant.html | 2 +- classwmtk_1_1_todo_larger_invariant.html | 2 +- classwmtk_1_1_todo_smaller_invariant.html | 2 +- classwmtk_1_1_tri_mesh-members.html | 87 +- classwmtk_1_1_tri_mesh.html | 287 ++-- classwmtk_1_1_tri_mesh.js | 11 +- ..._mesh_1_1_tri_mesh_operation_executor.html | 20 +- ...0c05de7f734bc8f9aa84518512ad5c7_cgraph.map | 4 +- ...0c05de7f734bc8f9aa84518512ad5c7_cgraph.md5 | 2 +- ...0c05de7f734bc8f9aa84518512ad5c7_cgraph.svg | 4 +- ...de7f734bc8f9aa84518512ad5c7_cgraph_org.svg | 4 +- ...7977fc07ce1f6618c8dd6e5cef42e6e_cgraph.map | 4 +- ...7977fc07ce1f6618c8dd6e5cef42e6e_cgraph.md5 | 2 +- ...7977fc07ce1f6618c8dd6e5cef42e6e_cgraph.svg | 4 +- ...fc07ce1f6618c8dd6e5cef42e6e_cgraph_org.svg | 4 +- ...9e847476da85795eee55301ff8c2a6e_cgraph.map | 2 +- ...9e847476da85795eee55301ff8c2a6e_cgraph.md5 | 2 +- ...9e847476da85795eee55301ff8c2a6e_cgraph.svg | 2 +- ...7476da85795eee55301ff8c2a6e_cgraph_org.svg | 2 +- ...9f4f801e8e99648fcad59e11e8595b4_cgraph.map | 4 +- ...9f4f801e8e99648fcad59e11e8595b4_cgraph.md5 | 2 +- ...9f4f801e8e99648fcad59e11e8595b4_cgraph.svg | 4 +- ...801e8e99648fcad59e11e8595b4_cgraph_org.svg | 4 +- ...98d9ebaf1507d842fb01db91e044644_cgraph.map | 2 +- ...98d9ebaf1507d842fb01db91e044644_cgraph.md5 | 2 +- ...98d9ebaf1507d842fb01db91e044644_cgraph.svg | 2 +- ...ebaf1507d842fb01db91e044644_cgraph_org.svg | 2 +- ...f3714246bbe461555e1d0cb78f4f791_cgraph.map | 2 +- ...f3714246bbe461555e1d0cb78f4f791_cgraph.md5 | 2 +- ...f3714246bbe461555e1d0cb78f4f791_cgraph.svg | 2 +- ...4246bbe461555e1d0cb78f4f791_cgraph_org.svg | 2 +- ...13ae302287fb113bae39b8ec0ee3937_cgraph.map | 2 +- ...13ae302287fb113bae39b8ec0ee3937_cgraph.md5 | 2 +- ...13ae302287fb113bae39b8ec0ee3937_cgraph.svg | 2 +- ...302287fb113bae39b8ec0ee3937_cgraph_org.svg | 2 +- ...3fe826d80c8be74c3b0589f5818b279_cgraph.map | 2 +- ...3fe826d80c8be74c3b0589f5818b279_cgraph.md5 | 2 +- ...3fe826d80c8be74c3b0589f5818b279_cgraph.svg | 2 +- ...26d80c8be74c3b0589f5818b279_cgraph_org.svg | 2 +- ...80d7bf51ebd7a8c096e904867bd9a41_cgraph.map | 2 +- ...80d7bf51ebd7a8c096e904867bd9a41_cgraph.md5 | 2 +- ...80d7bf51ebd7a8c096e904867bd9a41_cgraph.svg | 2 +- ...bf51ebd7a8c096e904867bd9a41_cgraph_org.svg | 2 +- ...68edb47957a4207ffb2e40f2f3686a8_cgraph.map | 2 +- ...68edb47957a4207ffb2e40f2f3686a8_cgraph.md5 | 2 +- ...68edb47957a4207ffb2e40f2f3686a8_cgraph.svg | 2 +- ...b47957a4207ffb2e40f2f3686a8_cgraph_org.svg | 2 +- ...cb18c9452e58741b01d335ea8339e52_cgraph.map | 2 +- ...cb18c9452e58741b01d335ea8339e52_cgraph.md5 | 2 +- ...cb18c9452e58741b01d335ea8339e52_cgraph.svg | 2 +- ...c9452e58741b01d335ea8339e52_cgraph_org.svg | 2 +- ...d8cb26ee1436707bf26d811aa5e12c6_cgraph.map | 2 +- ...d8cb26ee1436707bf26d811aa5e12c6_cgraph.md5 | 2 +- ...d8cb26ee1436707bf26d811aa5e12c6_cgraph.svg | 2 +- ...26ee1436707bf26d811aa5e12c6_cgraph_org.svg | 2 +- ...7c6200d5364ccf6a23fc0223dbd6421_cgraph.map | 2 +- ...7c6200d5364ccf6a23fc0223dbd6421_cgraph.md5 | 2 +- ...7c6200d5364ccf6a23fc0223dbd6421_cgraph.svg | 2 +- ...00d5364ccf6a23fc0223dbd6421_cgraph_org.svg | 2 +- classwmtk_1_1_tuple.html | 8 +- classwmtk_1_1attribute_1_1_accessor_base.html | 4 +- ...tk_1_1attribute_1_1_attribute-members.html | 58 +- classwmtk_1_1attribute_1_1_attribute.html | 146 +- classwmtk_1_1attribute_1_1_attribute.js | 2 - ...wmtk_1_1attribute_1_1_attribute_cache.html | 4 +- ...mtk_1_1attribute_1_1_attribute_handle.html | 2 +- ...tk_1_1attribute_1_1_attribute_manager.html | 52 +- ...c50e59bf4630516998604f0ce7a2499_cgraph.map | 4 +- ...c50e59bf4630516998604f0ce7a2499_cgraph.md5 | 2 +- ...c50e59bf4630516998604f0ce7a2499_cgraph.svg | 4 +- ...1dff643c4ac4d7967bc0ae4e631c708_cgraph.map | 2 +- ...1dff643c4ac4d7967bc0ae4e631c708_cgraph.md5 | 2 +- ...1dff643c4ac4d7967bc0ae4e631c708_cgraph.svg | 2 +- ...fc9300968be9c101a09922863566c34_cgraph.map | 2 +- ...fc9300968be9c101a09922863566c34_cgraph.md5 | 2 +- ...fc9300968be9c101a09922863566c34_cgraph.svg | 2 +- ...c4ec8337ed84d995fb0fe90059a6f8b_cgraph.map | 2 +- ...c4ec8337ed84d995fb0fe90059a6f8b_cgraph.md5 | 2 +- ...c4ec8337ed84d995fb0fe90059a6f8b_cgraph.svg | 2 +- ...mtk_1_1attribute_1_1_caching_accessor.html | 6 +- ...swmtk_1_1attribute_1_1_const_accessor.html | 6 +- ..._1attribute_1_1_mesh_attribute_handle.html | 10 +- ...attribute_1_1_mesh_attributes-members.html | 4 +- ...wmtk_1_1attribute_1_1_mesh_attributes.html | 58 +- classwmtk_1_1attribute_1_1_mesh_attributes.js | 2 +- ...0a9808a1663fa7dacf4fce5ceaf38d9_cgraph.map | 3 +- ...0a9808a1663fa7dacf4fce5ceaf38d9_cgraph.md5 | 2 +- ...0a9808a1663fa7dacf4fce5ceaf38d9_cgraph.svg | 52 +- ...08a1663fa7dacf4fce5ceaf38d9_cgraph_org.svg | 54 +- ...mtk_1_1attribute_1_1_mutable_accessor.html | 6 +- ...swmtk_1_1attribute_1_1_tuple_accessor.html | 6 +- ...1attribute_1_1_typed_attribute_handle.html | 20 +- ...swmtk_1_1components_1_1_tag_attribute.html | 8 +- ...tk_1_1components_1_1_tag_intersection.html | 2 +- ...fa5965bec539d0db6775dfd0a9177d7_cgraph.map | 4 +- ...fa5965bec539d0db6775dfd0a9177d7_cgraph.md5 | 2 +- ...fa5965bec539d0db6775dfd0a9177d7_cgraph.svg | 4 +- ...65bec539d0db6775dfd0a9177d7_cgraph_org.svg | 4 +- ...089317765f51a727fdde846aad4c276_cgraph.map | 4 +- ...089317765f51a727fdde846aad4c276_cgraph.md5 | 2 +- ...089317765f51a727fdde846aad4c276_cgraph.svg | 4 +- ...17765f51a727fdde846aad4c276_cgraph_org.svg | 4 +- ..._1components_1_1internal_1_1_marching.html | 2 +- ...e2d1de9a85f917baa06fd06feffe8f3_cgraph.map | 67 +- ...e2d1de9a85f917baa06fd06feffe8f3_cgraph.md5 | 2 +- ...e2d1de9a85f917baa06fd06feffe8f3_cgraph.svg | 618 +++++---- ...de9a85f917baa06fd06feffe8f3_cgraph_org.svg | 620 +++++---- ...ponents_1_1internal_1_1_regular_space.html | 2 +- ...9adef544fff10ba9257d128fd13393c_cgraph.map | 74 +- ...9adef544fff10ba9257d128fd13393c_cgraph.md5 | 2 +- ...9adef544fff10ba9257d128fd13393c_cgraph.svg | 732 +++++----- ...f544fff10ba9257d128fd13393c_cgraph_org.svg | 734 +++++----- ...ponents_1_1internal_1_1_tag_attribute.html | 12 +- classwmtk_1_1function_1_1_a_m_i_p_s.html | 14 +- ...6709a007132c33f85efe0b4abd16b93_cgraph.map | 4 +- ...6709a007132c33f85efe0b4abd16b93_cgraph.md5 | 2 +- ...6709a007132c33f85efe0b4abd16b93_cgraph.svg | 4 +- ...a007132c33f85efe0b4abd16b93_cgraph_org.svg | 4 +- ...k_1_1function_1_1_edge_valence_energy.html | 8 +- ...25dd9d07e1f9d18c92c7a3395f271c1_cgraph.map | 4 +- ...25dd9d07e1f9d18c92c7a3395f271c1_cgraph.md5 | 2 +- ...25dd9d07e1f9d18c92c7a3395f271c1_cgraph.svg | 4 +- ...9d07e1f9d18c92c7a3395f271c1_cgraph_org.svg | 4 +- classwmtk_1_1function_1_1_function.html | 6 +- ...tion_1_1_local_neighbors_sum_function.html | 6 +- ...b81383595fa81fb270266bb6cee71da_cgraph.map | 4 +- ...b81383595fa81fb270266bb6cee71da_cgraph.md5 | 2 +- ...b81383595fa81fb270266bb6cee71da_cgraph.svg | 4 +- ...83595fa81fb270266bb6cee71da_cgraph_org.svg | 4 +- ...5bfd84c9f092364f449605199731442_cgraph.map | 4 +- ...5bfd84c9f092364f449605199731442_cgraph.md5 | 2 +- ...5bfd84c9f092364f449605199731442_cgraph.svg | 4 +- ...84c9f092364f449605199731442_cgraph_org.svg | 4 +- ...f4a1942d320c2d613d1af447738f1ea_cgraph.map | 4 +- ...f4a1942d320c2d613d1af447738f1ea_cgraph.md5 | 2 +- ...f4a1942d320c2d613d1af447738f1ea_cgraph.svg | 4 +- ...942d320c2d613d1af447738f1ea_cgraph_org.svg | 4 +- ...a8a406910f491899eaaa0c8e5b400c2_cgraph.map | 4 +- ...a8a406910f491899eaaa0c8e5b400c2_cgraph.md5 | 2 +- ...a8a406910f491899eaaa0c8e5b400c2_cgraph.svg | 4 +- ...06910f491899eaaa0c8e5b400c2_cgraph_org.svg | 4 +- ...ion_1_1_per_simplex_autodiff_function.html | 10 +- ...8302c72d52af67baf819ca0ffff24f6_cgraph.map | 4 +- ...8302c72d52af67baf819ca0ffff24f6_cgraph.md5 | 2 +- ...8302c72d52af67baf819ca0ffff24f6_cgraph.svg | 4 +- ...c72d52af67baf819ca0ffff24f6_cgraph_org.svg | 4 +- ..._1_1function_1_1_per_simplex_function.html | 10 +- ...unction_1_1_position_map_a_m_i_p_s2_d.html | 8 +- ...tk_1_1function_1_1_triangle_a_m_i_p_s.html | 10 +- ...daf8df87a2ab69f855d5b120e36d47f_cgraph.map | 2 +- ...daf8df87a2ab69f855d5b120e36d47f_cgraph.md5 | 2 +- ...daf8df87a2ab69f855d5b120e36d47f_cgraph.svg | 2 +- ...invariants_1_1_edge_valence_invariant.html | 2 +- ..._1_1invariants_1_1_envelope_invariant.html | 6 +- ...d834a753526ea4996f7a9aa5b078f45_cgraph.map | 4 +- ...d834a753526ea4996f7a9aa5b078f45_cgraph.md5 | 2 +- ...d834a753526ea4996f7a9aa5b078f45_cgraph.svg | 4 +- ...a753526ea4996f7a9aa5b078f45_cgraph_org.svg | 4 +- ...e365106ba7157cfda150a5275d7ec1a_cgraph.map | 4 +- ...e365106ba7157cfda150a5275d7ec1a_cgraph.md5 | 2 +- ...e365106ba7157cfda150a5275d7ec1a_cgraph.svg | 4 +- ...106ba7157cfda150a5275d7ec1a_cgraph_org.svg | 4 +- ...2004d5b337cab1a2274c74ddc046a5c_cgraph.map | 4 +- ...2004d5b337cab1a2274c74ddc046a5c_cgraph.md5 | 2 +- ...2004d5b337cab1a2274c74ddc046a5c_cgraph.svg | 4 +- ...d5b337cab1a2274c74ddc046a5c_cgraph_org.svg | 4 +- ...aada85b99222a617fc070aff83a6bd2_cgraph.map | 4 +- ...aada85b99222a617fc070aff83a6bd2_cgraph.md5 | 2 +- ...aada85b99222a617fc070aff83a6bd2_cgraph.svg | 4 +- ...85b99222a617fc070aff83a6bd2_cgraph_org.svg | 4 +- ..._1_1invariants_1_1_function_invariant.html | 8 +- ...nvariants_1_1_interior_edge_invariant.html | 4 +- ...riants_1_1_interior_simplex_invariant.html | 8 +- ...ariants_1_1_interior_vertex_invariant.html | 4 +- ...invariants_1_1_max_function_invariant.html | 8 +- ...ts_1_1_min_incident_valence_invariant.html | 6 +- ...3c779db7485cb3e628da2c6162af6b1_cgraph.map | 4 +- ...3c779db7485cb3e628da2c6162af6b1_cgraph.md5 | 2 +- ...3c779db7485cb3e628da2c6162af6b1_cgraph.svg | 4 +- ...9db7485cb3e628da2c6162af6b1_cgraph_org.svg | 4 +- ...5aa725e6ae913b914734b6b4d084a7b_cgraph.map | 4 +- ...5aa725e6ae913b914734b6b4d084a7b_cgraph.md5 | 2 +- ...5aa725e6ae913b914734b6b4d084a7b_cgraph.svg | 4 +- ...25e6ae913b914734b6b4d084a7b_cgraph_org.svg | 4 +- ...6763a63b94889f8e22cd9c705c84110_cgraph.map | 4 +- ...6763a63b94889f8e22cd9c705c84110_cgraph.md5 | 2 +- ...6763a63b94889f8e22cd9c705c84110_cgraph.svg | 4 +- ...a63b94889f8e22cd9c705c84110_cgraph_org.svg | 4 +- ...undary_collapse_to_interior_invariant.html | 2 +- ...ructure_topology_preserving_invariant.html | 2 +- ...0e554417dfffcaedce3a167b351173b_cgraph.map | 4 +- ...0e554417dfffcaedce3a167b351173b_cgraph.md5 | 2 +- ...0e554417dfffcaedce3a167b351173b_cgraph.svg | 4 +- ...4417dfffcaedce3a167b351173b_cgraph_org.svg | 4 +- ...ructure_topology_preserving_invariant.html | 2 +- ...bafc4a52c4d8cbfadee5edd24cbe01f_cgraph.map | 4 +- ...bafc4a52c4d8cbfadee5edd24cbe01f_cgraph.md5 | 2 +- ...bafc4a52c4d8cbfadee5edd24cbe01f_cgraph.svg | 4 +- ...4a52c4d8cbfadee5edd24cbe01f_cgraph_org.svg | 4 +- ...nts_1_1_valence_improvement_invariant.html | 2 +- ...2f6805f4a5bfc3aba4f0c2169e03a99_cgraph.map | 4 +- ...2f6805f4a5bfc3aba4f0c2169e03a99_cgraph.md5 | 2 +- ...2f6805f4a5bfc3aba4f0c2169e03a99_cgraph.svg | 4 +- ...05f4a5bfc3aba4f0c2169e03a99_cgraph_org.svg | 4 +- classwmtk_1_1io_1_1_paraview_writer.html | 4 +- ...mtk_1_1multimesh_1_1_boundary_checker.html | 4 +- ..._1_collapse_new_value_applicator_base.html | 20 +- ...sh_1_1utils_1_1internal_1_1_tuple_tag.html | 14 +- ...6f9d0aa5d7d0de388e17b239faab649_cgraph.map | 2 +- ...6f9d0aa5d7d0de388e17b239faab649_cgraph.md5 | 2 +- ...6f9d0aa5d7d0de388e17b239faab649_cgraph.svg | 2 +- ...0aa5d7d0de388e17b239faab649_cgraph_org.svg | 2 +- ...9f54c784fb3d50bba75eb8d5db6ed8a_cgraph.map | 84 +- ...9f54c784fb3d50bba75eb8d5db6ed8a_cgraph.md5 | 2 +- ...9f54c784fb3d50bba75eb8d5db6ed8a_cgraph.svg | 602 ++++----- ...c784fb3d50bba75eb8d5db6ed8a_cgraph_org.svg | 604 ++++----- ...tions_1_1_attribute_transfer_strategy.html | 6 +- ..._1_1_attribute_transfer_strategy_base.html | 8 +- ...883c6416f61c4ee06588a86c3b8d731_cgraph.map | 4 +- ...883c6416f61c4ee06588a86c3b8d731_cgraph.md5 | 2 +- ...883c6416f61c4ee06588a86c3b8d731_cgraph.svg | 4 +- ...6416f61c4ee06588a86c3b8d731_cgraph_org.svg | 4 +- ...5e03221c4b6b49e1892ed464d84c0cd_cgraph.map | 4 +- ...5e03221c4b6b49e1892ed464d84c0cd_cgraph.md5 | 2 +- ...5e03221c4b6b49e1892ed464d84c0cd_cgraph.svg | 4 +- ...221c4b6b49e1892ed464d84c0cd_cgraph_org.svg | 4 +- ...k_1_1operations_1_1_attributes_update.html | 6 +- ...s_1_1_attributes_update_with_function.html | 2 +- ..._base_collapse_new_attribute_strategy.html | 4 +- ...1_1_base_split_new_attribute_strategy.html | 4 +- ...s_1_1_collapse_new_attribute_strategy.html | 12 +- ...9ea0904446e71447fd073a3ecb3f70f_cgraph.map | 4 +- ...9ea0904446e71447fd073a3ecb3f70f_cgraph.md5 | 2 +- ...9ea0904446e71447fd073a3ecb3f70f_cgraph.svg | 4 +- ...904446e71447fd073a3ecb3f70f_cgraph_org.svg | 4 +- ..._1_1_collapse_new_attribute_topo_info.html | 8 +- ...swmtk_1_1operations_1_1_edge_collapse.html | 18 +- ...4450fa42ff00ebaba65ddca6e94c605_cgraph.map | 2 +- ...4450fa42ff00ebaba65ddca6e94c605_cgraph.md5 | 2 +- ...4450fa42ff00ebaba65ddca6e94c605_cgraph.svg | 2 +- ...fa42ff00ebaba65ddca6e94c605_cgraph_org.svg | 2 +- ...1_1operations_1_1_edge_operation_data.html | 4 +- classwmtk_1_1operations_1_1_edge_split.html | 10 +- ...1bb31c49a0200610f79af9a5253a11d_cgraph.map | 2 +- ...1bb31c49a0200610f79af9a5253a11d_cgraph.md5 | 2 +- ...1bb31c49a0200610f79af9a5253a11d_cgraph.svg | 2 +- ...1c49a0200610f79af9a5253a11d_cgraph_org.svg | 2 +- ...66a26fdf7084859e3add2ee5caedc9e_cgraph.map | 2 +- ...66a26fdf7084859e3add2ee5caedc9e_cgraph.md5 | 2 +- ...66a26fdf7084859e3add2ee5caedc9e_cgraph.svg | 2 +- ...6fdf7084859e3add2ee5caedc9e_cgraph_org.svg | 2 +- ...wmtk_1_1operations_1_1_mesh_operation.html | 6 +- ...operations_1_1_new_attribute_strategy.html | 8 +- classwmtk_1_1operations_1_1_operation.html | 6 +- ...c6426d34b54642aacb28e7cf93e328f_cgraph.map | 4 +- ...c6426d34b54642aacb28e7cf93e328f_cgraph.md5 | 2 +- ...c6426d34b54642aacb28e7cf93e328f_cgraph.svg | 4 +- ...6d34b54642aacb28e7cf93e328f_cgraph_org.svg | 4 +- ...181d255eb0ef5297646e0dc9dc817a7_cgraph.map | 4 +- ...181d255eb0ef5297646e0dc9dc817a7_cgraph.md5 | 2 +- ...181d255eb0ef5297646e0dc9dc817a7_cgraph.svg | 4 +- ...255eb0ef5297646e0dc9dc817a7_cgraph_org.svg | 4 +- ...operations_1_1_optimization_smoothing.html | 2 +- ..._1_single_attribute_transfer_strategy.html | 8 +- ...5bf8a5fdf8527d9843f3f578c646b41_cgraph.map | 4 +- ...5bf8a5fdf8527d9843f3f578c646b41_cgraph.md5 | 2 +- ...5bf8a5fdf8527d9843f3f578c646b41_cgraph.svg | 4 +- ...a5fdf8527d9843f3f578c646b41_cgraph_org.svg | 4 +- ...ions_1_1_split_new_attribute_strategy.html | 16 +- ...a79ef8fa40d881a8d205a701e8ca108_cgraph.map | 4 +- ...a79ef8fa40d881a8d205a701e8ca108_cgraph.md5 | 2 +- ...a79ef8fa40d881a8d205a701e8ca108_cgraph.svg | 4 +- ...f8fa40d881a8d205a701e8ca108_cgraph_org.svg | 4 +- ...ons_1_1_split_new_attribute_topo_info.html | 16 +- ...perations_1_1_vertex_laplacian_smooth.html | 2 +- ...2b68bed2c372520db2e828fcb226797_cgraph.map | 4 +- ...2b68bed2c372520db2e828fcb226797_cgraph.md5 | 2 +- ...2b68bed2c372520db2e828fcb226797_cgraph.svg | 4 +- ...bed2c372520db2e828fcb226797_cgraph_org.svg | 4 +- ..._1_vertex_tangential_laplacian_smooth.html | 2 +- ...bdafc81c42b34cdafe1b229217d819c_cgraph.map | 4 +- ...bdafc81c42b34cdafe1b229217d819c_cgraph.md5 | 2 +- ...bdafc81c42b34cdafe1b229217d819c_cgraph.svg | 4 +- ...c81c42b34cdafe1b229217d819c_cgraph_org.svg | 4 +- ...ns_1_1composite_1_1_project_operation.html | 12 +- ...c3430d0d89ce5c6d4e578fa42dc4802_cgraph.map | 4 +- ...c3430d0d89ce5c6d4e578fa42dc4802_cgraph.md5 | 2 +- ...c3430d0d89ce5c6d4e578fa42dc4802_cgraph.svg | 4 +- ...0d0d89ce5c6d4e578fa42dc4802_cgraph_org.svg | 4 +- ...tions_1_1composite_1_1_tet_cell_split.html | 8 +- ...ations_1_1composite_1_1_tet_edge_swap.html | 8 +- ...d043bd04d267b27038ff4e824aed8e0_cgraph.map | 4 +- ...d043bd04d267b27038ff4e824aed8e0_cgraph.md5 | 2 +- ...d043bd04d267b27038ff4e824aed8e0_cgraph.svg | 4 +- ...bd04d267b27038ff4e824aed8e0_cgraph_org.svg | 4 +- ...ations_1_1composite_1_1_tet_face_swap.html | 8 +- ...ations_1_1composite_1_1_tri_edge_swap.html | 8 +- ...tions_1_1composite_1_1_tri_face_split.html | 8 +- ..._1_1_collapse_new_attribute_topo_info.html | 16 +- ...1c7178dc84390c7c693f4294a8f0f26_cgraph.map | 2 +- ...1c7178dc84390c7c693f4294a8f0f26_cgraph.md5 | 2 +- ...1c7178dc84390c7c693f4294a8f0f26_cgraph.svg | 2 +- ...78dc84390c7c693f4294a8f0f26_cgraph_org.svg | 2 +- ...f72aaa53a565d5c223fca07dca8a197_cgraph.map | 2 +- ...f72aaa53a565d5c223fca07dca8a197_cgraph.md5 | 2 +- ...f72aaa53a565d5c223fca07dca8a197_cgraph.svg | 2 +- ...1_1edge__mesh_1_1_edge_operation_data.html | 6 +- ...esh_1_1_split_new_attribute_topo_info.html | 32 +- ...24492d0092baef25460e901debcfc6d_cgraph.map | 2 +- ...24492d0092baef25460e901debcfc6d_cgraph.md5 | 2 +- ...24492d0092baef25460e901debcfc6d_cgraph.svg | 2 +- ...bd34f12028f99124c2af03e5e394fc7_cgraph.map | 2 +- ...bd34f12028f99124c2af03e5e394fc7_cgraph.md5 | 2 +- ...bd34f12028f99124c2af03e5e394fc7_cgraph.svg | 2 +- ...d406c5b3e9d175a141559eba809f818_cgraph.map | 2 +- ...d406c5b3e9d175a141559eba809f818_cgraph.md5 | 2 +- ...d406c5b3e9d175a141559eba809f818_cgraph.svg | 2 +- ...c5b3e9d175a141559eba809f818_cgraph_org.svg | 2 +- ...e9e1fb7ca8656fb98295b118a54b909_cgraph.map | 2 +- ...e9e1fb7ca8656fb98295b118a54b909_cgraph.md5 | 2 +- ...e9e1fb7ca8656fb98295b118a54b909_cgraph.svg | 2 +- ...fb7ca8656fb98295b118a54b909_cgraph_org.svg | 2 +- ..._1_1_collapse_new_attribute_topo_info.html | 16 +- ...f0532f826f70f51e8b5a9a2275e426b_cgraph.map | 2 +- ...f0532f826f70f51e8b5a9a2275e426b_cgraph.md5 | 2 +- ...f0532f826f70f51e8b5a9a2275e426b_cgraph.svg | 2 +- ...2f826f70f51e8b5a9a2275e426b_cgraph_org.svg | 2 +- ...519b935e0b84c861d43e962e07e196f_cgraph.map | 2 +- ...519b935e0b84c861d43e962e07e196f_cgraph.md5 | 2 +- ...519b935e0b84c861d43e962e07e196f_cgraph.svg | 2 +- ...935e0b84c861d43e962e07e196f_cgraph_org.svg | 2 +- ..._1_1tet__mesh_1_1_edge_operation_data.html | 22 +- ...esh_1_1_split_new_attribute_topo_info.html | 32 +- ...49188cd4bedd0d453c4222ebacfc809_cgraph.map | 2 +- ...49188cd4bedd0d453c4222ebacfc809_cgraph.md5 | 2 +- ...49188cd4bedd0d453c4222ebacfc809_cgraph.svg | 2 +- ...8cd4bedd0d453c4222ebacfc809_cgraph_org.svg | 2 +- ...9bd25c4ffb57ea07683a822dc5aae05_cgraph.map | 2 +- ...9bd25c4ffb57ea07683a822dc5aae05_cgraph.md5 | 2 +- ...9bd25c4ffb57ea07683a822dc5aae05_cgraph.svg | 2 +- ...5c4ffb57ea07683a822dc5aae05_cgraph_org.svg | 2 +- ...9accab561eaf9d919c5a97e18a5b25d_cgraph.map | 2 +- ...9accab561eaf9d919c5a97e18a5b25d_cgraph.md5 | 2 +- ...9accab561eaf9d919c5a97e18a5b25d_cgraph.svg | 2 +- ...ab561eaf9d919c5a97e18a5b25d_cgraph_org.svg | 2 +- ...22dfc9e2b57708643a3cb5c8aa52cec_cgraph.map | 2 +- ...22dfc9e2b57708643a3cb5c8aa52cec_cgraph.md5 | 2 +- ...22dfc9e2b57708643a3cb5c8aa52cec_cgraph.svg | 2 +- ...c9e2b57708643a3cb5c8aa52cec_cgraph_org.svg | 2 +- ..._1_1_collapse_new_attribute_topo_info.html | 16 +- ...f79b8bd619b631be623472c2934b91a_cgraph.map | 2 +- ...f79b8bd619b631be623472c2934b91a_cgraph.md5 | 2 +- ...f79b8bd619b631be623472c2934b91a_cgraph.svg | 2 +- ...8bd619b631be623472c2934b91a_cgraph_org.svg | 2 +- ...62f4f6e69a6bb038ae1cfd3021e8f4a_cgraph.map | 2 +- ...62f4f6e69a6bb038ae1cfd3021e8f4a_cgraph.md5 | 2 +- ...62f4f6e69a6bb038ae1cfd3021e8f4a_cgraph.svg | 2 +- ...f6e69a6bb038ae1cfd3021e8f4a_cgraph_org.svg | 2 +- ..._1_1tri__mesh_1_1_edge_operation_data.html | 14 +- ...de449107fdbb8d53b331d0071109a33_cgraph.map | 2 +- ...de449107fdbb8d53b331d0071109a33_cgraph.md5 | 2 +- ...de449107fdbb8d53b331d0071109a33_cgraph.svg | 2 +- ...9107fdbb8d53b331d0071109a33_cgraph_org.svg | 2 +- ...esh_1_1_split_new_attribute_topo_info.html | 32 +- ...102f7ae1b4f12af63b28c0b4494e9d8_cgraph.map | 2 +- ...102f7ae1b4f12af63b28c0b4494e9d8_cgraph.md5 | 2 +- ...102f7ae1b4f12af63b28c0b4494e9d8_cgraph.svg | 2 +- ...7ae1b4f12af63b28c0b4494e9d8_cgraph_org.svg | 2 +- ...f44117bceeaae70d0c4b87f7db7af0a_cgraph.map | 2 +- ...f44117bceeaae70d0c4b87f7db7af0a_cgraph.md5 | 2 +- ...f44117bceeaae70d0c4b87f7db7af0a_cgraph.svg | 2 +- ...17bceeaae70d0c4b87f7db7af0a_cgraph_org.svg | 2 +- ...54b472afe744483b4476fa05b3315dd_cgraph.map | 2 +- ...54b472afe744483b4476fa05b3315dd_cgraph.md5 | 2 +- ...54b472afe744483b4476fa05b3315dd_cgraph.svg | 2 +- ...72afe744483b4476fa05b3315dd_cgraph_org.svg | 2 +- ...a998ed023420733e2adcd6c482e1e20_cgraph.map | 2 +- ...a998ed023420733e2adcd6c482e1e20_cgraph.md5 | 2 +- ...a998ed023420733e2adcd6c482e1e20_cgraph.svg | 2 +- ...ed023420733e2adcd6c482e1e20_cgraph_org.svg | 2 +- ...9f0ca902b9ffcd615e71f6f1b005a84_cgraph.map | 4 +- ...9f0ca902b9ffcd615e71f6f1b005a84_cgraph.md5 | 2 +- ...9f0ca902b9ffcd615e71f6f1b005a84_cgraph.svg | 4 +- ...a902b9ffcd615e71f6f1b005a84_cgraph_org.svg | 4 +- ...010a058e1bd67dbd1019342c0ac8c7d_cgraph.map | 2 +- ...010a058e1bd67dbd1019342c0ac8c7d_cgraph.md5 | 2 +- ...010a058e1bd67dbd1019342c0ac8c7d_cgraph.svg | 2 +- ...058e1bd67dbd1019342c0ac8c7d_cgraph_org.svg | 2 +- ...edge_operation_multi_mesh_map_functor.html | 16 +- ...7611fefa85bea3d1858ca385b0f350a_cgraph.map | 2 +- ...7611fefa85bea3d1858ca385b0f350a_cgraph.md5 | 2 +- ...7611fefa85bea3d1858ca385b0f350a_cgraph.svg | 2 +- ...fefa85bea3d1858ca385b0f350a_cgraph_org.svg | 2 +- ...f3a220b85044a73d43a4c124d099bbc_cgraph.map | 2 +- ...f3a220b85044a73d43a4c124d099bbc_cgraph.md5 | 2 +- ...f3a220b85044a73d43a4c124d099bbc_cgraph.svg | 2 +- ...20b85044a73d43a4c124d099bbc_cgraph_org.svg | 2 +- ...fd40fcd5b842c963ae1511a255ba646_cgraph.map | 2 +- ...fd40fcd5b842c963ae1511a255ba646_cgraph.md5 | 2 +- ...fd40fcd5b842c963ae1511a255ba646_cgraph.svg | 2 +- ...fcd5b842c963ae1511a255ba646_cgraph_org.svg | 2 +- classwmtk_1_1simplex_1_1_raw_simplex.html | 6 +- ...1_1simplex_1_1_raw_simplex_collection.html | 4 +- classwmtk_1_1simplex_1_1_simplex.html | 24 +- ...591463052d439ab3d0108e226c0ee2e_cgraph.map | 2 +- ...591463052d439ab3d0108e226c0ee2e_cgraph.md5 | 2 +- ...591463052d439ab3d0108e226c0ee2e_cgraph.svg | 2 +- ...mtk_1_1simplex_1_1_simplex_collection.html | 12 +- ...plex_1_1utils_1_1_simplex_comparisons.html | 20 +- cofaces__single__dimension_8cpp_source.html | 18 +- cofaces__single__dimension_8hpp_source.html | 8 +- delaunay_8cpp_source.html | 16 +- ...e_new_attribute_topo_info_8cpp_source.html | 16 +- ...e_new_attribute_topo_info_8hpp_source.html | 10 +- ...esh_2_edge_operation_data_8cpp_source.html | 8 +- ...t_new_attribute_topo_info_8cpp_source.html | 28 +- ...t_new_attribute_topo_info_8hpp_source.html | 18 +- ...t__child__mesh__from__tag_8cpp_source.html | 54 +- ...t__child__mesh__from__tag_8hpp_source.html | 4 +- faces__single__dimension_8cpp_source.html | 56 +- faces__single__dimension_8hpp_source.html | 6 +- ...__local__switch__sequence_8cpp_source.html | 56 +- ...__local__switch__sequence_8hpp_source.html | 4 +- functions.html | 6 +- functions_func.html | 2 +- functions_func_o.html | 4 +- functions_func_r.html | 6 +- functions_m.html | 12 +- functions_o.html | 28 +- functions_r.html | 6 +- functions_vars_m.html | 12 +- get__attributes_8cpp_source.html | 4 +- hash_8hpp_source.html | 4 +- index.html | 2 +- internal_2_marching_8cpp_source.html | 20 +- is__ccw_8cpp_source.html | 36 +- is__ccw_8hpp_source.html | 6 +- isotropic__remeshing_8cpp_source.html | 16 +- link__condition_8cpp_source.html | 50 +- local__switch__tuple_8hxx_source.html | 24 +- make__unique_8cpp_source.html | 4 +- make__unique_8hpp_source.html | 4 +- merkle__tree__diff_8cpp_source.html | 4 +- mesh__info_8cpp_source.html | 8 +- ...pe__from__primitive__type_8hpp_source.html | 18 +- mesh__utils_8cpp_source.html | 10 +- mesh__utils_8hpp_source.html | 6 +- mesh__with__tag__from__image_8cpp_source.html | 8 +- multi__mesh__edge__collapse_8cpp_source.html | 4 +- multi__mesh__edge__split_8cpp_source.html | 4 +- ...ils_2local__switch__tuple_8cpp_source.html | 28 +- ...ils_2local__switch__tuple_8hpp_source.html | 14 +- namespacemembers_enum.html | 2 +- namespacemembers_func_g.html | 6 +- namespacemembers_g.html | 6 +- namespacemembers_p.html | 2 +- namespacewmtk.html | 178 +-- namespacewmtk.js | 18 +- namespacewmtk_1_1autogen.html | 20 +- namespacewmtk_1_1autogen_1_1edge__mesh.html | 6 +- namespacewmtk_1_1autogen_1_1tet__mesh.html | 6 +- namespacewmtk_1_1autogen_1_1tri__mesh.html | 14 +- namespacewmtk_1_1components.html | 26 +- namespacewmtk_1_1components_1_1internal.html | 4 +- ...1components_1_1internal_1_1procedural.html | 4 +- ...f9c7ba8540630226be69470ae8ed872_cgraph.map | 2 +- ...f9c7ba8540630226be69470ae8ed872_cgraph.md5 | 2 +- ...f9c7ba8540630226be69470ae8ed872_cgraph.svg | 2 +- ...ba8540630226be69470ae8ed872_cgraph_org.svg | 2 +- ...350a4628718ab75cb758b079854bc9f_cgraph.map | 2 +- ...350a4628718ab75cb758b079854bc9f_cgraph.md5 | 2 +- ...350a4628718ab75cb758b079854bc9f_cgraph.svg | 2 +- ...4628718ab75cb758b079854bc9f_cgraph_org.svg | 2 +- ...c38ded3a4052aa252280a0a73ee9e69_cgraph.map | 2 +- ...c38ded3a4052aa252280a0a73ee9e69_cgraph.md5 | 2 +- ...c38ded3a4052aa252280a0a73ee9e69_cgraph.svg | 2 +- ...ed3a4052aa252280a0a73ee9e69_cgraph_org.svg | 2 +- ...22835bb096798068c48dba9236e3a92_cgraph.map | 2 +- ...22835bb096798068c48dba9236e3a92_cgraph.md5 | 2 +- ...22835bb096798068c48dba9236e3a92_cgraph.svg | 2 +- ...5bb096798068c48dba9236e3a92_cgraph_org.svg | 2 +- ...70dcd55e46a4a33650a704d6fd1a643_cgraph.map | 4 +- ...70dcd55e46a4a33650a704d6fd1a643_cgraph.md5 | 2 +- ...70dcd55e46a4a33650a704d6fd1a643_cgraph.svg | 4 +- ...d55e46a4a33650a704d6fd1a643_cgraph_org.svg | 4 +- ...089f999b4072674bda24b29e86257e1_cgraph.map | 4 +- ...089f999b4072674bda24b29e86257e1_cgraph.md5 | 2 +- ...089f999b4072674bda24b29e86257e1_cgraph.svg | 4 +- ...999b4072674bda24b29e86257e1_cgraph_org.svg | 4 +- ...1e25d3a6f734e991354c2294bf49bbe_cgraph.map | 4 +- ...1e25d3a6f734e991354c2294bf49bbe_cgraph.md5 | 2 +- ...1e25d3a6f734e991354c2294bf49bbe_cgraph.svg | 4 +- ...d3a6f734e991354c2294bf49bbe_cgraph_org.svg | 4 +- ...03af91b8a2d86f4b9af9dbded55bec0_cgraph.map | 2 +- ...03af91b8a2d86f4b9af9dbded55bec0_cgraph.md5 | 2 +- ...03af91b8a2d86f4b9af9dbded55bec0_cgraph.svg | 278 ++-- ...91b8a2d86f4b9af9dbded55bec0_cgraph_org.svg | 278 ++-- ...9bbaed7b26fb80218677ddfc1a94960_cgraph.map | 2 +- ...9bbaed7b26fb80218677ddfc1a94960_cgraph.md5 | 2 +- ...9bbaed7b26fb80218677ddfc1a94960_cgraph.svg | 2 +- ...ed7b26fb80218677ddfc1a94960_cgraph_org.svg | 2 +- ...447d90d4590819b69239d895ea5dc86_cgraph.map | 9 +- ...447d90d4590819b69239d895ea5dc86_cgraph.md5 | 2 +- ...447d90d4590819b69239d895ea5dc86_cgraph.svg | 166 ++- ...90d4590819b69239d895ea5dc86_cgraph_org.svg | 168 ++- ...99899fc78b0d9575cf5996f9d10d012_cgraph.map | 4 +- ...99899fc78b0d9575cf5996f9d10d012_cgraph.md5 | 2 +- ...99899fc78b0d9575cf5996f9d10d012_cgraph.svg | 4 +- ...9fc78b0d9575cf5996f9d10d012_cgraph_org.svg | 4 +- ...c69455341d52516952b0655d254ec51_cgraph.map | 2 +- ...c69455341d52516952b0655d254ec51_cgraph.md5 | 2 +- ...c69455341d52516952b0655d254ec51_cgraph.svg | 2 +- ...55341d52516952b0655d254ec51_cgraph_org.svg | 2 +- namespacewmtk_1_1function_1_1utils.html | 22 +- ...86c55877f51d8396fe5a43e6a4020fc_cgraph.map | 4 +- ...86c55877f51d8396fe5a43e6a4020fc_cgraph.md5 | 2 +- ...86c55877f51d8396fe5a43e6a4020fc_cgraph.svg | 4 +- ...5877f51d8396fe5a43e6a4020fc_cgraph_org.svg | 4 +- namespacewmtk_1_1mesh__utils.html | 10 +- ...2823af971ffb1bcc214f81559d8a584_cgraph.map | 4 +- ...2823af971ffb1bcc214f81559d8a584_cgraph.md5 | 2 +- ...2823af971ffb1bcc214f81559d8a584_cgraph.svg | 4 +- ...af971ffb1bcc214f81559d8a584_cgraph_org.svg | 4 +- namespacewmtk_1_1multimesh.html | 2 +- namespacewmtk_1_1multimesh_1_1utils.html | 42 +- ...97be9245149c7042613aeacf231ec1d_cgraph.map | 94 +- ...97be9245149c7042613aeacf231ec1d_cgraph.md5 | 2 +- ...97be9245149c7042613aeacf231ec1d_cgraph.svg | 778 +++++------ ...9245149c7042613aeacf231ec1d_cgraph_org.svg | 780 +++++------ ...ba02c50321ce0e6095c107cbb5edc13_cgraph.map | 100 +- ...ba02c50321ce0e6095c107cbb5edc13_cgraph.md5 | 2 +- ...ba02c50321ce0e6095c107cbb5edc13_cgraph.svg | 794 +++++------ ...c50321ce0e6095c107cbb5edc13_cgraph_org.svg | 794 +++++------ ...eeab2c4a43e5e6d5fb50d399a88d0a3_cgraph.map | 2 +- ...eeab2c4a43e5e6d5fb50d399a88d0a3_cgraph.md5 | 2 +- ...eeab2c4a43e5e6d5fb50d399a88d0a3_cgraph.svg | 2 +- ...2c4a43e5e6d5fb50d399a88d0a3_cgraph_org.svg | 2 +- ...349b24597b61459c9d98753ae5234f1_cgraph.map | 100 +- ...349b24597b61459c9d98753ae5234f1_cgraph.md5 | 2 +- ...349b24597b61459c9d98753ae5234f1_cgraph.svg | 720 +++++----- ...24597b61459c9d98753ae5234f1_cgraph_org.svg | 720 +++++----- ...bd59ab748f0b54f3ab7dc9d625b04ec_cgraph.map | 2 +- ...bd59ab748f0b54f3ab7dc9d625b04ec_cgraph.md5 | 2 +- ...bd59ab748f0b54f3ab7dc9d625b04ec_cgraph.svg | 2 +- ...ab748f0b54f3ab7dc9d625b04ec_cgraph_org.svg | 2 +- ...9d6749c097baf5c55d25e598ecec6e1_cgraph.map | 2 +- ...9d6749c097baf5c55d25e598ecec6e1_cgraph.md5 | 2 +- ...9d6749c097baf5c55d25e598ecec6e1_cgraph.svg | 2 +- ...49c097baf5c55d25e598ecec6e1_cgraph_org.svg | 2 +- namespacewmtk_1_1operations_1_1utils.html | 8 +- ...2d04aef5d974c2e0f204ed036773e88_cgraph.map | 4 +- ...2d04aef5d974c2e0f204ed036773e88_cgraph.md5 | 2 +- ...2d04aef5d974c2e0f204ed036773e88_cgraph.svg | 4 +- ...aef5d974c2e0f204ed036773e88_cgraph_org.svg | 4 +- namespacewmtk_1_1simplex.html | 86 +- namespacewmtk_1_1simplex_1_1internal.html | 30 +- ...f48742895cafb76dffc5d5a456f561c_cgraph.map | 4 +- ...f48742895cafb76dffc5d5a456f561c_cgraph.md5 | 2 +- ...f48742895cafb76dffc5d5a456f561c_cgraph.svg | 4 +- ...42895cafb76dffc5d5a456f561c_cgraph_org.svg | 4 +- ...9e56c4a28bee846e3eadeb8031c3091_cgraph.map | 4 +- ...9e56c4a28bee846e3eadeb8031c3091_cgraph.md5 | 2 +- ...9e56c4a28bee846e3eadeb8031c3091_cgraph.svg | 4 +- ...c4a28bee846e3eadeb8031c3091_cgraph_org.svg | 4 +- namespacewmtk_1_1simplex_1_1utils.html | 20 +- ...ca10e19c43ac50ef093dceba76e556_icgraph.map | 5 +- ...ca10e19c43ac50ef093dceba76e556_icgraph.md5 | 2 +- ...ca10e19c43ac50ef093dceba76e556_icgraph.svg | 136 +- ...e19c43ac50ef093dceba76e556_icgraph_org.svg | 70 + ...e571467fb4068842d9c1a38a433f1ed_cgraph.map | 4 +- ...e571467fb4068842d9c1a38a433f1ed_cgraph.md5 | 2 +- ...e571467fb4068842d9c1a38a433f1ed_cgraph.svg | 4 +- ...467fb4068842d9c1a38a433f1ed_cgraph_org.svg | 4 +- ...1ece8e530ba53cc9aced240dc41530d_cgraph.map | 4 +- ...1ece8e530ba53cc9aced240dc41530d_cgraph.md5 | 2 +- ...1ece8e530ba53cc9aced240dc41530d_cgraph.svg | 4 +- ...8e530ba53cc9aced240dc41530d_cgraph_org.svg | 4 +- ...5e2b37cbcf34fa9fcd27d3449866254_cgraph.map | 4 +- ...5e2b37cbcf34fa9fcd27d3449866254_cgraph.md5 | 2 +- ...5e2b37cbcf34fa9fcd27d3449866254_cgraph.svg | 4 +- ...37cbcf34fa9fcd27d3449866254_cgraph_org.svg | 4 +- ...b3266f811539b7df8d85a51552bc1f7_cgraph.map | 4 +- ...b3266f811539b7df8d85a51552bc1f7_cgraph.md5 | 2 +- ...b3266f811539b7df8d85a51552bc1f7_cgraph.svg | 4 +- ...6f811539b7df8d85a51552bc1f7_cgraph_org.svg | 4 +- ...28755c0a4c93af10690b6828a3c79f5_cgraph.map | 4 +- ...28755c0a4c93af10690b6828a3c79f5_cgraph.md5 | 2 +- ...28755c0a4c93af10690b6828a3c79f5_cgraph.svg | 4 +- ...5c0a4c93af10690b6828a3c79f5_cgraph_org.svg | 4 +- ...02b75f60dd18122ad424205d175a7e7_cgraph.map | 4 +- ...02b75f60dd18122ad424205d175a7e7_cgraph.md5 | 2 +- ...02b75f60dd18122ad424205d175a7e7_cgraph.svg | 4 +- ...5f60dd18122ad424205d175a7e7_cgraph_org.svg | 4 +- ...13ad1ddbf4ce22a7f0733d6bb2c1d99_cgraph.map | 4 +- ...13ad1ddbf4ce22a7f0733d6bb2c1d99_cgraph.md5 | 2 +- ...13ad1ddbf4ce22a7f0733d6bb2c1d99_cgraph.svg | 4 +- ...1ddbf4ce22a7f0733d6bb2c1d99_cgraph_org.svg | 4 +- ...96a48358d73e378978c6d5827cb3212_cgraph.map | 4 +- ...96a48358d73e378978c6d5827cb3212_cgraph.md5 | 2 +- ...96a48358d73e378978c6d5827cb3212_cgraph.svg | 4 +- ...8358d73e378978c6d5827cb3212_cgraph_org.svg | 4 +- ...cd714440f235fdd4df798e86dc2d597_cgraph.map | 4 +- ...cd714440f235fdd4df798e86dc2d597_cgraph.md5 | 2 +- ...cd714440f235fdd4df798e86dc2d597_cgraph.svg | 4 +- ...4440f235fdd4df798e86dc2d597_cgraph_org.svg | 4 +- ...dec91b832501228f5b8b05646d0b89d_cgraph.map | 4 +- ...dec91b832501228f5b8b05646d0b89d_cgraph.md5 | 2 +- ...dec91b832501228f5b8b05646d0b89d_cgraph.svg | 4 +- ...1b832501228f5b8b05646d0b89d_cgraph_org.svg | 4 +- ...d86388bdc8c1685d7d55fad016f0ca2_cgraph.map | 2 +- ...d86388bdc8c1685d7d55fad016f0ca2_cgraph.md5 | 2 +- ...d86388bdc8c1685d7d55fad016f0ca2_cgraph.svg | 2 +- ...88bdc8c1685d7d55fad016f0ca2_cgraph_org.svg | 2 +- ...f868371b90dc2c2a009e7a6832cd7f9_cgraph.map | 4 +- ...f868371b90dc2c2a009e7a6832cd7f9_cgraph.md5 | 2 +- ...f868371b90dc2c2a009e7a6832cd7f9_cgraph.svg | 4 +- ...371b90dc2c2a009e7a6832cd7f9_cgraph_org.svg | 4 +- ...ee08ace6632fab4e958282840e65e43_cgraph.map | 4 +- ...ee08ace6632fab4e958282840e65e43_cgraph.md5 | 2 +- ...ee08ace6632fab4e958282840e65e43_cgraph.svg | 4 +- ...ace6632fab4e958282840e65e43_cgraph_org.svg | 4 +- ...d076bc746a4cfd29d4766bc1571f31d_cgraph.map | 4 +- ...d076bc746a4cfd29d4766bc1571f31d_cgraph.md5 | 2 +- ...d076bc746a4cfd29d4766bc1571f31d_cgraph.svg | 4 +- ...bc746a4cfd29d4766bc1571f31d_cgraph_org.svg | 4 +- ...ad7bf4f261c58bdb33bd0bf7fcd541d_cgraph.map | 4 +- ...ad7bf4f261c58bdb33bd0bf7fcd541d_cgraph.md5 | 2 +- ...ad7bf4f261c58bdb33bd0bf7fcd541d_cgraph.svg | 4 +- ...f4f261c58bdb33bd0bf7fcd541d_cgraph_org.svg | 4 +- ...dab544fbb3e4c417608c0b5371e94d9_cgraph.map | 4 +- ...dab544fbb3e4c417608c0b5371e94d9_cgraph.md5 | 2 +- ...dab544fbb3e4c417608c0b5371e94d9_cgraph.svg | 4 +- ...44fbb3e4c417608c0b5371e94d9_cgraph_org.svg | 4 +- ...e89641a0de7b5ddf8d15bf376f9d33b_cgraph.map | 4 +- ...e89641a0de7b5ddf8d15bf376f9d33b_cgraph.md5 | 2 +- ...e89641a0de7b5ddf8d15bf376f9d33b_cgraph.svg | 4 +- ...41a0de7b5ddf8d15bf376f9d33b_cgraph_org.svg | 4 +- namespacewmtk_1_1utils.html | 28 +- ...f4fed1ebdeb2d5c03a59b1760a30f61_cgraph.map | 4 +- ...f4fed1ebdeb2d5c03a59b1760a30f61_cgraph.md5 | 2 +- ...f4fed1ebdeb2d5c03a59b1760a30f61_cgraph.svg | 4 +- ...dab5bd8df4c7c658413914f37210244_cgraph.map | 4 +- ...dab5bd8df4c7c658413914f37210244_cgraph.md5 | 2 +- ...dab5bd8df4c7c658413914f37210244_cgraph.svg | 4 +- ...4153e2c24f98b817e39406defdc9f7e_cgraph.map | 4 +- ...4153e2c24f98b817e39406defdc9f7e_cgraph.md5 | 2 +- ...4153e2c24f98b817e39406defdc9f7e_cgraph.svg | 4 +- ...718510ab8656a7188b524d3c0f8a0ae_cgraph.map | 2 +- ...718510ab8656a7188b524d3c0f8a0ae_cgraph.md5 | 2 +- ...718510ab8656a7188b524d3c0f8a0ae_cgraph.svg | 2 +- ...e9451eadd0a595718ab8b39559fb313_cgraph.map | 2 +- ...e9451eadd0a595718ab8b39559fb313_cgraph.md5 | 2 +- ...e9451eadd0a595718ab8b39559fb313_cgraph.svg | 2 +- ...075bfd0661202be17cc2ada8e8f4791_cgraph.map | 2 +- ...075bfd0661202be17cc2ada8e8f4791_cgraph.md5 | 2 +- ...075bfd0661202be17cc2ada8e8f4791_cgraph.svg | 2 +- ...0df55e46119b5c04be285308bcceb08_cgraph.map | 2 +- ...0df55e46119b5c04be285308bcceb08_cgraph.md5 | 2 +- ...0df55e46119b5c04be285308bcceb08_cgraph.svg | 2 +- ...39897f6efeb23a997750141f12892ee_cgraph.map | 2 +- ...39897f6efeb23a997750141f12892ee_cgraph.md5 | 2 +- ...39897f6efeb23a997750141f12892ee_cgraph.svg | 2 +- ...08a5d7fb42f02c54bae85758b39f59_icgraph.map | 0 ...08a5d7fb42f02c54bae85758b39f59_icgraph.md5 | 0 ...08a5d7fb42f02c54bae85758b39f59_icgraph.svg | 2 +- ...d7fb42f02c54bae85758b39f59_icgraph_org.svg | 0 ...f45c152e856196bb734c6f48919a24_icgraph.map | 2 +- ...f45c152e856196bb734c6f48919a24_icgraph.md5 | 1 + ...f45c152e856196bb734c6f48919a24_icgraph.svg | 4 +- ...152e856196bb734c6f48919a24_icgraph_org.svg | 2 +- ...1c70b23475a8313d0109f43cae0ca43_cgraph.map | 2 +- ...1c70b23475a8313d0109f43cae0ca43_cgraph.md5 | 1 + ...1c70b23475a8313d0109f43cae0ca43_cgraph.svg | 2 +- ...56de97c0666837a63748fea7e3f5873_cgraph.map | 2 +- ...56de97c0666837a63748fea7e3f5873_cgraph.md5 | 2 +- ...56de97c0666837a63748fea7e3f5873_cgraph.svg | 2 +- ...8fdc205b7ba54f122eec3761706a8e_icgraph.md5 | 1 - ...1ebbed7ad1cf47dacc11c113236c210_cgraph.map | 2 +- ...1ebbed7ad1cf47dacc11c113236c210_cgraph.md5 | 2 +- ...1ebbed7ad1cf47dacc11c113236c210_cgraph.svg | 2 +- ...933d187bc3d9d6398cb239aeab036de_cgraph.md5 | 1 - navtreedata.js | 36 +- navtreeindex1.js | 22 +- navtreeindex10.js | 12 +- navtreeindex11.js | 12 +- navtreeindex12.js | 12 +- navtreeindex13.js | 12 +- navtreeindex14.js | 30 +- navtreeindex15.js | 12 +- navtreeindex16.js | 12 +- navtreeindex17.js | 12 +- navtreeindex18.js | 12 +- navtreeindex19.js | 5 - navtreeindex2.js | 6 +- navtreeindex3.js | 14 +- navtreeindex4.js | 106 +- navtreeindex5.js | 44 +- navtreeindex6.js | 80 +- navtreeindex7.js | 14 +- navtreeindex8.js | 12 +- navtreeindex9.js | 12 +- neighbors__single__dimension_8cpp_source.html | 8 +- neighbors__single__dimension_8hpp_source.html | 6 +- open__star_8cpp_source.html | 22 +- primitive__range_8cpp_source.html | 32 +- primitive__range_8hpp_source.html | 8 +- regular__space_8cpp_source.html | 24 +- ...lex__dimension__bijection_8cpp_source.html | 6 +- search/all_0.js | 24 +- search/all_11.js | 111 +- search/all_12.js | 298 ++-- search/all_13.js | 344 ++--- search/all_14.js | 98 +- search/all_15.js | 118 +- search/all_16.js | 116 +- search/all_17.js | 74 +- search/all_4.js | 2 +- search/all_5.js | 2 +- search/all_6.js | 6 +- search/all_7.js | 2 +- search/all_c.js | 12 +- search/all_e.js | 2 +- search/all_f.js | 2 +- search/classes_0.js | 44 +- search/classes_1.js | 6 +- search/classes_10.js | 60 +- search/classes_11.js | 14 +- search/classes_12.js | 6 +- search/classes_13.js | 6 +- search/classes_2.js | 42 +- search/classes_3.js | 12 +- search/classes_4.js | 20 +- search/classes_5.js | 10 +- search/classes_6.js | 22 +- search/classes_7.js | 26 +- search/classes_8.js | 22 +- search/classes_9.js | 4 +- search/classes_a.js | 72 +- search/classes_b.js | 10 +- search/classes_c.js | 10 +- search/classes_d.js | 24 +- search/classes_e.js | 30 +- search/classes_f.js | 36 +- search/defines_0.js | 2 +- search/defines_1.js | 2 +- search/defines_2.js | 2 +- search/defines_3.js | 2 +- search/defines_4.js | 6 +- search/defines_5.js | 2 +- search/enums_0.js | 2 +- search/enums_1.js | 2 +- search/enums_2.js | 2 +- search/enums_3.js | 2 +- search/enums_4.js | 2 +- search/enums_5.js | 8 +- search/enums_6.js | 2 +- search/enums_7.js | 2 +- search/enumvalues_0.js | 6 +- search/enumvalues_1.js | 10 +- search/enumvalues_2.js | 6 +- search/enumvalues_3.js | 2 +- search/enumvalues_4.js | 4 +- search/enumvalues_5.js | 4 +- search/enumvalues_6.js | 6 +- search/enumvalues_7.js | 2 +- search/enumvalues_8.js | 4 +- search/enumvalues_9.js | 2 +- search/enumvalues_a.js | 2 +- search/enumvalues_b.js | 4 +- search/enumvalues_c.js | 2 +- search/enumvalues_d.js | 4 +- search/enumvalues_e.js | 2 +- search/files_0.js | 86 +- search/files_1.js | 20 +- search/files_10.js | 36 +- search/files_11.js | 58 +- search/files_12.js | 154 +-- search/files_13.js | 20 +- search/files_14.js | 18 +- search/files_15.js | 6 +- search/files_2.js | 66 +- search/files_3.js | 24 +- search/files_4.js | 44 +- search/files_5.js | 30 +- search/files_6.js | 34 +- search/files_7.js | 20 +- search/files_8.js | 46 +- search/files_9.js | 4 +- search/files_a.js | 4 +- search/files_b.js | 40 +- search/files_c.js | 156 +-- search/files_d.js | 16 +- search/files_e.js | 26 +- search/files_f.js | 52 +- search/functions_0.js | 96 +- search/functions_1.js | 22 +- search/functions_10.js | 77 +- search/functions_11.js | 168 +-- search/functions_12.js | 106 +- search/functions_13.js | 58 +- search/functions_14.js | 42 +- search/functions_15.js | 28 +- search/functions_16.js | 74 +- search/functions_2.js | 142 +- search/functions_3.js | 40 +- search/functions_4.js | 90 +- search/functions_5.js | 46 +- search/functions_6.js | 182 +-- search/functions_7.js | 40 +- search/functions_8.js | 98 +- search/functions_9.js | 4 +- search/functions_a.js | 66 +- search/functions_b.js | 116 +- search/functions_c.js | 40 +- search/functions_d.js | 52 +- search/functions_e.js | 62 +- search/functions_f.js | 2 +- search/namespaces_0.js | 2 +- search/namespaces_1.js | 2 +- search/namespaces_2.js | 2 +- search/namespaces_3.js | 6 +- search/namespaces_4.js | 4 +- search/namespaces_5.js | 52 +- search/pages_0.js | 2 +- search/pages_1.js | 2 +- search/pages_2.js | 2 +- search/related_0.js | 22 +- search/related_1.js | 4 +- search/related_2.js | 4 +- search/related_3.js | 2 +- search/related_4.js | 2 +- search/related_5.js | 6 +- search/related_6.js | 2 +- search/related_7.js | 24 +- search/related_8.js | 40 +- search/related_9.js | 4 +- search/related_a.js | 10 +- search/related_b.js | 10 +- search/related_c.js | 4 +- search/related_d.js | 22 +- search/typedefs_0.js | 14 +- search/typedefs_1.js | 8 +- search/typedefs_10.js | 16 +- search/typedefs_11.js | 22 +- search/typedefs_12.js | 4 +- search/typedefs_13.js | 28 +- search/typedefs_2.js | 26 +- search/typedefs_3.js | 20 +- search/typedefs_4.js | 2 +- search/typedefs_5.js | 10 +- search/typedefs_6.js | 10 +- search/typedefs_7.js | 8 +- search/typedefs_8.js | 8 +- search/typedefs_9.js | 2 +- search/typedefs_a.js | 2 +- search/typedefs_b.js | 22 +- search/typedefs_c.js | 2 +- search/typedefs_d.js | 2 +- search/typedefs_e.js | 4 +- search/typedefs_f.js | 60 +- search/variables_0.js | 40 +- search/variables_1.js | 2 +- search/variables_10.js | 30 +- search/variables_11.js | 28 +- search/variables_2.js | 16 +- search/variables_3.js | 18 +- search/variables_4.js | 40 +- search/variables_5.js | 26 +- search/variables_6.js | 4 +- search/variables_7.js | 18 +- search/variables_8.js | 34 +- search/variables_9.js | 8 +- search/variables_a.js | 384 +++--- search/variables_b.js | 8 +- search/variables_c.js | 16 +- search/variables_d.js | 10 +- search/variables_e.js | 10 +- search/variables_f.js | 24 +- simplex_2_a_m_i_p_s_8cpp_source.html | 24 +- ...1_1_homogeneous_simplex_equal_functor.html | 8 +- ..._1_1_homogeneous_simplex_less_functor.html | 8 +- ...ype_3_01_primitive_type_1_1_edge_01_4.html | 2 +- ...ype_3_01_primitive_type_1_1_face_01_4.html | 2 +- ...1_primitive_type_1_1_tetrahedron_01_4.html | 2 +- ...e_3_01_primitive_type_1_1_vertex_01_4.html | 2 +- tag__intersection_8cpp_source.html | 32 +- ...289eee87d4f27bda966d30b81c51812_cgraph.map | 4 +- ...289eee87d4f27bda966d30b81c51812_cgraph.md5 | 2 +- ...289eee87d4f27bda966d30b81c51812_cgraph.svg | 4 +- ...ee87d4f27bda966d30b81c51812_cgraph_org.svg | 4 +- ...817f7ebe538bd98507ed2a69f3e65a3_cgraph.map | 4 +- ...817f7ebe538bd98507ed2a69f3e65a3_cgraph.md5 | 2 +- ...817f7ebe538bd98507ed2a69f3e65a3_cgraph.svg | 4 +- ...7ebe538bd98507ed2a69f3e65a3_cgraph_org.svg | 4 +- ...4385d68ba4e206528466fe0e90d4c41_cgraph.map | 4 +- ...4385d68ba4e206528466fe0e90d4c41_cgraph.md5 | 2 +- ...4385d68ba4e206528466fe0e90d4c41_cgraph.svg | 4 +- ...d68ba4e206528466fe0e90d4c41_cgraph_org.svg | 4 +- ...efb223c76864bc1dde445456c339570_cgraph.map | 4 +- ...efb223c76864bc1dde445456c339570_cgraph.md5 | 2 +- ...efb223c76864bc1dde445456c339570_cgraph.svg | 4 +- ...23c76864bc1dde445456c339570_cgraph_org.svg | 4 +- ...8a46e1482a21c41b01ca68f4f0144dc_cgraph.map | 4 +- ...8a46e1482a21c41b01ca68f4f0144dc_cgraph.md5 | 2 +- ...8a46e1482a21c41b01ca68f4f0144dc_cgraph.svg | 4 +- ...e1482a21c41b01ca68f4f0144dc_cgraph_org.svg | 4 +- ..._component__isotropic__remeshing_8cpp.html | 24 +- ...1ae85bc413e9940267e8a366e0bcc9f_cgraph.map | 2 +- ...1ae85bc413e9940267e8a366e0bcc9f_cgraph.md5 | 2 +- ...1ae85bc413e9940267e8a366e0bcc9f_cgraph.svg | 2 +- ...5bc413e9940267e8a366e0bcc9f_cgraph_org.svg | 2 +- ...e0dd9408a6fe42f1fb8e8764f740dda_cgraph.map | 2 +- ...e0dd9408a6fe42f1fb8e8764f740dda_cgraph.md5 | 2 +- ...e0dd9408a6fe42f1fb8e8764f740dda_cgraph.svg | 2 +- ...9408a6fe42f1fb8e8764f740dda_cgraph_org.svg | 2 +- ...e475685ae29b731655dd43137a950d6_cgraph.map | 2 +- ...e475685ae29b731655dd43137a950d6_cgraph.md5 | 2 +- ...e475685ae29b731655dd43137a950d6_cgraph.svg | 274 ++-- ...685ae29b731655dd43137a950d6_cgraph_org.svg | 274 ++-- ...3fcea88943daf212aeeda03eb0baa8b_cgraph.md5 | 2 +- ...3fcea88943daf212aeeda03eb0baa8b_cgraph.svg | 336 ++--- ...a88943daf212aeeda03eb0baa8b_cgraph_org.svg | 336 ++--- ...951acaed01f46f17ad5496ddaeccd3f_cgraph.map | 4 +- ...951acaed01f46f17ad5496ddaeccd3f_cgraph.md5 | 2 +- ...951acaed01f46f17ad5496ddaeccd3f_cgraph.svg | 4 +- ...caed01f46f17ad5496ddaeccd3f_cgraph_org.svg | 4 +- ...eca2caa1612565bd919bd8cf0ea0232_cgraph.map | 2 +- ...eca2caa1612565bd919bd8cf0ea0232_cgraph.md5 | 2 +- ...eca2caa1612565bd919bd8cf0ea0232_cgraph.svg | 2 +- ...caa1612565bd919bd8cf0ea0232_cgraph_org.svg | 2 +- ...ent__isotropic__remeshing_8cpp_source.html | 180 +-- test__component__marching_8cpp.html | 4 +- ...12db5333ebf0330b3fef98730d9f8a5_cgraph.map | 81 +- ...12db5333ebf0330b3fef98730d9f8a5_cgraph.md5 | 2 +- ...12db5333ebf0330b3fef98730d9f8a5_cgraph.svg | 714 +++++----- ...5333ebf0330b3fef98730d9f8a5_cgraph_org.svg | 716 +++++----- ...20fbc246d1ad31be8d9ec0011ac52d6_cgraph.map | 100 +- ...20fbc246d1ad31be8d9ec0011ac52d6_cgraph.md5 | 2 +- ...20fbc246d1ad31be8d9ec0011ac52d6_cgraph.svg | 1136 ++++++++-------- ...c246d1ad31be8d9ec0011ac52d6_cgraph_org.svg | 1136 ++++++++-------- test__component__marching_8cpp_source.html | 34 +- ...cff0ee9e850d29cff036dae09747fe6_cgraph.map | 2 +- ...cff0ee9e850d29cff036dae09747fe6_cgraph.md5 | 2 +- ...cff0ee9e850d29cff036dae09747fe6_cgraph.svg | 2 +- ...ee9e850d29cff036dae09747fe6_cgraph_org.svg | 2 +- ...5741821c2febf4c7e15273819d1a25a_cgraph.map | 2 +- ...5741821c2febf4c7e15273819d1a25a_cgraph.md5 | 2 +- ...5741821c2febf4c7e15273819d1a25a_cgraph.svg | 2 +- ...821c2febf4c7e15273819d1a25a_cgraph_org.svg | 2 +- ...2f4031ed1bb275705a5946ada4eb66a_cgraph.map | 2 +- ...2f4031ed1bb275705a5946ada4eb66a_cgraph.md5 | 2 +- ...2f4031ed1bb275705a5946ada4eb66a_cgraph.svg | 2 +- ...31ed1bb275705a5946ada4eb66a_cgraph_org.svg | 2 +- ...1644c0a537c7744067e8af26bf4171c_cgraph.map | 2 +- ...1644c0a537c7744067e8af26bf4171c_cgraph.md5 | 2 +- ...1644c0a537c7744067e8af26bf4171c_cgraph.svg | 2 +- ...c0a537c7744067e8af26bf4171c_cgraph_org.svg | 2 +- test__component__regular__space_8cpp.html | 4 +- ...e69783b3ce0c074477e3081ab8cf658_cgraph.map | 80 +- ...e69783b3ce0c074477e3081ab8cf658_cgraph.md5 | 2 +- ...e69783b3ce0c074477e3081ab8cf658_cgraph.svg | 712 +++++----- ...83b3ce0c074477e3081ab8cf658_cgraph_org.svg | 714 +++++----- ...28024a1ea7ac078fd93d4035f705520_cgraph.map | 80 +- ...28024a1ea7ac078fd93d4035f705520_cgraph.md5 | 2 +- ...28024a1ea7ac078fd93d4035f705520_cgraph.svg | 712 +++++----- ...4a1ea7ac078fd93d4035f705520_cgraph_org.svg | 714 +++++----- ...component__regular__space_8cpp_source.html | 34 +- test__component__tag__intersection_8cpp.html | 4 +- ...813b1d6b5239cad8a1515c416e6f5e8_cgraph.map | 4 +- ...813b1d6b5239cad8a1515c416e6f5e8_cgraph.md5 | 2 +- ...813b1d6b5239cad8a1515c416e6f5e8_cgraph.svg | 4 +- ...1d6b5239cad8a1515c416e6f5e8_cgraph_org.svg | 4 +- ...45075e8d350017b73b4910211afe71a_cgraph.map | 4 +- ...45075e8d350017b73b4910211afe71a_cgraph.md5 | 2 +- ...45075e8d350017b73b4910211afe71a_cgraph.svg | 4 +- ...5e8d350017b73b4910211afe71a_cgraph_org.svg | 4 +- ...ponent__tag__intersection_8cpp_source.html | 158 +-- ...e_new_attribute_topo_info_8cpp_source.html | 16 +- ...e_new_attribute_topo_info_8hpp_source.html | 10 +- ...esh_2_edge_operation_data_8cpp_source.html | 28 +- ...t_new_attribute_topo_info_8cpp_source.html | 28 +- ...t_new_attribute_topo_info_8hpp_source.html | 18 +- top__dimension__cofaces_8cpp_source.html | 58 +- transport__tuple_8cpp_source.html | 6 +- transport__tuple_8hpp_source.html | 6 +- ...e_new_attribute_topo_info_8cpp_source.html | 16 +- ...e_new_attribute_topo_info_8hpp_source.html | 10 +- ...esh_2_edge_operation_data_8cpp_source.html | 18 +- ...t_new_attribute_topo_info_8cpp_source.html | 28 +- ...t_new_attribute_topo_info_8hpp_source.html | 18 +- tuple__map__attribute__io_8cpp_source.html | 4 +- tuple__map__attribute__io_8hpp__incl.md5 | 2 +- tuple__map__attribute__io_8hpp__incl.svg | 54 +- tuple__map__attribute__io_8hpp__incl_org.svg | 54 +- ...ogeneous__simplex__vector_8cpp_source.html | 4 +- ...ogeneous__simplex__vector_8hpp_source.html | 4 +- ...e__homogeneous__simplices_8cpp_source.html | 6 +- ...e__homogeneous__simplices_8hpp_source.html | 6 +- wildmeshing_8cpp_source.html | 54 +- 1477 files changed, 22336 insertions(+), 23120 deletions(-) delete mode 100644 classwmtk_1_1_mesh_a26b0600a273bc261624633441e1497cb_cgraph.map delete mode 100644 classwmtk_1_1_mesh_a26b0600a273bc261624633441e1497cb_cgraph.md5 delete mode 100644 classwmtk_1_1_mesh_a26b0600a273bc261624633441e1497cb_cgraph.svg delete mode 100644 classwmtk_1_1_mesh_abf5c88264301a97108b4c4789944b880_icgraph.map delete mode 100644 classwmtk_1_1_mesh_abf5c88264301a97108b4c4789944b880_icgraph.md5 delete mode 100644 classwmtk_1_1_mesh_abf5c88264301a97108b4c4789944b880_icgraph.svg delete mode 100644 classwmtk_1_1_mesh_abf5c88264301a97108b4c4789944b880_icgraph_org.svg create mode 100644 namespacewmtk_1_1simplex_1_1utils_accca10e19c43ac50ef093dceba76e556_icgraph_org.svg rename namespacewmtk_af31f53a490a16a8d7b0384fa35d8a990_icgraph.map => namespacewmtk_a3b08a5d7fb42f02c54bae85758b39f59_icgraph.map (100%) rename namespacewmtk_af31f53a490a16a8d7b0384fa35d8a990_icgraph.md5 => namespacewmtk_a3b08a5d7fb42f02c54bae85758b39f59_icgraph.md5 (100%) rename namespacewmtk_af31f53a490a16a8d7b0384fa35d8a990_icgraph.svg => namespacewmtk_a3b08a5d7fb42f02c54bae85758b39f59_icgraph.svg (99%) rename namespacewmtk_af31f53a490a16a8d7b0384fa35d8a990_icgraph_org.svg => namespacewmtk_a3b08a5d7fb42f02c54bae85758b39f59_icgraph_org.svg (100%) rename namespacewmtk_a9e8fdc205b7ba54f122eec3761706a8e_icgraph.map => namespacewmtk_a5cf45c152e856196bb734c6f48919a24_icgraph.map (98%) create mode 100644 namespacewmtk_a5cf45c152e856196bb734c6f48919a24_icgraph.md5 rename namespacewmtk_a9e8fdc205b7ba54f122eec3761706a8e_icgraph.svg => namespacewmtk_a5cf45c152e856196bb734c6f48919a24_icgraph.svg (99%) rename namespacewmtk_a9e8fdc205b7ba54f122eec3761706a8e_icgraph_org.svg => namespacewmtk_a5cf45c152e856196bb734c6f48919a24_icgraph_org.svg (99%) rename namespacewmtk_af933d187bc3d9d6398cb239aeab036de_cgraph.map => namespacewmtk_a71c70b23475a8313d0109f43cae0ca43_cgraph.map (67%) create mode 100644 namespacewmtk_a71c70b23475a8313d0109f43cae0ca43_cgraph.md5 rename namespacewmtk_af933d187bc3d9d6398cb239aeab036de_cgraph.svg => namespacewmtk_a71c70b23475a8313d0109f43cae0ca43_cgraph.svg (93%) delete mode 100644 namespacewmtk_a9e8fdc205b7ba54f122eec3761706a8e_icgraph.md5 delete mode 100644 namespacewmtk_af933d187bc3d9d6398cb239aeab036de_cgraph.md5 diff --git a/_accessor_8hpp__incl.md5 b/_accessor_8hpp__incl.md5 index 92bc6cb76a..940ecdb476 100644 --- a/_accessor_8hpp__incl.md5 +++ b/_accessor_8hpp__incl.md5 @@ -1 +1 @@ -a77e82f4946f11a71271c9b1e8368e3a \ No newline at end of file +724b970fcc527204a2f510101074bd0e \ No newline at end of file diff --git a/_accessor_8hpp__incl.svg b/_accessor_8hpp__incl.svg index 2f25b11936..6aa909a0c2 100644 --- a/_accessor_8hpp__incl.svg +++ b/_accessor_8hpp__incl.svg @@ -771,13 +771,13 @@ var sectionId = 'dynsection-0'; - + Node39->Node4 - + Node39->Node31 @@ -792,7 +792,7 @@ var sectionId = 'dynsection-0'; - + Node39->Node40 @@ -807,19 +807,19 @@ var sectionId = 'dynsection-0'; - + Node39->Node46 - + Node40->Node7 - + Node40->Node9 @@ -834,7 +834,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node41 @@ -849,7 +849,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node42 @@ -864,31 +864,31 @@ var sectionId = 'dynsection-0'; - + Node40->Node45 - + Node42->Node6 - + Node42->Node7 - + Node42->Node10 - + Node42->Node15 @@ -903,13 +903,13 @@ var sectionId = 'dynsection-0'; - + Node42->Node43 - + Node43->Node10 @@ -924,43 +924,43 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 - + Node45->Node31 - + Node45->Node40 - + Node46->Node7 - + Node46->Node11 - + Node46->Node20 - + Node46->Node42 @@ -975,7 +975,7 @@ var sectionId = 'dynsection-0'; - + Node46->Node47 @@ -990,31 +990,31 @@ var sectionId = 'dynsection-0'; - + Node46->Node48 - + Node48->Node9 - + Node48->Node31 - + Node48->Node40 - + Node48->Node46 diff --git a/_accessor_8hpp__incl_org.svg b/_accessor_8hpp__incl_org.svg index 3745f1a4c4..d65704e454 100644 --- a/_accessor_8hpp__incl_org.svg +++ b/_accessor_8hpp__incl_org.svg @@ -725,13 +725,13 @@ - + Node39->Node4 - + Node39->Node31 @@ -746,7 +746,7 @@ - + Node39->Node40 @@ -761,19 +761,19 @@ - + Node39->Node46 - + Node40->Node7 - + Node40->Node9 @@ -788,7 +788,7 @@ - + Node40->Node41 @@ -803,7 +803,7 @@ - + Node40->Node42 @@ -818,31 +818,31 @@ - + Node40->Node45 - + Node42->Node6 - + Node42->Node7 - + Node42->Node10 - + Node42->Node15 @@ -857,13 +857,13 @@ - + Node42->Node43 - + Node43->Node10 @@ -878,43 +878,43 @@ - + Node43->Node44 - + Node45->Node31 - + Node45->Node40 - + Node46->Node7 - + Node46->Node11 - + Node46->Node20 - + Node46->Node42 @@ -929,7 +929,7 @@ - + Node46->Node47 @@ -944,31 +944,31 @@ - + Node46->Node48 - + Node48->Node9 - + Node48->Node31 - + Node48->Node40 - + Node48->Node46 diff --git a/_accessor_base_8hpp_source.html b/_accessor_base_8hpp_source.html index ea05de4e9f..ca9f0b676c 100644 --- a/_accessor_base_8hpp_source.html +++ b/_accessor_base_8hpp_source.html @@ -181,7 +181,7 @@
64 
- +
68 
69  Mesh& mesh();
70  const Mesh& mesh() const;
@@ -236,7 +236,7 @@
Definition: Accessor.cpp:8
- + diff --git a/_accessor_base_8hxx_source.html b/_accessor_base_8hxx_source.html index beb6f96f5f..fd85378ff6 100644 --- a/_accessor_base_8hxx_source.html +++ b/_accessor_base_8hxx_source.html @@ -142,17 +142,17 @@
25  return m_mesh;
26 }
27 
-
28  template <typename T>
- +
28 template <typename T>
+
30 {
-
31  return mesh().m_attribute_manager;
-
32  }
+
31  return mesh().m_attribute_manager;
+
32 }
33 
-
34  template <typename T>
- +
34 template <typename T>
+
36 {
-
37  return mesh().m_attribute_manager;
-
38  }
+
37  return mesh().m_attribute_manager;
+
38 }
39 
40 
41 template <typename T>
@@ -203,7 +203,7 @@
86 }
87 
88 template <typename T>
- +
90 {
91  return handle().primitive_type();
92 }
@@ -282,7 +282,7 @@
Contains all attributes of type T for a single mesh.
- + diff --git a/_attribute_8cpp_source.html b/_attribute_8cpp_source.html index 5e4fc8cb3a..804af03625 100644 --- a/_attribute_8cpp_source.html +++ b/_attribute_8cpp_source.html @@ -154,149 +154,134 @@
37 }
38 
39 template <typename T>
- -
41  : Attribute(o.m_name, o.m_dimension, o.m_default_value)
-
42 {
-
43  m_data = o.m_data;
-
44 }
-
45 template <typename T>
-
46 Attribute<T>::Attribute(Attribute&& o) = default;
-
47 
-
48 template <typename T>
-
49 std::map<std::string, size_t> Attribute<T>::child_hashes() const
-
50 {
-
51  std::map<std::string, size_t> hashes;
-
52  hashes["dimension"] = m_dimension;
-
53  if constexpr (std::is_same_v<T, Rational>) {
-
54  constexpr static std::hash<std::string> h;
-
55  hashes["default_numerator"] = h(m_default_value.numerator());
-
56  hashes["default_denominator"] = h(m_default_value.denominator());
-
57  } else {
-
58  hashes["default_value"] = m_default_value;
-
59  }
-
60  hashes["data"] = wmtk::utils::vector_hash(m_data);
-
61  return hashes;
-
62 }
-
63 
+
40 Attribute<T>::Attribute(Attribute&& o) = default;
+
41 
+
42 template <typename T>
+
43 std::map<std::string, size_t> Attribute<T>::child_hashes() const
+
44 {
+
45  std::map<std::string, size_t> hashes;
+
46  hashes["dimension"] = m_dimension;
+
47  if constexpr (std::is_same_v<T, Rational>) {
+
48  constexpr static std::hash<std::string> h;
+
49  hashes["default_numerator"] = h(m_default_value.numerator());
+
50  hashes["default_denominator"] = h(m_default_value.denominator());
+
51  } else {
+
52  hashes["default_value"] = m_default_value;
+
53  }
+
54  hashes["data"] = wmtk::utils::vector_hash(m_data);
+
55  return hashes;
+
56 }
+
57 
+
58 
+
59 template <typename T>
+
60 Attribute<T>::~Attribute() = default;
+
61 
+
62 template <typename T>
+
64 
65 template <typename T>
-
66 Attribute<T>::~Attribute() = default;
-
67 
-
68 template <typename T>
- -
70 {
-
71  m_name = o.m_name;
-
72  m_data = o.m_data;
-
73  m_dimension = o.m_dimension;
-
74  m_default_value = o.m_default_value;
-
75  return *this;
-
76 }
-
77 template <typename T>
- -
79 
+ +
67 {
+
68  return m_name == o.m_name && m_dimension == o.m_dimension && m_data == o.m_data &&
+
69  m_default_value == o.m_default_value;
+
70 }
+
71 
+
72 
+
73 template <typename T>
+
74 void Attribute<T>::reserve(const int64_t size)
+
75 {
+
76  if (size > (m_data.size() / m_dimension)) {
+
77  m_data.resize(m_dimension * size, m_default_value);
+
78  }
+
79 }
80 template <typename T>
- +
82 {
-
83  return m_name == o.m_name && m_dimension == o.m_dimension && m_data == o.m_data &&
-
84  m_default_value == o.m_default_value;
-
85 }
-
86 
-
87 
-
88 template <typename T>
-
89 void Attribute<T>::reserve(const int64_t size)
-
90 {
-
91  if (size > (m_data.size() / m_dimension)) {
-
92  m_data.resize(m_dimension * size, m_default_value);
-
93  }
+
83  return reserved_size(m_data);
+
84 }
+
85 template <typename T>
+
86 int64_t Attribute<T>::reserved_size(const std::vector<T>& data) const
+
87 {
+
88  return data.size() / m_dimension;
+
89 }
+
90 template <typename T>
+
91 int64_t Attribute<T>::dimension() const
+
92 {
+
93  return m_dimension;
94 }
-
95 template <typename T>
- -
97 {
-
98  return reserved_size(m_data);
-
99 }
-
100 template <typename T>
-
101 int64_t Attribute<T>::reserved_size(const std::vector<T>& data) const
-
102 {
-
103  return data.size() / m_dimension;
-
104 }
-
105 template <typename T>
-
106 int64_t Attribute<T>::dimension() const
-
107 {
-
108  return m_dimension;
-
109 }
-
110 
-
111 template <typename T>
-
112 void Attribute<T>::set(std::vector<T> val)
-
113 {
-
114  assert(!val.empty());
-
115  assert(val.size() % m_dimension == 0);
-
116  m_data = std::move(val);
-
117 }
-
118 template <typename T>
- -
120 {
-
121  if (bool(m_scope_stacks)) {
-
122  return &m_scope_stacks->local();
-
123  }
-
124  return nullptr;
+
95 
+
96 template <typename T>
+
97 void Attribute<T>::set(std::vector<T> val)
+
98 {
+
99  assert(!val.empty());
+
100  assert(val.size() % m_dimension == 0);
+
101  m_data = std::move(val);
+
102 }
+
103 template <typename T>
+ +
105 {
+
106  if (bool(m_scope_stacks)) {
+
107  return &m_scope_stacks->local();
+
108  }
+
109  return nullptr;
+
110 }
+
111 
+
112 template <typename T>
+ +
114 {
+
115  if (m_scope_stacks) {
+
116  m_scope_stacks->local().emplace();
+
117  }
+
118 }
+
119 template <typename T>
+
120 void Attribute<T>::pop_scope(bool apply_updates)
+
121 {
+
122  if (m_scope_stacks) {
+
123  m_scope_stacks->local().pop(*this, apply_updates);
+
124  }
125 }
126 
127 template <typename T>
- +
129 {
130  if (m_scope_stacks) {
-
131  m_scope_stacks->local().emplace();
+
131  m_scope_stacks->local().clear_current_scope(*this);
132  }
133 }
-
134 template <typename T>
-
135 void Attribute<T>::pop_scope(bool apply_updates)
-
136 {
-
137  if (m_scope_stacks) {
-
138  m_scope_stacks->local().pop(*this, apply_updates);
-
139  }
-
140 }
-
141 
-
142 template <typename T>
- -
144 {
-
145  if (m_scope_stacks) {
-
146  m_scope_stacks->local().clear_current_scope(*this);
-
147  }
-
148 }
-
149 
-
150 template <typename T>
-
151 void Attribute<T>::consolidate(const std::vector<int64_t>& new2old)
-
152 {
-
153  for (int64_t i = 0; i < new2old.size(); ++i) vector_attribute(i) = vector_attribute(new2old[i]);
-
154 
-
155  m_data.resize(new2old.size() * m_dimension);
-
156 }
-
157 
+
134 
+
135 template <typename T>
+
136 void Attribute<T>::consolidate(const std::vector<int64_t>& new2old)
+
137 {
+
138  for (int64_t i = 0; i < new2old.size(); ++i) vector_attribute(i) = vector_attribute(new2old[i]);
+
139 
+
140  m_data.resize(new2old.size() * m_dimension);
+
141 }
+
142 
+
143 #if defined(__GNUG__) && !defined(__clang__)
+
144 #pragma GCC diagnostic push
+
145 #pragma GCC diagnostic ignored "-Wsuggest-attribute=noreturn"
+
146 #endif
+
147 template <typename T>
+
148 void Attribute<T>::index_remap(const std::vector<T>& old2new)
+
149 {
+
150  if constexpr (std::is_same_v<T, int64_t>) {
+
151  for (int64_t i = 0; i < m_data.size(); ++i)
+
152  if (m_data[i] >= 0) // Negative number are error codes, not indices
+
153  m_data[i] = old2new[m_data[i]];
+
154  } else {
+
155  throw std::runtime_error("Only int64_t attributes can be index remapped.");
+
156  }
+
157 }
158 #if defined(__GNUG__) && !defined(__clang__)
-
159 #pragma GCC diagnostic push
-
160 #pragma GCC diagnostic ignored "-Wsuggest-attribute=noreturn"
-
161 #endif
-
162 template <typename T>
-
163 void Attribute<T>::index_remap(const std::vector<T>& old2new)
-
164 {
-
165  if constexpr (std::is_same_v<T, int64_t>) {
-
166  for (int64_t i = 0; i < m_data.size(); ++i)
-
167  if (m_data[i] >= 0) // Negative number are error codes, not indices
-
168  m_data[i] = old2new[m_data[i]];
-
169  } else {
-
170  throw std::runtime_error("Only int64_t attributes can be index remapped.");
-
171  }
-
172 }
-
173 #if defined(__GNUG__) && !defined(__clang__)
-
174 #pragma GCC diagnostic pop
-
175 #endif
-
176 
-
177 
-
178 template class Attribute<char>;
-
179 template class Attribute<int64_t>;
-
180 template class Attribute<double>;
-
181 template class Attribute<Rational>;
-
182 } // namespace wmtk::attribute
+
159 #pragma GCC diagnostic pop
+
160 #endif
+
161 
+
162 
+
163 template class Attribute<char>;
+
164 template class Attribute<int64_t>;
+
165 template class Attribute<double>;
+
166 template class Attribute<Rational>;
+
167 } // namespace wmtk::attribute
@@ -305,26 +290,26 @@
virtual bool write(const int dim)=0
This class stores data of type T in a vector.
Definition: Attribute.hpp:30
- +
Attribute & operator=(Attribute &&o)
Attribute(const std::string &name, int64_t dimension, T default_value=T(0), int64_t size=0)
Initialize the attribute.
Definition: Attribute.cpp:27
-
void index_remap(const std::vector< T > &old2new)
Applies the scalar old2new map to the indices in the attribute This is commonly used after a consolid...
Definition: Attribute.cpp:163
- -
int64_t dimension() const
The number of values for each index.
Definition: Attribute.cpp:106
- -
void pop_scope(bool apply_updates)
Definition: Attribute.cpp:135
-
bool operator==(const Attribute< T > &o) const
Definition: Attribute.cpp:81
-
AttributeScopeStack< T > * get_local_scope_stack_ptr() const
Definition: Attribute.cpp:119
+
void index_remap(const std::vector< T > &old2new)
Applies the scalar old2new map to the indices in the attribute This is commonly used after a consolid...
Definition: Attribute.cpp:148
+ +
int64_t dimension() const
The number of values for each index.
Definition: Attribute.cpp:91
+ +
void pop_scope(bool apply_updates)
Definition: Attribute.cpp:120
+
bool operator==(const Attribute< T > &o) const
Definition: Attribute.cpp:66
+
AttributeScopeStack< T > * get_local_scope_stack_ptr() const
Definition: Attribute.cpp:104
void serialize(const std::string &name, const int dim, MeshWriter &writer) const
Definition: Attribute.cpp:12
-
void reserve(const int64_t size)
Definition: Attribute.cpp:89
-
void consolidate(const std::vector< int64_t > &new2old)
Consolidate the vector, using the new2old map m provided and resizing the vector to m....
Definition: Attribute.cpp:151
-
int64_t reserved_size() const
The total number of elements in a vector.
Definition: Attribute.cpp:96
-
std::vector< T > m_data
Definition: Attribute.hpp:158
- +
void reserve(const int64_t size)
Definition: Attribute.cpp:74
+
void consolidate(const std::vector< int64_t > &new2old)
Consolidate the vector, using the new2old map m provided and resizing the vector to m....
Definition: Attribute.cpp:136
+
int64_t reserved_size() const
The total number of elements in a vector.
Definition: Attribute.cpp:81
+
std::vector< T > m_data
Definition: Attribute.hpp:155
+ - -
void set(std::vector< T > val)
Replace the internal data with val.
Definition: Attribute.cpp:112
-
std::map< std::string, size_t > child_hashes() const override
Definition: Attribute.cpp:49
+ +
void set(std::vector< T > val)
Replace the internal data with val.
Definition: Attribute.cpp:97
+
std::map< std::string, size_t > child_hashes() const override
Definition: Attribute.cpp:43
A stack of changes applied to an Attribute.
diff --git a/_attribute_8hpp_source.html b/_attribute_8hpp_source.html index e2428d3881..fa687fc8e9 100644 --- a/_attribute_8hpp_source.html +++ b/_attribute_8hpp_source.html @@ -196,158 +196,155 @@
113  void index_remap(const std::vector<T>& old2new);
114 
115 protected:
-
116  Attribute& operator=(const Attribute& o);
-
117  Attribute(const Attribute& o);
-
118 protected:
-
124  ConstMapResult const_vector_attribute(const int64_t index, const std::vector<T>& data) const;
-
129  MapResult vector_attribute(const int64_t index, std::vector<T>& data) const;
-
135  T const_scalar_attribute(const int64_t index, const std::vector<T>& data) const;
-
140  T& scalar_attribute(const int64_t index, std::vector<T>& data) const;
-
141 
-
147  T const_scalar_attribute(const int64_t index, const int8_t offset, const std::vector<T>& data) const;
-
152  T& scalar_attribute(const int64_t index, const int8_t offset, std::vector<T>& data) const;
+
121  ConstMapResult const_vector_attribute(const int64_t index, const std::vector<T>& data) const;
+
126  MapResult vector_attribute(const int64_t index, std::vector<T>& data) const;
+
132  T const_scalar_attribute(const int64_t index, const std::vector<T>& data) const;
+
137  T& scalar_attribute(const int64_t index, std::vector<T>& data) const;
+
138 
+
144  T const_scalar_attribute(const int64_t index, const int8_t offset, const std::vector<T>& data) const;
+
149  T& scalar_attribute(const int64_t index, const int8_t offset, std::vector<T>& data) const;
+
150 
+
151  // computes the "reserved size" but using the passed in data
+
152  int64_t reserved_size(const std::vector<T>& data) const;
153 
-
154  // computes the "reserved size" but using the passed in data
-
155  int64_t reserved_size(const std::vector<T>& data) const;
-
156 
-
157 private:
-
158  std::vector<T> m_data;
-
159  std::unique_ptr<PerThreadAttributeScopeStacks<T>> m_scope_stacks;
-
160  int64_t m_dimension = -1;
-
161  T m_default_value = T(0);
-
162 
-
163 public:
-
164  std::string m_name;
-
165 };
-
166 
-
167 template <typename T>
-
168 inline auto Attribute<T>::const_vector_attribute(const int64_t index) const -> ConstMapResult
-
169 {
-
170  return const_vector_attribute(index, m_data);
-
171 }
-
172 template <typename T>
-
173 inline auto Attribute<T>::const_vector_attribute(const int64_t index, const std::vector<T>& data) const
-
174  -> ConstMapResult
-
175 {
-
176  assert(index < reserved_size(data));
-
177  assert(data.size() % m_dimension == 0);
-
178  assert(m_dimension > 0);
-
179  const int64_t start = index * m_dimension;
-
180  ConstMapResult R(data.data() + start, m_dimension);
-
181 
-
182  assert(R.size() == m_dimension);
+
154 private:
+
155  std::vector<T> m_data;
+
156  std::unique_ptr<PerThreadAttributeScopeStacks<T>> m_scope_stacks;
+
157  int64_t m_dimension = -1;
+
158  T m_default_value = T(0);
+
159 
+
160 public:
+
161  std::string m_name;
+
162 };
+
163 
+
164 template <typename T>
+
165 inline auto Attribute<T>::const_vector_attribute(const int64_t index) const -> ConstMapResult
+
166 {
+
167  return const_vector_attribute(index, m_data);
+
168 }
+
169 template <typename T>
+
170 inline auto Attribute<T>::const_vector_attribute(const int64_t index, const std::vector<T>& data) const
+
171  -> ConstMapResult
+
172 {
+
173  assert(index < reserved_size(data));
+
174  assert(data.size() % m_dimension == 0);
+
175  assert(m_dimension > 0);
+
176  const int64_t start = index * m_dimension;
+
177  ConstMapResult R(data.data() + start, m_dimension);
+
178 
+
179  assert(R.size() == m_dimension);
+
180 
+
181  return R;
+
182 }
183 
-
184  return R;
-
185 }
-
186 
-
187 
-
188 template <typename T>
-
189 inline auto Attribute<T>::vector_attribute(const int64_t index) -> MapResult
-
190 {
-
191  return vector_attribute(index, m_data);
-
192 }
-
193 template <typename T>
-
194 inline auto Attribute<T>::vector_attribute(const int64_t index, std::vector<T>& data) const -> MapResult
-
195 {
-
196  assert(index < reserved_size(data));
-
197  assert(data.size() % m_dimension == 0);
-
198  assert(m_dimension > 0);
-
199  const int64_t start = index * m_dimension;
-
200  MapResult R(data.data() + start, m_dimension);
-
201  assert(R.size() == m_dimension);
-
202  return R;
-
203 }
-
204 
-
205 template <typename T>
-
206 inline T Attribute<T>::const_scalar_attribute(const int64_t index) const
-
207 {
-
208  return const_scalar_attribute(index, m_data);
-
209 }
-
210 template <typename T>
-
211 inline T Attribute<T>::const_scalar_attribute(const int64_t index, const std::vector<T>& data) const
-
212 {
-
213  assert(index < reserved_size(data));
-
214  assert(m_dimension == 1);
-
215  return data[index];
-
216 }
-
217 
-
218 template <typename T>
-
219 inline T& Attribute<T>::scalar_attribute(const int64_t index)
-
220 {
-
221  return scalar_attribute(index, m_data);
-
222 }
-
223 template <typename T>
-
224 inline T& Attribute<T>::scalar_attribute(const int64_t index, std::vector<T>& data) const
-
225 {
-
226  assert(index < reserved_size(data));
-
227  assert(m_dimension == 1);
-
228  return data[index];
-
229 }
-
230 
-
231 template <typename T>
-
232 inline T Attribute<T>::const_scalar_attribute(const int64_t index, const int8_t offset) const
-
233 {
-
234  return const_scalar_attribute(index, offset, m_data);
-
235 }
-
236 template <typename T>
-
237 inline T Attribute<T>::const_scalar_attribute(const int64_t index, const int8_t offset, const std::vector<T>& data) const
-
238 {
-
239  const int64_t idx = index * m_dimension + offset;
-
240  assert(index < reserved_size(data));
-
241  return data[idx];
-
242 }
-
243 
-
244 template <typename T>
-
245 inline T& Attribute<T>::scalar_attribute(const int64_t index, const int8_t offset)
-
246 {
-
247  return scalar_attribute(index, offset, m_data);
-
248 }
-
249 template <typename T>
-
250 inline T& Attribute<T>::scalar_attribute(const int64_t index, const int8_t offset, std::vector<T>& data) const
-
251 {
-
252  const int64_t idx = index * m_dimension + offset;
-
253  assert(index < reserved_size(data));
-
254  return data[idx];
-
255 }
-
256 
-
257 
-
258 } // namespace attribute
-
259 } // namespace wmtk
+
184 
+
185 template <typename T>
+
186 inline auto Attribute<T>::vector_attribute(const int64_t index) -> MapResult
+
187 {
+
188  return vector_attribute(index, m_data);
+
189 }
+
190 template <typename T>
+
191 inline auto Attribute<T>::vector_attribute(const int64_t index, std::vector<T>& data) const -> MapResult
+
192 {
+
193  assert(index < reserved_size(data));
+
194  assert(data.size() % m_dimension == 0);
+
195  assert(m_dimension > 0);
+
196  const int64_t start = index * m_dimension;
+
197  MapResult R(data.data() + start, m_dimension);
+
198  assert(R.size() == m_dimension);
+
199  return R;
+
200 }
+
201 
+
202 template <typename T>
+
203 inline T Attribute<T>::const_scalar_attribute(const int64_t index) const
+
204 {
+
205  return const_scalar_attribute(index, m_data);
+
206 }
+
207 template <typename T>
+
208 inline T Attribute<T>::const_scalar_attribute(const int64_t index, const std::vector<T>& data) const
+
209 {
+
210  assert(index < reserved_size(data));
+
211  assert(m_dimension == 1);
+
212  return data[index];
+
213 }
+
214 
+
215 template <typename T>
+
216 inline T& Attribute<T>::scalar_attribute(const int64_t index)
+
217 {
+
218  return scalar_attribute(index, m_data);
+
219 }
+
220 template <typename T>
+
221 inline T& Attribute<T>::scalar_attribute(const int64_t index, std::vector<T>& data) const
+
222 {
+
223  assert(index < reserved_size(data));
+
224  assert(m_dimension == 1);
+
225  return data[index];
+
226 }
+
227 
+
228 template <typename T>
+
229 inline T Attribute<T>::const_scalar_attribute(const int64_t index, const int8_t offset) const
+
230 {
+
231  return const_scalar_attribute(index, offset, m_data);
+
232 }
+
233 template <typename T>
+
234 inline T Attribute<T>::const_scalar_attribute(const int64_t index, const int8_t offset, const std::vector<T>& data) const
+
235 {
+
236  const int64_t idx = index * m_dimension + offset;
+
237  assert(index < reserved_size(data));
+
238  return data[idx];
+
239 }
+
240 
+
241 template <typename T>
+
242 inline T& Attribute<T>::scalar_attribute(const int64_t index, const int8_t offset)
+
243 {
+
244  return scalar_attribute(index, offset, m_data);
+
245 }
+
246 template <typename T>
+
247 inline T& Attribute<T>::scalar_attribute(const int64_t index, const int8_t offset, std::vector<T>& data) const
+
248 {
+
249  const int64_t idx = index * m_dimension + offset;
+
250  assert(index < reserved_size(data));
+
251  return data[idx];
+
252 }
+
253 
+
254 
+
255 } // namespace attribute
+
256 } // namespace wmtk
This class stores data of type T in a vector.
Definition: Attribute.hpp:30
- -
ConstMapResult const_vector_attribute(const int64_t index) const
Definition: Attribute.hpp:168
+ +
ConstMapResult const_vector_attribute(const int64_t index) const
Definition: Attribute.hpp:165
Attribute & operator=(Attribute &&o)
Attribute(const std::string &name, int64_t dimension, T default_value=T(0), int64_t size=0)
Initialize the attribute.
Definition: Attribute.cpp:27
-
void index_remap(const std::vector< T > &old2new)
Applies the scalar old2new map to the indices in the attribute This is commonly used after a consolid...
Definition: Attribute.cpp:163
-
MapResult vector_attribute(const int64_t index)
Definition: Attribute.hpp:189
- -
std::unique_ptr< PerThreadAttributeScopeStacks< T > > m_scope_stacks
Definition: Attribute.hpp:159
+
void index_remap(const std::vector< T > &old2new)
Applies the scalar old2new map to the indices in the attribute This is commonly used after a consolid...
Definition: Attribute.cpp:148
+
MapResult vector_attribute(const int64_t index)
Definition: Attribute.hpp:186
+ +
std::unique_ptr< PerThreadAttributeScopeStacks< T > > m_scope_stacks
Definition: Attribute.hpp:156
Eigen::Map< const Eigen::Matrix< T, R, 1, 0,(R==Eigen::Dynamic ? MAX_ATTR_SIZE :R), 1 > > ConstMapResultD
Definition: Attribute.hpp:39
-
int64_t dimension() const
The number of values for each index.
Definition: Attribute.cpp:106
-
T & scalar_attribute(const int64_t index)
Definition: Attribute.hpp:219
+
int64_t dimension() const
The number of values for each index.
Definition: Attribute.cpp:91
+
T & scalar_attribute(const int64_t index)
Definition: Attribute.hpp:216
ConstMapResultD< Eigen::Dynamic > ConstMapResult
Definition: Attribute.hpp:42
- +
MapResultD< Eigen::Dynamic > MapResult
Definition: Attribute.hpp:41
-
void pop_scope(bool apply_updates)
Definition: Attribute.cpp:135
-
bool operator==(const Attribute< T > &o) const
Definition: Attribute.cpp:81
+
void pop_scope(bool apply_updates)
Definition: Attribute.cpp:120
+
bool operator==(const Attribute< T > &o) const
Definition: Attribute.cpp:66
Eigen::Map< Eigen::Matrix< T, R, 1, 0,(R==Eigen::Dynamic ? MAX_ATTR_SIZE :R), 1 > > MapResultD
Definition: Attribute.hpp:36
-
AttributeScopeStack< T > * get_local_scope_stack_ptr() const
Definition: Attribute.cpp:119
+
AttributeScopeStack< T > * get_local_scope_stack_ptr() const
Definition: Attribute.cpp:104
void serialize(const std::string &name, const int dim, MeshWriter &writer) const
Definition: Attribute.cpp:12
-
void reserve(const int64_t size)
Definition: Attribute.cpp:89
-
void consolidate(const std::vector< int64_t > &new2old)
Consolidate the vector, using the new2old map m provided and resizing the vector to m....
Definition: Attribute.cpp:151
-
int64_t reserved_size() const
The total number of elements in a vector.
Definition: Attribute.cpp:96
-
std::vector< T > m_data
Definition: Attribute.hpp:158
- +
void reserve(const int64_t size)
Definition: Attribute.cpp:74
+
void consolidate(const std::vector< int64_t > &new2old)
Consolidate the vector, using the new2old map m provided and resizing the vector to m....
Definition: Attribute.cpp:136
+
int64_t reserved_size() const
The total number of elements in a vector.
Definition: Attribute.cpp:81
+
std::vector< T > m_data
Definition: Attribute.hpp:155
+ - -
void set(std::vector< T > val)
Replace the internal data with val.
Definition: Attribute.cpp:112
-
std::map< std::string, size_t > child_hashes() const override
Definition: Attribute.cpp:49
-
T const_scalar_attribute(const int64_t index) const
Definition: Attribute.hpp:206
+ +
void set(std::vector< T > val)
Replace the internal data with val.
Definition: Attribute.cpp:97
+
std::map< std::string, size_t > child_hashes() const override
Definition: Attribute.cpp:43
+
T const_scalar_attribute(const int64_t index) const
Definition: Attribute.hpp:203
constexpr static int MAX_ATTR_SIZE
Definition: Attribute.hpp:33
A stack of changes applied to an Attribute.
diff --git a/_attribute_cache_8cpp_source.html b/_attribute_cache_8cpp_source.html index ec8e9e8015..abcaba0cd4 100644 --- a/_attribute_cache_8cpp_source.html +++ b/_attribute_cache_8cpp_source.html @@ -223,7 +223,7 @@
This class stores data of type T in a vector.
Definition: Attribute.hpp:30
-
MapResult vector_attribute(const int64_t index)
Definition: Attribute.hpp:189
+
MapResult vector_attribute(const int64_t index)
Definition: Attribute.hpp:186
diff --git a/_attribute_manager_8cpp_source.html b/_attribute_manager_8cpp_source.html index 5824143eea..c136e0603c 100644 --- a/_attribute_manager_8cpp_source.html +++ b/_attribute_manager_8cpp_source.html @@ -399,7 +399,7 @@
282  for (int64_t index = 0; index < count; ++index) {
284  t.m_base_handle.index = index;
- +
286  handles.emplace_back(t);
287  }
288  }
@@ -442,7 +442,7 @@
325  std::visit(
326  [&](auto&& val) {
327  using T = typename std::decay_t<decltype(val)>::Type;
-
328  customs.get<T>()[get_primitive_type_id(val.primitive_type())].emplace_back(
+
328  customs.get<T>()[get_primitive_type_id(val.primitive_type())].emplace_back(
329  val.base_handle());
330  },
331  attr);
@@ -454,7 +454,7 @@
337  auto& mycustoms = customs.get<T>();
338 
339  for (size_t ptype_id = 0; ptype_id < m_char_attributes.size(); ++ptype_id) {
-
340  const PrimitiveType primitive_type = get_primitive_type_from_id(ptype_id);
+
340  const PrimitiveType primitive_type = get_primitive_type_from_id(ptype_id);
341 
342 
343  get<T>(primitive_type).remove_attributes(mycustoms[ptype_id]);
@@ -515,9 +515,9 @@
std::map< std::string, std::size_t > child_hashes() const override
std::variant< TypedAttributeHandle< char >, TypedAttributeHandle< int64_t >, TypedAttributeHandle< double >, TypedAttributeHandle< Rational > > TypedAttributeHandleVariant
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- -
PrimitiveType get_primitive_type_from_id(int64_t id)
Get the primitive type corresponding to its unique integer id.
+
constexpr PrimitiveType get_primitive_type_from_id(int8_t id)
Get the primitive type corresponding to its unique integer id.
+
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+ diff --git a/_attribute_manager_8hpp_source.html b/_attribute_manager_8hpp_source.html index efc067ff31..c8e01db5e8 100644 --- a/_attribute_manager_8hpp_source.html +++ b/_attribute_manager_8hpp_source.html @@ -181,7 +181,7 @@
64  template <typename T>
66  const std::string& name,
-
67  PrimitiveType type,
+
67  PrimitiveType type,
68  int64_t size,
69  bool replace,
70  T default_value);
@@ -193,7 +193,7 @@
76  std::vector<MeshAttributes<T>>& get();
77 
78  template <typename T>
- +
80 
81  template <typename T>
@@ -207,7 +207,7 @@
90  const std::vector<MeshAttributes<T>>& get() const;
91 
92  template <typename T>
-
93  const MeshAttributes<T>& get(PrimitiveType ptype) const;
+
93  const MeshAttributes<T>& get(PrimitiveType ptype) const;
94 
95  template <typename T>
96  const MeshAttributes<T>& get(const TypedAttributeHandle<T>& handle) const;
@@ -263,16 +263,16 @@
151 }
152 
153 template <typename T>
- +
155 {
-
156  size_t index = get_primitive_type_id(ptype);
-
157  return get<T>().at(index);
+
156  const int8_t index = get_primitive_type_id(ptype);
+
157  return get<T>()[index];
158 }
159 
160 template <typename T>
- +
162 {
-
163  size_t index = get_primitive_type_id(ptype);
+
163  size_t index = get_primitive_type_id(ptype);
164  return get<T>().at(index);
165 }
166 
@@ -289,7 +289,7 @@
177 template <typename T>
179  const std::string& name,
-
180  PrimitiveType ptype,
+
180  PrimitiveType ptype,
181  int64_t size,
182  bool replace,
183  T default_value)
@@ -381,8 +381,8 @@
Definition: autodiff.h:995
std::variant< TypedAttributeHandle< char >, TypedAttributeHandle< int64_t >, TypedAttributeHandle< double >, TypedAttributeHandle< Rational > > TypedAttributeHandleVariant
Definition: Accessor.cpp:8
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- +
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+ diff --git a/_attribute_transfer_strategy_8cpp_source.html b/_attribute_transfer_strategy_8cpp_source.html index e6fb2d6496..379d8f5dfb 100644 --- a/_attribute_transfer_strategy_8cpp_source.html +++ b/_attribute_transfer_strategy_8cpp_source.html @@ -131,7 +131,7 @@
14 {}
15 
16 template <typename T>
- +
18 {
19  return handle().primitive_type();
20 }
@@ -157,7 +157,7 @@
AttributeTransferStrategy(const attribute::MeshAttributeHandle &my_handle)
- + diff --git a/_attribute_transfer_strategy_8hpp_source.html b/_attribute_transfer_strategy_8hpp_source.html index 1f123f5632..714904de99 100644 --- a/_attribute_transfer_strategy_8hpp_source.html +++ b/_attribute_transfer_strategy_8hpp_source.html @@ -130,7 +130,7 @@
13 {
14 public:
-
16  PrimitiveType primitive_type() const override;
+
16  PrimitiveType primitive_type() const override;
17  Mesh& mesh() override;
18 
19 
@@ -177,7 +177,7 @@
60  void run(const simplex::Simplex& s) override;
61 
62 
- +
64 
66  {
@@ -263,7 +263,7 @@
146  }
147 }
148 template <typename MyType, typename ParentType>
- +
150 {
151  return m_parent_handle.primitive_type();
152 }
@@ -300,8 +300,8 @@
Definition: Accessor.cpp:8
Vector< T, Eigen::Dynamic > VectorX
Definition: Types.hpp:18
-
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Definition: Types.hpp:13
+ diff --git a/_attribute_transfer_strategy_base_8cpp_source.html b/_attribute_transfer_strategy_base_8cpp_source.html index f0929b90fc..e0d891b889 100644 --- a/_attribute_transfer_strategy_base_8cpp_source.html +++ b/_attribute_transfer_strategy_base_8cpp_source.html @@ -131,7 +131,7 @@
14 
16 {
- +
18  auto tuples = m_handle.mesh().get_all(pt);
19 
20  for (const Tuple& t : tuples) {
@@ -151,9 +151,9 @@
34  const Mesh& m,
35  const Mesh& parent,
36  const simplex::Simplex& s,
-
37  PrimitiveType parent_primitive_type)
+
37  PrimitiveType parent_primitive_type)
38 {
-
39  const PrimitiveType my_primitive_type = s.primitive_type();
+
39  const PrimitiveType my_primitive_type = s.primitive_type();
40 
41 
42  // the set of simplices that can be traversed without crossing a mesh-mesh edge more than once
@@ -205,7 +205,7 @@
void unique_homogeneous_simplices_inline(const Mesh &m, PrimitiveType pt, std::vector< Tuple > &tups)
std::vector< Tuple > neighbors_single_dimension_tuples(const Mesh &m, const Simplex &s, const PrimitiveType tpt)
- + diff --git a/_attribute_transfer_strategy_base_8hpp_source.html b/_attribute_transfer_strategy_base_8hpp_source.html index 88d34e120e..e8a2826044 100644 --- a/_attribute_transfer_strategy_base_8hpp_source.html +++ b/_attribute_transfer_strategy_base_8hpp_source.html @@ -151,7 +151,7 @@
34  const Mesh& m,
35  const Mesh& parent,
36  const simplex::Simplex& s,
-
37  PrimitiveType parent_primitive_type);
+
37  PrimitiveType parent_primitive_type);
38 
39  static std::vector<Tuple> get_parent_simplices(
@@ -171,7 +171,7 @@
54  // placeholder for when this turns into a DAG that needs to be linearized
55  // virtual std::vector<HandleVariant> parent_handles() const = 0;
56 
-
57  virtual PrimitiveType primitive_type() const = 0;
+
57  virtual PrimitiveType primitive_type() const = 0;
58  virtual Mesh& mesh() = 0;
59 
60  // runs the transfer on every simplex - good for initializing an attribute that will be managed
@@ -203,7 +203,7 @@
Definition: Accessor.cpp:8
- + diff --git a/_attributes_update_8hpp__incl.md5 b/_attributes_update_8hpp__incl.md5 index fa6d9df5c8..6142db6123 100644 --- a/_attributes_update_8hpp__incl.md5 +++ b/_attributes_update_8hpp__incl.md5 @@ -1 +1 @@ -8160eaed2842ead1f37e1d6c562d8147 \ No newline at end of file +38145b0d683e862252367a8543c81845 \ No newline at end of file diff --git a/_attributes_update_8hpp__incl.svg b/_attributes_update_8hpp__incl.svg index a0eebc80cf..2410a9fc1a 100644 --- a/_attributes_update_8hpp__incl.svg +++ b/_attributes_update_8hpp__incl.svg @@ -826,13 +826,13 @@ var sectionId = 'dynsection-0';
- + Node44->Node25 - + Node44->Node36 @@ -847,7 +847,7 @@ var sectionId = 'dynsection-0'; - + Node44->Node45 @@ -862,19 +862,19 @@ var sectionId = 'dynsection-0'; - + Node44->Node51 - + Node45->Node28 - + Node45->Node29 @@ -889,7 +889,7 @@ var sectionId = 'dynsection-0'; - + Node45->Node46 @@ -904,7 +904,7 @@ var sectionId = 'dynsection-0'; - + Node45->Node47 @@ -919,25 +919,25 @@ var sectionId = 'dynsection-0'; - + Node45->Node50 - + Node47->Node10 - + Node47->Node27 - + Node47->Node28 @@ -952,43 +952,43 @@ var sectionId = 'dynsection-0'; - + Node47->Node32 - + Node50->Node36 - + Node50->Node45 - + Node51->Node8 - + Node51->Node16 - + Node51->Node28 - + Node51->Node47 @@ -1003,7 +1003,7 @@ var sectionId = 'dynsection-0'; - + Node51->Node52 diff --git a/_attributes_update_8hpp__incl_org.svg b/_attributes_update_8hpp__incl_org.svg index 96eb28df3c..1ee8b722bf 100644 --- a/_attributes_update_8hpp__incl_org.svg +++ b/_attributes_update_8hpp__incl_org.svg @@ -780,13 +780,13 @@ - + Node44->Node25 - + Node44->Node36 @@ -801,7 +801,7 @@ - + Node44->Node45 @@ -816,19 +816,19 @@ - + Node44->Node51 - + Node45->Node28 - + Node45->Node29 @@ -843,7 +843,7 @@ - + Node45->Node46 @@ -858,7 +858,7 @@ - + Node45->Node47 @@ -873,25 +873,25 @@ - + Node45->Node50 - + Node47->Node10 - + Node47->Node27 - + Node47->Node28 @@ -906,43 +906,43 @@ - + Node47->Node32 - + Node50->Node36 - + Node50->Node45 - + Node51->Node8 - + Node51->Node16 - + Node51->Node28 - + Node51->Node47 @@ -957,7 +957,7 @@ - + Node51->Node52 diff --git a/_attributes_update_8hpp_source.html b/_attributes_update_8hpp_source.html index 6c0d711bcd..3745c1bd44 100644 --- a/_attributes_update_8hpp_source.html +++ b/_attributes_update_8hpp_source.html @@ -126,7 +126,7 @@
9 public:
11 
-
12  virtual PrimitiveType primitive_type() const override { return PrimitiveType::Vertex; }
+
12  virtual PrimitiveType primitive_type() const override { return PrimitiveType::Vertex; }
13 
14 protected:
15  virtual std::vector<simplex::Simplex> unmodified_primitives(
@@ -166,8 +166,8 @@ - - + + diff --git a/_boundary_checker_8cpp_source.html b/_boundary_checker_8cpp_source.html index d126adebcc..f41ce12b4d 100644 --- a/_boundary_checker_8cpp_source.html +++ b/_boundary_checker_8cpp_source.html @@ -148,7 +148,7 @@
31 }
33  const Mesh& mesh,
-
34  const wmtk::PrimitiveType pt,
+
34  const wmtk::PrimitiveType pt,
35  const wmtk::Tuple& simplex) const
36 {
37  return is_boundary(mesh, wmtk::simplex::Simplex(pt, simplex));
@@ -186,7 +186,7 @@
PrimitiveType primitive_type() const
Definition: Simplex.hpp:23
- + diff --git a/_boundary_checker_8hpp_source.html b/_boundary_checker_8hpp_source.html index e2db4f981d..f5004be4e6 100644 --- a/_boundary_checker_8hpp_source.html +++ b/_boundary_checker_8hpp_source.html @@ -149,7 +149,7 @@
32  void add_mesh(const Mesh& m);
33 
34  bool is_boundary(const Mesh& m, const wmtk::simplex::Simplex& simplex) const;
-
35  bool is_boundary(const Mesh& m, const wmtk::PrimitiveType pt, const wmtk::Tuple& simplex) const;
+
35  bool is_boundary(const Mesh& m, const wmtk::PrimitiveType pt, const wmtk::Tuple& simplex) const;
36 
37 private:
38  std::vector<const Mesh*> m_meshes;
@@ -180,7 +180,7 @@
Definition: autodiff.h:995
Definition: Accessor.cpp:8
- + diff --git a/_caching_accessor_8hpp__incl.md5 b/_caching_accessor_8hpp__incl.md5 index 58089b1428..a56e9c2bc4 100644 --- a/_caching_accessor_8hpp__incl.md5 +++ b/_caching_accessor_8hpp__incl.md5 @@ -1 +1 @@ -319125275baba9287cf7f3643994f891 \ No newline at end of file +187eb4de4e4dc09c9a114e31e015a416 \ No newline at end of file diff --git a/_caching_accessor_8hpp__incl.svg b/_caching_accessor_8hpp__incl.svg index 4c0893e706..0362c48204 100644 --- a/_caching_accessor_8hpp__incl.svg +++ b/_caching_accessor_8hpp__incl.svg @@ -730,13 +730,13 @@ var sectionId = 'dynsection-0';
- + Node36->Node1 - + Node36->Node28 @@ -751,7 +751,7 @@ var sectionId = 'dynsection-0'; - + Node36->Node37 @@ -766,19 +766,19 @@ var sectionId = 'dynsection-0'; - + Node36->Node43 - + Node37->Node4 - + Node37->Node6 @@ -793,7 +793,7 @@ var sectionId = 'dynsection-0'; - + Node37->Node38 @@ -808,7 +808,7 @@ var sectionId = 'dynsection-0'; - + Node37->Node39 @@ -823,31 +823,31 @@ var sectionId = 'dynsection-0'; - + Node37->Node42 - + Node39->Node3 - + Node39->Node4 - + Node39->Node7 - + Node39->Node12 @@ -862,13 +862,13 @@ var sectionId = 'dynsection-0'; - + Node39->Node40 - + Node40->Node7 @@ -883,43 +883,43 @@ var sectionId = 'dynsection-0'; - + Node40->Node41 - + Node42->Node28 - + Node42->Node37 - + Node43->Node4 - + Node43->Node8 - + Node43->Node17 - + Node43->Node39 @@ -934,7 +934,7 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 @@ -949,31 +949,31 @@ var sectionId = 'dynsection-0'; - + Node43->Node45 - + Node45->Node6 - + Node45->Node28 - + Node45->Node37 - + Node45->Node43 diff --git a/_caching_accessor_8hpp__incl_org.svg b/_caching_accessor_8hpp__incl_org.svg index 6807ad82d5..3ffca3f827 100644 --- a/_caching_accessor_8hpp__incl_org.svg +++ b/_caching_accessor_8hpp__incl_org.svg @@ -684,13 +684,13 @@ - + Node36->Node1 - + Node36->Node28 @@ -705,7 +705,7 @@ - + Node36->Node37 @@ -720,19 +720,19 @@ - + Node36->Node43 - + Node37->Node4 - + Node37->Node6 @@ -747,7 +747,7 @@ - + Node37->Node38 @@ -762,7 +762,7 @@ - + Node37->Node39 @@ -777,31 +777,31 @@ - + Node37->Node42 - + Node39->Node3 - + Node39->Node4 - + Node39->Node7 - + Node39->Node12 @@ -816,13 +816,13 @@ - + Node39->Node40 - + Node40->Node7 @@ -837,43 +837,43 @@ - + Node40->Node41 - + Node42->Node28 - + Node42->Node37 - + Node43->Node4 - + Node43->Node8 - + Node43->Node17 - + Node43->Node39 @@ -888,7 +888,7 @@ - + Node43->Node44 @@ -903,31 +903,31 @@ - + Node43->Node45 - + Node45->Node6 - + Node45->Node28 - + Node45->Node37 - + Node45->Node43 diff --git a/_caching_accessor_8hxx.html b/_caching_accessor_8hxx.html index 01995b5622..da45e972e7 100644 --- a/_caching_accessor_8hxx.html +++ b/_caching_accessor_8hxx.html @@ -117,10 +117,10 @@
CachingAccessor.hxx File Reference
-
#include "CachingAccessor.hpp"
-#include <wmtk/utils/Rational.hpp>
+
Include dependency graph for CachingAccessor.hxx:
diff --git a/_caching_accessor_8hxx__incl.map b/_caching_accessor_8hxx__incl.map index 0a05699367..e8f1b3b000 100644 --- a/_caching_accessor_8hxx__incl.map +++ b/_caching_accessor_8hxx__incl.map @@ -1,47 +1,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_caching_accessor_8hxx__incl.md5 b/_caching_accessor_8hxx__incl.md5 index 5d4d7c0771..8487138d35 100644 --- a/_caching_accessor_8hxx__incl.md5 +++ b/_caching_accessor_8hxx__incl.md5 @@ -1 +1 @@ -9d31827b0aab4de31970a63495e62c21 \ No newline at end of file +c8901459f0c5354da76c4825d7d019a2 \ No newline at end of file diff --git a/_caching_accessor_8hxx__incl.svg b/_caching_accessor_8hxx__incl.svg index 9866585b03..c480d95bd0 100644 --- a/_caching_accessor_8hxx__incl.svg +++ b/_caching_accessor_8hxx__incl.svg @@ -46,7 +46,7 @@ if (edges && edges.length) { @@ -58,925 +58,925 @@ var sectionId = 'dynsection-0'; Node1 - -src/wmtk/attribute -/CachingAccessor.hxx + +src/wmtk/attribute +/CachingAccessor.hxx Node2 - - -CachingAccessor.hpp + + +wmtk/utils/Rational.hpp Node1->Node2 - - + + - - -Node29 - - -wmtk/utils/Rational.hpp + + +Node5 + + +AttributeScope.hpp - - -Node1->Node29 - - + + +Node1->Node5 + + - - -Node37 - - -AttributeScope.hpp + + +Node41 + + +AttributeScopeStack.hpp - - -Node1->Node37 - - + + +Node1->Node41 + + - - -Node43 - - -AttributeScopeStack.hpp + + +Node44 + + +CachingAccessor.hpp - - -Node1->Node43 - - - - - -Node2->Node1 - - + + +Node1->Node44 + + Node3 - -optional + +gmp.h Node2->Node3 - - + + Node4 - - -AccessorBase.hpp + + +iostream Node2->Node4 - - - - - -Node5 - - -memory - - - - - -Node4->Node5 - - + + Node6 - -type_traits + +memory - + -Node4->Node6 - - +Node5->Node6 + + Node7 - -Attribute.hpp + +Attribute.hpp - + -Node4->Node7 - - +Node5->Node7 + + Node15 - - -MeshAttributeHandle.hpp + + +AttributeAccessMode.hpp - + -Node4->Node15 - - - - - -Node24 - - -wmtk/Tuple.hpp - - +Node5->Node15 + + - - -Node4->Node24 - - - - - -Node26 - - -wmtk/Types.hpp - - - - - -Node4->Node26 - - - - - -Node27 - - -Eigen/Dense + + +Node16 + + +AttributeCache.hpp - - -Node4->Node27 - - + + +Node5->Node16 + + - - -Node28 - - -AccessorBase.hxx + + +Node40 + + +AttributeScope.hxx - - -Node4->Node28 - - + + +Node5->Node40 + + - + -Node7->Node5 - - +Node7->Node6 + + Node8 - -Eigen/Core + +Eigen/Core Node7->Node8 - - + + Node9 - -vector + +vector Node7->Node9 - - + + Node10 - -wmtk/utils/MerkleTreeInterior -Node.hpp + +wmtk/utils/MerkleTreeInterior +Node.hpp Node7->Node10 - - + + Node11 - -functional + +functional Node10->Node11 - - + + Node12 - -Hashable.hpp + +Hashable.hpp Node10->Node12 - - + + Node13 - -map + +map Node12->Node13 - - + + Node14 - -string + +string Node12->Node14 - - + + - - -Node16 - - -TypedAttributeHandle.hpp - + + +Node16->Node6 + + + + +Node16->Node8 + + - - -Node15->Node16 - - + + +Node16->Node13 + + Node17 - - -variant + + +AccessorBase.hpp - - -Node15->Node17 - - - - + Node16->Node17 - - + + + + + +Node38 + + +AttributeCacheData.hpp + + + + + +Node16->Node38 + + + + + +Node17->Node6 + + + + + +Node17->Node7 + + Node18 - - -AttributeHandle.hpp + + +type_traits - - -Node16->Node18 - - - - - -Node18->Node6 - - - - - -Node18->Node15 - - + + +Node17->Node18 + + Node19 - - -wmtk/Primitive.hpp + + +MeshAttributeHandle.hpp - - -Node18->Node19 - - + + +Node17->Node19 + + + + + +Node28 + + +wmtk/Tuple.hpp + + + + + +Node17->Node28 + + + + + +Node30 + + +wmtk/Types.hpp + + + + + +Node17->Node30 + + + + + +Node31 + + +Eigen/Dense + + + + + +Node17->Node31 + + + + + +Node32 + + +AccessorBase.hxx + + + + + +Node17->Node32 + + Node20 - - -wmtk/simplex/Simplex.hpp + + +TypedAttributeHandle.hpp - + Node19->Node20 - - + + Node21 - - -wmtk/PrimitiveType.hpp + + +variant - + Node19->Node21 - - - - - -Node19->Node24 - - - - - -Node25 - - -Cell.hpp - - - - - -Node19->Node25 - - + + - -Node20->Node21 - - - - -Node20->Node24 - - - - - -Node21->Node9 - - +Node20->Node21 + + Node22 - - -stdexcept + + +AttributeHandle.hpp - - -Node21->Node22 - - + + +Node20->Node22 + + + + + +Node22->Node18 + + + + + +Node22->Node19 + + Node23 - - -string_view + + +wmtk/Primitive.hpp - - -Node21->Node23 - - + + +Node22->Node23 + + - - -Node24->Node21 - - + + +Node24 + + +wmtk/simplex/Simplex.hpp + - - -Node25->Node20 - - - + -Node25->Node24 - - +Node23->Node24 + + - - -Node26->Node8 - - + + +Node25 + + +wmtk/PrimitiveType.hpp + - - -Node28->Node4 - - - + -Node28->Node29 - - +Node23->Node25 + + - - -Node32 - - -AttributeManager.hpp + + +Node23->Node28 + + + + + +Node29 + + +Cell.hpp - - -Node28->Node32 - - + + +Node23->Node29 + + - - -Node30 - - -gmp.h + + +Node24->Node25 + + + + + +Node24->Node28 + + + + + +Node25->Node9 + + + + + +Node26 + + +stdexcept - - -Node29->Node30 - - + + +Node25->Node26 + + - - -Node31 - - -iostream + + +Node27 + + +string_view - - -Node29->Node31 - - + + +Node25->Node27 + + - - -Node32->Node9 - - + + +Node28->Node25 + + - - -Node32->Node16 - - + + +Node29->Node24 + + - - -Node32->Node29 - - + + +Node29->Node28 + + + + + +Node30->Node8 + + + + + +Node32->Node2 + + + + + +Node32->Node17 + + Node33 - - -wmtk/attribute/utils -/variant_comparison.hpp + + +AttributeManager.hpp - + Node32->Node33 - - + + + + + +Node33->Node2 + + + + + +Node33->Node9 + + + + + +Node33->Node20 + + Node34 - - -AttributeScopeHandle.hpp + + +wmtk/attribute/utils +/variant_comparison.hpp - - -Node32->Node34 - - + + +Node33->Node34 + + Node35 - - -MeshAttributes.hpp + + +AttributeScopeHandle.hpp - - -Node32->Node35 - - + + +Node33->Node35 + + Node36 - - -internal/CheckpointScope.hpp + + +MeshAttributes.hpp - - -Node32->Node36 - - + + +Node33->Node36 + + - - -Node33->Node15 - - + + +Node37 + + +internal/CheckpointScope.hpp + - - -Node35->Node7 - - - + + +Node33->Node37 + + + + -Node35->Node8 - - +Node34->Node19 + + - - -Node35->Node9 - - + + +Node36->Node7 + + - - -Node35->Node10 - - + + +Node36->Node8 + + - - -Node35->Node13 - - + + +Node36->Node9 + + - - -Node35->Node18 - - + + +Node36->Node10 + + - + -Node37->Node5 - - - - - -Node37->Node7 - - - - - -Node38 - - -AttributeAccessMode.hpp - +Node36->Node13 + + + + +Node36->Node22 + + - - -Node37->Node38 - - + + +Node38->Node8 + + Node39 - - -AttributeCache.hpp + + +cassert - - -Node37->Node39 - - - - - -Node42 - - -AttributeScope.hxx - + + +Node38->Node39 + + + + +Node40->Node2 + + - - -Node37->Node42 - - + + +Node40->Node5 + + - - -Node39->Node4 - - + + +Node41->Node6 + + - - -Node39->Node5 - - + + +Node41->Node9 + + - - -Node39->Node8 - - + + +Node41->Node16 + + - - -Node39->Node13 - - + + +Node41->Node22 + + - - -Node40 - - -AttributeCacheData.hpp + + +Node42 + + +spdlog/spdlog.h - - -Node39->Node40 - - - - - -Node40->Node8 - - + + +Node41->Node42 + + - - -Node41 - - -cassert + + +Node43 + + +AttributeScopeStack.hxx - - -Node40->Node41 - - - - - -Node42->Node29 - - + + +Node41->Node43 + + - - -Node42->Node37 - - + + +Node43->Node2 + + - + Node43->Node5 - - + + - - -Node43->Node9 - - - - + -Node43->Node18 - - +Node43->Node7 + + - - -Node43->Node39 - - - - - -Node44 - - -spdlog/spdlog.h - + + +Node43->Node41 + + + + +Node44->Node1 + + - - -Node43->Node44 - - + + +Node44->Node17 + + Node45 - - -AttributeScopeStack.hxx + + +optional - - -Node43->Node45 - - - - - -Node45->Node7 - - - - + -Node45->Node29 - - - - - -Node45->Node37 - - - - - -Node45->Node43 - - +Node44->Node45 + + diff --git a/_caching_accessor_8hxx__incl_org.svg b/_caching_accessor_8hxx__incl_org.svg index 680e1f55d1..2f34ce9fe3 100644 --- a/_caching_accessor_8hxx__incl_org.svg +++ b/_caching_accessor_8hxx__incl_org.svg @@ -4,933 +4,933 @@ - + src/wmtk/attribute/CachingAccessor.hxx Node1 - -src/wmtk/attribute -/CachingAccessor.hxx + +src/wmtk/attribute +/CachingAccessor.hxx Node2 - - -CachingAccessor.hpp + + +wmtk/utils/Rational.hpp Node1->Node2 - - + + - - -Node29 - - -wmtk/utils/Rational.hpp + + +Node5 + + +AttributeScope.hpp - - -Node1->Node29 - - + + +Node1->Node5 + + - - -Node37 - - -AttributeScope.hpp + + +Node41 + + +AttributeScopeStack.hpp - - -Node1->Node37 - - + + +Node1->Node41 + + - - -Node43 - - -AttributeScopeStack.hpp + + +Node44 + + +CachingAccessor.hpp - - -Node1->Node43 - - - - - -Node2->Node1 - - + + +Node1->Node44 + + Node3 - -optional + +gmp.h Node2->Node3 - - + + Node4 - - -AccessorBase.hpp + + +iostream Node2->Node4 - - - - - -Node5 - - -memory - - - - - -Node4->Node5 - - + + Node6 - -type_traits + +memory - + -Node4->Node6 - - +Node5->Node6 + + Node7 - -Attribute.hpp + +Attribute.hpp - + -Node4->Node7 - - +Node5->Node7 + + Node15 - - -MeshAttributeHandle.hpp + + +AttributeAccessMode.hpp - + -Node4->Node15 - - - - - -Node24 - - -wmtk/Tuple.hpp - - +Node5->Node15 + + - - -Node4->Node24 - - - - - -Node26 - - -wmtk/Types.hpp - - - - - -Node4->Node26 - - - - - -Node27 - - -Eigen/Dense + + +Node16 + + +AttributeCache.hpp - - -Node4->Node27 - - + + +Node5->Node16 + + - - -Node28 - - -AccessorBase.hxx + + +Node40 + + +AttributeScope.hxx - - -Node4->Node28 - - + + +Node5->Node40 + + - + -Node7->Node5 - - +Node7->Node6 + + Node8 - -Eigen/Core + +Eigen/Core Node7->Node8 - - + + Node9 - -vector + +vector Node7->Node9 - - + + Node10 - -wmtk/utils/MerkleTreeInterior -Node.hpp + +wmtk/utils/MerkleTreeInterior +Node.hpp Node7->Node10 - - + + Node11 - -functional + +functional Node10->Node11 - - + + Node12 - -Hashable.hpp + +Hashable.hpp Node10->Node12 - - + + Node13 - -map + +map Node12->Node13 - - + + Node14 - -string + +string Node12->Node14 - - + + - - -Node16 - - -TypedAttributeHandle.hpp - + + +Node16->Node6 + + + + +Node16->Node8 + + - - -Node15->Node16 - - + + +Node16->Node13 + + Node17 - - -variant + + +AccessorBase.hpp - - -Node15->Node17 - - - - + Node16->Node17 - - + + + + + +Node38 + + +AttributeCacheData.hpp + + + + + +Node16->Node38 + + + + + +Node17->Node6 + + + + + +Node17->Node7 + + Node18 - - -AttributeHandle.hpp + + +type_traits - - -Node16->Node18 - - - - - -Node18->Node6 - - - - - -Node18->Node15 - - + + +Node17->Node18 + + Node19 - - -wmtk/Primitive.hpp + + +MeshAttributeHandle.hpp - - -Node18->Node19 - - + + +Node17->Node19 + + + + + +Node28 + + +wmtk/Tuple.hpp + + + + + +Node17->Node28 + + + + + +Node30 + + +wmtk/Types.hpp + + + + + +Node17->Node30 + + + + + +Node31 + + +Eigen/Dense + + + + + +Node17->Node31 + + + + + +Node32 + + +AccessorBase.hxx + + + + + +Node17->Node32 + + Node20 - - -wmtk/simplex/Simplex.hpp + + +TypedAttributeHandle.hpp - + Node19->Node20 - - + + Node21 - - -wmtk/PrimitiveType.hpp + + +variant - + Node19->Node21 - - - - - -Node19->Node24 - - - - - -Node25 - - -Cell.hpp - - - - - -Node19->Node25 - - + + - -Node20->Node21 - - - - -Node20->Node24 - - - - - -Node21->Node9 - - +Node20->Node21 + + Node22 - - -stdexcept + + +AttributeHandle.hpp - - -Node21->Node22 - - + + +Node20->Node22 + + + + + +Node22->Node18 + + + + + +Node22->Node19 + + Node23 - - -string_view + + +wmtk/Primitive.hpp - - -Node21->Node23 - - + + +Node22->Node23 + + - - -Node24->Node21 - - + + +Node24 + + +wmtk/simplex/Simplex.hpp + - - -Node25->Node20 - - - + -Node25->Node24 - - +Node23->Node24 + + - - -Node26->Node8 - - + + +Node25 + + +wmtk/PrimitiveType.hpp + - - -Node28->Node4 - - - + -Node28->Node29 - - +Node23->Node25 + + - - -Node32 - - -AttributeManager.hpp + + +Node23->Node28 + + + + + +Node29 + + +Cell.hpp - - -Node28->Node32 - - + + +Node23->Node29 + + - - -Node30 - - -gmp.h + + +Node24->Node25 + + + + + +Node24->Node28 + + + + + +Node25->Node9 + + + + + +Node26 + + +stdexcept - - -Node29->Node30 - - + + +Node25->Node26 + + - - -Node31 - - -iostream + + +Node27 + + +string_view - - -Node29->Node31 - - + + +Node25->Node27 + + - - -Node32->Node9 - - + + +Node28->Node25 + + - - -Node32->Node16 - - + + +Node29->Node24 + + - - -Node32->Node29 - - + + +Node29->Node28 + + + + + +Node30->Node8 + + + + + +Node32->Node2 + + + + + +Node32->Node17 + + Node33 - - -wmtk/attribute/utils -/variant_comparison.hpp + + +AttributeManager.hpp - + Node32->Node33 - - + + + + + +Node33->Node2 + + + + + +Node33->Node9 + + + + + +Node33->Node20 + + Node34 - - -AttributeScopeHandle.hpp + + +wmtk/attribute/utils +/variant_comparison.hpp - - -Node32->Node34 - - + + +Node33->Node34 + + Node35 - - -MeshAttributes.hpp + + +AttributeScopeHandle.hpp - - -Node32->Node35 - - + + +Node33->Node35 + + Node36 - - -internal/CheckpointScope.hpp + + +MeshAttributes.hpp - - -Node32->Node36 - - + + +Node33->Node36 + + - - -Node33->Node15 - - + + +Node37 + + +internal/CheckpointScope.hpp + - - -Node35->Node7 - - - + + +Node33->Node37 + + + + -Node35->Node8 - - +Node34->Node19 + + - - -Node35->Node9 - - + + +Node36->Node7 + + - - -Node35->Node10 - - + + +Node36->Node8 + + - - -Node35->Node13 - - + + +Node36->Node9 + + - - -Node35->Node18 - - + + +Node36->Node10 + + - + -Node37->Node5 - - - - - -Node37->Node7 - - - - - -Node38 - - -AttributeAccessMode.hpp - +Node36->Node13 + + + + +Node36->Node22 + + - - -Node37->Node38 - - + + +Node38->Node8 + + Node39 - - -AttributeCache.hpp + + +cassert - - -Node37->Node39 - - - - - -Node42 - - -AttributeScope.hxx - + + +Node38->Node39 + + + + +Node40->Node2 + + - - -Node37->Node42 - - + + +Node40->Node5 + + - - -Node39->Node4 - - + + +Node41->Node6 + + - - -Node39->Node5 - - + + +Node41->Node9 + + - - -Node39->Node8 - - + + +Node41->Node16 + + - - -Node39->Node13 - - + + +Node41->Node22 + + - - -Node40 - - -AttributeCacheData.hpp + + +Node42 + + +spdlog/spdlog.h - - -Node39->Node40 - - - - - -Node40->Node8 - - + + +Node41->Node42 + + - - -Node41 - - -cassert + + +Node43 + + +AttributeScopeStack.hxx - - -Node40->Node41 - - - - - -Node42->Node29 - - + + +Node41->Node43 + + - - -Node42->Node37 - - + + +Node43->Node2 + + - + Node43->Node5 - - + + - - -Node43->Node9 - - - - + -Node43->Node18 - - +Node43->Node7 + + - - -Node43->Node39 - - - - - -Node44 - - -spdlog/spdlog.h - + + +Node43->Node41 + + + + +Node44->Node1 + + - - -Node43->Node44 - - + + +Node44->Node17 + + Node45 - - -AttributeScopeStack.hxx + + +optional - - -Node43->Node45 - - - - - -Node45->Node7 - - - - + -Node45->Node29 - - - - - -Node45->Node37 - - - - - -Node45->Node43 - - +Node44->Node45 + + diff --git a/_caching_accessor_8hxx_source.html b/_caching_accessor_8hxx_source.html index 64e01e4dcf..dd41004a33 100644 --- a/_caching_accessor_8hxx_source.html +++ b/_caching_accessor_8hxx_source.html @@ -117,10 +117,10 @@
Go to the documentation of this file.
1 #pragma once
2 
-
3 #include "CachingAccessor.hpp"
- -
5 #include "AttributeScope.hpp"
- + +
4 #include "AttributeScope.hpp"
+ +
6 #include "CachingAccessor.hpp"
7 
8 namespace wmtk::attribute {
9 
@@ -197,18 +197,17 @@
80 }
81 
82 
-
83 
-
84 template <typename T>
-
85 auto CachingAccessor<T>::const_scalar_attribute(const int64_t index, int8_t offset) const -> T
-
86 {
-
87  return m_cache_stack.const_scalar_attribute(*this, index, offset);
-
88 }
-
89 
-
90 //template class CachingAccessor<char>;
-
91 //template class CachingAccessor<int64_t>;
-
92 //template class CachingAccessor<double>;
-
93 //template class CachingAccessor<Rational>;
-
94 } // namespace wmtk::attribute
+
83 template <typename T>
+
84 auto CachingAccessor<T>::const_scalar_attribute(const int64_t index, int8_t offset) const -> T
+
85 {
+
86  return m_cache_stack.const_scalar_attribute(*this, index, offset);
+
87 }
+
88 
+
89 // template class CachingAccessor<char>;
+
90 // template class CachingAccessor<int64_t>;
+
91 // template class CachingAccessor<double>;
+
92 // template class CachingAccessor<Rational>;
+
93 } // namespace wmtk::attribute
diff --git a/_cell_8cpp_source.html b/_cell_8cpp_source.html index e8d9fcf083..bc2f54ee44 100644 --- a/_cell_8cpp_source.html +++ b/_cell_8cpp_source.html @@ -130,9 +130,9 @@
13  , m_dimension{simplex.dimension()}
14 {}
15 
- +
17  : m_tuple{t}
-
18  , m_dimension(get_primitive_type_id(pt))
+
18  , m_dimension(get_primitive_type_id(pt))
19 {}
20 
21 int64_t Cell::dimension() const
@@ -187,8 +187,8 @@
Definition: Accessor.cpp:8
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- +
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+
diff --git a/_cell_8hpp_source.html b/_cell_8hpp_source.html index bf69555bb0..4c2962fc45 100644 --- a/_cell_8hpp_source.html +++ b/_cell_8hpp_source.html @@ -130,7 +130,7 @@
13 public:
14  Cell(const Tuple& t, int64_t dimension);
15  Cell(const simplex::Simplex& simplex);
-
16  Cell(const Tuple& t, PrimitiveType pt);
+
16  Cell(const Tuple& t, PrimitiveType pt);
17 
18 
19  int64_t dimension() const;
@@ -162,7 +162,7 @@
Definition: Accessor.cpp:8
- +
diff --git a/_collapse_new_attribute_strategy_8cpp_source.html b/_collapse_new_attribute_strategy_8cpp_source.html index 8616520ec7..ed523acaf5 100644 --- a/_collapse_new_attribute_strategy_8cpp_source.html +++ b/_collapse_new_attribute_strategy_8cpp_source.html @@ -184,13 +184,13 @@
67 
68  auto& mesh = m_handle.mesh();
69 
- +
71  m_topo_info =
72  std::make_unique<edge_mesh::CollapseNewAttributeTopoInfo>(static_cast<EdgeMesh&>(mesh));
-
73  } else if (mesh.top_simplex_type() == PrimitiveType::Face) {
+
73  } else if (mesh.top_simplex_type() == PrimitiveType::Face) {
74  m_topo_info =
75  std::make_unique<tri_mesh::CollapseNewAttributeTopoInfo>(static_cast<TriMesh&>(mesh));
- +
77  m_topo_info =
78  std::make_unique<tet_mesh::CollapseNewAttributeTopoInfo>(static_cast<TetMesh&>(mesh));
79  } else {
@@ -213,7 +213,7 @@
96  const auto& return_data_variant =
97  data.get_variant(mesh(), wmtk::simplex::Simplex::edge(input_tuple));
98 
-
99  for (const PrimitiveType pt : wmtk::utils::primitive_below(mesh().top_simplex_type())) {
+
99  for (const PrimitiveType pt : wmtk::utils::primitive_below(mesh().top_simplex_type())) {
100  auto merged_simps = m_topo_info->merged_simplices(return_data_variant, input_tuple, pt);
101  auto new_simps = m_topo_info->new_simplices(return_data_variant, output_tuple, pt);
102 
@@ -230,7 +230,7 @@
113 
114 template <typename T>
-
116  PrimitiveType pt,
+
116  PrimitiveType pt,
117  const std::array<Tuple, 2>& input_simplices,
118  const Tuple& final_simplex)
119 {
@@ -276,7 +276,7 @@
159  return m_handle.mesh();
160 }
161 template <typename T>
- +
163 {
164  return m_handle.primitive_type();
165 }
@@ -335,10 +335,10 @@
std::vector< PrimitiveType > primitive_below(PrimitiveType pt, bool lower_to_upper)
- - - - + + + + diff --git a/_collapse_new_attribute_strategy_8hpp_source.html b/_collapse_new_attribute_strategy_8hpp_source.html index b1b4e01bd6..0086d497f0 100644 --- a/_collapse_new_attribute_strategy_8hpp_source.html +++ b/_collapse_new_attribute_strategy_8hpp_source.html @@ -167,7 +167,7 @@
51 
52  Mesh& mesh() override;
-
53  PrimitiveType primitive_type() const override;
+
53  PrimitiveType primitive_type() const override;
54  void update_handle_mesh(Mesh& m) override;
55  bool matches_attribute(const attribute::MeshAttributeHandle&) const override;
56 
@@ -177,7 +177,7 @@
60  std::unique_ptr<CollapseNewAttributeTopoInfo> m_topo_info;
61 
62  void assign_collapsed(
-
63  PrimitiveType pt,
+
63  PrimitiveType pt,
64  const std::array<Tuple, 2>& input_simplices,
65  const Tuple& final_simplex);
66 
@@ -222,7 +222,7 @@
Vector< T, Eigen::Dynamic > VectorX
Definition: Types.hpp:18
- + diff --git a/_collapse_new_value_applicator_8hpp_source.html b/_collapse_new_value_applicator_8hpp_source.html index b15dec0f56..4360dc3022 100644 --- a/_collapse_new_value_applicator_8hpp_source.html +++ b/_collapse_new_value_applicator_8hpp_source.html @@ -128,12 +128,12 @@
11 public:
13  const ReturnData& ret_data,
-
14  PrimitiveType pt,
+
14  PrimitiveType pt,
15  const std::array<Tuple, 2>& input_simplices,
16  const Tuple& output_simplex) const = 0;
18  const ReturnData& ret_data,
-
19  PrimitiveType pt,
+
19  PrimitiveType pt,
20  const std::vector<Tuple>& output_simplex) const;
21 
22  virtual const Mesh& mesh() const = 0;
@@ -145,18 +145,18 @@
28 
29  // the sipmlices that were merged together
30  std::vector<std::array<Tuple, 2>>
-
31  merged_simplices(const ReturnData& ret_data, const Tuple& input_tuple, PrimitiveType pt) const;
+
31  merged_simplices(const ReturnData& ret_data, const Tuple& input_tuple, PrimitiveType pt) const;
32 
33  // the simplices that were created by merging simplices
34  std::vector<Tuple>
-
35  new_simplices(const ReturnData& ret_data, const Tuple& input_tuple, PrimitiveType pt) const;
+
35  new_simplices(const ReturnData& ret_data, const Tuple& input_tuple, PrimitiveType pt) const;
36 
37  // set of faces whose one ring were modified
38  // SHOULD be safe to resurrect to a previous state
39  std::vector<Tuple> output_modified_simplices(
40  const ReturnData& ret_data,
41  const Tuple& output_tuple,
-
42  const PrimitiveType pt) const;
+
42  const PrimitiveType pt) const;
43 
44 
45  // the top dimension that were removed in the operation
@@ -187,7 +187,7 @@
virtual void update_merged_simplices(const ReturnData &ret_data, PrimitiveType pt, const std::array< Tuple, 2 > &input_simplices, const Tuple &output_simplex) const =0
wmtk::utils::metaprogramming::ReferenceWrappedFunctorReturnCache< wmtk::operations::utils::MultiMeshEdgeCollapseFunctor, wmtk::utils::metaprogramming::MeshVariantTraits, simplex::Simplex > CollapseReturnData
- + diff --git a/_const_accessor_8hpp__incl.md5 b/_const_accessor_8hpp__incl.md5 index 865db9aca4..c86bbff428 100644 --- a/_const_accessor_8hpp__incl.md5 +++ b/_const_accessor_8hpp__incl.md5 @@ -1 +1 @@ -3c30743aecd099691446a11a17d26974 \ No newline at end of file +965ef5a270620d8521c1b98fb910d9f9 \ No newline at end of file diff --git a/_const_accessor_8hpp__incl.svg b/_const_accessor_8hpp__incl.svg index 86afdfb7e0..0e1a41c769 100644 --- a/_const_accessor_8hpp__incl.svg +++ b/_const_accessor_8hpp__incl.svg @@ -790,13 +790,13 @@ var sectionId = 'dynsection-0';
- + Node38->Node3 - + Node38->Node30 @@ -811,7 +811,7 @@ var sectionId = 'dynsection-0'; - + Node38->Node39 @@ -826,19 +826,19 @@ var sectionId = 'dynsection-0'; - + Node38->Node45 - + Node39->Node6 - + Node39->Node8 @@ -853,7 +853,7 @@ var sectionId = 'dynsection-0'; - + Node39->Node40 @@ -868,7 +868,7 @@ var sectionId = 'dynsection-0'; - + Node39->Node41 @@ -883,31 +883,31 @@ var sectionId = 'dynsection-0'; - + Node39->Node44 - + Node41->Node5 - + Node41->Node6 - + Node41->Node9 - + Node41->Node14 @@ -922,13 +922,13 @@ var sectionId = 'dynsection-0'; - + Node41->Node42 - + Node42->Node9 @@ -943,43 +943,43 @@ var sectionId = 'dynsection-0'; - + Node42->Node43 - + Node44->Node30 - + Node44->Node39 - + Node45->Node6 - + Node45->Node10 - + Node45->Node19 - + Node45->Node41 @@ -994,7 +994,7 @@ var sectionId = 'dynsection-0'; - + Node45->Node46 @@ -1009,31 +1009,31 @@ var sectionId = 'dynsection-0'; - + Node45->Node47 - + Node47->Node8 - + Node47->Node30 - + Node47->Node39 - + Node47->Node45 diff --git a/_const_accessor_8hpp__incl_org.svg b/_const_accessor_8hpp__incl_org.svg index fc3f925bac..939b6ff5ac 100644 --- a/_const_accessor_8hpp__incl_org.svg +++ b/_const_accessor_8hpp__incl_org.svg @@ -744,13 +744,13 @@ - + Node38->Node3 - + Node38->Node30 @@ -765,7 +765,7 @@ - + Node38->Node39 @@ -780,19 +780,19 @@ - + Node38->Node45 - + Node39->Node6 - + Node39->Node8 @@ -807,7 +807,7 @@ - + Node39->Node40 @@ -822,7 +822,7 @@ - + Node39->Node41 @@ -837,31 +837,31 @@ - + Node39->Node44 - + Node41->Node5 - + Node41->Node6 - + Node41->Node9 - + Node41->Node14 @@ -876,13 +876,13 @@ - + Node41->Node42 - + Node42->Node9 @@ -897,43 +897,43 @@ - + Node42->Node43 - + Node44->Node30 - + Node44->Node39 - + Node45->Node6 - + Node45->Node10 - + Node45->Node19 - + Node45->Node41 @@ -948,7 +948,7 @@ - + Node45->Node46 @@ -963,31 +963,31 @@ - + Node45->Node47 - + Node47->Node8 - + Node47->Node30 - + Node47->Node39 - + Node47->Node45 diff --git a/_const_accessor_8hxx__incl.md5 b/_const_accessor_8hxx__incl.md5 index f6699af4cb..2afcd06262 100644 --- a/_const_accessor_8hxx__incl.md5 +++ b/_const_accessor_8hxx__incl.md5 @@ -1 +1 @@ -6d8f313c600a6e87b4e5ea4559c09a65 \ No newline at end of file +4f467e6713fae2455f62c388f6d4a708 \ No newline at end of file diff --git a/_const_accessor_8hxx__incl.svg b/_const_accessor_8hxx__incl.svg index a4b17a0a74..d7de999e67 100644 --- a/_const_accessor_8hxx__incl.svg +++ b/_const_accessor_8hxx__incl.svg @@ -796,13 +796,13 @@ var sectionId = 'dynsection-0'; - + Node39->Node4 - + Node39->Node31 @@ -817,7 +817,7 @@ var sectionId = 'dynsection-0'; - + Node39->Node40 @@ -832,19 +832,19 @@ var sectionId = 'dynsection-0'; - + Node39->Node46 - + Node40->Node7 - + Node40->Node9 @@ -859,7 +859,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node41 @@ -874,7 +874,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node42 @@ -889,31 +889,31 @@ var sectionId = 'dynsection-0'; - + Node40->Node45 - + Node42->Node6 - + Node42->Node7 - + Node42->Node10 - + Node42->Node15 @@ -928,13 +928,13 @@ var sectionId = 'dynsection-0'; - + Node42->Node43 - + Node43->Node10 @@ -949,43 +949,43 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 - + Node45->Node31 - + Node45->Node40 - + Node46->Node7 - + Node46->Node11 - + Node46->Node20 - + Node46->Node42 @@ -1000,7 +1000,7 @@ var sectionId = 'dynsection-0'; - + Node46->Node47 @@ -1015,31 +1015,31 @@ var sectionId = 'dynsection-0'; - + Node46->Node48 - + Node48->Node9 - + Node48->Node31 - + Node48->Node40 - + Node48->Node46 diff --git a/_const_accessor_8hxx__incl_org.svg b/_const_accessor_8hxx__incl_org.svg index 0b4883e6fb..88f2eb3071 100644 --- a/_const_accessor_8hxx__incl_org.svg +++ b/_const_accessor_8hxx__incl_org.svg @@ -750,13 +750,13 @@ - + Node39->Node4 - + Node39->Node31 @@ -771,7 +771,7 @@ - + Node39->Node40 @@ -786,19 +786,19 @@ - + Node39->Node46 - + Node40->Node7 - + Node40->Node9 @@ -813,7 +813,7 @@ - + Node40->Node41 @@ -828,7 +828,7 @@ - + Node40->Node42 @@ -843,31 +843,31 @@ - + Node40->Node45 - + Node42->Node6 - + Node42->Node7 - + Node42->Node10 - + Node42->Node15 @@ -882,13 +882,13 @@ - + Node42->Node43 - + Node43->Node10 @@ -903,43 +903,43 @@ - + Node43->Node44 - + Node45->Node31 - + Node45->Node40 - + Node46->Node7 - + Node46->Node11 - + Node46->Node20 - + Node46->Node42 @@ -954,7 +954,7 @@ - + Node46->Node47 @@ -969,31 +969,31 @@ - + Node46->Node48 - + Node48->Node9 - + Node48->Node31 - + Node48->Node40 - + Node48->Node46 diff --git a/_disk_options_8cpp_source.html b/_disk_options_8cpp_source.html index 7b4cb14d80..2d38f35748 100644 --- a/_disk_options_8cpp_source.html +++ b/_disk_options_8cpp_source.html @@ -160,7 +160,7 @@
43  }
44  Eigen::Vector2d::ConstMapType o(csettings.center.data());
45  P.rowwise() += o.transpose();
- +
47  }
48  return mptr;
49 }
@@ -170,7 +170,7 @@ -
void initialize(Eigen::Ref< const RowVectors3l > FV, Eigen::Ref< const RowVectors3l > FE, Eigen::Ref< const RowVectors3l > FF, Eigen::Ref< const VectorXl > VF, Eigen::Ref< const VectorXl > EF)
Definition: TriMesh.cpp:182
+
void initialize(Eigen::Ref< const RowVectors3l > FV, Eigen::Ref< const RowVectors3l > FE, Eigen::Ref< const RowVectors3l > FF, Eigen::Ref< const VectorXl > VF, Eigen::Ref< const VectorXl > EF)
Definition: TriMesh.cpp:185
std::optional< Coordinates > coordinates
Definition: DiskOptions.hpp:20
@@ -182,7 +182,7 @@
attribute::MeshAttributeHandle set_matrix_attribute(const Mat &data, const std::string &name, const PrimitiveType &type, Mesh &mesh)
Definition: mesh_utils.hpp:9
Vector< int64_t, 3 > Vector3l
Definition: Types.hpp:34
RowVectors< int64_t, 3 > RowVectors3l
Definition: Types.hpp:42
- + diff --git a/_edge_collapse_8cpp_source.html b/_edge_collapse_8cpp_source.html index bca9394d1e..d16e048cb1 100644 --- a/_edge_collapse_8cpp_source.html +++ b/_edge_collapse_8cpp_source.html @@ -160,7 +160,7 @@
44 
45  const operations::edge_mesh::EdgeOperationData& my_data = return_data.get(mesh, simplex);
46 
- +
48 }
49 
50 std::vector<simplex::Simplex> EdgeCollapse::unmodified_primitives_aux(
@@ -183,7 +183,7 @@
69 
70  const operations::tri_mesh::EdgeOperationData& my_data = return_data.get(mesh, simplex);
71 
- +
73 }
74 
75 std::vector<simplex::Simplex> EdgeCollapse::unmodified_primitives_aux(
@@ -265,9 +265,9 @@ -
std::vector< attribute::TypedAttributeHandleVariant > custom_attributes() const
+
std::vector< attribute::TypedAttributeHandleVariant > custom_attributes() const
decltype(auto) parent_scope(Functor &&f, Args &&... args) const
Evaluate the passed in function inside the parent scope.
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
@@ -294,7 +294,7 @@
CollapseReturnData multi_mesh_edge_collapse(Mesh &mesh, const Tuple &t, const std::vector< std::shared_ptr< operations::BaseCollapseNewAttributeStrategy >> &new_attr_strategies)
- + diff --git a/_edge_collapse_8hpp_source.html b/_edge_collapse_8hpp_source.html index 86352347ba..80ae7b230b 100644 --- a/_edge_collapse_8hpp_source.html +++ b/_edge_collapse_8hpp_source.html @@ -127,7 +127,7 @@
10  // constructor for default factory pattern construction
11  EdgeCollapse(Mesh& m);
12 
-
13  PrimitiveType primitive_type() const override { return PrimitiveType::Edge; }
+
13  PrimitiveType primitive_type() const override { return PrimitiveType::Edge; }
14 
15 
16  std::shared_ptr<operations::BaseCollapseNewAttributeStrategy> get_new_attribute_strategy(
@@ -189,8 +189,8 @@ - - + + diff --git a/_edge_mesh_8cpp_source.html b/_edge_mesh_8cpp_source.html index 29ce560396..00be57c283 100644 --- a/_edge_mesh_8cpp_source.html +++ b/_edge_mesh_8cpp_source.html @@ -123,37 +123,37 @@
6 namespace wmtk {
8  : Mesh(1)
-
9  , m_ve_handle(register_attribute_typed<int64_t>("m_ve", PrimitiveType::Vertex, 1, false, -1))
-
10  , m_ev_handle(register_attribute_typed<int64_t>("m_ev", PrimitiveType::Edge, 2, false, -1))
-
11  , m_ee_handle(register_attribute_typed<int64_t>("m_ee", PrimitiveType::Edge, 2, false, -1))
+
9  , m_ve_handle(register_attribute_typed<int64_t>("m_ve", PrimitiveType::Vertex, 1, false, -1))
+
10  , m_ev_handle(register_attribute_typed<int64_t>("m_ev", PrimitiveType::Edge, 2, false, -1))
+
11  , m_ee_handle(register_attribute_typed<int64_t>("m_ee", PrimitiveType::Edge, 2, false, -1))
12 {}
13 
-
14 int64_t EdgeMesh::id(const Tuple& tuple, PrimitiveType type) const
+
14 int64_t EdgeMesh::id(const Tuple& tuple, PrimitiveType type) const
15 {
16  switch (type) {
-
17  case PrimitiveType::Vertex: {
+
17  case PrimitiveType::Vertex: {
18  ConstAccessor<int64_t> ev_accessor = create_const_accessor<int64_t>(m_ev_handle);
19  auto ev = ev_accessor.const_vector_attribute(tuple);
20  return ev(tuple.m_local_vid);
21  }
-
22  case PrimitiveType::Edge: {
+
22  case PrimitiveType::Edge: {
23  return tuple.m_global_cid;
24  }
- - - + + +
28  default: throw std::runtime_error("Tuple id: Invalid primitive type");
29  }
30 }
31 
-
32 bool EdgeMesh::is_boundary(PrimitiveType pt, const Tuple& tuple) const
+
32 bool EdgeMesh::is_boundary(PrimitiveType pt, const Tuple& tuple) const
33 {
34  switch (pt) {
-
35  case PrimitiveType::Vertex: return is_boundary_vertex(tuple);
- - - - +
35  case PrimitiveType::Vertex: return is_boundary_vertex(tuple);
+ + + +
40  default: break;
41  }
42  throw std::runtime_error(
@@ -168,21 +168,21 @@
51  return ee_accessor.const_vector_attribute(tuple)(tuple.m_local_vid) < 0;
52 }
53 
- +
55 {
56  assert(is_valid_slow(tuple));
57  bool ccw = is_ccw(tuple);
58 
59  switch (type) {
- +
61  return Tuple(
62  1 - tuple.m_local_vid,
63  tuple.m_local_eid,
64  tuple.m_local_fid,
65  tuple.m_global_cid,
66  tuple.m_hash);
-
67  case PrimitiveType::Edge: {
-
68  const int64_t gvid = id(tuple, PrimitiveType::Vertex);
+
67  case PrimitiveType::Edge: {
+
68  const int64_t gvid = id(tuple, PrimitiveType::Vertex);
69 
70  ConstAccessor<int64_t> ee_accessor = create_const_accessor<int64_t>(m_ee_handle);
71  auto ee = ee_accessor.const_vector_attribute(tuple);
@@ -219,9 +219,9 @@
102  assert(is_valid(res, hash_accessor));
103  return res;
104  }
- -
106  case PrimitiveType::Face:
- + +
106  case PrimitiveType::Face:
+
108  default: throw std::runtime_error("Tuple switch: Invalid primitive type"); break;
109  }
110 }
@@ -248,19 +248,19 @@
131  Accessor<int64_t> ee_accessor = create_accessor<int64_t>(m_ee_handle);
132  Accessor<int64_t> ve_accessor = create_accessor<int64_t>(m_ve_handle);
133 
- - + +
136 
137  // iterate over the matrices and fill attributes
138 
-
139  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
+
139  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
140  ev_accessor.index_access().vector_attribute(i) = EV.row(i).transpose();
141  ee_accessor.index_access().vector_attribute(i) = EE.row(i).transpose();
142 
143  e_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
144  }
145  // m_ve
-
146  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
+
146  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
147  ve_accessor.index_access().scalar_attribute(i) = VE(i);
148  v_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
149  }
@@ -272,21 +272,21 @@
155  initialize(E, EE, VE);
156 }
157 
-
158 Tuple EdgeMesh::tuple_from_id(const PrimitiveType type, const int64_t gid) const
+
158 Tuple EdgeMesh::tuple_from_id(const PrimitiveType type, const int64_t gid) const
159 {
160  switch (type) {
-
161  case PrimitiveType::Vertex: {
+
161  case PrimitiveType::Vertex: {
162  return vertex_tuple_from_id(gid);
163  }
-
164  case PrimitiveType::Edge: {
+
164  case PrimitiveType::Edge: {
165  return edge_tuple_from_id(gid);
166  }
-
167  case PrimitiveType::Face: {
+
167  case PrimitiveType::Face: {
168  throw std::runtime_error("no tet tuple supported for edgemesh");
169  break;
170  }
- - + +
173  throw std::runtime_error("no tet tuple supported for edgemesh");
174  break;
175  }
@@ -355,11 +355,11 @@
238  ConstAccessor<int64_t> ev_accessor = create_const_accessor<int64_t>(m_ev_handle);
239  ConstAccessor<int64_t> ee_accessor = create_const_accessor<int64_t>(m_ee_handle);
240  ConstAccessor<int64_t> ve_accessor = create_const_accessor<int64_t>(m_ve_handle);
- - + +
243 
244  // VE and EV
-
245  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
+
245  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
246  if (v_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
247  wmtk::logger().debug("Vertex {} is deleted", i);
248  continue;
@@ -377,7 +377,7 @@
260  }
261 
262  // EV and EE
-
263  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
+
263  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
264  if (e_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
265  wmtk::logger().debug("Edge {} is deleted", i);
266  continue;
@@ -409,7 +409,7 @@
bool is_connectivity_valid() const override
Definition: EdgeMesh.cpp:235
Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
Definition: EdgeMesh.cpp:54
bool is_boundary_vertex(const Tuple &tuple) const
Definition: EdgeMesh.cpp:47
-
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
+
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: EdgeMesh.cpp:14
Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override
internal function that returns the tuple of requested type, and has the global index cid
Definition: EdgeMesh.cpp:158
Tuple edge_tuple_from_id(int64_t id) const
Definition: EdgeMesh.cpp:195
@@ -421,10 +421,10 @@
void initialize(Eigen::Ref< const RowVectors2l > E)
Definition: EdgeMesh.cpp:152
std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
Definition: EdgeMesh.cpp:274
-
void set_capacities(std::vector< int64_t > capacities)
+
void set_capacities(std::vector< int64_t > capacities)
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
bool is_hash_valid(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
Definition: Mesh.cpp:60
-
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
+
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
int64_t get_cell_hash_slow(int64_t cell_index) const
Definition: Mesh.cpp:154
ConstAccessor< int64_t > get_const_cell_hash_accessor() const
Definition: Mesh.cpp:92
bool is_valid_slow(const Tuple &tuple) const
Definition: Mesh.cpp:72
@@ -441,13 +441,13 @@
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
- - - - - -
std::tuple< RowVectors2l, VectorXl > edgemesh_topology_initialization(Eigen::Ref< const RowVectors2l > E)
+ + + + + + diff --git a/_edge_mesh_8hpp_source.html b/_edge_mesh_8hpp_source.html index a6832f10e2..b2da56f0d2 100644 --- a/_edge_mesh_8hpp_source.html +++ b/_edge_mesh_8hpp_source.html @@ -143,11 +143,11 @@
26 
27  int64_t top_cell_dimension() const override { return 1; }
28 
-
29  Tuple switch_tuple(const Tuple& tuple, PrimitiveType type) const override;
+
29  Tuple switch_tuple(const Tuple& tuple, PrimitiveType type) const override;
30 
31  bool is_ccw(const Tuple& tuple) const override;
32  using Mesh::is_boundary;
-
33  bool is_boundary(PrimitiveType, const Tuple& tuple) const override;
+
33  bool is_boundary(PrimitiveType, const Tuple& tuple) const override;
34  bool is_boundary_vertex(const Tuple& tuple) const ;
35 
36 
@@ -166,16 +166,16 @@
49  const override;
50 
51 protected:
-
52  int64_t id(const Tuple& tuple, PrimitiveType type) const override;
+
52  int64_t id(const Tuple& tuple, PrimitiveType type) const override;
53  int64_t id(const simplex::Simplex& simplex) const
54  {
55  return id(simplex.tuple(), simplex.primitive_type());
56  }
57 
-
58  int64_t id_vertex(const Tuple& tuple) const { return id(tuple, PrimitiveType::Vertex); }
-
59  int64_t id_edge(const Tuple& tuple) const { return id(tuple, PrimitiveType::Edge); }
+
58  int64_t id_vertex(const Tuple& tuple) const { return id(tuple, PrimitiveType::Vertex); }
+
59  int64_t id_edge(const Tuple& tuple) const { return id(tuple, PrimitiveType::Edge); }
60 
-
68  Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override;
+
68  Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override;
69 
70  Tuple tuple_from_global_ids(int64_t eid, int64_t vid) const;
71 
@@ -205,7 +205,7 @@
EdgeMesh & operator=(EdgeMesh &&o)=default
Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
Definition: EdgeMesh.cpp:54
bool is_boundary_vertex(const Tuple &tuple) const
Definition: EdgeMesh.cpp:47
-
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
+
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: EdgeMesh.cpp:14
Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override
internal function that returns the tuple of requested type, and has the global index cid
Definition: EdgeMesh.cpp:158
Tuple edge_tuple_from_id(int64_t id) const
Definition: EdgeMesh.cpp:195
@@ -235,9 +235,9 @@
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
- - - + + + diff --git a/_edge_mesh_operation_executor_8cpp_source.html b/_edge_mesh_operation_executor_8cpp_source.html index 622230fc46..ba870af43f 100644 --- a/_edge_mesh_operation_executor_8cpp_source.html +++ b/_edge_mesh_operation_executor_8cpp_source.html @@ -124,7 +124,7 @@
7  EdgeMesh& m,
8  const Tuple& operating_tuple,
9  Accessor<int64_t>& hash_acc)
- +
11  , ee_accessor(m.create_accessor<int64_t>(m.m_ee_handle))
12  , ev_accessor(m.create_accessor<int64_t>(m.m_ev_handle))
13  , ve_accessor(m.create_accessor<int64_t>(m.m_ve_handle))
@@ -201,13 +201,13 @@
84  simplex_ids_to_delete = get_split_simplices_to_delete(m_operating_tuple, m_mesh);
85 
86  // create new vertex
-
87  const std::vector<int64_t> new_vids = this->request_simplex_indices(PrimitiveType::Vertex, 1);
+
87  const std::vector<int64_t> new_vids = this->request_simplex_indices(PrimitiveType::Vertex, 1);
88  assert(new_vids.size() == 1);
89  const int64_t v_new = new_vids[0];
90  m_split_v = v_new;
91  // create new edges
92  // new_eids[i] is connect to m_neighbor_eids[i] and m_spine_vids[i]
-
93  const std::vector<int64_t> new_eids = this->request_simplex_indices(PrimitiveType::Edge, 2);
+
93  const std::vector<int64_t> new_eids = this->request_simplex_indices(PrimitiveType::Edge, 2);
94  assert(new_eids.size() == 2);
95  std::copy(new_eids.begin(), new_eids.end(), m_split_e.begin());
96  const int64_t local_vid = m_mesh.is_ccw(m_operating_tuple) ? 0 : 1;
@@ -349,7 +349,7 @@
232 }
233 
-
235  const PrimitiveType type,
+
235  const PrimitiveType type,
236  int64_t count)
237 {
238  m_mesh.guarantee_more_attributes(type, count);
@@ -375,14 +375,14 @@
int64_t id_vertex(const Tuple &tuple) const
Definition: EdgeMesh.hpp:58
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
void update_cell_hash(const Tuple &cell, Accessor< int64_t > &hash_accessor)
update hash in given cell
Definition: Mesh.cpp:106
-
std::vector< int64_t > request_simplex_indices(PrimitiveType type, int64_t count)
+
std::vector< int64_t > request_simplex_indices(PrimitiveType type, int64_t count)
std::array< std::vector< int64_t >, 2 > simplex_ids_to_delete
Definition: Accessor.cpp:8
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
- - - + + + diff --git a/_edge_mesh_operation_executor_8hpp_source.html b/_edge_mesh_operation_executor_8hpp_source.html index bf49c92b17..a6906b4d38 100644 --- a/_edge_mesh_operation_executor_8hpp_source.html +++ b/_edge_mesh_operation_executor_8hpp_source.html @@ -154,7 +154,7 @@
53 
-
54  std::vector<int64_t> request_simplex_indices(const PrimitiveType type, int64_t count);
+
54  std::vector<int64_t> request_simplex_indices(const PrimitiveType type, int64_t count);
55 
57 
@@ -194,7 +194,7 @@
Definition: Accessor.cpp:8
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
- + diff --git a/_edge_operation_data_8cpp_source.html b/_edge_operation_data_8cpp_source.html index c02f260e79..015e07414f 100644 --- a/_edge_operation_data_8cpp_source.html +++ b/_edge_operation_data_8cpp_source.html @@ -123,7 +123,7 @@
6 #include <wmtk/Mesh.hpp>
7 #include "EdgeOperationData.hpp"
8 namespace wmtk::operations {
-
9 Tuple EdgeOperationData::tuple_from_id(const Mesh& m, const PrimitiveType type, const int64_t gid)
+
9 Tuple EdgeOperationData::tuple_from_id(const Mesh& m, const PrimitiveType type, const int64_t gid)
10 {
11  return m.tuple_from_id(type, gid);
12 }
@@ -136,7 +136,7 @@
static Tuple tuple_from_id(const Mesh &m, const PrimitiveType type, const int64_t gid)
- + diff --git a/_edge_operation_data_8hpp_source.html b/_edge_operation_data_8hpp_source.html index 33b5f956b2..c3e7e22336 100644 --- a/_edge_operation_data_8hpp_source.html +++ b/_edge_operation_data_8hpp_source.html @@ -132,7 +132,7 @@
16  std::array<int64_t, 2> m_spine_vids; // two endpoints of the edge
17 protected:
-
18  static Tuple tuple_from_id(const Mesh& m, const PrimitiveType type, const int64_t gid);
+
18  static Tuple tuple_from_id(const Mesh& m, const PrimitiveType type, const int64_t gid);
19 };
20 } // namespace wmtk::operations
@@ -145,7 +145,7 @@
Definition: Accessor.cpp:8
- + diff --git a/_edge_split_8cpp_source.html b/_edge_split_8cpp_source.html index 8d189e6b16..41ccd9c7b2 100644 --- a/_edge_split_8cpp_source.html +++ b/_edge_split_8cpp_source.html @@ -259,9 +259,9 @@
148  // * PE -> new edge
149  // * PF -> other face
150  // * PE -> other spine edge
-
151  constexpr static PrimitiveType PE = PrimitiveType::Edge;
-
152  constexpr static PrimitiveType PF = PrimitiveType::Face;
-
153  constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
+
151  constexpr static PrimitiveType PE = PrimitiveType::Edge;
+
152  constexpr static PrimitiveType PF = PrimitiveType::Face;
+
153  constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
154 
155  std::pair<Tuple, Tuple> ret;
156 
@@ -278,8 +278,8 @@
167  ret = {new_vertex, mesh.switch_tuples(new_vertex, {PE, PF, PT, PF, PE})};
168  break;
169  }
- - + +
172  default: throw std::runtime_error("Invalid top simplex");
173  }
174  return ret;
@@ -297,8 +297,8 @@ -
std::vector< attribute::TypedAttributeHandleVariant > custom_attributes() const
-
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:962
+
std::vector< attribute::TypedAttributeHandleVariant > custom_attributes() const
+
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:961
PrimitiveType top_simplex_type() const
Definition: Mesh.cpp:13
@@ -332,12 +332,12 @@
std::string_view primitive_type_name(PrimitiveType t)
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
- - - - - - + + + + + + diff --git a/_edge_split_8hpp_source.html b/_edge_split_8hpp_source.html index 30b2334f4a..bd5c9a368f 100644 --- a/_edge_split_8hpp_source.html +++ b/_edge_split_8hpp_source.html @@ -128,7 +128,7 @@
11 public:
12  EdgeSplit(Mesh& m);
13 
-
14  PrimitiveType primitive_type() const override { return PrimitiveType::Edge; }
+
14  PrimitiveType primitive_type() const override { return PrimitiveType::Edge; }
15 
16  static std::pair<Tuple, Tuple> new_spine_edges(const Mesh& mesh, const Tuple& new_vertex);
17 
@@ -196,8 +196,8 @@ - - + + diff --git a/_edge_valence_energy_8cpp_source.html b/_edge_valence_energy_8cpp_source.html index 386d53ddf7..544b79d646 100644 --- a/_edge_valence_energy_8cpp_source.html +++ b/_edge_valence_energy_8cpp_source.html @@ -124,7 +124,7 @@
8  const Mesh& mesh,
9  const attribute::MeshAttributeHandle& variable_attribute_handle)
-
10  : PerSimplexFunction(mesh, PrimitiveType::Vertex, variable_attribute_handle)
+
10  : PerSimplexFunction(mesh, PrimitiveType::Vertex, variable_attribute_handle)
11 {}
12 
13 double EdgeValenceEnergy::get_value(const simplex::Simplex& edge_simplex) const
@@ -135,10 +135,10 @@
18  const Tuple other_v = tri_mesh().switch_vertex(current_v);
19  int64_t val0 =
20  static_cast<int64_t>(simplex::link(tri_mesh(), simplex::Simplex::vertex(current_v))
- +
22  .size());
23  int64_t val1 = static_cast<int64_t>(simplex::link(tri_mesh(), simplex::Simplex::vertex(other_v))
- +
25  .size());
26  if (tri_mesh().is_boundary_vertex(current_v)) {
27  val0 += 2;
@@ -162,11 +162,11 @@
45  const Tuple bottom_v =
46  tri_mesh().switch_vertex(tri_mesh().switch_edge(tri_mesh().switch_face(current_v)));
47  int64_t val2 = static_cast<int64_t>(simplex::link(tri_mesh(), simplex::Simplex::vertex(top_v))
- +
49  .size());
50  int64_t val3 =
51  static_cast<int64_t>(simplex::link(tri_mesh(), simplex::Simplex::vertex(bottom_v))
- +
53  .size());
54 
55  if (tri_mesh().is_boundary_vertex(top_v)) {
@@ -195,7 +195,7 @@ -
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
bool is_boundary_vertex(const Tuple &tuple) const
Definition: TriMesh.cpp:73
@@ -212,8 +212,8 @@
SimplexCollection link(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Definition: link.cpp:11
- - + + diff --git a/_edge_valence_invariant_8cpp_source.html b/_edge_valence_invariant_8cpp_source.html index e7611e923a..972afa10bd 100644 --- a/_edge_valence_invariant_8cpp_source.html +++ b/_edge_valence_invariant_8cpp_source.html @@ -129,7 +129,7 @@
12 {
13  const Tuple& t = simplex.tuple();
14 
-
15  assert(simplex.primitive_type() == PrimitiveType::Edge);
+
15  assert(simplex.primitive_type() == PrimitiveType::Edge);
16 
17  return simplex::top_dimension_cofaces_tuples(mesh(), simplex).size() == m_valence;
18 }
@@ -147,7 +147,7 @@
PrimitiveType primitive_type() const
Definition: Simplex.hpp:23
std::vector< Tuple > top_dimension_cofaces_tuples(const EdgeMesh &mesh, const Simplex &simplex)
- + diff --git a/_envelope_invariant_8cpp_source.html b/_envelope_invariant_8cpp_source.html index d65d67d80d..50558164ff 100644 --- a/_envelope_invariant_8cpp_source.html +++ b/_envelope_invariant_8cpp_source.html @@ -182,14 +182,14 @@
66 
67 
-
68  if (mesh().top_simplex_type() == PrimitiveType::Tetrahedron) {
+
68  if (mesh().top_simplex_type() == PrimitiveType::Tetrahedron) {
69  std::vector<Eigen::Vector3d> vertices;
70  std::vector<Eigen::Vector3i> faces;
71 
72  int count = 0;
73  assert(accessor.dimension() == 3);
74 
-
75  const std::vector<Tuple>& facest = m.get_all(wmtk::PrimitiveType::Face);
+
75  const std::vector<Tuple>& facest = m.get_all(wmtk::PrimitiveType::Face);
76  for (const auto& f : facest) {
77  if (tag_accessor.const_scalar_attribute(f) != m_value) continue;
78 
@@ -209,14 +209,14 @@
92 
93  m_envelope = std::make_shared<fastEnvelope::FastEnvelope>(vertices, faces, envelope_size);
94 
-
95  } else if (mesh().top_simplex_type() == PrimitiveType::Face) {
+
95  } else if (mesh().top_simplex_type() == PrimitiveType::Face) {
96  logger().warn("Envelope for edge mesh is using sampling");
97 
98 
99  int64_t count = 0;
100  int64_t index = 0;
101 
-
102  const std::vector<Tuple>& edgest = m.get_all(wmtk::PrimitiveType::Edge);
+
102  const std::vector<Tuple>& edgest = m.get_all(wmtk::PrimitiveType::Edge);
103 
104  Eigen::MatrixXd vertices(2 * edgest.size(), accessor.dimension());
105  Eigen::MatrixXi edges(edgest.size(), 2);
@@ -265,7 +265,7 @@
148  ConstAccessor<double> accessor = envelope_mesh.create_accessor(envelope_mesh_coordinate);
149 
150 
-
151  if (envelope_mesh.top_simplex_type() == PrimitiveType::Face) {
+
151  if (envelope_mesh.top_simplex_type() == PrimitiveType::Face) {
152  std::vector<Eigen::Vector3d> vertices;
153  std::vector<Eigen::Vector3i> faces;
154 
@@ -273,7 +273,7 @@
156  int count = 0;
157  assert(accessor.dimension() == 3);
158 
-
159  const std::vector<Tuple>& facest = m.get_all(wmtk::PrimitiveType::Face);
+
159  const std::vector<Tuple>& facest = m.get_all(wmtk::PrimitiveType::Face);
160  for (const auto& f : facest) {
161  Eigen::Vector3d p0 = accessor.const_vector_attribute(f);
162  Eigen::Vector3d p1 = accessor.const_vector_attribute(envelope_mesh.switch_vertex(f));
@@ -290,14 +290,14 @@
173 
174  m_envelope = std::make_shared<fastEnvelope::FastEnvelope>(vertices, faces, envelope_size);
175 
-
176  } else if (envelope_mesh.top_simplex_type() == PrimitiveType::Edge) {
+
176  } else if (envelope_mesh.top_simplex_type() == PrimitiveType::Edge) {
177  logger().warn("Envelope for edge mesh is using sampling");
178 
179 
180  int64_t count = 0;
181  int64_t index = 0;
182 
-
183  const std::vector<Tuple>& edgest = m.get_all(wmtk::PrimitiveType::Edge);
+
183  const std::vector<Tuple>& edgest = m.get_all(wmtk::PrimitiveType::Edge);
184 
185  Eigen::MatrixXd vertices(2 * edgest.size(), accessor.dimension());
186  Eigen::MatrixXi edges(edgest.size(), 2);
@@ -330,7 +330,7 @@
213 
216  // hack to use tags
-
218  const PrimitiveType type = static_cast<PrimitiveType>(mesh().top_cell_dimension() - 1);
+
218  const PrimitiveType type = static_cast<PrimitiveType>(mesh().top_cell_dimension() - 1);
219  for (const auto& t : top_dimension_tuples_after) {
220  sc.add(
221  faces_single_dimension(mesh(), simplex::Simplex(mesh().top_simplex_type(), t), type));
@@ -351,14 +351,14 @@
238 
239  std::vector<Tuple> faces;
240 
-
241  if (type == PrimitiveType::Face) {
+
241  if (type == PrimitiveType::Face) {
242  std::array<Eigen::Vector3d, 3> triangle;
243 
244  for (const Tuple& tuple : tuples) {
246  mesh(),
247  simplex::Simplex(type, tuple),
- +
249 
250  triangle[0] = accessor.const_vector_attribute(faces[0]);
251  triangle[1] = accessor.const_vector_attribute(faces[1]);
@@ -368,12 +368,12 @@
255  }
256 
257  return true;
-
258  } else if (type == PrimitiveType::Edge) {
+
258  } else if (type == PrimitiveType::Edge) {
259  for (const Tuple& tuple : tuples) {
261  mesh(),
262  simplex::Simplex(type, tuple),
- +
264 
265  Eigen::Vector3d p0 = accessor.const_vector_attribute(faces[0]);
266  Eigen::Vector3d p1 = accessor.const_vector_attribute(faces[1]);
@@ -382,7 +382,7 @@
269  }
270 
271  return true;
-
272  } else if (type == PrimitiveType::Vertex) {
+
272  } else if (type == PrimitiveType::Vertex) {
273  for (const Tuple& tuple : tuples) {
274  Eigen::Vector3d p = accessor.const_vector_attribute(tuple);
275 
@@ -404,7 +404,7 @@
291  const double real_envelope = m_envelope_size - d / sqrt(accessor.dimension());
292  const double real_envelope_2 = real_envelope * real_envelope;
293 
-
294  if (type == PrimitiveType::Edge) {
+
294  if (type == PrimitiveType::Edge) {
295  std::vector<SimpleBVH::VectorMax3d> pts;
296 
297  for (const Tuple& tuple : tuples) {
@@ -433,7 +433,7 @@
320  }
321 
322  return true;
-
323  } else if (type == PrimitiveType::Vertex) {
+
323  } else if (type == PrimitiveType::Vertex) {
324  for (const Tuple& tuple : tuples) {
325  Eigen::Vector3d p = accessor.const_vector_attribute(tuple);
326  m_bvh->nearest_facet(p, nearest_point, sq_dist);
@@ -455,12 +455,12 @@ -
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:945
+
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:944
std::vector< Tuple > get_all(PrimitiveType type) const
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index.
Definition: Mesh.cpp:22
-
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
PrimitiveType top_simplex_type() const
Definition: Mesh.cpp:13
virtual int64_t top_cell_dimension() const =0
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
std::shared_ptr< fastEnvelope::FastEnvelope > m_envelope
@@ -487,11 +487,11 @@
SimplexCollection faces(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Returns all faces of a simplex.
Definition: faces.cpp:10
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
- - - - - + + + + + diff --git a/_function_8cpp_source.html b/_function_8cpp_source.html index 6df7c5ae41..af7b4aa289 100644 --- a/_function_8cpp_source.html +++ b/_function_8cpp_source.html @@ -142,7 +142,7 @@ -
int64_t get_attribute_dimension(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:922
+
int64_t get_attribute_dimension(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:921
diff --git a/_function_8hpp__incl.md5 b/_function_8hpp__incl.md5 index 8f96eaadca..07f3c4d0c2 100644 --- a/_function_8hpp__incl.md5 +++ b/_function_8hpp__incl.md5 @@ -1 +1 @@ -1a9399a21ab475b3c8f739b2b77092d9 \ No newline at end of file +ba7567370b132b564a2d53ecffc741a1 \ No newline at end of file diff --git a/_function_8hpp__incl.svg b/_function_8hpp__incl.svg index 864bc44787..84df38ce5e 100644 --- a/_function_8hpp__incl.svg +++ b/_function_8hpp__incl.svg @@ -804,13 +804,13 @@ var sectionId = 'dynsection-0';
- + Node40->Node5 - + Node40->Node32 @@ -825,7 +825,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node41 @@ -840,19 +840,19 @@ var sectionId = 'dynsection-0'; - + Node40->Node47 - + Node41->Node8 - + Node41->Node10 @@ -867,7 +867,7 @@ var sectionId = 'dynsection-0'; - + Node41->Node42 @@ -882,7 +882,7 @@ var sectionId = 'dynsection-0'; - + Node41->Node43 @@ -897,31 +897,31 @@ var sectionId = 'dynsection-0'; - + Node41->Node46 - + Node43->Node7 - + Node43->Node8 - + Node43->Node11 - + Node43->Node16 @@ -936,49 +936,49 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 - + Node44->Node11 - + Node46->Node32 - + Node46->Node41 - + Node47->Node8 - + Node47->Node12 - + Node47->Node21 - + Node47->Node43 @@ -993,7 +993,7 @@ var sectionId = 'dynsection-0'; - + Node47->Node48 @@ -1008,31 +1008,31 @@ var sectionId = 'dynsection-0'; - + Node47->Node49 - + Node49->Node10 - + Node49->Node32 - + Node49->Node41 - + Node49->Node47 diff --git a/_function_8hpp__incl_org.svg b/_function_8hpp__incl_org.svg index a7f022d776..d95c871a6d 100644 --- a/_function_8hpp__incl_org.svg +++ b/_function_8hpp__incl_org.svg @@ -758,13 +758,13 @@ - + Node40->Node5 - + Node40->Node32 @@ -779,7 +779,7 @@ - + Node40->Node41 @@ -794,19 +794,19 @@ - + Node40->Node47 - + Node41->Node8 - + Node41->Node10 @@ -821,7 +821,7 @@ - + Node41->Node42 @@ -836,7 +836,7 @@ - + Node41->Node43 @@ -851,31 +851,31 @@ - + Node41->Node46 - + Node43->Node7 - + Node43->Node8 - + Node43->Node11 - + Node43->Node16 @@ -890,49 +890,49 @@ - + Node43->Node44 - + Node44->Node11 - + Node46->Node32 - + Node46->Node41 - + Node47->Node8 - + Node47->Node12 - + Node47->Node21 - + Node47->Node43 @@ -947,7 +947,7 @@ - + Node47->Node48 @@ -962,31 +962,31 @@ - + Node47->Node49 - + Node49->Node10 - + Node49->Node32 - + Node49->Node41 - + Node49->Node47 diff --git a/_function_8hpp_source.html b/_function_8hpp_source.html index 7d5acb71d1..9ff4eec79a 100644 --- a/_function_8hpp_source.html +++ b/_function_8hpp_source.html @@ -136,7 +136,7 @@
45 
46  inline Mesh& mesh() { return m_mesh; }
47  inline const Mesh& mesh() const { return m_mesh; }
-
48  inline PrimitiveType attribute_type() const { return m_handle.primitive_type(); };
+
48  inline PrimitiveType attribute_type() const { return m_handle.primitive_type(); };
49  int64_t embedded_dimension() const;
50  inline const attribute::MeshAttributeHandle& attribute_handle() const { return m_handle; }
51  virtual std::vector<simplex::Simplex> domain(
@@ -169,7 +169,7 @@
const attribute::MeshAttributeHandle & attribute_handle() const
Definition: Function.hpp:50
- + diff --git a/_function_invariant_8cpp_source.html b/_function_invariant_8cpp_source.html index 623da5aee8..9cc9ac36a0 100644 --- a/_function_invariant_8cpp_source.html +++ b/_function_invariant_8cpp_source.html @@ -123,7 +123,7 @@
6 namespace wmtk::invariants {
7 
-
9  const PrimitiveType type,
+
9  const PrimitiveType type,
10  const std::shared_ptr<function::PerSimplexFunction>& func)
11  : Invariant(func->mesh(), false, true, true)
12  , m_func(func)
@@ -161,7 +161,7 @@
virtual bool before(const simplex::Simplex &t) const
Definition: Invariant.cpp:24
- + diff --git a/_function_invariant_8hpp_source.html b/_function_invariant_8hpp_source.html index a704d2bb07..154f29bfb0 100644 --- a/_function_invariant_8hpp_source.html +++ b/_function_invariant_8hpp_source.html @@ -132,7 +132,7 @@
15 {
16 public:
-
18  const PrimitiveType type,
+
18  const PrimitiveType type,
19  const std::shared_ptr<function::PerSimplexFunction>& func);
20 
21  bool after(
@@ -141,7 +141,7 @@
24 
25 private:
26  std::shared_ptr<function::PerSimplexFunction> m_func;
- +
28 };
29 } // namespace invariants
30 } // namespace wmtk
@@ -153,7 +153,7 @@
Definition: Accessor.cpp:8
- + diff --git a/_grid2_options_8cpp_source.html b/_grid2_options_8cpp_source.html index f09aa763b8..9976913b7e 100644 --- a/_grid2_options_8cpp_source.html +++ b/_grid2_options_8cpp_source.html @@ -187,7 +187,7 @@
70  }
71  }
72  const auto& name = opt.coordinates->name;
- +
74  }
75  return m;
76 }
@@ -222,7 +222,7 @@
void procedural(const base::Paths &paths, const nlohmann::json &j, io::Cache &cache)
Definition: procedural.cpp:13
attribute::MeshAttributeHandle set_matrix_attribute(const Mat &data, const std::string &name, const PrimitiveType &type, Mesh &mesh)
Definition: mesh_utils.hpp:9
- + diff --git a/_grid3_options_8cpp_source.html b/_grid3_options_8cpp_source.html index 21f4c46bbd..93a03d8218 100644 --- a/_grid3_options_8cpp_source.html +++ b/_grid3_options_8cpp_source.html @@ -202,7 +202,7 @@
85  }
86  }
87  const auto& name = opt.coordinates->name;
- +
89  }
90  return m;
91 }
@@ -238,7 +238,7 @@
void procedural(const base::Paths &paths, const nlohmann::json &j, io::Cache &cache)
Definition: procedural.cpp:13
attribute::MeshAttributeHandle set_matrix_attribute(const Mat &data, const std::string &name, const PrimitiveType &type, Mesh &mesh)
Definition: mesh_utils.hpp:9
- + diff --git a/_h_d_f5_reader_8cpp_source.html b/_h_d_f5_reader_8cpp_source.html index cec46dfaad..c1e5cd2c87 100644 --- a/_h_d_f5_reader_8cpp_source.html +++ b/_h_d_f5_reader_8cpp_source.html @@ -182,7 +182,7 @@
65  auto parent_mesh = meshes.at(parent_id);
66  auto child_mesh = p.second;
67 
-
68  const PrimitiveType child_primitive_type = child_mesh->top_simplex_type();
+
68  const PrimitiveType child_primitive_type = child_mesh->top_simplex_type();
69 
70 
71  assert(parent_mesh->m_multi_mesh_manager.m_children.size() == child_index);
@@ -226,17 +226,17 @@
109 
110 std::shared_ptr<Mesh> HDF5Reader::read_mesh(h5pp::File& hdf5_file, const std::string& root_dataset)
111 {
-
112  PrimitiveType top_simplex_type =
-
113  hdf5_file.readAttribute<PrimitiveType>(root_dataset, "top_simplex_type");
+
112  PrimitiveType top_simplex_type =
+
113  hdf5_file.readAttribute<PrimitiveType>(root_dataset, "top_simplex_type");
114 
115  std::shared_ptr<Mesh> mesh;
116 
117  switch (top_simplex_type) {
-
118  case PrimitiveType::Vertex: mesh = std::make_shared<PointMesh>(); break;
- -
120  case PrimitiveType::Edge: mesh = std::make_shared<EdgeMesh>(); break;
-
121  case PrimitiveType::Face: mesh = std::make_shared<TriMesh>(); break;
-
122  case PrimitiveType::Tetrahedron: mesh = std::make_shared<TetMesh>(); break;
+
118  case PrimitiveType::Vertex: mesh = std::make_shared<PointMesh>(); break;
+ +
120  case PrimitiveType::Edge: mesh = std::make_shared<EdgeMesh>(); break;
+
121  case PrimitiveType::Face: mesh = std::make_shared<TriMesh>(); break;
+
122  case PrimitiveType::Tetrahedron: mesh = std::make_shared<TetMesh>(); break;
123  default: break;
124  }
125 
@@ -258,7 +258,7 @@
141  const std::string name =
142  std::regex_replace(s, std::regex(std::to_string(dimension) + "/"), "");
143 
-
144  auto pt = PrimitiveType(dimension);
+
144  auto pt = PrimitiveType(dimension);
145 
146  if (type == "int64_t") {
147  auto v = hdf5_file.readDataset<std::vector<int64_t>>(dataset);
@@ -308,7 +308,7 @@
192  const T& default_val,
193  const std::string& name,
-
194  PrimitiveType pt,
+
194  PrimitiveType pt,
195  int64_t stride,
196  const std::vector<T>& v,
197  Mesh& mesh)
@@ -348,9 +348,9 @@
attribute::MeshAttributeHandle register_attribute(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
-
attribute::MeshAttributeHandle get_attribute_handle(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:896
-
int64_t get_attribute_dimension(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:922
-
bool has_attribute(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:916
+
attribute::MeshAttributeHandle get_attribute_handle(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:895
+
int64_t get_attribute_dimension(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:921
+
bool has_attribute(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:915
static std::string parent_to_child_map_attribute_name(int64_t index)
static std::string child_to_parent_map_attribute_name()
@@ -361,12 +361,12 @@
Definition: Accessor.cpp:8
void log_and_throw_error(const std::string &msg)
Definition: Logger.cpp:93
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
- - - - - - + + + + + + diff --git a/_h_d_f5_reader_8hpp_source.html b/_h_d_f5_reader_8hpp_source.html index 36722df6f6..9ceba0cd70 100644 --- a/_h_d_f5_reader_8hpp_source.html +++ b/_h_d_f5_reader_8hpp_source.html @@ -144,7 +144,7 @@
27  void set_attribute(
28  const T& default_val,
29  const std::string& name,
-
30  PrimitiveType pt,
+
30  PrimitiveType pt,
31  int64_t stride,
32  const std::vector<T>& v,
33  Mesh& mesh);
@@ -159,7 +159,7 @@
Definition: Accessor.cpp:8
- + diff --git a/_h_d_f5_writer_8cpp_source.html b/_h_d_f5_writer_8cpp_source.html index 62db2995f9..b3867422bb 100644 --- a/_h_d_f5_writer_8cpp_source.html +++ b/_h_d_f5_writer_8cpp_source.html @@ -245,7 +245,7 @@
128  m_hdf5_file->writeAttribute(get_type<T>(), ss.str(), "type");
129 }
130 
- +
132 {
133  m_hdf5_file->writeAttribute(type, dataset_path(), "top_simplex_type");
134 }
@@ -290,7 +290,7 @@
int64_t m_mm_level
Definition: MeshWriter.hpp:51
Definition: Accessor.cpp:8
- + diff --git a/_h_d_f5_writer_8hpp_source.html b/_h_d_f5_writer_8hpp_source.html index da4bf64243..e878edfcea 100644 --- a/_h_d_f5_writer_8hpp_source.html +++ b/_h_d_f5_writer_8hpp_source.html @@ -131,7 +131,7 @@
14 public:
15  HDF5Writer(const std::filesystem::path& filename);
16 
-
17  void write_top_simplex_type(const PrimitiveType type) override;
+
17  void write_top_simplex_type(const PrimitiveType type) override;
18  void write_absolute_id(const std::vector<int64_t>& id) override;
19 
20  bool write(const int) override { return true; }
@@ -197,7 +197,7 @@
Definition: Accessor.cpp:8
- + diff --git a/_homogeneous_simplex_equal_functor_8hpp_source.html b/_homogeneous_simplex_equal_functor_8hpp_source.html index 9313d88f41..1ead4d1893 100644 --- a/_homogeneous_simplex_equal_functor_8hpp_source.html +++ b/_homogeneous_simplex_equal_functor_8hpp_source.html @@ -125,9 +125,9 @@
9 {
10  const Mesh& m;
- +
12 
- +
14  : m{mm}
15  , primitive_type(pt)
16  {}
@@ -145,7 +145,7 @@
static bool equal(const Mesh &m, const Simplex &s0, const Simplex &s1)
- + diff --git a/_homogeneous_simplex_less_functor_8hpp_source.html b/_homogeneous_simplex_less_functor_8hpp_source.html index b0188e7151..a34a6dd383 100644 --- a/_homogeneous_simplex_less_functor_8hpp_source.html +++ b/_homogeneous_simplex_less_functor_8hpp_source.html @@ -125,9 +125,9 @@
9 {
10  const Mesh& m;
- +
12 
- +
14  : m{mm}
15  , primitive_type(pt)
16  {}
@@ -145,7 +145,7 @@
static bool less(const Mesh &m, const Simplex &s0, const Simplex &s1)
- + diff --git a/_interior_edge_invariant_8cpp_source.html b/_interior_edge_invariant_8cpp_source.html index 2ab57ebb3c..d368e9bf6a 100644 --- a/_interior_edge_invariant_8cpp_source.html +++ b/_interior_edge_invariant_8cpp_source.html @@ -120,7 +120,7 @@
3 
4 namespace wmtk::invariants {
- +
7 {}
8 } // namespace wmtk::invariants
@@ -129,8 +129,8 @@ - - + + diff --git a/_interior_simplex_invariant_8cpp_source.html b/_interior_simplex_invariant_8cpp_source.html index e459249953..cef89dc624 100644 --- a/_interior_simplex_invariant_8cpp_source.html +++ b/_interior_simplex_invariant_8cpp_source.html @@ -120,7 +120,7 @@
4 
5 namespace wmtk::invariants {
- +
7  : Invariant(m, true, false, false)
8  , m_primitive_type(pt)
9 {}
@@ -143,7 +143,7 @@
const Tuple & tuple() const
Definition: Simplex.hpp:25
- + diff --git a/_interior_simplex_invariant_8hpp_source.html b/_interior_simplex_invariant_8hpp_source.html index 999a184667..57760cced2 100644 --- a/_interior_simplex_invariant_8hpp_source.html +++ b/_interior_simplex_invariant_8hpp_source.html @@ -125,11 +125,11 @@
8 {
9 public:
- +
12  bool before(const simplex::Simplex& t) const override;
13 
14 private:
- +
16 };
17 } // namespace invariants
18 } // namespace wmtk
@@ -143,7 +143,7 @@
Invariant(const Mesh &m)
Definition: Invariant.cpp:10
Definition: Accessor.cpp:8
- + diff --git a/_interior_vertex_invariant_8cpp_source.html b/_interior_vertex_invariant_8cpp_source.html index 430b75e41f..72ca832ee3 100644 --- a/_interior_vertex_invariant_8cpp_source.html +++ b/_interior_vertex_invariant_8cpp_source.html @@ -120,7 +120,7 @@
3 
4 namespace wmtk::invariants {
- +
7 {}
8 } // namespace wmtk::invariants
@@ -129,8 +129,8 @@ - - + + diff --git a/_isotropic_remeshing_8cpp_source.html b/_isotropic_remeshing_8cpp_source.html index 7982b9200a..442e0746e4 100644 --- a/_isotropic_remeshing_8cpp_source.html +++ b/_isotropic_remeshing_8cpp_source.html @@ -169,9 +169,9 @@
52 
53  auto set_all_invariants = [&](auto&& m) {
54  invariant_interior_edge->add(
-
55  std::make_shared<invariants::InteriorSimplexInvariant>(m, PrimitiveType::Edge));
+
55  std::make_shared<invariants::InteriorSimplexInvariant>(m, PrimitiveType::Edge));
56  invariant_interior_vertex->add(
-
57  std::make_shared<invariants::InteriorSimplexInvariant>(m, PrimitiveType::Vertex));
+
57  std::make_shared<invariants::InteriorSimplexInvariant>(m, PrimitiveType::Vertex));
58  };
59  multimesh::MultiMeshVisitor visitor(set_all_invariants);
60  visitor.execute_from_root(mesh);
@@ -323,7 +323,7 @@
int64_t number_of_successful_operations() const
Returns the number of successful operations performed by the scheduler.
Definition: Scheduler.hpp:15
-
bool is_connectivity_valid() const override
Definition: TriMesh.cpp:382
+
bool is_connectivity_valid() const override
Definition: TriMesh.cpp:393
const TypedAttributeHandle< T > & as() const
@@ -332,8 +332,8 @@
void isotropic_remeshing(TriMesh &mesh, attribute::MeshAttributeHandle &position, std::vector< attribute::MeshAttributeHandle > &pass_through_attributes, const double length, const bool lock_boundary, const int64_t iterations, const std::vector< attribute::MeshAttributeHandle > &other_positions, const std::optional< attribute::MeshAttributeHandle > &position_for_inversion)
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
- - + + diff --git a/_local_neighbors_sum_function_8hpp__incl.md5 b/_local_neighbors_sum_function_8hpp__incl.md5 index 3b5e914f78..7c4b9d2f4a 100644 --- a/_local_neighbors_sum_function_8hpp__incl.md5 +++ b/_local_neighbors_sum_function_8hpp__incl.md5 @@ -1 +1 @@ -d0f773fa04d98bb21847da6d60fa8518 \ No newline at end of file +da776a31f1d8e699a70fffef3e59de2e \ No newline at end of file diff --git a/_local_neighbors_sum_function_8hpp__incl.svg b/_local_neighbors_sum_function_8hpp__incl.svg index a50ec8d60b..123e3ca45a 100644 --- a/_local_neighbors_sum_function_8hpp__incl.svg +++ b/_local_neighbors_sum_function_8hpp__incl.svg @@ -775,13 +775,13 @@ var sectionId = 'dynsection-0';
- + Node41->Node6 - + Node41->Node33 @@ -796,7 +796,7 @@ var sectionId = 'dynsection-0'; - + Node41->Node42 @@ -811,19 +811,19 @@ var sectionId = 'dynsection-0'; - + Node41->Node48 - + Node42->Node9 - + Node42->Node11 @@ -838,7 +838,7 @@ var sectionId = 'dynsection-0'; - + Node42->Node43 @@ -853,7 +853,7 @@ var sectionId = 'dynsection-0'; - + Node42->Node44 @@ -868,31 +868,31 @@ var sectionId = 'dynsection-0'; - + Node42->Node47 - + Node44->Node8 - + Node44->Node9 - + Node44->Node12 - + Node44->Node17 @@ -907,49 +907,49 @@ var sectionId = 'dynsection-0'; - + Node44->Node45 - + Node45->Node12 - + Node47->Node33 - + Node47->Node42 - + Node48->Node9 - + Node48->Node13 - + Node48->Node22 - + Node48->Node44 @@ -964,7 +964,7 @@ var sectionId = 'dynsection-0'; - + Node48->Node49 @@ -979,31 +979,31 @@ var sectionId = 'dynsection-0'; - + Node48->Node50 - + Node50->Node11 - + Node50->Node33 - + Node50->Node42 - + Node50->Node48 diff --git a/_local_neighbors_sum_function_8hpp__incl_org.svg b/_local_neighbors_sum_function_8hpp__incl_org.svg index bff615db1b..d4cea9b19f 100644 --- a/_local_neighbors_sum_function_8hpp__incl_org.svg +++ b/_local_neighbors_sum_function_8hpp__incl_org.svg @@ -729,13 +729,13 @@ - + Node41->Node6 - + Node41->Node33 @@ -750,7 +750,7 @@ - + Node41->Node42 @@ -765,19 +765,19 @@ - + Node41->Node48 - + Node42->Node9 - + Node42->Node11 @@ -792,7 +792,7 @@ - + Node42->Node43 @@ -807,7 +807,7 @@ - + Node42->Node44 @@ -822,31 +822,31 @@ - + Node42->Node47 - + Node44->Node8 - + Node44->Node9 - + Node44->Node12 - + Node44->Node17 @@ -861,49 +861,49 @@ - + Node44->Node45 - + Node45->Node12 - + Node47->Node33 - + Node47->Node42 - + Node48->Node9 - + Node48->Node13 - + Node48->Node22 - + Node48->Node44 @@ -918,7 +918,7 @@ - + Node48->Node49 @@ -933,31 +933,31 @@ - + Node48->Node50 - + Node50->Node11 - + Node50->Node33 - + Node50->Node42 - + Node50->Node48 diff --git a/_local_neighbors_sum_function_8hpp_source.html b/_local_neighbors_sum_function_8hpp_source.html index 38e5bc3f04..6269e396f8 100644 --- a/_local_neighbors_sum_function_8hpp_source.html +++ b/_local_neighbors_sum_function_8hpp_source.html @@ -141,7 +141,7 @@
41 
42 private:
- +
45 };
46 } // namespace wmtk::function
@@ -160,7 +160,7 @@ - + diff --git a/_marching_8cpp_source.html b/_marching_8cpp_source.html index abb8ed2012..77fa715f2b 100644 --- a/_marching_8cpp_source.html +++ b/_marching_8cpp_source.html @@ -128,12 +128,12 @@
11 auto gather_attributes(io::Cache& cache, const Mesh& mesh, const internal::MarchingOptions& options)
12 {
13  attribute::MeshAttributeHandle vertex_tag_handle =
- +
15 
16  std::vector<attribute::MeshAttributeHandle> filter_labels;
17  for (const std::string& name : options.attributes.filter_labels) {
-
19  mesh.get_attribute_handle<int64_t>(name, PrimitiveType::Edge);
+
19  mesh.get_attribute_handle<int64_t>(name, PrimitiveType::Edge);
20  filter_labels.emplace_back(handle);
21  }
22 
@@ -202,8 +202,8 @@ -
attribute::MeshAttributeHandle get_attribute_handle(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:896
-
void clear_attributes(const std::vector< attribute::TypedAttributeHandleVariant > &keep_attributes)
Remove all custom attributes besides the one passed in.
+
attribute::MeshAttributeHandle get_attribute_handle(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:895
+
void clear_attributes(const std::vector< attribute::TypedAttributeHandleVariant > &keep_attributes)
Remove all custom attributes besides the one passed in.
virtual int64_t top_cell_dimension() const =0
@@ -216,8 +216,8 @@
auto gather_attributes(io::Cache &cache, const Mesh &mesh, const internal::MarchingOptions &options)
Definition: marching.cpp:11
void marching(const base::Paths &paths, const nlohmann::json &j, io::Cache &cache)
Perform maching tetrahedra/triangles.
Definition: marching.cpp:28
- - + + diff --git a/_max_edge_length_invariant_8cpp_source.html b/_max_edge_length_invariant_8cpp_source.html index de8ba25dcc..8d0c8be406 100644 --- a/_max_edge_length_invariant_8cpp_source.html +++ b/_max_edge_length_invariant_8cpp_source.html @@ -146,7 +146,7 @@
bool before(const simplex::Simplex &t) const override
-
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
const Mesh & mesh() const
Definition: Invariant.cpp:35
diff --git a/_max_function_invariant_8cpp_source.html b/_max_function_invariant_8cpp_source.html index a694b4035e..48653f85b5 100644 --- a/_max_function_invariant_8cpp_source.html +++ b/_max_function_invariant_8cpp_source.html @@ -123,7 +123,7 @@
6 namespace wmtk::invariants {
7 
-
9  const PrimitiveType type,
+
9  const PrimitiveType type,
10  const std::shared_ptr<function::PerSimplexFunction>& func)
11  : Invariant(func->mesh())
12  , m_func(func)
@@ -163,7 +163,7 @@ - + diff --git a/_max_function_invariant_8hpp_source.html b/_max_function_invariant_8hpp_source.html index 41a883e46b..048cee7775 100644 --- a/_max_function_invariant_8hpp_source.html +++ b/_max_function_invariant_8hpp_source.html @@ -132,7 +132,7 @@
15 {
16 public:
-
18  const PrimitiveType type,
+
18  const PrimitiveType type,
19  const std::shared_ptr<function::PerSimplexFunction>& func);
20 
21  bool after(
@@ -141,7 +141,7 @@
24 
25 private:
26  std::shared_ptr<function::PerSimplexFunction> m_func;
- +
28 };
29 } // namespace invariants
30 } // namespace wmtk
@@ -153,7 +153,7 @@
MaxFunctionInvariant(const PrimitiveType type, const std::shared_ptr< function::PerSimplexFunction > &func)
Definition: Accessor.cpp:8
- + diff --git a/_mesh_8cpp_source.html b/_mesh_8cpp_source.html index 892bf451c3..254df29eb8 100644 --- a/_mesh_8cpp_source.html +++ b/_mesh_8cpp_source.html @@ -127,22 +127,22 @@
10 namespace wmtk {
11 
12 
- +
14 {
15  int64_t dimension = top_cell_dimension();
16  assert(dimension >= 0);
17  assert(dimension < 4);
-
18  return static_cast<PrimitiveType>(dimension);
+
18  return static_cast<PrimitiveType>(dimension);
19 }
20 
21 
-
22 std::vector<Tuple> Mesh::get_all(PrimitiveType type) const
+
22 std::vector<Tuple> Mesh::get_all(PrimitiveType type) const
23 {
24  return get_all(type, false);
25 }
26 
27 
-
28 std::vector<Tuple> Mesh::get_all(PrimitiveType type, const bool include_deleted) const
+
28 std::vector<Tuple> Mesh::get_all(PrimitiveType type, const bool include_deleted) const
29 {
30  ConstAccessor<char> flag_accessor = get_flag_accessor(type);
31  const attribute::CachingAccessor<char>& flag_accessor_indices = flag_accessor.index_access();
@@ -193,17 +193,17 @@
76 }
77 
78 
- +
80 {
81  return get_const_flag_accessor(type);
82 }
- +
84 {
- +
86 }
- +
88 {
- +
90 }
91 
@@ -296,7 +296,7 @@
179  for (int i = 0; i < simplices.size(); ++i) {
180  auto simplices_i = simplices[i];
181  for (const auto& simplex : simplices_i) {
-
182  int64_t d = get_primitive_type_id(simplex.primitive_type());
+
182  int64_t d = get_primitive_type_id(simplex.primitive_type());
183  assert(d < 3);
184  gids[d].emplace_back(id(simplex.tuple(), simplex.primitive_type()));
185  }
@@ -335,23 +335,23 @@ -
Tuple switch_tuples_unsafe(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:988
+
Tuple switch_tuples_unsafe(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:987
void update_cell_hashes_slow(const std::vector< Tuple > &cells)
Definition: Mesh.cpp:129
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
ConstAccessor< char > get_const_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:83
Tuple resurrect_tuple_slow(const Tuple &tuple)
same as resurrect_tuple but slow because it creates a new accessor
Definition: Mesh.cpp:143
bool is_hash_valid(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
Definition: Mesh.cpp:60
-
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
+
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
int64_t get_cell_hash_slow(int64_t cell_index) const
Definition: Mesh.cpp:154
-
std::vector< TypedAttributeHandle< char > > m_flag_handles
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition: Mesh.hpp:845
+
std::vector< TypedAttributeHandle< char > > m_flag_handles
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition: Mesh.hpp:844
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
virtual Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const =0
internal function that returns the tuple of requested type, and has the global index cid
void assert_capacity_valid() const
Definition: Mesh.cpp:210
void update_cell_hash(const Tuple &cell, Accessor< int64_t > &hash_accessor)
update hash in given cell
Definition: Mesh.cpp:106
std::vector< Tuple > get_all(PrimitiveType type) const
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index.
Definition: Mesh.cpp:22
std::vector< std::vector< int64_t > > simplices_to_gids(const std::vector< std::vector< simplex::Simplex >> &simplices) const
Definition: Mesh.cpp:174
-
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:962
-
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:961
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
virtual bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const =0
check validity of tuple including its hash
void set_capacities_from_flags()
Definition: Mesh.cpp:160
ConstAccessor< int64_t > get_const_cell_hash_accessor() const
Definition: Mesh.cpp:92
@@ -360,14 +360,14 @@
PrimitiveType top_simplex_type() const
Definition: Mesh.cpp:13
bool is_valid_slow(const Tuple &tuple) const
Definition: Mesh.cpp:72
virtual int64_t top_cell_dimension() const =0
-
TypedAttributeHandle< int64_t > m_cell_hash_handle
Definition: Mesh.hpp:849
+
TypedAttributeHandle< int64_t > m_cell_hash_handle
Definition: Mesh.hpp:848
void update_vertex_operation_hashes(const Tuple &vertex, Accessor< int64_t > &hash_accessor)
wrapper function to update hashes (for parent mesh *this and its child meshes) after vertex operation...
Definition: Mesh.cpp:205
ConstAccessor< int64_t > get_cell_hash_accessor() const
Definition: Mesh.cpp:97
-
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:887
+
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:886
int64_t get_cell_hash(int64_t cell_index, const ConstAccessor< int64_t > &hash_accessor) const
Definition: Mesh.cpp:149
Tuple resurrect_tuple(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
return the same tuple but with updated hash
Definition: Mesh.cpp:136
-
attribute::AttributeManager m_attribute_manager
Definition: Mesh.hpp:824
-
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:826
+
attribute::AttributeManager m_attribute_manager
Definition: Mesh.hpp:823
+
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:825
void update_cell_hashes(const std::vector< Tuple > &cells, Accessor< int64_t > &hash_accessor)
update hashes in given cells
Definition: Mesh.cpp:116
virtual void write_top_simplex_type(const PrimitiveType type)=0
@@ -389,9 +389,9 @@
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
+
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- + diff --git a/_mesh_8hpp_source.html b/_mesh_8hpp_source.html index d44807dd83..dff7e678fd 100644 --- a/_mesh_8hpp_source.html +++ b/_mesh_8hpp_source.html @@ -248,558 +248,557 @@
131  Accessor<int64_t>& hash_accessor);
132 
133 
-
134  virtual void reload_accessors() const {}
-
135  virtual int64_t top_cell_dimension() const = 0;
- -
137 
-
138  // attribute directly hashes its "children" components so it overrides "child_hashes"
-
139  std::map<std::string, const wmtk::utils::Hashable*> child_hashables() const override;
-
140  std::map<std::string, std::size_t> child_hashes() const override;
-
141 
-
142  // dimension is the dimension of the top level simplex in this mesh
-
143  // That is, a TriMesh is a 2, a TetMesh is a 3
-
144  Mesh(const int64_t& dimension);
-
145  // maximum primitive type id for supported attribute primitive locations
-
146  Mesh(const int64_t& dimension, const int64_t& max_primitive_type_id, PrimitiveType hash_type);
-
147  Mesh(Mesh&& other);
-
148  Mesh(const Mesh& other) = delete;
-
149  Mesh& operator=(const Mesh& other) = delete;
-
150  Mesh& operator=(Mesh&& other);
-
151  virtual ~Mesh();
-
152 
-
153  void serialize(MeshWriter& writer) const;
-
154 
-
160  std::vector<Tuple> get_all(PrimitiveType type) const;
-
161 
-
166  virtual std::tuple<std::vector<std::vector<int64_t>>, std::vector<std::vector<int64_t>>>
-
167  consolidate();
-
168 
-
174  virtual std::vector<std::vector<TypedAttributeHandle<int64_t>>> connectivity_attributes()
-
175  const = 0;
+
134  virtual int64_t top_cell_dimension() const = 0;
+ +
136 
+
137  // attribute directly hashes its "children" components so it overrides "child_hashes"
+
138  std::map<std::string, const wmtk::utils::Hashable*> child_hashables() const override;
+
139  std::map<std::string, std::size_t> child_hashes() const override;
+
140 
+
141  // dimension is the dimension of the top level simplex in this mesh
+
142  // That is, a TriMesh is a 2, a TetMesh is a 3
+
143  Mesh(const int64_t& dimension);
+
144  // maximum primitive type id for supported attribute primitive locations
+
145  Mesh(const int64_t& dimension, const int64_t& max_primitive_type_id, PrimitiveType hash_type);
+
146  Mesh(Mesh&& other);
+
147  Mesh(const Mesh& other) = delete;
+
148  Mesh& operator=(const Mesh& other) = delete;
+
149  Mesh& operator=(Mesh&& other);
+
150  virtual ~Mesh();
+
151 
+
152  void serialize(MeshWriter& writer) const;
+
153 
+
159  std::vector<Tuple> get_all(PrimitiveType type) const;
+
160 
+
165  virtual std::tuple<std::vector<std::vector<int64_t>>, std::vector<std::vector<int64_t>>>
+
166  consolidate();
+
167 
+
173  virtual std::vector<std::vector<TypedAttributeHandle<int64_t>>> connectivity_attributes()
+
174  const = 0;
+
175 
176 
-
177 
-
178  std::vector<attribute::TypedAttributeHandleVariant> builtin_attributes() const;
-
179  std::vector<attribute::TypedAttributeHandleVariant> custom_attributes() const;
+
177  std::vector<attribute::TypedAttributeHandleVariant> builtin_attributes() const;
+
178  std::vector<attribute::TypedAttributeHandleVariant> custom_attributes() const;
+
179 
180 
-
181 
-
182  /* @brief registers an attribute without assuming the mesh exists */
-
183  template <typename T>
- -
185  const std::string& name,
-
186  PrimitiveType type,
-
187  int64_t size,
-
188  bool replace = false,
-
189  T default_value = T(0));
-
190 
-
191  /* @brief registers an attribute without assuming the mesh exists, returns a typed attribute */
-
192  template <typename T>
- -
194  const std::string& name,
-
195  PrimitiveType type,
-
196  int64_t size,
-
197  bool replace = false,
-
198  T default_value = T(0));
+
181  /* @brief registers an attribute without assuming the mesh exists */
+
182  template <typename T>
+ +
184  const std::string& name,
+
185  PrimitiveType type,
+
186  int64_t size,
+
187  bool replace = false,
+
188  T default_value = T(0));
+
189 
+
190  /* @brief registers an attribute without assuming the mesh exists, returns a typed attribute */
+
191  template <typename T>
+ +
193  const std::string& name,
+
194  PrimitiveType type,
+
195  int64_t size,
+
196  bool replace = false,
+
197  T default_value = T(0));
+
198 
199 
-
200 
-
201 public:
-
202  template <typename T>
-
203  bool has_attribute(
-
204  const std::string& name,
-
205  const PrimitiveType ptype) const; // block standard topology tools
-
206 
-
207  template <typename T>
- -
209  const std::string& name,
-
210  const PrimitiveType ptype) const; // block standard topology tools
-
211 
-
212  template <typename T>
- -
214  const std::string& name,
-
215  const PrimitiveType ptype) const; // block standard topology tools
+
200 public:
+
201  template <typename T>
+
202  bool has_attribute(
+
203  const std::string& name,
+
204  const PrimitiveType ptype) const; // block standard topology tools
+
205 
+
206  template <typename T>
+ +
208  const std::string& name,
+
209  const PrimitiveType ptype) const; // block standard topology tools
+
210 
+
211  template <typename T>
+ +
213  const std::string& name,
+
214  const PrimitiveType ptype) const; // block standard topology tools
+
215 
216 
-
217 
-
218  template <typename T>
- -
220 
-
221  template <typename T>
- -
223 
-
224  template <typename T>
- -
226 
-
227  template <typename T>
- -
229  template <typename T>
- -
231 
-
232  template <typename T>
-
233  int64_t get_attribute_dimension(const TypedAttributeHandle<T>& handle) const;
-
234 
-
235  template <typename T>
-
236  std::string get_attribute_name(const TypedAttributeHandle<T>& handle) const;
-
237 
-
238  std::string get_attribute_name(const attribute::TypedAttributeHandleVariant& handle) const;
-
239 
-
245  void clear_attributes(
-
246  const std::vector<attribute::TypedAttributeHandleVariant>& keep_attributes);
-
247  void clear_attributes();
-
248  void clear_attributes(const std::vector<attribute::MeshAttributeHandle>& keep_attributes);
+
217  template <typename T>
+ +
219 
+
220  template <typename T>
+ +
222 
+
223  template <typename T>
+ +
225 
+
226  template <typename T>
+ +
228  template <typename T>
+ +
230 
+
231  template <typename T>
+
232  int64_t get_attribute_dimension(const TypedAttributeHandle<T>& handle) const;
+
233 
+
234  template <typename T>
+
235  std::string get_attribute_name(const TypedAttributeHandle<T>& handle) const;
+
236 
+
237  std::string get_attribute_name(const attribute::TypedAttributeHandleVariant& handle) const;
+
238 
+
244  void clear_attributes(
+
245  const std::vector<attribute::TypedAttributeHandleVariant>& keep_attributes);
+
246  void clear_attributes();
+
247  void clear_attributes(const std::vector<attribute::MeshAttributeHandle>& keep_attributes);
+
248 
249 
-
250 
-
251  // creates a scope as int64_t as the AttributeScopeHandle exists
- +
250  // creates a scope as int64_t as the AttributeScopeHandle exists
+ +
252 
253 
-
254 
-
263  template <typename Functor, typename... Args>
-
264  decltype(auto) parent_scope(Functor&& f, Args&&... args) const;
+
262  template <typename Functor, typename... Args>
+
263  decltype(auto) parent_scope(Functor&& f, Args&&... args) const;
+
264 
265 
-
266 
- -
268  ConstAccessor<int64_t> get_cell_hash_accessor() const;
- - + +
267  ConstAccessor<int64_t> get_cell_hash_accessor() const;
+ + +
270 
271 
-
272 
-
273  int64_t get_cell_hash(int64_t cell_index, const ConstAccessor<int64_t>& hash_accessor) const;
-
274  // utility function for getting a cell's hash - slow because it creates a new accessor
-
275  int64_t get_cell_hash_slow(int64_t cell_index) const;
+
272  int64_t get_cell_hash(int64_t cell_index, const ConstAccessor<int64_t>& hash_accessor) const;
+
273  // utility function for getting a cell's hash - slow because it creates a new accessor
+
274  int64_t get_cell_hash_slow(int64_t cell_index) const;
+
275 
276 
-
277 
-
278  bool operator==(const Mesh& other) const;
-
279 
-
280  void assert_capacity_valid() const;
-
281  virtual bool is_connectivity_valid() const = 0;
-
282 
-
283 protected: // member functions
- -
285  Accessor<int64_t> get_cell_hash_accessor();
-
286 
-
293  void update_cell_hash(const Tuple& cell, Accessor<int64_t>& hash_accessor);
-
294 
-
301  void update_cell_hashes(const std::vector<Tuple>& cells, Accessor<int64_t>& hash_accessor);
-
311  void update_cell_hash(const int64_t cell_index, Accessor<int64_t>& hash_accessor);
-
312 
-
319  void update_cell_hashes(
-
320  const std::vector<int64_t>& cell_indices,
-
321  Accessor<int64_t>& hash_accessor);
-
322 
-
323  void update_cell_hashes_slow(const std::vector<Tuple>& cells);
-
324 
-
335  Tuple resurrect_tuple(const Tuple& tuple, const ConstAccessor<int64_t>& hash_accessor) const;
-
336 
-
340  Tuple resurrect_tuple_slow(const Tuple& tuple);
+
277  bool operator==(const Mesh& other) const;
+
278 
+
279  void assert_capacity_valid() const;
+
280  virtual bool is_connectivity_valid() const = 0;
+
281 
+
282 protected: // member functions
+ +
284  Accessor<int64_t> get_cell_hash_accessor();
+
285 
+
292  void update_cell_hash(const Tuple& cell, Accessor<int64_t>& hash_accessor);
+
293 
+
300  void update_cell_hashes(const std::vector<Tuple>& cells, Accessor<int64_t>& hash_accessor);
+
310  void update_cell_hash(const int64_t cell_index, Accessor<int64_t>& hash_accessor);
+
311 
+
318  void update_cell_hashes(
+
319  const std::vector<int64_t>& cell_indices,
+
320  Accessor<int64_t>& hash_accessor);
+
321 
+
322  void update_cell_hashes_slow(const std::vector<Tuple>& cells);
+
323 
+
334  Tuple resurrect_tuple(const Tuple& tuple, const ConstAccessor<int64_t>& hash_accessor) const;
+
335 
+
339  Tuple resurrect_tuple_slow(const Tuple& tuple);
+
340 
341 
-
342 
-
343 protected:
-
351  virtual Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const = 0;
-
352  std::vector<std::vector<int64_t>> simplices_to_gids(
-
353  const std::vector<std::vector<simplex::Simplex>>& simplices) const;
- -
360  void reserve_attributes(PrimitiveType type, int64_t size);
-
361  void reserve_attributes(int64_t dimension, int64_t size);
+
342 protected:
+
350  virtual Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const = 0;
+
351  std::vector<std::vector<int64_t>> simplices_to_gids(
+
352  const std::vector<std::vector<simplex::Simplex>>& simplices) const;
+ +
359  void reserve_attributes(PrimitiveType type, int64_t size);
+
360  void reserve_attributes(int64_t dimension, int64_t size);
+
361 
362 
-
363 
-
364  // specifies the number of simplices of each type and resizes attributes appropritely
-
365  void set_capacities(std::vector<int64_t> capacities);
-
366 
-
367  // reserves extra attributes than necessary right now
-
368  void reserve_more_attributes(PrimitiveType type, int64_t size);
-
369  // reserves extra attributes than necessary right now, does not pay attention
-
370  void reserve_more_attributes(const std::vector<int64_t>& sizes);
-
371 
-
372  // makes sure that there are at least `size` simples of type `type` avialable
-
373  void guarantee_more_attributes(PrimitiveType type, int64_t size);
-
374  // makes sure that there are at least `size` simplices avialable at every dimension
-
375  void guarantee_more_attributes(const std::vector<int64_t>& sizes);
-
376 
-
377  // makes sure that there are at least `size` simples of type `type` avialable
-
378  void guarantee_at_least_attributes(PrimitiveType type, int64_t size);
-
379  // makes sure that there are at least `size` simplices avialable at every dimension
-
380  void guarantee_at_least_attributes(const std::vector<int64_t>& sizes);
-
381 
-
382  // provides new simplices - should ONLY be called in our atomic topological operations
-
383  // all returned simplices are active (i.e their flags say they exist)
-
384  [[nodiscard]] std::vector<int64_t> request_simplex_indices(PrimitiveType type, int64_t count);
-
385 
-
386 public:
-
397  virtual Tuple switch_tuple(const Tuple& tuple, PrimitiveType type) const = 0;
-
398 
-
399  Tuple switch_vertex(const Tuple& tuple) const;
-
400  Tuple switch_edge(const Tuple& tuple) const;
-
401  Tuple switch_face(const Tuple& tuple) const;
-
402  Tuple switch_tetrahedron(const Tuple& tuple) const;
+
363  // specifies the number of simplices of each type and resizes attributes appropritely
+
364  void set_capacities(std::vector<int64_t> capacities);
+
365 
+
366  // reserves extra attributes than necessary right now
+
367  void reserve_more_attributes(PrimitiveType type, int64_t size);
+
368  // reserves extra attributes than necessary right now, does not pay attention
+
369  void reserve_more_attributes(const std::vector<int64_t>& sizes);
+
370 
+
371  // makes sure that there are at least `size` simples of type `type` avialable
+
372  void guarantee_more_attributes(PrimitiveType type, int64_t size);
+
373  // makes sure that there are at least `size` simplices avialable at every dimension
+
374  void guarantee_more_attributes(const std::vector<int64_t>& sizes);
+
375 
+
376  // makes sure that there are at least `size` simples of type `type` avialable
+
377  void guarantee_at_least_attributes(PrimitiveType type, int64_t size);
+
378  // makes sure that there are at least `size` simplices avialable at every dimension
+
379  void guarantee_at_least_attributes(const std::vector<int64_t>& sizes);
+
380 
+
381  // provides new simplices - should ONLY be called in our atomic topological operations
+
382  // all returned simplices are active (i.e their flags say they exist)
+
383  [[nodiscard]] std::vector<int64_t> request_simplex_indices(PrimitiveType type, int64_t count);
+
384 
+
385 public:
+
396  virtual Tuple switch_tuple(const Tuple& tuple, PrimitiveType type) const = 0;
+
397 
+
398  Tuple switch_vertex(const Tuple& tuple) const;
+
399  Tuple switch_edge(const Tuple& tuple) const;
+
400  Tuple switch_face(const Tuple& tuple) const;
+
401  Tuple switch_tetrahedron(const Tuple& tuple) const;
+
402 
403 
-
404 
-
405  // Performs a sequence of switch_tuple operations in the order specified in op_sequence.
-
406  // in debug mode this will assert a failure, in release this will return a null tuple
-
407 #if defined(__cpp_concepts)
-
408  template <std::forward_iterator ContainerType>
-
409 #else
-
410  template <typename ContainerType>
-
411 #endif
-
412  Tuple switch_tuples(const Tuple& tuple, const ContainerType& op_sequence) const;
-
413  // annoying initializer list prototype to catch switch_tuples(t, {PV,PE})
-
414  Tuple switch_tuples(const Tuple& tuple, const std::initializer_list<PrimitiveType>& op_sequence)
-
415  const;
-
416 
-
417  // Performs a sequence of switch_tuple operations in the order specified in op_sequence.
-
418 #if defined(__cpp_concepts)
-
419  template <std::forward_iterator ContainerType>
-
420 #else
-
421  template <typename ContainerType>
-
422 #endif
-
423  Tuple switch_tuples_unsafe(const Tuple& tuple, const ContainerType& op_sequence) const;
-
424  // annoying initializer list prototype to catch switch_tuples(t, {PV,PE})
- -
426  const Tuple& tuple,
-
427  const std::initializer_list<PrimitiveType>& op_sequence) const;
-
428 
- -
437  int64_t capacity(PrimitiveType type) const;
-
438 
-
446  virtual bool is_ccw(const Tuple& tuple) const = 0;
-
447 
-
455  bool is_boundary(const simplex::Simplex& tuple) const;
-
463  virtual bool is_boundary(PrimitiveType, const Tuple& tuple) const = 0;
+
404  // Performs a sequence of switch_tuple operations in the order specified in op_sequence.
+
405  // in debug mode this will assert a failure, in release this will return a null tuple
+
406 #if defined(__cpp_concepts)
+
407  template <std::forward_iterator ContainerType>
+
408 #else
+
409  template <typename ContainerType>
+
410 #endif
+
411  Tuple switch_tuples(const Tuple& tuple, const ContainerType& op_sequence) const;
+
412  // annoying initializer list prototype to catch switch_tuples(t, {PV,PE})
+
413  Tuple switch_tuples(const Tuple& tuple, const std::initializer_list<PrimitiveType>& op_sequence)
+
414  const;
+
415 
+
416  // Performs a sequence of switch_tuple operations in the order specified in op_sequence.
+
417 #if defined(__cpp_concepts)
+
418  template <std::forward_iterator ContainerType>
+
419 #else
+
420  template <typename ContainerType>
+
421 #endif
+
422  Tuple switch_tuples_unsafe(const Tuple& tuple, const ContainerType& op_sequence) const;
+
423  // annoying initializer list prototype to catch switch_tuples(t, {PV,PE})
+ +
425  const Tuple& tuple,
+
426  const std::initializer_list<PrimitiveType>& op_sequence) const;
+
427 
+ +
436  int64_t capacity(PrimitiveType type) const;
+
437 
+
445  virtual bool is_ccw(const Tuple& tuple) const = 0;
+
446 
+
454  bool is_boundary(const simplex::Simplex& tuple) const;
+
462  virtual bool is_boundary(PrimitiveType, const Tuple& tuple) const = 0;
+
463 
464 
-
465 
-
466  bool is_hash_valid(const Tuple& tuple, const ConstAccessor<int64_t>& hash_accessor) const;
-
467 
-
477  virtual bool is_valid(const Tuple& tuple, ConstAccessor<int64_t>& hash_accessor) const = 0;
-
478  bool is_valid_slow(const Tuple& tuple) const;
+
465  bool is_hash_valid(const Tuple& tuple, const ConstAccessor<int64_t>& hash_accessor) const;
+
466 
+
476  virtual bool is_valid(const Tuple& tuple, ConstAccessor<int64_t>& hash_accessor) const = 0;
+
477  bool is_valid_slow(const Tuple& tuple) const;
+
478 
479 
-
480 
-
481  //============================
-
482  // MultiMesh interface
-
483  //============================
-
484  //
-
488  bool is_multi_mesh_root() const;
- -
496  const Mesh& get_multi_mesh_root() const;
-
497 
-
498  Mesh& get_multi_mesh_mesh(const std::vector<int64_t>& absolute_id);
-
499  const Mesh& get_multi_mesh_mesh(const std::vector<int64_t>& absolute_id) const;
+
480  //============================
+
481  // MultiMesh interface
+
482  //============================
+
483  //
+
487  bool is_multi_mesh_root() const;
+ +
495  const Mesh& get_multi_mesh_root() const;
+
496 
+
497  Mesh& get_multi_mesh_mesh(const std::vector<int64_t>& absolute_id);
+
498  const Mesh& get_multi_mesh_mesh(const std::vector<int64_t>& absolute_id) const;
+
499 
500 
-
501 
-
502  Mesh& get_multi_mesh_child_mesh(const std::vector<int64_t>& relative_id);
-
503  const Mesh& get_multi_mesh_child_mesh(const std::vector<int64_t>& relative_id) const;
-
504 
-
508  std::vector<std::shared_ptr<Mesh>> get_child_meshes() const;
-
509 
-
513  std::vector<std::shared_ptr<Mesh>> get_all_child_meshes() const;
+
501  Mesh& get_multi_mesh_child_mesh(const std::vector<int64_t>& relative_id);
+
502  const Mesh& get_multi_mesh_child_mesh(const std::vector<int64_t>& relative_id) const;
+
503 
+
507  std::vector<std::shared_ptr<Mesh>> get_child_meshes() const;
+
508 
+
512  std::vector<std::shared_ptr<Mesh>> get_all_child_meshes() const;
+
513 
514 
-
515 
-
524  std::vector<int64_t> absolute_multi_mesh_id() const;
+
523  std::vector<int64_t> absolute_multi_mesh_id() const;
+
524 
525 
-
526 
-
539  void register_child_mesh(
-
540  const std::shared_ptr<Mesh>& child_mesh,
-
541  const std::vector<std::array<Tuple, 2>>& map_tuples);
-
542 
-
560  std::vector<simplex::Simplex> map(const Mesh& other_mesh, const simplex::Simplex& my_simplex)
-
561  const;
+
538  void register_child_mesh(
+
539  const std::shared_ptr<Mesh>& child_mesh,
+
540  const std::vector<std::array<Tuple, 2>>& map_tuples);
+
541 
+
559  std::vector<simplex::Simplex> map(const Mesh& other_mesh, const simplex::Simplex& my_simplex)
+
560  const;
+
561 
562 
-
563 
-
564  /*
-
565  * @brief map a collection of simplices to another mesh
-
566  *
-
567  * @param mesh the mesh the simplices should be mapped to
-
568  * @param simplices the simplices being mapped to the child mesh
-
569  * @returns every simplex that corresponds to the passed simplices
-
570  * */
-
571  std::vector<simplex::Simplex> map(
-
572  const Mesh& other_mesh,
-
573  const std::vector<simplex::Simplex>& my_simplices) const;
-
574 
-
586  std::vector<simplex::Simplex> lub_map(
-
587  const Mesh& other_mesh,
-
588  const simplex::Simplex& my_simplex) const;
+
563  /*
+
564  * @brief map a collection of simplices to another mesh
+
565  *
+
566  * @param mesh the mesh the simplices should be mapped to
+
567  * @param simplices the simplices being mapped to the child mesh
+
568  * @returns every simplex that corresponds to the passed simplices
+
569  * */
+
570  std::vector<simplex::Simplex> map(
+
571  const Mesh& other_mesh,
+
572  const std::vector<simplex::Simplex>& my_simplices) const;
+
573 
+
585  std::vector<simplex::Simplex> lub_map(
+
586  const Mesh& other_mesh,
+
587  const simplex::Simplex& my_simplex) const;
+
588 
589 
-
590 
-
591  /*
-
592  * @brief maps a collection of simplices from this mesh to any other mesh using LUB mesh as root
-
593  *
-
594  * Satisfies the same properties of standard map, but uses a the LUB as the root
-
595  *
-
596  * @param mesh the mesh the simplices should be mapped to
-
597  * @param simplices the simplices being mapped to the child mesh
-
598  * @returns every simplex that corresponds to the passed simplices
-
599  * */
-
600  std::vector<simplex::Simplex> lub_map(
-
601  const Mesh& other_mesh,
-
602  const std::vector<simplex::Simplex>& my_simplices) const;
-
603 
-
616  simplex::Simplex map_to_parent(const simplex::Simplex& my_simplex) const;
-
617 
-
626  simplex::Simplex map_to_root(const simplex::Simplex& my_simplex) const;
-
627 
-
637  std::vector<simplex::Simplex> map_to_child(
-
638  const Mesh& child_mesh,
-
639  const simplex::Simplex& my_simplex) const;
+
590  /*
+
591  * @brief maps a collection of simplices from this mesh to any other mesh using LUB mesh as root
+
592  *
+
593  * Satisfies the same properties of standard map, but uses a the LUB as the root
+
594  *
+
595  * @param mesh the mesh the simplices should be mapped to
+
596  * @param simplices the simplices being mapped to the child mesh
+
597  * @returns every simplex that corresponds to the passed simplices
+
598  * */
+
599  std::vector<simplex::Simplex> lub_map(
+
600  const Mesh& other_mesh,
+
601  const std::vector<simplex::Simplex>& my_simplices) const;
+
602 
+
615  simplex::Simplex map_to_parent(const simplex::Simplex& my_simplex) const;
+
616 
+
625  simplex::Simplex map_to_root(const simplex::Simplex& my_simplex) const;
+
626 
+
636  std::vector<simplex::Simplex> map_to_child(
+
637  const Mesh& child_mesh,
+
638  const simplex::Simplex& my_simplex) const;
+
639 
640 
-
641 
-
659  std::vector<Tuple> map_tuples(const Mesh& other_mesh, const simplex::Simplex& my_simplex) const;
-
660 
-
661  /*
-
662  * @brief map a collection of homogeneous simplices to another mesh
-
663  *
-
664  * @param mesh the mesh the simplices should be mapped to
-
665  * @param primitive_type the type of primitive the simplices are
-
666  * @param tuples the tuples used to represent the simplices
-
667  * @returns every simplex that corresponds to the passed simplices
-
668  * */
-
669  std::vector<Tuple> map_tuples(
-
670  const Mesh& other_mesh,
-
671  PrimitiveType pt,
-
672  const std::vector<Tuple>& my_simplices) const;
-
673 
-
685  std::vector<Tuple> lub_map_tuples(const Mesh& other_mesh, const simplex::Simplex& my_simplex)
-
686  const;
+
658  std::vector<Tuple> map_tuples(const Mesh& other_mesh, const simplex::Simplex& my_simplex) const;
+
659 
+
660  /*
+
661  * @brief map a collection of homogeneous simplices to another mesh
+
662  *
+
663  * @param mesh the mesh the simplices should be mapped to
+
664  * @param primitive_type the type of primitive the simplices are
+
665  * @param tuples the tuples used to represent the simplices
+
666  * @returns every simplex that corresponds to the passed simplices
+
667  * */
+
668  std::vector<Tuple> map_tuples(
+
669  const Mesh& other_mesh,
+
670  PrimitiveType pt,
+
671  const std::vector<Tuple>& my_simplices) const;
+
672 
+
684  std::vector<Tuple> lub_map_tuples(const Mesh& other_mesh, const simplex::Simplex& my_simplex)
+
685  const;
+
686 
687 
-
688 
-
689  /*
-
690  * @brief maps a collection of simplices from this mesh to any other mesh using LUB mesh as root
-
691  *
-
692  * Satisfies the same properties of standard map_tuples, but uses a the LUB as the root
-
693  *
-
694  * @param mesh the mesh the simplices should be mapped to
-
695  * @param simplices the simplices being mapped to the child mesh
-
696  * @returns every simplex that corresponds to the passed simplices
-
697  * */
-
698  std::vector<Tuple> lub_map_tuples(
-
699  const Mesh& other_mesh,
-
700  PrimitiveType pt,
-
701  const std::vector<Tuple>& my_simplices) const;
-
702 
-
716  Tuple map_to_parent_tuple(const simplex::Simplex& my_simplex) const;
-
717 
-
727  Tuple map_to_root_tuple(const simplex::Simplex& my_simplex) const;
-
728 
-
739  std::vector<Tuple> map_to_child_tuples(
-
740  const Mesh& child_mesh,
-
741  const simplex::Simplex& my_simplex) const;
+
688  /*
+
689  * @brief maps a collection of simplices from this mesh to any other mesh using LUB mesh as root
+
690  *
+
691  * Satisfies the same properties of standard map_tuples, but uses a the LUB as the root
+
692  *
+
693  * @param mesh the mesh the simplices should be mapped to
+
694  * @param simplices the simplices being mapped to the child mesh
+
695  * @returns every simplex that corresponds to the passed simplices
+
696  * */
+
697  std::vector<Tuple> lub_map_tuples(
+
698  const Mesh& other_mesh,
+
699  PrimitiveType pt,
+
700  const std::vector<Tuple>& my_simplices) const;
+
701 
+
715  Tuple map_to_parent_tuple(const simplex::Simplex& my_simplex) const;
+
716 
+
726  Tuple map_to_root_tuple(const simplex::Simplex& my_simplex) const;
+
727 
+
738  std::vector<Tuple> map_to_child_tuples(
+
739  const Mesh& child_mesh,
+
740  const simplex::Simplex& my_simplex) const;
+
741 
742 
-
743 
-
744  /*
-
745  * @brief identifies if this simplex can be mapped to another mesh
-
746  *
-
747  * This tries to map a simplex to another mesh and wil return true if a simplex is found.
-
748  * Note that the cost of this is almost hte same as mapping, so it is more efficient to map and
-
749  * check if the returned vector is empty rather than call this function.
-
750  */
-
751  bool can_map(const Mesh& other_mesh, const simplex::Simplex& my_simplex) const;
-
752 
-
760  void update_vertex_operation_hashes(const Tuple& vertex, Accessor<int64_t>& hash_accessor);
+
743  /*
+
744  * @brief identifies if this simplex can be mapped to another mesh
+
745  *
+
746  * This tries to map a simplex to another mesh and wil return true if a simplex is found.
+
747  * Note that the cost of this is almost hte same as mapping, so it is more efficient to map and
+
748  * check if the returned vector is empty rather than call this function.
+
749  */
+
750  bool can_map(const Mesh& other_mesh, const simplex::Simplex& my_simplex) const;
+
751 
+
759  void update_vertex_operation_hashes(const Tuple& vertex, Accessor<int64_t>& hash_accessor);
+
760 
761 
-
762 
-
770  bool has_child_mesh_in_dimension(int64_t dimension) const
-
771  {
- -
773  }
-
774 
-
775 private:
-
776  /*
-
777  * @brief returns if the other mesh is part of the same multi-mesh structure
-
778  * @param other the other being mesh being checked
-
779  * @returns true if they are part of the same structure
-
780  **/
-
781  bool is_from_same_multi_mesh_structure(const Mesh& other) const;
-
782 
-
783 protected:
-
784  // creates a scope as int64_t as the AttributeScopeHandle exists
- -
786 
-
787 protected:
-
798 #if defined(MTAO_PUBLICIZING_ID)
-
799 public: // TODO remove
-
800 #else
-
801 protected:
-
802 #endif
-
803  virtual int64_t id(const Tuple& tuple, PrimitiveType type) const = 0;
-
804  int64_t id(const simplex::Simplex& s) const { return id(s.tuple(), s.primitive_type()); }
+
769  bool has_child_mesh_in_dimension(int64_t dimension) const
+
770  {
+ +
772  }
+
773 
+
774 private:
+
775  /*
+
776  * @brief returns if the other mesh is part of the same multi-mesh structure
+
777  * @param other the other being mesh being checked
+
778  * @returns true if they are part of the same structure
+
779  **/
+
780  bool is_from_same_multi_mesh_structure(const Mesh& other) const;
+
781 
+
782 protected:
+
783  // creates a scope as int64_t as the AttributeScopeHandle exists
+ +
785 
+
786 protected:
+
797 #if defined(MTAO_PUBLICIZING_ID)
+
798 public: // TODO remove
+
799 #else
+
800 protected:
+
801 #endif
+
802  virtual int64_t id(const Tuple& tuple, PrimitiveType type) const = 0;
+
803  int64_t id(const simplex::Simplex& s) const { return id(s.tuple(), s.primitive_type()); }
+
804 
805 
-
806 
-
807  template <typename T>
- -
809  {
-
810  return attr.index_access();
-
811  }
-
812  template <typename T>
- -
814  {
-
815  return attr.index_access();
-
816  }
+
806  template <typename T>
+ +
808  {
+
809  return attr.index_access();
+
810  }
+
811  template <typename T>
+ +
813  {
+
814  return attr.index_access();
+
815  }
+
816 
817 
-
818 
-
819  // std::shared_ptr<AccessorCache> request_accesor_cache();
-
820  //[[nodiscard]] AccessorScopeHandle push_accesor_scope();
-
821 
-
822 protected: // THese are protected so unit tests can access - do not use manually in other derived
-
823  // classes?
- -
825 
- +
818  // std::shared_ptr<AccessorCache> request_accesor_cache();
+
819  //[[nodiscard]] AccessorScopeHandle push_accesor_scope();
+
820 
+
821 protected: // THese are protected so unit tests can access - do not use manually in other derived
+
822  // classes?
+ +
824 
+ +
826 
827 
-
828 
-
829 private:
-
830  // PImpl'd manager of per-thread update stacks
-
831  // Every time a new access scope is requested the manager creates another level of indirection
-
832  // for updates
-
833  // std::unique_ptr<AttributeScopeManager> m_attribute_scope_manager;
-
834 
-
835  //=========================================================
-
836  // simplex::Simplex Attribute
-
837  //=========================================================
+
828 private:
+
829  // PImpl'd manager of per-thread update stacks
+
830  // Every time a new access scope is requested the manager creates another level of indirection
+
831  // for updates
+
832  // std::unique_ptr<AttributeScopeManager> m_attribute_scope_manager;
+
833 
+
834  //=========================================================
+
835  // simplex::Simplex Attribute
+
836  //=========================================================
+
837 
838 
-
839 
-
845  std::vector<TypedAttributeHandle<char>> m_flag_handles;
-
846 
-
847  // hashes for top level simplices (i.e cells) to identify whether tuples
-
848  // are invalid or not
- +
844  std::vector<TypedAttributeHandle<char>> m_flag_handles;
+
845 
+
846  // hashes for top level simplices (i.e cells) to identify whether tuples
+
847  // are invalid or not
+ +
849 
850 
-
851 
-
858  std::vector<Tuple> get_all(PrimitiveType type, const bool include_deleted) const;
-
859 };
+
857  std::vector<Tuple> get_all(PrimitiveType type, const bool include_deleted) const;
+
858 };
+
859 
860 
-
861 
-
862 template <typename T>
- -
864 {
-
865  return Accessor<T>(*this, handle);
-
866 }
-
867 template <typename T>
- -
869 {
-
870  return ConstAccessor<T>(*this, handle);
-
871 }
-
872 template <typename T>
- -
874 {
-
875  return create_const_accessor(handle);
-
876 }
-
877 
-
878 template <typename T>
- -
880 {
-
881  assert(&handle.mesh() == this);
-
882  assert(handle.holds<T>());
-
883  return create_accessor(handle.as<T>());
-
884 }
-
885 
-
886 template <typename T>
- -
888  const attribute::MeshAttributeHandle& handle) const
-
889 {
-
890  assert(&handle.mesh() == this);
-
891  assert(handle.holds<T>());
-
892  return create_const_accessor(handle.as<T>());
-
893 }
-
894 
-
895 template <typename T>
- -
897  const std::string& name,
-
898  const PrimitiveType ptype) const
-
899 {
- -
901  *const_cast<Mesh*>(this),
-
902  get_attribute_handle_typed<T>(name, ptype));
-
903 }
-
904 
-
905 template <typename T>
- -
907  const std::string& name,
-
908  const PrimitiveType ptype) const
-
909 {
- -
911  h.m_base_handle = m_attribute_manager.get<T>(ptype).attribute_handle(name);
-
912  h.m_primitive_type = ptype;
-
913  return h;
-
914 }
-
915 template <typename T>
-
916 bool Mesh::has_attribute(const std::string& name, const PrimitiveType ptype) const
-
917 {
-
918  return m_attribute_manager.get<T>(ptype).has_attribute(name);
-
919 }
-
920 
-
921 template <typename T>
- -
923 {
- -
925 }
-
926 
-
927 template <typename T>
-
928 std::string Mesh::get_attribute_name(const TypedAttributeHandle<T>& handle) const
-
929 {
-
930  return m_attribute_manager.get_name(handle);
-
931 }
-
932 
-
933 template <typename Functor, typename... Args>
-
934 inline decltype(auto) Mesh::parent_scope(Functor&& f, Args&&... args) const
-
935 {
-
936  multimesh::attribute::UseParentScopeRAII raii(const_cast<Mesh&>(*this));
-
937 
-
938  return std::invoke(std::forward<Functor>(f), std::forward<Args>(args)...);
-
939 }
-
940 
-
941 inline Tuple Mesh::switch_vertex(const Tuple& tuple) const
-
942 {
-
943  return switch_tuple(tuple, PrimitiveType::Vertex);
-
944 }
-
945 inline Tuple Mesh::switch_edge(const Tuple& tuple) const
-
946 {
-
947  return switch_tuple(tuple, PrimitiveType::Edge);
-
948 }
-
949 inline Tuple Mesh::switch_face(const Tuple& tuple) const
-
950 {
-
951  return switch_tuple(tuple, PrimitiveType::Face);
-
952 }
-
953 inline Tuple Mesh::switch_tetrahedron(const Tuple& tuple) const
-
954 {
- -
956 }
-
957 #if defined(__cpp_concepts)
-
958 template <std::forward_iterator ContainerType>
-
959 #else
-
960 template <typename ContainerType>
-
961 #endif
-
962 Tuple Mesh::switch_tuples(const Tuple& tuple, const ContainerType& sequence) const
-
963 {
-
964  static_assert(std::is_same_v<typename ContainerType::value_type, PrimitiveType>);
-
965  Tuple r = tuple;
-
966  const PrimitiveType top_type = top_simplex_type();
-
967 
-
968  const int64_t boundary_dim = top_cell_dimension() - 1;
-
969  const PrimitiveType boundary_pt = static_cast<PrimitiveType>(boundary_dim);
-
970 
-
971  for (const PrimitiveType primitive : sequence) {
-
972  // for top level simplices we cannot navigate across boundaries
-
973  if (primitive == top_type && is_boundary(boundary_pt, r)) {
-
974  assert(!is_boundary(boundary_pt, r));
-
975  r = {};
-
976  return r;
-
977  }
-
978  r = switch_tuple(r, primitive);
-
979  }
-
980  return r;
-
981 }
-
982 
-
983 #if defined(__cpp_concepts)
-
984 template <std::forward_iterator ContainerType>
-
985 #else
-
986 template <typename ContainerType>
-
987 #endif
-
988 Tuple Mesh::switch_tuples_unsafe(const Tuple& tuple, const ContainerType& sequence) const
-
989 {
-
990  static_assert(std::is_same_v<typename ContainerType::value_type, PrimitiveType>);
-
991  Tuple r = tuple;
-
992  for (const PrimitiveType primitive : sequence) {
-
993  r = switch_tuple(r, primitive);
-
994  }
-
995  return r;
-
996 }
-
997 
-
998 } // namespace wmtk
+
861 template <typename T>
+ +
863 {
+
864  return Accessor<T>(*this, handle);
+
865 }
+
866 template <typename T>
+ +
868 {
+
869  return ConstAccessor<T>(*this, handle);
+
870 }
+
871 template <typename T>
+ +
873 {
+
874  return create_const_accessor(handle);
+
875 }
+
876 
+
877 template <typename T>
+ +
879 {
+
880  assert(&handle.mesh() == this);
+
881  assert(handle.holds<T>());
+
882  return create_accessor(handle.as<T>());
+
883 }
+
884 
+
885 template <typename T>
+ +
887  const attribute::MeshAttributeHandle& handle) const
+
888 {
+
889  assert(&handle.mesh() == this);
+
890  assert(handle.holds<T>());
+
891  return create_const_accessor(handle.as<T>());
+
892 }
+
893 
+
894 template <typename T>
+ +
896  const std::string& name,
+
897  const PrimitiveType ptype) const
+
898 {
+ +
900  *const_cast<Mesh*>(this),
+
901  get_attribute_handle_typed<T>(name, ptype));
+
902 }
+
903 
+
904 template <typename T>
+ +
906  const std::string& name,
+
907  const PrimitiveType ptype) const
+
908 {
+ +
910  h.m_base_handle = m_attribute_manager.get<T>(ptype).attribute_handle(name);
+
911  h.m_primitive_type = ptype;
+
912  return h;
+
913 }
+
914 template <typename T>
+
915 bool Mesh::has_attribute(const std::string& name, const PrimitiveType ptype) const
+
916 {
+
917  return m_attribute_manager.get<T>(ptype).has_attribute(name);
+
918 }
+
919 
+
920 template <typename T>
+ +
922 {
+ +
924 }
+
925 
+
926 template <typename T>
+
927 std::string Mesh::get_attribute_name(const TypedAttributeHandle<T>& handle) const
+
928 {
+
929  return m_attribute_manager.get_name(handle);
+
930 }
+
931 
+
932 template <typename Functor, typename... Args>
+
933 inline decltype(auto) Mesh::parent_scope(Functor&& f, Args&&... args) const
+
934 {
+
935  multimesh::attribute::UseParentScopeRAII raii(const_cast<Mesh&>(*this));
+
936 
+
937  return std::invoke(std::forward<Functor>(f), std::forward<Args>(args)...);
+
938 }
+
939 
+
940 inline Tuple Mesh::switch_vertex(const Tuple& tuple) const
+
941 {
+
942  return switch_tuple(tuple, PrimitiveType::Vertex);
+
943 }
+
944 inline Tuple Mesh::switch_edge(const Tuple& tuple) const
+
945 {
+
946  return switch_tuple(tuple, PrimitiveType::Edge);
+
947 }
+
948 inline Tuple Mesh::switch_face(const Tuple& tuple) const
+
949 {
+
950  return switch_tuple(tuple, PrimitiveType::Face);
+
951 }
+
952 inline Tuple Mesh::switch_tetrahedron(const Tuple& tuple) const
+
953 {
+ +
955 }
+
956 #if defined(__cpp_concepts)
+
957 template <std::forward_iterator ContainerType>
+
958 #else
+
959 template <typename ContainerType>
+
960 #endif
+
961 Tuple Mesh::switch_tuples(const Tuple& tuple, const ContainerType& sequence) const
+
962 {
+
963  static_assert(std::is_same_v<typename ContainerType::value_type, PrimitiveType>);
+
964  Tuple r = tuple;
+
965  const PrimitiveType top_type = top_simplex_type();
+
966 
+
967  const int64_t boundary_dim = top_cell_dimension() - 1;
+
968  const PrimitiveType boundary_pt = static_cast<PrimitiveType>(boundary_dim);
+
969 
+
970  for (const PrimitiveType primitive : sequence) {
+
971  // for top level simplices we cannot navigate across boundaries
+
972  if (primitive == top_type && is_boundary(boundary_pt, r)) {
+
973  assert(!is_boundary(boundary_pt, r));
+
974  r = {};
+
975  return r;
+
976  }
+
977  r = switch_tuple(r, primitive);
+
978  }
+
979  return r;
+
980 }
+
981 
+
982 #if defined(__cpp_concepts)
+
983 template <std::forward_iterator ContainerType>
+
984 #else
+
985 template <typename ContainerType>
+
986 #endif
+
987 Tuple Mesh::switch_tuples_unsafe(const Tuple& tuple, const ContainerType& sequence) const
+
988 {
+
989  static_assert(std::is_same_v<typename ContainerType::value_type, PrimitiveType>);
+
990  Tuple r = tuple;
+
991  for (const PrimitiveType primitive : sequence) {
+
992  r = switch_tuple(r, primitive);
+
993  }
+
994  return r;
+
995 }
+
996 
+
997 } // namespace wmtk
@@ -812,11 +811,11 @@ -
void set_capacities(std::vector< int64_t > capacities)
-
Tuple switch_tuples_unsafe(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:988
-
Mesh(const int64_t &dimension)
-
int64_t id(const simplex::Simplex &s) const
Definition: Mesh.hpp:804
-
void clear_attributes()
+
void set_capacities(std::vector< int64_t > capacities)
+
Tuple switch_tuples_unsafe(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:987
+
Mesh(const int64_t &dimension)
+
int64_t id(const simplex::Simplex &s) const
Definition: Mesh.hpp:803
+
void clear_attributes()
virtual int64_t id(const Tuple &tuple, PrimitiveType type) const =0
return the global id of the Tuple of the given dimension
void update_cell_hashes_slow(const std::vector< Tuple > &cells)
Definition: Mesh.cpp:129
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
@@ -825,41 +824,41 @@
virtual bool is_boundary(PrimitiveType, const Tuple &tuple) const =0
check if a simplex (encoded as a tuple/primitive pair) lies on a boundary or not
attribute::MeshAttributeHandle register_attribute(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
void register_child_mesh(const std::shared_ptr< Mesh > &child_mesh, const std::vector< std::array< Tuple, 2 >> &map_tuples)
register a mesh as the child of this mesh
-
attribute::MeshAttributeHandle get_attribute_handle(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:896
-
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:945
+
attribute::MeshAttributeHandle get_attribute_handle(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:895
+
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:944
ConstAccessor< char > get_const_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:83
Tuple resurrect_tuple_slow(const Tuple &tuple)
same as resurrect_tuple but slow because it creates a new accessor
Definition: Mesh.cpp:143
bool is_hash_valid(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
Definition: Mesh.cpp:60
-
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
-
attribute::TypedAttributeHandle< T > register_attribute_typed(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
+
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
+
attribute::TypedAttributeHandle< T > register_attribute_typed(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
int64_t get_cell_hash_slow(int64_t cell_index) const
Definition: Mesh.cpp:154
std::vector< simplex::Simplex > lub_map(const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
maps a simplex from this mesh to any other mesh using LUB mesh as root
-
std::vector< TypedAttributeHandle< char > > m_flag_handles
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition: Mesh.hpp:845
-
void guarantee_more_attributes(PrimitiveType type, int64_t size)
+
std::vector< TypedAttributeHandle< char > > m_flag_handles
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition: Mesh.hpp:844
+
void guarantee_more_attributes(PrimitiveType type, int64_t size)
std::map< std::string, std::size_t > child_hashes() const override
Definition: Mesh_hash.cpp:12
-
void reserve_more_attributes(PrimitiveType type, int64_t size)
-
std::vector< attribute::TypedAttributeHandleVariant > custom_attributes() const
+
void reserve_more_attributes(PrimitiveType type, int64_t size)
+
std::vector< attribute::TypedAttributeHandleVariant > custom_attributes() const
Mesh & get_multi_mesh_child_mesh(const std::vector< int64_t > &relative_id)
-
static auto & get_index_access(const attribute::ConstAccessor< T > &attr)
Definition: Mesh.hpp:813
-
int64_t get_attribute_dimension(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:922
+
static auto & get_index_access(const attribute::ConstAccessor< T > &attr)
Definition: Mesh.hpp:812
+
int64_t get_attribute_dimension(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:921
Tuple map_to_root_tuple(const simplex::Simplex &my_simplex) const
maps a simplex from this mesh to the root mesh
-
attribute::TypedAttributeHandle< T > get_attribute_handle_typed(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:906
+
attribute::TypedAttributeHandle< T > get_attribute_handle_typed(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:905
virtual bool is_ccw(const Tuple &tuple) const =0
TODO this needs dimension?
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
-
void guarantee_at_least_attributes(PrimitiveType type, int64_t size)
+
void guarantee_at_least_attributes(PrimitiveType type, int64_t size)
virtual Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const =0
internal function that returns the tuple of requested type, and has the global index cid
void assert_capacity_valid() const
Definition: Mesh.cpp:210
std::vector< std::shared_ptr< Mesh > > get_all_child_meshes() const
returns all multimesh child meshes
void update_cell_hash(const Tuple &cell, Accessor< int64_t > &hash_accessor)
update hash in given cell
Definition: Mesh.cpp:106
-
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:949
+
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:948
std::vector< Tuple > get_all(PrimitiveType type) const
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index.
Definition: Mesh.cpp:22
-
multimesh::attribute::AttributeScopeHandle create_scope()
+
multimesh::attribute::AttributeScopeHandle create_scope()
std::vector< std::vector< int64_t > > simplices_to_gids(const std::vector< std::vector< simplex::Simplex >> &simplices) const
Definition: Mesh.cpp:174
-
static auto & get_index_access(attribute::MutableAccessor< T > &attr)
Definition: Mesh.hpp:808
-
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:962
+
static auto & get_index_access(attribute::MutableAccessor< T > &attr)
Definition: Mesh.hpp:807
+
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:961
std::vector< Tuple > map_tuples(const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
maps a simplex from this mesh to any other mesh
-
bool has_attribute(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:916
-
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
bool has_attribute(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:915
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
std::map< std::string, const wmtk::utils::Hashable * > child_hashables() const override
Definition: Mesh_hash.cpp:5
virtual ~Mesh()
virtual bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const =0
check validity of tuple including its hash
@@ -869,26 +868,25 @@
Mesh & operator=(const Mesh &other)=delete
virtual Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const =0
switch the orientation of the Tuple of the given dimension
Tuple map_to_parent_tuple(const simplex::Simplex &my_simplex) const
optimized map from a simplex from this mesh to its direct parent
-
void reserve_attributes_to_fit()
reserve space for all attributes data types for all dimensional simplices
-
attribute::AttributeScopeHandle create_single_mesh_scope()
-
std::string get_attribute_name(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:928
+
void reserve_attributes_to_fit()
reserve space for all attributes data types for all dimensional simplices
+
attribute::AttributeScopeHandle create_single_mesh_scope()
+
std::string get_attribute_name(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:927
simplex::Simplex map_to_root(const simplex::Simplex &my_simplex) const
maps a simplex from this mesh to the root mesh
-
Tuple switch_tetrahedron(const Tuple &tuple) const
Definition: Mesh.hpp:953
+
Tuple switch_tetrahedron(const Tuple &tuple) const
Definition: Mesh.hpp:952
void serialize(MeshWriter &writer) const
Definition: Mesh.cpp:44
Mesh & get_multi_mesh_root()
returns a reference to the root of a multimesh tree
virtual std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const =0
Returns a vector of vectors of attribute handles.
PrimitiveType top_simplex_type() const
Definition: Mesh.cpp:13
bool is_valid_slow(const Tuple &tuple) const
Definition: Mesh.cpp:72
-
std::vector< attribute::TypedAttributeHandleVariant > builtin_attributes() const
-
virtual std::tuple< std::vector< std::vector< int64_t > >, std::vector< std::vector< int64_t > > > consolidate()
Consolidate the attributes, moving all valid simplexes at the beginning of the corresponding vector.
+
std::vector< attribute::TypedAttributeHandleVariant > builtin_attributes() const
+
virtual std::tuple< std::vector< std::vector< int64_t > >, std::vector< std::vector< int64_t > > > consolidate()
Consolidate the attributes, moving all valid simplexes at the beginning of the corresponding vector.
simplex::Simplex map_to_parent(const simplex::Simplex &my_simplex) const
optimized map from a simplex from this mesh to its direct parent
std::vector< simplex::Simplex > map(const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
maps a simplex from this mesh to any other mesh
-
virtual void reload_accessors() const
Definition: Mesh.hpp:134
virtual bool is_connectivity_valid() const =0
virtual int64_t top_cell_dimension() const =0
-
std::vector< int64_t > request_simplex_indices(PrimitiveType type, int64_t count)
+
std::vector< int64_t > request_simplex_indices(PrimitiveType type, int64_t count)
Mesh & get_multi_mesh_mesh(const std::vector< int64_t > &absolute_id)
-
TypedAttributeHandle< int64_t > m_cell_hash_handle
Definition: Mesh.hpp:849
+
TypedAttributeHandle< int64_t > m_cell_hash_handle
Definition: Mesh.hpp:848
decltype(auto) parent_scope(Functor &&f, Args &&... args) const
Evaluate the passed in function inside the parent scope.
bool can_map(const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
bool is_from_same_multi_mesh_structure(const Mesh &other) const
@@ -897,14 +895,14 @@
std::vector< Tuple > map_to_child_tuples(const Mesh &child_mesh, const simplex::Simplex &my_simplex) const
optimized map fromsimplex from this mesh to one of its direct children
std::vector< simplex::Simplex > map_to_child(const Mesh &child_mesh, const simplex::Simplex &my_simplex) const
optimized map fromsimplex from this mesh to one of its direct children
std::vector< std::shared_ptr< Mesh > > get_child_meshes() const
returns the direct multimesh child meshes for the current mesh
-
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:887
+
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:886
int64_t get_cell_hash(int64_t cell_index, const ConstAccessor< int64_t > &hash_accessor) const
Definition: Mesh.cpp:149
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
Tuple resurrect_tuple(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
return the same tuple but with updated hash
Definition: Mesh.cpp:136
-
void reserve_attributes(PrimitiveType type, int64_t size)
-
attribute::AttributeManager m_attribute_manager
Definition: Mesh.hpp:824
-
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:826
-
bool has_child_mesh_in_dimension(int64_t dimension) const
returns if the mesh has a child mesh in the given dimension
Definition: Mesh.hpp:770
+
void reserve_attributes(PrimitiveType type, int64_t size)
+
attribute::AttributeManager m_attribute_manager
Definition: Mesh.hpp:823
+
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:825
+
bool has_child_mesh_in_dimension(int64_t dimension) const
returns if the mesh has a child mesh in the given dimension
Definition: Mesh.hpp:769
void update_cell_hashes(const std::vector< Tuple > &cells, Accessor< int64_t > &hash_accessor)
update hashes in given cells
Definition: Mesh.cpp:116
std::vector< Tuple > lub_map_tuples(const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
maps a simplex from this mesh to any other mesh using LUB mesh as root
@@ -958,11 +956,11 @@
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
- - - - - + + + + + diff --git a/_mesh__attributes_8cpp_source.html b/_mesh__attributes_8cpp_source.html index d46093e07e..e2918b7d03 100644 --- a/_mesh__attributes_8cpp_source.html +++ b/_mesh__attributes_8cpp_source.html @@ -126,7 +126,7 @@
9 template <typename T>
11  const std::string& name,
-
12  PrimitiveType ptype,
+
12  PrimitiveType ptype,
13  int64_t size,
14  bool replace,
15  T default_value)
@@ -134,299 +134,294 @@
18  *this,
19  register_attribute_typed<T>(name, ptype, size, replace, default_value));
- -
21  return attr;
-
22 }
-
23 
-
24 template <typename T>
- -
26  const std::string& name,
-
27  PrimitiveType ptype,
-
28  int64_t size,
-
29  bool replace,
-
30  T default_value)
-
31 {
-
32  auto attr = m_attribute_manager.register_attribute<T>(name, ptype, size, replace, default_value);
- -
34  return attr;
-
35 }
-
36 
-
37 std::vector<int64_t> Mesh::request_simplex_indices(PrimitiveType type, int64_t count)
-
38 {
-
39  // passses back a set of new consecutive ids. in hte future this could do
-
40  // something smarter for re-use but that's probably too much work
-
41  int64_t current_capacity = capacity(type);
-
42 
-
43  // enable newly requested simplices
-
44  Accessor<char> flag_accessor = get_flag_accessor(type);
-
45  int64_t max_size = flag_accessor.reserved_size();
-
46 
-
47  if (current_capacity + count > max_size) {
-
48  logger().warn(
-
49  "Requested more {} simplices than available (have {}, wanted {}, can only have at most "
-
50  "{}",
-
51  primitive_type_name(type),
-
52  current_capacity,
-
53  count,
-
54  max_size);
-
55  return {};
-
56  }
-
57 
-
58  std::vector<int64_t> ret(count);
-
59  std::iota(ret.begin(), ret.end(), current_capacity);
+
20  return attr;
+
21 }
+
22 
+
23 template <typename T>
+ +
25  const std::string& name,
+
26  PrimitiveType ptype,
+
27  int64_t size,
+
28  bool replace,
+
29  T default_value)
+
30 {
+
31  auto attr =
+
32  m_attribute_manager.register_attribute<T>(name, ptype, size, replace, default_value);
+
33  return attr;
+
34 }
+
35 
+
36 std::vector<int64_t> Mesh::request_simplex_indices(PrimitiveType type, int64_t count)
+
37 {
+
38  // passses back a set of new consecutive ids. in hte future this could do
+
39  // something smarter for re-use but that's probably too much work
+
40  int64_t current_capacity = capacity(type);
+
41 
+
42  // enable newly requested simplices
+
43  Accessor<char> flag_accessor = get_flag_accessor(type);
+
44  int64_t max_size = flag_accessor.reserved_size();
+
45 
+
46  if (current_capacity + count > max_size) {
+
47  logger().warn(
+
48  "Requested more {} simplices than available (have {}, wanted {}, can only have at most "
+
49  "{}",
+
50  primitive_type_name(type),
+
51  current_capacity,
+
52  count,
+
53  max_size);
+
54  return {};
+
55  }
+
56 
+
57  std::vector<int64_t> ret(count);
+
58  std::iota(ret.begin(), ret.end(), current_capacity);
+
59 
60 
-
61 
-
62  int64_t new_capacity = current_capacity + ret.size();
-
63  assert(ret.back() + 1 == current_capacity + ret.size());
-
64  size_t primitive_id = get_primitive_type_id(type);
-
65 
-
66  m_attribute_manager.m_capacities[primitive_id] = new_capacity;
-
67 
-
68  attribute::CachingAccessor<char>& flag_accessor_indices = flag_accessor.index_access();
-
69 
-
70  for (const int64_t simplex_index : ret) {
-
71  flag_accessor_indices.scalar_attribute(simplex_index) |= 0x1;
-
72  }
-
73 
-
74  return ret;
-
75 }
-
76 
-
77 int64_t Mesh::capacity(PrimitiveType type) const
-
78 {
- -
80 }
-
81 
- -
83 {
- -
85 }
-
86 void Mesh::reserve_attributes(PrimitiveType type, int64_t size)
-
87 {
- -
89 }
-
90 void Mesh::set_capacities(std::vector<int64_t> capacities)
-
91 {
-
92  m_attribute_manager.set_capacities(std::move(capacities));
-
93 }
-
94 
-
95 // reserves extra attributes than necessary right now
- -
97 {
- -
99 }
-
100 // reserves extra attributes than necessary right now
-
101 void Mesh::reserve_more_attributes(const std::vector<int64_t>& sizes)
-
102 {
-
103  assert(top_cell_dimension() + 1 == sizes.size());
-
104  for (int64_t j = 0; j < sizes.size(); ++j) {
- -
106  }
-
107 }
- -
109 {
- -
111 }
-
112 void Mesh::guarantee_at_least_attributes(const std::vector<int64_t>& sizes)
-
113 {
-
114  assert(top_cell_dimension() + 1 == sizes.size());
-
115  for (int64_t j = 0; j < sizes.size(); ++j) {
- -
117  }
-
118 }
- -
120 {
- -
122 }
-
123 void Mesh::guarantee_more_attributes(const std::vector<int64_t>& sizes)
-
124 {
-
125  assert(top_cell_dimension() + 1 == sizes.size());
-
126  for (int64_t j = 0; j < sizes.size(); ++j) {
- -
128  }
-
129 }
-
130 
-
131 namespace {
-
132 std::vector<attribute::TypedAttributeHandleVariant> variant_diff(
-
133  std::vector<attribute::TypedAttributeHandleVariant>& a,
-
134  std::vector<attribute::TypedAttributeHandleVariant>& b)
-
135 {
-
136  std::vector<attribute::TypedAttributeHandleVariant> ret;
-
137  std::sort(a.begin(), a.end());
-
138 
-
139  std::sort(b.begin(), b.end());
-
140 
-
141  std::set_difference(a.begin(), a.end(), b.begin(), b.end(), std::inserter(ret, ret.begin()));
-
142  return ret;
-
143 }
-
144 } // namespace
-
145 std::vector<attribute::TypedAttributeHandleVariant> Mesh::custom_attributes() const
-
146 {
- -
148  auto builtins = builtin_attributes();
-
149 
-
150  return variant_diff(all, builtins);
-
151 }
-
152 
- -
154 {
-
155  return m_attribute_manager.get_name(handle);
-
156 }
- -
158 {
- -
160 }
-
161 
- -
163  const std::vector<attribute::TypedAttributeHandleVariant>& keep_attributes)
-
164 {
-
165  auto a = this->custom_attributes();
-
166  auto b = keep_attributes;
-
167  m_attribute_manager.clear_attributes(variant_diff(a, b));
-
168 }
-
169 void Mesh::clear_attributes(const std::vector<attribute::MeshAttributeHandle>& keep_attributes)
-
170 {
-
171  std::map<Mesh*, std::vector<attribute::TypedAttributeHandleVariant>> keeps_t;
-
172  for (const auto& attr : keep_attributes) {
-
173  keeps_t[const_cast<Mesh*>(&attr.mesh())].emplace_back(attr.handle());
-
174  }
-
175  for (auto& [mptr, handles] : keeps_t) {
-
176  mptr->clear_attributes(handles);
-
177  }
-
178 }
-
179 
- -
181 {
- -
183 }
-
184 
- -
186 {
-
187  return m_attribute_manager.create_scope(*this);
-
188 }
-
189 
-
190 std::tuple<std::vector<std::vector<int64_t>>, std::vector<std::vector<int64_t>>> Mesh::consolidate()
-
191 {
-
192  // Number of dimensions
-
193  int64_t tcp = top_cell_dimension() + 1;
-
194 
-
195  // Store the map from new indices to old. First index is dimensions, second simplex id
-
196  std::vector<std::vector<int64_t>> new2old(tcp);
-
197  // Store the map from old indices to new. First index is dimensions, second simplex id
-
198  std::vector<std::vector<int64_t>> old2new(tcp);
-
199 
-
200  // Initialize both maps
-
201  for (int64_t d = 0; d < tcp; d++) {
- -
203  for (int64_t i = 0; i < capacity(wmtk::get_primitive_type_from_id(d)); ++i) {
-
204  if (flag_accessor.index_access().scalar_attribute(i) & 1) {
-
205  old2new[d].push_back(new2old[d].size());
-
206  new2old[d].push_back(old2new[d].size() - 1); // -1 since we just pushed into it
-
207  } else {
-
208  old2new[d].push_back(-1);
-
209  }
-
210  }
-
211  }
-
212 
-
213  // Use new2oldmap to compact all attributes
-
214  for (int64_t d = 0; d < tcp; d++) {
- -
216  for (auto h = attributesc.m_attributes.begin(); h != attributesc.m_attributes.end(); h++)
-
217  h->consolidate(new2old[d]);
-
218 
- -
220  for (auto h = attributesl.m_attributes.begin(); h != attributesl.m_attributes.end(); h++)
-
221  h->consolidate(new2old[d]);
+
61  int64_t new_capacity = current_capacity + ret.size();
+
62  assert(ret.back() + 1 == current_capacity + ret.size());
+
63  size_t primitive_id = get_primitive_type_id(type);
+
64 
+
65  m_attribute_manager.m_capacities[primitive_id] = new_capacity;
+
66 
+
67  attribute::CachingAccessor<char>& flag_accessor_indices = flag_accessor.index_access();
+
68 
+
69  for (const int64_t simplex_index : ret) {
+
70  flag_accessor_indices.scalar_attribute(simplex_index) |= 0x1;
+
71  }
+
72 
+
73  return ret;
+
74 }
+
75 
+
76 int64_t Mesh::capacity(PrimitiveType type) const
+
77 {
+ +
79 }
+
80 
+ +
82 {
+ +
84 }
+
85 void Mesh::reserve_attributes(PrimitiveType type, int64_t size)
+
86 {
+ +
88 }
+
89 void Mesh::set_capacities(std::vector<int64_t> capacities)
+
90 {
+
91  m_attribute_manager.set_capacities(std::move(capacities));
+
92 }
+
93 
+
94 // reserves extra attributes than necessary right now
+ +
96 {
+ +
98 }
+
99 // reserves extra attributes than necessary right now
+
100 void Mesh::reserve_more_attributes(const std::vector<int64_t>& sizes)
+
101 {
+
102  assert(top_cell_dimension() + 1 == sizes.size());
+
103  for (int64_t j = 0; j < sizes.size(); ++j) {
+ +
105  }
+
106 }
+ +
108 {
+ +
110 }
+
111 void Mesh::guarantee_at_least_attributes(const std::vector<int64_t>& sizes)
+
112 {
+
113  assert(top_cell_dimension() + 1 == sizes.size());
+
114  for (int64_t j = 0; j < sizes.size(); ++j) {
+ +
116  }
+
117 }
+ +
119 {
+ +
121 }
+
122 void Mesh::guarantee_more_attributes(const std::vector<int64_t>& sizes)
+
123 {
+
124  assert(top_cell_dimension() + 1 == sizes.size());
+
125  for (int64_t j = 0; j < sizes.size(); ++j) {
+ +
127  }
+
128 }
+
129 
+
130 namespace {
+
131 std::vector<attribute::TypedAttributeHandleVariant> variant_diff(
+
132  std::vector<attribute::TypedAttributeHandleVariant>& a,
+
133  std::vector<attribute::TypedAttributeHandleVariant>& b)
+
134 {
+
135  std::vector<attribute::TypedAttributeHandleVariant> ret;
+
136  std::sort(a.begin(), a.end());
+
137 
+
138  std::sort(b.begin(), b.end());
+
139 
+
140  std::set_difference(a.begin(), a.end(), b.begin(), b.end(), std::inserter(ret, ret.begin()));
+
141  return ret;
+
142 }
+
143 } // namespace
+
144 std::vector<attribute::TypedAttributeHandleVariant> Mesh::custom_attributes() const
+
145 {
+ +
147  auto builtins = builtin_attributes();
+
148 
+
149  return variant_diff(all, builtins);
+
150 }
+
151 
+ +
153 {
+
154  return m_attribute_manager.get_name(handle);
+
155 }
+ +
157 {
+ +
159 }
+
160 
+ +
162  const std::vector<attribute::TypedAttributeHandleVariant>& keep_attributes)
+
163 {
+
164  auto a = this->custom_attributes();
+
165  auto b = keep_attributes;
+
166  m_attribute_manager.clear_attributes(variant_diff(a, b));
+
167 }
+
168 void Mesh::clear_attributes(const std::vector<attribute::MeshAttributeHandle>& keep_attributes)
+
169 {
+
170  std::map<Mesh*, std::vector<attribute::TypedAttributeHandleVariant>> keeps_t;
+
171  for (const auto& attr : keep_attributes) {
+
172  keeps_t[const_cast<Mesh*>(&attr.mesh())].emplace_back(attr.handle());
+
173  }
+
174  for (auto& [mptr, handles] : keeps_t) {
+
175  mptr->clear_attributes(handles);
+
176  }
+
177 }
+
178 
+ +
180 {
+ +
182 }
+
183 
+ +
185 {
+
186  return m_attribute_manager.create_scope(*this);
+
187 }
+
188 
+
189 std::tuple<std::vector<std::vector<int64_t>>, std::vector<std::vector<int64_t>>> Mesh::consolidate()
+
190 {
+
191  // Number of dimensions
+
192  int64_t tcp = top_cell_dimension() + 1;
+
193 
+
194  // Store the map from new indices to old. First index is dimensions, second simplex id
+
195  std::vector<std::vector<int64_t>> new2old(tcp);
+
196  // Store the map from old indices to new. First index is dimensions, second simplex id
+
197  std::vector<std::vector<int64_t>> old2new(tcp);
+
198 
+
199  // Initialize both maps
+
200  for (int64_t d = 0; d < tcp; d++) {
+ +
202  for (int64_t i = 0; i < capacity(wmtk::get_primitive_type_from_id(d)); ++i) {
+
203  if (flag_accessor.index_access().scalar_attribute(i) & 1) {
+
204  old2new[d].push_back(new2old[d].size());
+
205  new2old[d].push_back(old2new[d].size() - 1); // -1 since we just pushed into it
+
206  } else {
+
207  old2new[d].push_back(-1);
+
208  }
+
209  }
+
210  }
+
211 
+
212  // Use new2oldmap to compact all attributes
+
213  auto run = [&](auto&& mesh_attrs) {
+
214  for (int64_t d = 0; d < mesh_attrs.size(); ++d) {
+
215  for (auto& h : mesh_attrs[d].m_attributes) {
+
216  h->consolidate(new2old[d]);
+
217  }
+
218  }
+
219  };
+ +
222 
- -
224  for (auto h = attributesd.m_attributes.begin(); h != attributesd.m_attributes.end(); h++)
-
225  h->consolidate(new2old[d]);
+ +
224 
+
226 
- - -
229  for (auto h = attributesr.m_attributes.begin(); h != attributesr.m_attributes.end(); h++)
-
230  h->consolidate(new2old[d]);
-
231  }
-
232 
-
233  // Update the attribute size in the manager
-
234  for (int64_t d = 0; d < tcp; d++) m_attribute_manager.m_capacities[d] = new2old[d].size();
+
227  // Update the attribute size in the manager
+
228  for (int64_t d = 0; d < tcp; d++) {
+
229  m_attribute_manager.m_capacities[d] = new2old[d].size();
+
230  }
+
231 
+
232  // Apply old2new to attributes containing indices
+
233  std::vector<std::vector<TypedAttributeHandle<int64_t>>> handle_indices =
+
235 
-
236  // Apply old2new to attributes containing indices
-
237  std::vector<std::vector<TypedAttributeHandle<int64_t>>> handle_indices =
- -
239 
-
240  for (int64_t d = 0; d < tcp; d++) {
-
241  for (int64_t i = 0; i < handle_indices[d].size(); ++i) {
-
242  Accessor<int64_t> accessor = create_accessor<int64_t>(handle_indices[d][i]);
-
243  accessor.attribute().index_remap(old2new[d]);
-
244  }
-
245  }
-
246  // Return both maps for custom attribute remapping
-
247  return {new2old, old2new};
-
248 }
-
249 std::vector<attribute::TypedAttributeHandleVariant> Mesh::builtin_attributes() const
-
250 {
-
251  std::vector<attribute::TypedAttributeHandleVariant> data;
-
252  for (const auto& vec : connectivity_attributes()) {
-
253  std::copy(vec.begin(), vec.end(), std::back_inserter(data));
-
254  }
-
255 
-
256  data.emplace_back(m_cell_hash_handle);
-
257  std::copy(m_flag_handles.begin(), m_flag_handles.end(), std::back_inserter(data));
-
258 
-
259  auto mm_handles = m_multi_mesh_manager.map_handles();
-
260  std::copy(mm_handles.begin(), mm_handles.end(), std::back_inserter(data));
-
261  return data;
-
262 }
-
263 
-
264 
+
236  for (int64_t d = 0; d < tcp; d++) {
+
237  for (int64_t i = 0; i < handle_indices[d].size(); ++i) {
+
238  Accessor<int64_t> accessor = create_accessor<int64_t>(handle_indices[d][i]);
+
239  accessor.attribute().index_remap(old2new[d]);
+
240  }
+
241  }
+
242  // Return both maps for custom attribute remapping
+
243  return {new2old, old2new};
+
244 }
+
245 std::vector<attribute::TypedAttributeHandleVariant> Mesh::builtin_attributes() const
+
246 {
+
247  std::vector<attribute::TypedAttributeHandleVariant> data;
+
248  for (const auto& vec : connectivity_attributes()) {
+
249  std::copy(vec.begin(), vec.end(), std::back_inserter(data));
+
250  }
+
251 
+
252  data.emplace_back(m_cell_hash_handle);
+
253  std::copy(m_flag_handles.begin(), m_flag_handles.end(), std::back_inserter(data));
+
254 
+
255  auto mm_handles = m_multi_mesh_manager.map_handles();
+
256  std::copy(mm_handles.begin(), mm_handles.end(), std::back_inserter(data));
+
257  return data;
+
258 }
+
259 
+
260 
+ +
262 Mesh::register_attribute<char>(const std::string&, PrimitiveType, int64_t, bool, char);
+ +
264 Mesh::register_attribute<int64_t>(const std::string&, PrimitiveType, int64_t, bool, int64_t);
-
266 Mesh::register_attribute<char>(const std::string&, PrimitiveType, int64_t, bool, char);
+
266 Mesh::register_attribute<double>(const std::string&, PrimitiveType, int64_t, bool, double);
-
268 Mesh::register_attribute<int64_t>(const std::string&, PrimitiveType, int64_t, bool, int64_t);
- -
270 Mesh::register_attribute<double>(const std::string&, PrimitiveType, int64_t, bool, double);
- -
272 Mesh::register_attribute<Rational>(const std::string&, PrimitiveType, int64_t, bool, Rational);
-
273 
-
274 
- -
276 Mesh::register_attribute_typed(const std::string&, PrimitiveType, int64_t, bool, char);
- -
278 Mesh::register_attribute_typed(const std::string&, PrimitiveType, int64_t, bool, int64_t);
- -
280 Mesh::register_attribute_typed(const std::string&, PrimitiveType, int64_t, bool, double);
- -
282 Mesh::register_attribute_typed(const std::string&, PrimitiveType, int64_t, bool, Rational);
-
283 } // namespace wmtk
+
268 Mesh::register_attribute<Rational>(const std::string&, PrimitiveType, int64_t, bool, Rational);
+
269 
+
270 
+ +
272 Mesh::register_attribute_typed(const std::string&, PrimitiveType, int64_t, bool, char);
+ +
274 Mesh::register_attribute_typed(const std::string&, PrimitiveType, int64_t, bool, int64_t);
+ +
276 Mesh::register_attribute_typed(const std::string&, PrimitiveType, int64_t, bool, double);
+ +
278 Mesh::register_attribute_typed(const std::string&, PrimitiveType, int64_t, bool, Rational);
+
279 } // namespace wmtk
-
void set_capacities(std::vector< int64_t > capacities)
-
void clear_attributes()
+
void set_capacities(std::vector< int64_t > capacities)
+
void clear_attributes()
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
attribute::MeshAttributeHandle register_attribute(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
-
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
-
attribute::TypedAttributeHandle< T > register_attribute_typed(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
-
std::vector< TypedAttributeHandle< char > > m_flag_handles
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition: Mesh.hpp:845
-
void guarantee_more_attributes(PrimitiveType type, int64_t size)
-
void reserve_more_attributes(PrimitiveType type, int64_t size)
-
std::vector< attribute::TypedAttributeHandleVariant > custom_attributes() const
-
void guarantee_at_least_attributes(PrimitiveType type, int64_t size)
-
multimesh::attribute::AttributeScopeHandle create_scope()
-
void reserve_attributes_to_fit()
reserve space for all attributes data types for all dimensional simplices
-
attribute::AttributeScopeHandle create_single_mesh_scope()
-
std::string get_attribute_name(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:928
+
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
+
attribute::TypedAttributeHandle< T > register_attribute_typed(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
+
std::vector< TypedAttributeHandle< char > > m_flag_handles
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition: Mesh.hpp:844
+
void guarantee_more_attributes(PrimitiveType type, int64_t size)
+
void reserve_more_attributes(PrimitiveType type, int64_t size)
+
std::vector< attribute::TypedAttributeHandleVariant > custom_attributes() const
+
void guarantee_at_least_attributes(PrimitiveType type, int64_t size)
+
multimesh::attribute::AttributeScopeHandle create_scope()
+
void reserve_attributes_to_fit()
reserve space for all attributes data types for all dimensional simplices
+
attribute::AttributeScopeHandle create_single_mesh_scope()
+
std::string get_attribute_name(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:927
virtual std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const =0
Returns a vector of vectors of attribute handles.
-
std::vector< attribute::TypedAttributeHandleVariant > builtin_attributes() const
-
virtual std::tuple< std::vector< std::vector< int64_t > >, std::vector< std::vector< int64_t > > > consolidate()
Consolidate the attributes, moving all valid simplexes at the beginning of the corresponding vector.
-
virtual void reload_accessors() const
Definition: Mesh.hpp:134
+
std::vector< attribute::TypedAttributeHandleVariant > builtin_attributes() const
+
virtual std::tuple< std::vector< std::vector< int64_t > >, std::vector< std::vector< int64_t > > > consolidate()
Consolidate the attributes, moving all valid simplexes at the beginning of the corresponding vector.
virtual int64_t top_cell_dimension() const =0
-
std::vector< int64_t > request_simplex_indices(PrimitiveType type, int64_t count)
-
TypedAttributeHandle< int64_t > m_cell_hash_handle
Definition: Mesh.hpp:849
-
void reserve_attributes(PrimitiveType type, int64_t size)
-
attribute::AttributeManager m_attribute_manager
Definition: Mesh.hpp:824
-
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:826
+
std::vector< int64_t > request_simplex_indices(PrimitiveType type, int64_t count)
+
TypedAttributeHandle< int64_t > m_cell_hash_handle
Definition: Mesh.hpp:848
+
void reserve_attributes(PrimitiveType type, int64_t size)
+
attribute::AttributeManager m_attribute_manager
Definition: Mesh.hpp:823
+
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:825
std::vector< TypedAttributeHandle< int64_t > > map_handles() const
std::vector< MeshAttributes< double > > m_double_attributes
@@ -449,18 +444,16 @@
An accessor for cached attribute values.
T & scalar_attribute(const int64_t index)
-
Contains all attributes of type T for a single mesh.
-
std::vector< Attribute< T > > m_attributes
std::variant< TypedAttributeHandle< char >, TypedAttributeHandle< int64_t >, TypedAttributeHandle< double >, TypedAttributeHandle< Rational > > TypedAttributeHandleVariant
Definition: Accessor.cpp:8
std::string_view primitive_type_name(PrimitiveType t)
+
constexpr PrimitiveType get_primitive_type_from_id(int8_t id)
Get the primitive type corresponding to its unique integer id.
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
+
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- -
PrimitiveType get_primitive_type_from_id(int64_t id)
Get the primitive type corresponding to its unique integer id.
+ diff --git a/_mesh__construction_8cpp_source.html b/_mesh__construction_8cpp_source.html index 1742ea2951..dfbc00e871 100644 --- a/_mesh__construction_8cpp_source.html +++ b/_mesh__construction_8cpp_source.html @@ -135,52 +135,51 @@
18 }
19 
20 
-
21 
- -
23 {
-
24  m_attribute_manager = std::move(other.m_attribute_manager);
-
25  m_multi_mesh_manager = std::move(other.m_multi_mesh_manager);
-
26  m_flag_handles = std::move(other.m_flag_handles);
-
27  m_cell_hash_handle = std::move(other.m_cell_hash_handle);
-
28 
-
29  return *this;
-
30 }
-
31 
-
32 Mesh::Mesh(const int64_t& dimension)
-
33  : Mesh(dimension, dimension, get_primitive_type_from_id(dimension))
-
34 {}
-
35 
-
36 Mesh::Mesh(const int64_t& dimension, const int64_t& max_primitive_type_id, PrimitiveType hash_type)
-
37  : m_attribute_manager(max_primitive_type_id + 1)
-
38  , m_multi_mesh_manager(max_primitive_type_id + 1)
-
39  , m_cell_hash_handle(register_attribute_typed<int64_t>("hash", hash_type, 1, false, 0))
-
40 {
-
41  m_flag_handles.reserve(max_primitive_type_id + 1);
-
42  for (int64_t j = 0; j <= max_primitive_type_id; ++j) {
-
43  m_flag_handles.emplace_back(
-
44  register_attribute_typed<char>("flags", get_primitive_type_from_id(j), 1, false, 0));
-
45  }
-
46 }
+ +
22 {
+
23  m_attribute_manager = std::move(other.m_attribute_manager);
+
24  m_multi_mesh_manager = std::move(other.m_multi_mesh_manager);
+
25  m_flag_handles = std::move(other.m_flag_handles);
+
26  m_cell_hash_handle = std::move(other.m_cell_hash_handle);
+
27 
+
28  return *this;
+
29 }
+
30 
+
31 Mesh::Mesh(const int64_t& dimension)
+
32  : Mesh(dimension, dimension, get_primitive_type_from_id(dimension))
+
33 {}
+
34 
+
35 Mesh::Mesh(const int64_t& dimension, const int64_t& max_primitive_type_id, PrimitiveType hash_type)
+
36  : m_attribute_manager(max_primitive_type_id + 1)
+
37  , m_multi_mesh_manager(max_primitive_type_id + 1)
+
38  , m_cell_hash_handle(register_attribute_typed<int64_t>("hash", hash_type, 1, false, 0))
+
39 {
+
40  m_flag_handles.reserve(max_primitive_type_id + 1);
+
41  for (int64_t j = 0; j <= max_primitive_type_id; ++j) {
+
42  m_flag_handles.emplace_back(
+
43  register_attribute_typed<char>("flags", get_primitive_type_from_id(j), 1, false, 0));
+
44  }
+
45 }
+
46 
47 
-
48 
-
49 Mesh::~Mesh() = default;
-
50 } // namespace wmtk
+
48 Mesh::~Mesh() = default;
+
49 } // namespace wmtk
-
Mesh(const int64_t &dimension)
-
std::vector< TypedAttributeHandle< char > > m_flag_handles
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition: Mesh.hpp:845
+
Mesh(const int64_t &dimension)
+
std::vector< TypedAttributeHandle< char > > m_flag_handles
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition: Mesh.hpp:844
virtual ~Mesh()
Mesh & operator=(const Mesh &other)=delete
-
TypedAttributeHandle< int64_t > m_cell_hash_handle
Definition: Mesh.hpp:849
-
attribute::AttributeManager m_attribute_manager
Definition: Mesh.hpp:824
-
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:826
+
TypedAttributeHandle< int64_t > m_cell_hash_handle
Definition: Mesh.hpp:848
+
attribute::AttributeManager m_attribute_manager
Definition: Mesh.hpp:823
+
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:825
Definition: autodiff.h:995
Definition: Accessor.cpp:8
- -
PrimitiveType get_primitive_type_from_id(int64_t id)
Get the primitive type corresponding to its unique integer id.
+
constexpr PrimitiveType get_primitive_type_from_id(int8_t id)
Get the primitive type corresponding to its unique integer id.
+ diff --git a/_mesh__hash_8cpp_source.html b/_mesh__hash_8cpp_source.html index 3597c0fa60..cd2fa00ba1 100644 --- a/_mesh__hash_8cpp_source.html +++ b/_mesh__hash_8cpp_source.html @@ -143,12 +143,12 @@
26 }
27 } // namespace wmtk
-
std::vector< TypedAttributeHandle< char > > m_flag_handles
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition: Mesh.hpp:845
+
std::vector< TypedAttributeHandle< char > > m_flag_handles
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition: Mesh.hpp:844
std::map< std::string, std::size_t > child_hashes() const override
Definition: Mesh_hash.cpp:12
std::map< std::string, const wmtk::utils::Hashable * > child_hashables() const override
Definition: Mesh_hash.cpp:5
-
TypedAttributeHandle< int64_t > m_cell_hash_handle
Definition: Mesh.hpp:849
-
attribute::AttributeManager m_attribute_manager
Definition: Mesh.hpp:824
-
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:826
+
TypedAttributeHandle< int64_t > m_cell_hash_handle
Definition: Mesh.hpp:848
+
attribute::AttributeManager m_attribute_manager
Definition: Mesh.hpp:823
+
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:825
std::map< std::string, std::size_t > child_hashes() const override
Definition: Accessor.cpp:8
diff --git a/_mesh__multimesh_8cpp_source.html b/_mesh__multimesh_8cpp_source.html index f8682f7474..9288fe61a6 100644 --- a/_mesh__multimesh_8cpp_source.html +++ b/_mesh__multimesh_8cpp_source.html @@ -235,7 +235,7 @@
118 }
119 
120 std::vector<Tuple>
-
121 Mesh::map_tuples(const Mesh& other_mesh, PrimitiveType pt, const std::vector<Tuple>& tuples) const
+
121 Mesh::map_tuples(const Mesh& other_mesh, PrimitiveType pt, const std::vector<Tuple>& tuples) const
122 {
123  std::vector<Tuple> ret;
124  ret.reserve(tuples.size());
@@ -258,7 +258,7 @@
141 
142 std::vector<Tuple> Mesh::lub_map_tuples(
143  const Mesh& other_mesh,
-
144  PrimitiveType pt,
+
144  PrimitiveType pt,
145  const std::vector<Tuple>& tuples) const
146 {
147  std::vector<Tuple> ret;
@@ -369,7 +369,7 @@
std::vector< Tuple > map_to_child_tuples(const Mesh &child_mesh, const simplex::Simplex &my_simplex) const
optimized map fromsimplex from this mesh to one of its direct children
std::vector< simplex::Simplex > map_to_child(const Mesh &child_mesh, const simplex::Simplex &my_simplex) const
optimized map fromsimplex from this mesh to one of its direct children
std::vector< std::shared_ptr< Mesh > > get_child_meshes() const
returns the direct multimesh child meshes for the current mesh
-
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:826
+
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:825
std::vector< Tuple > lub_map_tuples(const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
maps a simplex from this mesh to any other mesh using LUB mesh as root
std::vector< std::shared_ptr< Mesh > > get_child_meshes() const
std::vector< simplex::Simplex > map_to_child(const Mesh &my_mesh, const Mesh &child_mesh, const simplex::Simplex &my_simplex) const
optimized map fromsimplex from this mesh to one of its direct children
@@ -392,7 +392,7 @@
Definition: Accessor.cpp:8
- + diff --git a/_mesh_attribute_handle_8cpp_source.html b/_mesh_attribute_handle_8cpp_source.html index d6125d49dc..ad7aadc6af 100644 --- a/_mesh_attribute_handle_8cpp_source.html +++ b/_mesh_attribute_handle_8cpp_source.html @@ -168,7 +168,7 @@
51 //}
52 
53 
- +
55 {
56  return std::visit([](const auto& h) { return h.primitive_type(); }, m_handle);
57 }
@@ -194,7 +194,7 @@ - + diff --git a/_mesh_attribute_handle_8hpp_source.html b/_mesh_attribute_handle_8hpp_source.html index d16a9c95ff..2c56f0f3b1 100644 --- a/_mesh_attribute_handle_8hpp_source.html +++ b/_mesh_attribute_handle_8hpp_source.html @@ -180,7 +180,7 @@
63  // returns if this handle was initialized
64  bool is_valid() const;
65 
- +
67  // AttributeHandle base_handle() const ;
68 
69 
@@ -302,7 +302,7 @@
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
- + diff --git a/_mesh_attributes_8cpp_source.html b/_mesh_attributes_8cpp_source.html index e6db109461..657096c162 100644 --- a/_mesh_attributes_8cpp_source.html +++ b/_mesh_attributes_8cpp_source.html @@ -138,7 +138,7 @@
21 {
22  for (const auto& p : m_handles) {
23  const auto& handle = p.second;
-
24  const auto& attr = m_attributes[handle.index];
+
24  const auto& attr = *m_attributes[handle.index];
25  attr.serialize(p.first, dim, writer);
26  }
27 }
@@ -170,29 +170,29 @@
53 template <typename T>
55 {
-
56  for (auto& attr : m_attributes) {
-
57  attr.push_scope();
+
56  for (auto& attr_ptr : m_attributes) {
+
57  attr_ptr->push_scope();
58  }
59 }
60 template <typename T>
61 void MeshAttributes<T>::pop_scope(bool apply_updates)
62 {
-
63  for (auto& attr : m_attributes) {
-
64  attr.pop_scope(apply_updates);
+
63  for (auto& attr_ptr : m_attributes) {
+
64  attr_ptr->pop_scope(apply_updates);
65  }
66 }
67 template <typename T>
69 {
-
70  for (auto& attr : m_attributes) {
-
71  attr.clear_current_scope();
+
70  for (auto& attr_ptr : m_attributes) {
+
71  attr_ptr->clear_current_scope();
72  }
73 }
74 template <typename T>
76 {
-
77  for (const auto& attr : m_attributes) {
-
78  auto ptr = attr.get_local_scope_stack_ptr();
+
77  for (const auto& attr_ptr : m_attributes) {
+
78  auto ptr = attr_ptr->get_local_scope_stack_ptr();
79  assert(ptr != nullptr);
80 
81  ptr->change_to_next_scope();
@@ -202,8 +202,8 @@
85 template <typename T>
87 {
-
88  for (const auto& attr : m_attributes) {
-
89  attr.get_local_scope_stack_ptr()->change_to_previous_scope();
+
88  for (const auto& attr_ptr : m_attributes) {
+
89  attr_ptr->get_local_scope_stack_ptr()->change_to_previous_scope();
90  }
91 }
92 
@@ -229,157 +229,161 @@
112  handle.index = it->second.index;
113  } else {
114  handle.index = m_attributes.size();
-
115  m_attributes.emplace_back(name, dimension, default_value, reserved_size());
-
116  }
-
117  m_handles[name] = handle;
-
118 
+
115  m_attributes.emplace_back(
+
116  std::make_unique<Attribute<T>>(name, dimension, default_value, reserved_size()));
+
117  }
+
118  m_handles[name] = handle;
119 
-
120  return handle;
-
121 }
-
122 
-
123 template <typename T>
- -
125 {
-
126  for (const auto& a : m_attributes) {
-
127  assert(a.reserved_size() >= cap);
-
128  }
-
129 }
-
130 template <typename T>
- -
132 {
-
133  return m_handles.at(name);
-
134 }
-
135 template <typename T>
-
136 bool MeshAttributes<T>::has_attribute(const std::string& name) const
-
137 {
-
138  return m_handles.find(name) != m_handles.end();
-
139 }
-
140 
-
141 template <typename T>
- -
143 {
-
144  return m_handles == other.m_handles && m_attributes == other.m_attributes;
-
145 }
-
146 
-
147 
-
148 
-
149 
-
150 template <typename T>
-
151 void MeshAttributes<T>::set(const AttributeHandle& handle, std::vector<T> val)
-
152 {
-
153  // TODO: should we validate the size of val compared to the internally held data?
-
154  auto& attr = m_attributes[handle.index];
-
155  attr.set(std::move(val));
-
156 }
-
157 
-
158 template <typename T>
- -
160 {
-
161  return m_attributes[handle.index].reserved_size();
-
162 }
-
163 
-
164 template <typename T>
- -
166 {
-
167  return m_reserved_size;
-
168 }
-
169 
-
170 template <typename T>
- -
172 {
-
173  return m_attributes.size();
-
174 }
-
175 
-
176 template <typename T>
-
177 void MeshAttributes<T>::reserve(const int64_t size)
-
178 {
-
179  m_reserved_size = size;
-
180  for (auto& attr : m_attributes) {
-
181  attr.reserve(size);
-
182  }
-
183 }
-
184 
-
185 template <typename T>
-
186 void MeshAttributes<T>::reserve_more(const int64_t size)
-
187 {
-
188  reserve(m_reserved_size + size);
-
189 }
-
190 
-
191 template <typename T>
- -
193 {
-
194  if (size > m_reserved_size) {
-
195  logger().warn("Pre-reserve enough simplices before your operation.");
-
196  reserve(size);
-
197  }
-
198 }
-
199 
-
200 template <typename T>
-
201 void MeshAttributes<T>::remove_attributes(const std::vector<AttributeHandle>& attributes)
-
202 {
-
203  std::vector<int64_t> remove_indices;
-
204  remove_indices.reserve(attributes.size());
-
205  for (const AttributeHandle& h : attributes) {
-
206  remove_indices.emplace_back(h.index);
+
120 
+
121  return handle;
+
122 }
+
123 
+
124 template <typename T>
+ +
126 {
+
127  for (const auto& a : m_attributes) {
+
128  assert(a->reserved_size() >= cap);
+
129  }
+
130 }
+
131 template <typename T>
+ +
133 {
+
134  return m_handles.at(name);
+
135 }
+
136 template <typename T>
+
137 bool MeshAttributes<T>::has_attribute(const std::string& name) const
+
138 {
+
139  return m_handles.find(name) != m_handles.end();
+
140 }
+
141 
+
142 template <typename T>
+ +
144 {
+
145  if(m_handles != other.m_handles) {
+
146  return false;
+
147  }
+
148  if(m_attributes.size() != other.m_attributes.size()) {
+
149  return false;
+
150  }
+
151  for(size_t j = 0; j < m_attributes.size(); ++j) {
+
152  if(!(*m_attributes[j] == *other.m_attributes[j]) ){
+
153  return false;
+
154  }
+
155  }
+
156  return true;
+
157 }
+
158 
+
159 
+
160 template <typename T>
+
161 void MeshAttributes<T>::set(const AttributeHandle& handle, std::vector<T> val)
+
162 {
+
163  // TODO: should we validate the size of val compared to the internally held data?
+
164  auto& attr = *m_attributes[handle.index];
+
165  attr.set(std::move(val));
+
166 }
+
167 
+
168 template <typename T>
+ +
170 {
+
171  return m_attributes[handle.index]->reserved_size();
+
172 }
+
173 
+
174 template <typename T>
+ +
176 {
+
177  return m_reserved_size;
+
178 }
+
179 
+
180 template <typename T>
+ +
182 {
+
183  return m_attributes.size();
+
184 }
+
185 
+
186 template <typename T>
+
187 void MeshAttributes<T>::reserve(const int64_t size)
+
188 {
+
189  m_reserved_size = size;
+
190  for (auto& attr_ptr : m_attributes) {
+
191  attr_ptr->reserve(size);
+
192  }
+
193 }
+
194 
+
195 template <typename T>
+
196 void MeshAttributes<T>::reserve_more(const int64_t size)
+
197 {
+
198  reserve(m_reserved_size + size);
+
199 }
+
200 
+
201 template <typename T>
+ +
203 {
+
204  if (size > m_reserved_size) {
+
205  logger().warn("Pre-reserve enough simplices before your operation.");
+
206  reserve(size);
207  }
-
208  std::sort(remove_indices.begin(), remove_indices.end());
+
208 }
209 
-
210  std::vector<bool> keep_mask(m_attributes.size(), true);
-
211  for (const int64_t& i : remove_indices) {
-
212  keep_mask[i] = false;
-
213  }
-
214 
-
215  std::vector<Attribute<T>> remaining_attributes;
-
216  remaining_attributes.reserve(attributes.size());
-
217 
-
218  std::vector<int64_t> old_to_new_id(m_attributes.size(), -1);
-
219  for (size_t i = 0, id = 0; i < keep_mask.size(); ++i) {
-
220  if (keep_mask[i]) {
-
221  old_to_new_id[i] = id++;
-
222  remaining_attributes.emplace_back(std::move(m_attributes[i]));
-
223  // remaining_attributes.emplace_back(std::move(m_attributes[i]));
-
224  assert(remaining_attributes.size() == id);
-
225  }
-
226  }
+
210 template <typename T>
+
211 void MeshAttributes<T>::remove_attributes(const std::vector<AttributeHandle>& attributes)
+
212 {
+
213  std::vector<int64_t> remove_indices;
+
214  remove_indices.reserve(attributes.size());
+
215  for (const AttributeHandle& h : attributes) {
+
216  remove_indices.emplace_back(h.index);
+
217  }
+
218  std::sort(remove_indices.begin(), remove_indices.end());
+
219 
+
220  std::vector<bool> keep_mask(m_attributes.size(), true);
+
221  for (const int64_t& i : remove_indices) {
+
222  keep_mask[i] = false;
+
223  }
+
224 
+
225  std::vector<std::unique_ptr<Attribute<T>>> remaining_attributes;
+
226  remaining_attributes.reserve(attributes.size());
227 
-
228  // clean up m_handles
-
229  for (auto it = m_handles.begin(); it != m_handles.end(); /* no increment */) {
-
230  if (!keep_mask[it->second.index]) {
-
231  it = m_handles.erase(it);
-
232  } else {
-
233  it->second.index = old_to_new_id[it->second.index];
-
234  ++it;
+
228  std::vector<int64_t> old_to_new_id(m_attributes.size(), -1);
+
229  for (size_t i = 0, id = 0; i < keep_mask.size(); ++i) {
+
230  if (keep_mask[i]) {
+
231  old_to_new_id[i] = id++;
+
232  remaining_attributes.emplace_back(std::move(m_attributes[i]));
+
233  // remaining_attributes.emplace_back(std::move(m_attributes[i]));
+
234  assert(remaining_attributes.size() == id);
235  }
236  }
237 
-
238  m_attributes = std::move(remaining_attributes);
-
239 }
-
240 
-
241 template <typename T>
-
242 int64_t MeshAttributes<T>::dimension(const AttributeHandle& handle) const
-
243 {
-
244  return attribute(handle).dimension();
-
245 }
-
246 
+
238  // clean up m_handles
+
239  for (auto it = m_handles.begin(); it != m_handles.end(); /* no increment */) {
+
240  if (!keep_mask[it->second.index]) {
+
241  it = m_handles.erase(it);
+
242  } else {
+
243  it->second.index = old_to_new_id[it->second.index];
+
244  ++it;
+
245  }
+
246  }
247 
-
248 template <typename T>
-
249 std::string MeshAttributes<T>::get_name(const AttributeHandle& handle) const
-
250 {
-
251  for (const auto& [key, value] : m_handles) {
-
252  if (value == handle) {
-
253  return key;
-
254  }
-
255  }
-
256  throw std::runtime_error("Could not find handle in MeshAttributes");
-
257  return "UNKNOWN";
-
258 }
-
259 
-
260 template class MeshAttributes<char>;
-
261 template class MeshAttributes<int64_t>;
-
262 template class MeshAttributes<double>;
-
263 template class MeshAttributes<Rational>;
-
264 
-
265 } // namespace wmtk::attribute
+
248  m_attributes = std::move(remaining_attributes);
+
249 }
+
250 
+
251 
+
252 template <typename T>
+
253 std::string MeshAttributes<T>::get_name(const AttributeHandle& handle) const
+
254 {
+
255  for (const auto& [key, value] : m_handles) {
+
256  if (value == handle) {
+
257  return key;
+
258  }
+
259  }
+
260  throw std::runtime_error("Could not find handle in MeshAttributes");
+
261  return "UNKNOWN";
+
262 }
+
263 
+
264 template class MeshAttributes<char>;
+
265 template class MeshAttributes<int64_t>;
+
266 template class MeshAttributes<double>;
+
267 template class MeshAttributes<Rational>;
+
268 
+
269 } // namespace wmtk::attribute
@@ -389,35 +393,36 @@ +
This class stores data of type T in a vector.
Definition: Attribute.hpp:30
Contains all attributes of type T for a single mesh.
std::map< std::string, std::size_t > child_hashes() const override
-
size_t attribute_size(const AttributeHandle &handle) const
+
size_t attribute_size(const AttributeHandle &handle) const
- - +
std::vector< std::unique_ptr< Attribute< T > > > m_attributes
+ + -
std::vector< Attribute< T > > m_attributes
-
void guarantee_at_least(int64_t size)
+
void guarantee_at_least(int64_t size)
std::map< std::string, AttributeHandle > m_handles
std::map< std::string, const wmtk::utils::Hashable * > child_hashables() const override
-
int64_t dimension(const AttributeHandle &handle) const
-
bool operator==(const MeshAttributes< T > &other) const
- -
AttributeHandle attribute_handle(const std::string &name) const
-
void remove_attributes(const std::vector< AttributeHandle > &attributes)
Remove all passed in attributes.
+
bool operator==(const MeshAttributes< T > &other) const
+ +
AttributeHandle attribute_handle(const std::string &name) const
+
void remove_attributes(const std::vector< AttributeHandle > &attributes)
Remove all passed in attributes.
AttributeHandle register_attribute(const std::string &name, int64_t dimension, bool replace=false, T default_value=T(0))
-
void assert_capacity_valid(int64_t cap) const
-
void set(const AttributeHandle &handle, std::vector< T > val)
-
void reserve(const int64_t size)
+
void assert_capacity_valid(int64_t cap) const
+
void set(const AttributeHandle &handle, std::vector< T > val)
+
void reserve(const int64_t size)
void pop_scope(bool apply_updates=true)
-
bool has_attribute(const std::string &name) const
-
std::string get_name(const AttributeHandle &handle) const
+
bool has_attribute(const std::string &name) const
+
std::string get_name(const AttributeHandle &handle) const
void serialize(const int dim, MeshWriter &writer) const
std::map< std::string, std::size_t > child_hashes() const override
+
std::vector< Simplex > make_unique(const Mesh &m, const std::vector< Simplex > &s)
Definition: make_unique.cpp:8
void log_and_throw_error(const std::string &msg)
Definition: Logger.cpp:93
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
diff --git a/_mesh_attributes_8hpp_source.html b/_mesh_attributes_8hpp_source.html index 1bca729d74..5133900df0 100644 --- a/_mesh_attributes_8hpp_source.html +++ b/_mesh_attributes_8hpp_source.html @@ -212,21 +212,27 @@
104  // The vector held in each Attribute in m_attributes has this size
105  int64_t m_reserved_size = -1;
106 
-
107  std::vector<Attribute<T>> m_attributes;
+
107  std::vector<std::unique_ptr<Attribute<T>>> m_attributes;
108 };
109 template <typename T>
111 {
-
112  Attribute<T>& attr = m_attributes[handle.index];
+
112  Attribute<T>& attr = *m_attributes.at(handle.index);
113  return attr;
114 }
115 template <typename T>
- +
117 {
-
118  return m_attributes[handle.index];
+
118  return *m_attributes.at(handle.index);
119 }
-
120 } // namespace attribute
-
121 } // namespace wmtk
+
120 
+
121 template <typename T>
+
122 inline int64_t MeshAttributes<T>::dimension(const AttributeHandle& handle) const
+
123 {
+
124  return attribute(handle).dimension();
+
125 }
+
126 } // namespace attribute
+
127 } // namespace wmtk
@@ -238,38 +244,38 @@
This class stores data of type T in a vector.
Definition: Attribute.hpp:30
Contains all attributes of type T for a single mesh.
std::map< std::string, std::size_t > child_hashes() const override
-
size_t attribute_size(const AttributeHandle &handle) const
+
size_t attribute_size(const AttributeHandle &handle) const
Eigen::Map< const Eigen::Matrix< T, Eigen::Dynamic, 1 > > ConstMapResult
+
std::vector< std::unique_ptr< Attribute< T > > > m_attributes
MeshAttributes(const MeshAttributes &o)=delete
- - + + -
std::vector< Attribute< T > > m_attributes
-
void guarantee_at_least(int64_t size)
+
void guarantee_at_least(int64_t size)
MeshAttributes & operator=(const MeshAttributes &o)=delete
std::map< std::string, AttributeHandle > m_handles
std::map< std::string, const wmtk::utils::Hashable * > child_hashables() const override
-
int64_t dimension(const AttributeHandle &handle) const
+
int64_t dimension(const AttributeHandle &handle) const
MeshAttributes(MeshAttributes &&o)=default
-
bool operator==(const MeshAttributes< T > &other) const
- +
bool operator==(const MeshAttributes< T > &other) const
+
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, 1 > > MapResult
MeshAttributes & operator=(MeshAttributes &&o)=default
-
AttributeHandle attribute_handle(const std::string &name) const
-
void remove_attributes(const std::vector< AttributeHandle > &attributes)
Remove all passed in attributes.
+
AttributeHandle attribute_handle(const std::string &name) const
+
void remove_attributes(const std::vector< AttributeHandle > &attributes)
Remove all passed in attributes.
AttributeHandle register_attribute(const std::string &name, int64_t dimension, bool replace=false, T default_value=T(0))
-
void assert_capacity_valid(int64_t cap) const
-
void set(const AttributeHandle &handle, std::vector< T > val)
-
void reserve(const int64_t size)
+
void assert_capacity_valid(int64_t cap) const
+
void set(const AttributeHandle &handle, std::vector< T > val)
+
void reserve(const int64_t size)
void pop_scope(bool apply_updates=true)
Attribute< T > & attribute(const AttributeHandle &handle)
-
bool has_attribute(const std::string &name) const
-
std::string get_name(const AttributeHandle &handle) const
+
bool has_attribute(const std::string &name) const
+
std::string get_name(const AttributeHandle &handle) const
void serialize(const int dim, MeshWriter &writer) const
Definition: Accessor.cpp:8
diff --git a/_mesh_operation_8cpp_source.html b/_mesh_operation_8cpp_source.html index 5bf1c355c4..fc671d846f 100644 --- a/_mesh_operation_8cpp_source.html +++ b/_mesh_operation_8cpp_source.html @@ -129,11 +129,11 @@
12 
13 std::vector<simplex::Simplex> MeshOperation::execute(const simplex::Simplex& simplex)
14 {
-
15  if (mesh().top_simplex_type() == PrimitiveType::Edge)
+
15  if (mesh().top_simplex_type() == PrimitiveType::Edge)
16  return execute_aux(static_cast<EdgeMesh&>(mesh()), simplex);
-
17  else if (mesh().top_simplex_type() == PrimitiveType::Face)
+
17  else if (mesh().top_simplex_type() == PrimitiveType::Face)
18  return execute_aux(static_cast<TriMesh&>(mesh()), simplex);
-
19  else if (mesh().top_simplex_type() == PrimitiveType::Tetrahedron)
+
19  else if (mesh().top_simplex_type() == PrimitiveType::Tetrahedron)
20  return execute_aux(static_cast<TetMesh&>(mesh()), simplex);
21  else
22  throw std::runtime_error("invalid mesh type");
@@ -142,11 +142,11 @@
25 std::vector<simplex::Simplex> MeshOperation::unmodified_primitives(
26  const simplex::Simplex& simplex) const
27 {
-
28  if (mesh().top_simplex_type() == PrimitiveType::Edge)
+
28  if (mesh().top_simplex_type() == PrimitiveType::Edge)
29  return unmodified_primitives_aux(static_cast<const EdgeMesh&>(mesh()), simplex);
-
30  else if (mesh().top_simplex_type() == PrimitiveType::Face)
+
30  else if (mesh().top_simplex_type() == PrimitiveType::Face)
31  return unmodified_primitives_aux(static_cast<const TriMesh&>(mesh()), simplex);
-
32  else if (mesh().top_simplex_type() == PrimitiveType::Tetrahedron)
+
32  else if (mesh().top_simplex_type() == PrimitiveType::Tetrahedron)
33  return unmodified_primitives_aux(static_cast<const TetMesh&>(mesh()), simplex);
34  else
35  throw std::runtime_error("invalid mesh type");
@@ -171,9 +171,9 @@
const Mesh & mesh() const
Definition: Operation.hpp:45
- - - + + + diff --git a/_mesh_operation_8hpp__incl.md5 b/_mesh_operation_8hpp__incl.md5 index 5c2f2a76e3..9e445a3414 100644 --- a/_mesh_operation_8hpp__incl.md5 +++ b/_mesh_operation_8hpp__incl.md5 @@ -1 +1 @@ -bc94c799a677d497d07a2e975b4eaafc \ No newline at end of file +81e8d077e5fb92323f4dff085f1c5d22 \ No newline at end of file diff --git a/_mesh_operation_8hpp__incl.svg b/_mesh_operation_8hpp__incl.svg index 39fcd5c8e5..349269c898 100644 --- a/_mesh_operation_8hpp__incl.svg +++ b/_mesh_operation_8hpp__incl.svg @@ -826,13 +826,13 @@ var sectionId = 'dynsection-0';
- + Node44->Node25 - + Node44->Node36 @@ -847,7 +847,7 @@ var sectionId = 'dynsection-0'; - + Node44->Node45 @@ -862,19 +862,19 @@ var sectionId = 'dynsection-0'; - + Node44->Node51 - + Node45->Node28 - + Node45->Node29 @@ -889,7 +889,7 @@ var sectionId = 'dynsection-0'; - + Node45->Node46 @@ -904,7 +904,7 @@ var sectionId = 'dynsection-0'; - + Node45->Node47 @@ -919,25 +919,25 @@ var sectionId = 'dynsection-0'; - + Node45->Node50 - + Node47->Node10 - + Node47->Node27 - + Node47->Node28 @@ -952,43 +952,43 @@ var sectionId = 'dynsection-0'; - + Node47->Node32 - + Node50->Node36 - + Node50->Node45 - + Node51->Node8 - + Node51->Node16 - + Node51->Node28 - + Node51->Node47 @@ -1003,7 +1003,7 @@ var sectionId = 'dynsection-0'; - + Node51->Node52 diff --git a/_mesh_operation_8hpp__incl_org.svg b/_mesh_operation_8hpp__incl_org.svg index 3aa834151a..a439d1e0b1 100644 --- a/_mesh_operation_8hpp__incl_org.svg +++ b/_mesh_operation_8hpp__incl_org.svg @@ -780,13 +780,13 @@ - + Node44->Node25 - + Node44->Node36 @@ -801,7 +801,7 @@ - + Node44->Node45 @@ -816,19 +816,19 @@ - + Node44->Node51 - + Node45->Node28 - + Node45->Node29 @@ -843,7 +843,7 @@ - + Node45->Node46 @@ -858,7 +858,7 @@ - + Node45->Node47 @@ -873,25 +873,25 @@ - + Node45->Node50 - + Node47->Node10 - + Node47->Node27 - + Node47->Node28 @@ -906,43 +906,43 @@ - + Node47->Node32 - + Node50->Node36 - + Node50->Node45 - + Node51->Node8 - + Node51->Node16 - + Node51->Node28 - + Node51->Node47 @@ -957,7 +957,7 @@ - + Node51->Node52 diff --git a/_mesh_writer_8hpp_source.html b/_mesh_writer_8hpp_source.html index f4cc8506ec..a55bdba862 100644 --- a/_mesh_writer_8hpp_source.html +++ b/_mesh_writer_8hpp_source.html @@ -131,7 +131,7 @@
14 
15  virtual bool write(const int dim) = 0;
16 
-
17  virtual void write_top_simplex_type(const PrimitiveType type) = 0;
+
17  virtual void write_top_simplex_type(const PrimitiveType type) = 0;
18  virtual void write_absolute_id(const std::vector<int64_t>& id) = 0;
19 
20  virtual void write_capacities(const std::vector<int64_t>& capacities) = 0;
@@ -184,7 +184,7 @@
virtual void write(const std::string &name, const int64_t type, const int64_t stride, const std::vector< Rational > &val, const Rational &default_val)=0
Definition: Accessor.cpp:8
- + diff --git a/_min_edge_length_invariant_8cpp_source.html b/_min_edge_length_invariant_8cpp_source.html index 6b92f18ac2..5c734c5751 100644 --- a/_min_edge_length_invariant_8cpp_source.html +++ b/_min_edge_length_invariant_8cpp_source.html @@ -141,7 +141,7 @@ -
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
const TypedAttributeHandle< double > m_coordinate_handle
bool before(const simplex::Simplex &t) const override
MinEdgeLengthInvariant(const Mesh &m, const TypedAttributeHandle< double > &coordinate, double threshold_squared)
diff --git a/_min_incident_valence_invariant_8cpp_source.html b/_min_incident_valence_invariant_8cpp_source.html index 6a721ccc38..df6b3bcba7 100644 --- a/_min_incident_valence_invariant_8cpp_source.html +++ b/_min_incident_valence_invariant_8cpp_source.html @@ -131,7 +131,7 @@
14 
16 {
-
17  assert(t.primitive_type() == PrimitiveType::Edge);
+
17  assert(t.primitive_type() == PrimitiveType::Edge);
18  return is_greater_min_valence(t.tuple());
19 }
20 
@@ -143,7 +143,7 @@
26  const std::vector<Tuple> e_edges = simplex::faces_single_dimension_tuples(
27  mesh(),
28  simplex::Simplex(mesh().top_simplex_type(), e),
- +
30  for (const Tuple& edge : e_edges) {
31  if (!is_greater_min_valence(edge)) {
32  return false;
@@ -160,14 +160,14 @@
43  using namespace simplex;
44 
45  const std::vector<Tuple> vs =
- +
47 
50  const int64_t val0 =
-
51  static_cast<int64_t>(link(mesh(), v0).simplex_vector(PrimitiveType::Vertex).size());
+
51  static_cast<int64_t>(link(mesh(), v0).simplex_vector(PrimitiveType::Vertex).size());
52  const int64_t val1 =
-
53  static_cast<int64_t>(link(mesh(), v1).simplex_vector(PrimitiveType::Vertex).size());
+
53  static_cast<int64_t>(link(mesh(), v1).simplex_vector(PrimitiveType::Vertex).size());
54 
55  return val0 >= m_min_valence && val1 >= m_min_valence;
56 }
@@ -195,8 +195,8 @@
SimplexCollection link(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Definition: link.cpp:11
std::vector< Tuple > faces_single_dimension_tuples(const Mesh &mesh, const Simplex &simplex, const PrimitiveType face_type)
- - + + diff --git a/_msh_reader_8cpp_source.html b/_msh_reader_8cpp_source.html index 93d85b1068..89d32fdea0 100644 --- a/_msh_reader_8cpp_source.html +++ b/_msh_reader_8cpp_source.html @@ -207,7 +207,7 @@
90  }
91 
92 
- +
94 
95  return res;
96 }
@@ -507,7 +507,7 @@
attribute::MeshAttributeHandle set_matrix_attribute(const Mat &data, const std::string &name, const PrimitiveType &type, Mesh &mesh)
Definition: mesh_utils.hpp:9
Definition: Accessor.cpp:8
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
- + diff --git a/_multi_mesh_link_condition_invariant_8cpp_source.html b/_multi_mesh_link_condition_invariant_8cpp_source.html index f46b2e06be..3cbef7c638 100644 --- a/_multi_mesh_link_condition_invariant_8cpp_source.html +++ b/_multi_mesh_link_condition_invariant_8cpp_source.html @@ -143,7 +143,7 @@
26 {}
28 {
-
29  assert(t.primitive_type() == PrimitiveType::Edge);
+
29  assert(t.primitive_type() == PrimitiveType::Edge);
31  std::integral_constant<int64_t, 1>{}, // specify that this runs on edges
32  MultiMeshLinkConditionFunctor{});
@@ -181,7 +181,7 @@
bool link_condition(const EdgeMesh &mesh, const Tuple &edge)
Check if the edge to collapse satisfying the link condition.
Definition: Accessor.cpp:8
- + diff --git a/_multi_mesh_manager_8cpp_source.html b/_multi_mesh_manager_8cpp_source.html index b8d29a2040..bce9b80ddc 100644 --- a/_multi_mesh_manager_8cpp_source.html +++ b/_multi_mesh_manager_8cpp_source.html @@ -143,9 +143,9 @@
26  const ConstAccessor<int64_t>& map_accessor,
27  const Tuple& source_tuple)
28 {
-
29  PrimitiveType source_mesh_primitive_type = source_mesh.top_simplex_type();
-
30  PrimitiveType target_mesh_primitive_type = target_mesh.top_simplex_type();
-
31  PrimitiveType min_primitive_type =
+
29  PrimitiveType source_mesh_primitive_type = source_mesh.top_simplex_type();
+
30  PrimitiveType target_mesh_primitive_type = target_mesh.top_simplex_type();
+
31  PrimitiveType min_primitive_type =
32  std::min(source_mesh_primitive_type, target_mesh_primitive_type);
33  Tuple source_mesh_target_tuple = source_tuple;
34  const auto [source_mesh_base_tuple, target_mesh_base_tuple] =
@@ -163,8 +163,8 @@
46  for (const Tuple& t : equivalent_tuples) {
47  if (t.m_global_cid == source_mesh_base_tuple.m_global_cid) {
48  // specific for tet->edge
-
49  if (source_mesh_primitive_type == PrimitiveType::Tetrahedron &&
-
50  target_mesh_primitive_type == PrimitiveType::Edge) {
+
49  if (source_mesh_primitive_type == PrimitiveType::Tetrahedron &&
+
50  target_mesh_primitive_type == PrimitiveType::Edge) {
51  if (t.m_local_fid == source_mesh_base_tuple.m_local_fid) {
52  source_mesh_target_tuple = t;
53  break;
@@ -304,7 +304,7 @@
187 
188  Mesh& child_mesh = *child_mesh_ptr;
189 
-
190  const PrimitiveType child_primitive_type = child_mesh.top_simplex_type();
+
190  const PrimitiveType child_primitive_type = child_mesh.top_simplex_type();
191  const int64_t new_child_id = int64_t(m_children.size());
192 
@@ -473,7 +473,7 @@
356  int64_t depth) const
357 {
358  assert((&my_mesh.m_multi_mesh_manager) == this);
-
359  const PrimitiveType pt = my_simplex.primitive_type();
+
359  const PrimitiveType pt = my_simplex.primitive_type();
360 
361  // get a root tuple by converting the tuple up parent meshes until root is found
362  Tuple cur_tuple = my_simplex.tuple();
@@ -497,7 +497,7 @@
380 {
381  assert((&my_mesh.m_multi_mesh_manager) == this);
382 
-
383  const PrimitiveType pt = my_simplex.primitive_type();
+
383  const PrimitiveType pt = my_simplex.primitive_type();
384  // note that (cur_mesh, tuples) always match (i.e tuples are tuples from cur_mesh)
385  std::vector<Tuple> tuples;
386  tuples.emplace_back(my_simplex.tuple());
@@ -623,9 +623,9 @@
506 
507 // helper function for map tuple
-
509  PrimitiveType parent_type,
-
510  PrimitiveType child_type,
-
511  PrimitiveType simplex_type,
+
509  PrimitiveType parent_type,
+
510  PrimitiveType child_type,
+
511  PrimitiveType simplex_type,
512  const std::vector<Tuple>& parent_tuples)
513 {
514  if (parent_type == child_type || child_type == simplex_type) {
@@ -634,42 +634,42 @@
517 
518  std::vector<Tuple> ret_tuples = parent_tuples;
519  switch (simplex_type) {
- -
521  if (parent_type == PrimitiveType::Face) {
+ +
521  if (parent_type == PrimitiveType::Face) {
522  for (const Tuple& t : parent_tuples) {
523  ret_tuples.emplace_back(wmtk::multimesh::utils::local_switch_tuple(
524  parent_type,
525  t,
- +
527  }
528  }
-
529  if (parent_type == PrimitiveType::Tetrahedron) {
+
529  if (parent_type == PrimitiveType::Tetrahedron) {
530  for (const Tuple& t : parent_tuples) {
531  ret_tuples.emplace_back(wmtk::multimesh::utils::local_switch_tuple(
532  parent_type,
533  t,
- +
535  ret_tuples.emplace_back(wmtk::multimesh::utils::local_switch_tuples(
536  parent_type,
537  t,
- +
539  }
540  }
541 
542  break;
-
543  case PrimitiveType::Edge:
-
544  if (parent_type == PrimitiveType::Tetrahedron) {
+
543  case PrimitiveType::Edge:
+
544  if (parent_type == PrimitiveType::Tetrahedron) {
545  for (const Tuple& t : parent_tuples) {
546  ret_tuples.emplace_back(wmtk::multimesh::utils::local_switch_tuple(
547  parent_type,
548  t,
- +
550  }
551  }
552  break;
-
553  case PrimitiveType::Face:
- - +
553  case PrimitiveType::Face:
+ +
556  default: break;
557  }
558 
@@ -751,7 +751,7 @@
634  const Mesh& child,
635  const std::vector<int64_t>& parent_simplices)
636 {
-
637  PrimitiveType primitive_type = parent.top_simplex_type();
+
637  PrimitiveType primitive_type = parent.top_simplex_type();
638 #if !defined(NDEBUG)
639  if (primitive_type != child.top_simplex_type()) {
640  throw std::runtime_error(
@@ -819,7 +819,7 @@
702 
704  Mesh& my_mesh,
-
705  PrimitiveType primitive_type,
+
705  PrimitiveType primitive_type,
706  const std::vector<std::tuple<int64_t, std::vector<Tuple>>>& simplices_to_update,
707  const std::vector<std::tuple<int64_t, std::array<int64_t, 2>>>& split_cell_maps)
708 {
@@ -837,7 +837,7 @@
720  // parent cells might have been destroyed
721  //
722 
-
723  const PrimitiveType parent_primitive_type = my_mesh.top_simplex_type();
+
723  const PrimitiveType parent_primitive_type = my_mesh.top_simplex_type();
724 
725  auto parent_hash_accessor = my_mesh.get_const_cell_hash_accessor();
726  auto parent_flag_accessor = my_mesh.get_const_flag_accessor(primitive_type);
@@ -1000,7 +1000,7 @@
883 
885  Mesh& my_mesh,
-
886  PrimitiveType primitive_type,
+
886  PrimitiveType primitive_type,
887  const std::vector<Tuple>& tuple_alternatives) const
888 {
889  auto parent_flag_accessor = my_mesh.get_const_flag_accessor(primitive_type);
@@ -1026,7 +1026,7 @@
909  const std::vector<std::tuple<int64_t, std::array<int64_t, 2>>>& split_cell_maps) const
910 {
911  const Tuple& old_tuple = old_simplex.tuple();
-
912  const PrimitiveType primitive_type = old_simplex.primitive_type();
+
912  const PrimitiveType primitive_type = old_simplex.primitive_type();
913 
914  for (const auto& [old_cid, new_cids] : split_cell_maps) {
915  if (old_cid != old_tuple.m_global_cid) {
@@ -1059,7 +1059,7 @@
942 
944  const Mesh& my_mesh,
-
945  PrimitiveType primitive_type,
+
945  PrimitiveType primitive_type,
946  const std::vector<Tuple>& tuples,
947  int64_t gid)
948 {
@@ -1122,37 +1122,37 @@
1005  const Tuple& vertex,
1006  Accessor<int64_t>& hash_accessor)
1007 {
-
1008  const PrimitiveType pt = m.top_simplex_type();
+
1008  const PrimitiveType pt = m.top_simplex_type();
1009  const simplex::SimplexCollection star =
1011  std::vector<Tuple> tuples_to_update;
1012  switch (pt) {
-
1013  case PrimitiveType::Vertex: {
-
1014  const auto star_vertices = star.simplex_vector(PrimitiveType::Vertex);
+
1013  case PrimitiveType::Vertex: {
+
1014  const auto star_vertices = star.simplex_vector(PrimitiveType::Vertex);
1015  tuples_to_update.reserve(star_vertices.size());
1016  for (const simplex::Simplex& s : star_vertices) {
1017  tuples_to_update.emplace_back(s.tuple());
1018  }
1019  break;
1020  }
-
1021  case PrimitiveType::Edge: {
-
1022  const auto star_edges = star.simplex_vector(PrimitiveType::Edge);
+
1021  case PrimitiveType::Edge: {
+
1022  const auto star_edges = star.simplex_vector(PrimitiveType::Edge);
1023  tuples_to_update.reserve(star_edges.size());
1024  for (const simplex::Simplex& s : star_edges) {
1025  tuples_to_update.emplace_back(s.tuple());
1026  }
1027  break;
1028  }
-
1029  case PrimitiveType::Face: {
-
1030  const auto star_faces = star.simplex_vector(PrimitiveType::Face);
+
1029  case PrimitiveType::Face: {
+
1030  const auto star_faces = star.simplex_vector(PrimitiveType::Face);
1031  tuples_to_update.reserve(star_faces.size());
1032  for (const simplex::Simplex& s : star_faces) {
1033  tuples_to_update.emplace_back(s.tuple());
1034  }
1035  break;
1036  }
- -
1038  const auto star_tets = star.simplex_vector(PrimitiveType::Tetrahedron);
+ +
1038  const auto star_tets = star.simplex_vector(PrimitiveType::Tetrahedron);
1039  tuples_to_update.reserve(star_tets.size());
1040  for (const simplex::Simplex& s : star_tets) {
1041  tuples_to_update.emplace_back(s.tuple());
@@ -1160,7 +1160,7 @@
1043  break;
1044  }
1045  default:
-
1046  case PrimitiveType::HalfEdge: throw std::runtime_error("Invalid case");
+
1046  case PrimitiveType::HalfEdge: throw std::runtime_error("Invalid case");
1047  }
1048 
1049 
@@ -1222,7 +1222,7 @@
1105 {
1106  const Mesh& child_mesh = *child_data.mesh;
1107  const auto parent_to_child_handle = child_data.map_handle;
-
1108  PrimitiveType map_type = child_mesh.top_simplex_type();
+
1108  PrimitiveType map_type = child_mesh.top_simplex_type();
1109 
1110  const std::string c_to_p_name = child_to_parent_map_attribute_name();
1111 
@@ -1281,15 +1281,15 @@
1164 
1165  // 4. test switch_top_simplex operation
1166  // for 4, current code support only mapping between triangle meshes
-
1167  if (map_type == PrimitiveType::Face && my_mesh.top_simplex_type() == PrimitiveType::Face) {
+
1167  if (map_type == PrimitiveType::Face && my_mesh.top_simplex_type() == PrimitiveType::Face) {
1168  Tuple cur_child_tuple = child_tuple_from_child;
1169  Tuple cur_parent_tuple = parent_tuple_from_child;
1170 
1171  auto child_to_parent_accessor =
1172  child_mesh.create_const_accessor(child_to_parent_handle);
1173  for (int i = 0; i < 3; i++) {
-
1174  if (!child_mesh.is_boundary(PrimitiveType::Edge, cur_child_tuple)) {
-
1175  assert(!my_mesh.is_boundary(PrimitiveType::Edge, cur_parent_tuple));
+
1174  if (!child_mesh.is_boundary(PrimitiveType::Edge, cur_child_tuple)) {
+
1175  assert(!my_mesh.is_boundary(PrimitiveType::Edge, cur_parent_tuple));
1176 
1177 #ifndef NDEBUG
1178  Tuple child_tuple_opp = child_mesh.switch_face(cur_child_tuple);
@@ -1306,8 +1306,8 @@
1189  cur_parent_tuple = my_mesh.switch_edge(my_mesh.switch_vertex(cur_parent_tuple));
1190  }
1191  } else if (
-
1192  map_type == PrimitiveType::Edge && my_mesh.top_simplex_type() == PrimitiveType::Face) {
-
1193  if (!my_mesh.is_boundary(PrimitiveType::Edge, parent_tuple_from_child)) {
+
1192  map_type == PrimitiveType::Edge && my_mesh.top_simplex_type() == PrimitiveType::Face) {
+
1193  if (!my_mesh.is_boundary(PrimitiveType::Edge, parent_tuple_from_child)) {
1194  auto parent_to_child_accessor =
1195  my_mesh.create_const_accessor(parent_to_child_handle);
1196 #ifndef NDEBUG
@@ -1413,28 +1413,28 @@
virtual int64_t id(const Tuple &tuple, PrimitiveType type) const =0
return the global id of the Tuple of the given dimension
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
std::vector< int64_t > absolute_multi_mesh_id() const
returns a unique identifier for this mesh within a single multimesh structure
-
attribute::MeshAttributeHandle get_attribute_handle(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:896
-
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:945
+
attribute::MeshAttributeHandle get_attribute_handle(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:895
+
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:944
ConstAccessor< char > get_const_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:83
-
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
-
attribute::TypedAttributeHandle< T > register_attribute_typed(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
+
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
+
attribute::TypedAttributeHandle< T > register_attribute_typed(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
int64_t get_cell_hash_slow(int64_t cell_index) const
Definition: Mesh.cpp:154
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
virtual Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const =0
internal function that returns the tuple of requested type, and has the global index cid
-
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:949
+
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:948
std::vector< Tuple > get_all(PrimitiveType type) const
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index.
Definition: Mesh.cpp:22
-
static auto & get_index_access(attribute::MutableAccessor< T > &attr)
Definition: Mesh.hpp:808
-
bool has_attribute(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:916
-
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
static auto & get_index_access(attribute::MutableAccessor< T > &attr)
Definition: Mesh.hpp:807
+
bool has_attribute(const std::string &name, const PrimitiveType ptype) const
Definition: Mesh.hpp:915
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
ConstAccessor< int64_t > get_const_cell_hash_accessor() const
Definition: Mesh.cpp:92
Mesh & get_multi_mesh_root()
returns a reference to the root of a multimesh tree
PrimitiveType top_simplex_type() const
Definition: Mesh.cpp:13
bool is_valid_slow(const Tuple &tuple) const
Definition: Mesh.cpp:72
virtual int64_t top_cell_dimension() const =0
-
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:887
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:886
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
Tuple resurrect_tuple(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
return the same tuple but with updated hash
Definition: Mesh.cpp:136
-
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:826
+
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:825
void update_cell_hashes(const std::vector< Tuple > &cells, Accessor< int64_t > &hash_accessor)
update hashes in given cells
Definition: Mesh.cpp:116
Implementation details for how the Mesh class implements multiple meshes.
@@ -1534,12 +1534,12 @@
std::vector< Tuple > get_all_candidate_tuples_for_child_mesh(PrimitiveType parent_type, PrimitiveType child_type, PrimitiveType simplex_type, const std::vector< Tuple > &parent_tuples)
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
- - - - - - + + + + + +
TypedAttributeHandle< int64_t > map_handle
diff --git a/_multi_mesh_manager_8hpp__incl.md5 b/_multi_mesh_manager_8hpp__incl.md5 index 02f0f7ccbb..99798175d9 100644 --- a/_multi_mesh_manager_8hpp__incl.md5 +++ b/_multi_mesh_manager_8hpp__incl.md5 @@ -1 +1 @@ -f900040509563d803ef4dfabe31d564a \ No newline at end of file +c0a5383163aefde086d3c4e9c184f9af \ No newline at end of file diff --git a/_multi_mesh_manager_8hpp__incl.svg b/_multi_mesh_manager_8hpp__incl.svg index 151f2bd3ea..931c55b688 100644 --- a/_multi_mesh_manager_8hpp__incl.svg +++ b/_multi_mesh_manager_8hpp__incl.svg @@ -875,13 +875,13 @@ var sectionId = 'dynsection-0';
- + Node42->Node30 - + Node42->Node36 @@ -896,7 +896,7 @@ var sectionId = 'dynsection-0'; - + Node42->Node43 @@ -911,19 +911,19 @@ var sectionId = 'dynsection-0'; - + Node42->Node49 - + Node43->Node15 - + Node43->Node17 @@ -938,7 +938,7 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 @@ -953,55 +953,55 @@ var sectionId = 'dynsection-0'; - + Node43->Node45 - + Node45->Node13 - + Node45->Node16 - + Node45->Node17 - + Node45->Node32 - + Node49->Node7 - + Node49->Node17 - + Node49->Node18 - + Node49->Node45 diff --git a/_multi_mesh_manager_8hpp__incl_org.svg b/_multi_mesh_manager_8hpp__incl_org.svg index caf67cb6c3..ff8c08b8f6 100644 --- a/_multi_mesh_manager_8hpp__incl_org.svg +++ b/_multi_mesh_manager_8hpp__incl_org.svg @@ -829,13 +829,13 @@ - + Node42->Node30 - + Node42->Node36 @@ -850,7 +850,7 @@ - + Node42->Node43 @@ -865,19 +865,19 @@ - + Node42->Node49 - + Node43->Node15 - + Node43->Node17 @@ -892,7 +892,7 @@ - + Node43->Node44 @@ -907,55 +907,55 @@ - + Node43->Node45 - + Node45->Node13 - + Node45->Node16 - + Node45->Node17 - + Node45->Node32 - + Node49->Node7 - + Node49->Node17 - + Node49->Node18 - + Node49->Node45 diff --git a/_multi_mesh_manager_8hpp_source.html b/_multi_mesh_manager_8hpp_source.html index a2071dc1a3..5817301bcd 100644 --- a/_multi_mesh_manager_8hpp_source.html +++ b/_multi_mesh_manager_8hpp_source.html @@ -393,7 +393,7 @@
412  // it cannot handle map updates of its faces?
414  Mesh& my_mesh,
-
415  PrimitiveType primitive_type,
+
415  PrimitiveType primitive_type,
416  const std::vector<std::tuple<int64_t, std::vector<Tuple>>>& simplices_to_update,
417  const std::vector<std::tuple<int64_t, std::array<int64_t, 2>>>& split_cell_maps = {});
418 
@@ -411,7 +411,7 @@
430  // returns a tuple such that every subsmipelx in old_simplex's tuple maps to the same smiplex as
431  std::optional<Tuple> find_valid_tuple_from_alternatives(
432  Mesh& my_mesh,
-
433  PrimitiveType primitive_type,
+
433  PrimitiveType primitive_type,
434  const std::vector<Tuple>& tuple_alternatives) const;
435 
436  // returns a tuple such that every subsmipelx in old_simplex's tuple maps to the same smiplex as
@@ -433,7 +433,7 @@
452 
453  static std::optional<Tuple> find_tuple_from_gid(
454  const Mesh& my_mesh,
-
455  PrimitiveType primitive_type,
+
455  PrimitiveType primitive_type,
456  const std::vector<Tuple>& tuples,
457  int64_t gid);
458 
@@ -595,7 +595,7 @@
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
- + diff --git a/_multi_mesh_map_valid_invariant_8cpp_source.html b/_multi_mesh_map_valid_invariant_8cpp_source.html index faa4c33eda..0b695f620c 100644 --- a/_multi_mesh_map_valid_invariant_8cpp_source.html +++ b/_multi_mesh_map_valid_invariant_8cpp_source.html @@ -219,7 +219,7 @@
102 {}
104 {
-
105  assert(t.primitive_type() == PrimitiveType::Edge);
+
105  assert(t.primitive_type() == PrimitiveType::Edge);
107  std::integral_constant<int64_t, 1>{}, // specify that this runs on edges
108  MultiMeshMapValidFunctor{});
@@ -256,7 +256,7 @@
static Simplex face(const Tuple &t)
Definition: Simplex.hpp:29
std::vector< Tuple > top_dimension_cofaces_tuples(const EdgeMesh &mesh, const Simplex &simplex)
Definition: Accessor.cpp:8
- + diff --git a/_multi_mesh_topology_invariant_8cpp_source.html b/_multi_mesh_topology_invariant_8cpp_source.html index df29070a4d..2a62fcb077 100644 --- a/_multi_mesh_topology_invariant_8cpp_source.html +++ b/_multi_mesh_topology_invariant_8cpp_source.html @@ -141,15 +141,15 @@
24 
25  // if the edge is in the child mesh, return true
26  if (mesh()
-
27  .map_to_child_tuples(m_child_mesh, simplex::Simplex(PrimitiveType::Edge, v1))
+
27  .map_to_child_tuples(m_child_mesh, simplex::Simplex(PrimitiveType::Edge, v1))
28  .size() != 0)
29  return true;
30 
31  // now the edge is not in the childmesh, then if both vertices are in the child mesh, return
32  // false
-
33  if (mesh().map_to_child_tuples(m_child_mesh, simplex::Simplex(PrimitiveType::Vertex, v1))
+
33  if (mesh().map_to_child_tuples(m_child_mesh, simplex::Simplex(PrimitiveType::Vertex, v1))
34  .size() != 0 &&
-
35  mesh().map_to_child_tuples(m_child_mesh, simplex::Simplex(PrimitiveType::Vertex, v2))
+
35  mesh().map_to_child_tuples(m_child_mesh, simplex::Simplex(PrimitiveType::Vertex, v2))
36  .size() != 0) {
37  return false;
38  }
@@ -168,7 +168,7 @@ -
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
bool before(const simplex::Simplex &t) const override
check if both the vertices are in the child mesh but the edge itself is not in the child mesh (return...
MultiMeshEdgeTopologyInvariant(const Mesh &parent, const EdgeMesh &child)
@@ -178,8 +178,8 @@
const Tuple & tuple() const
Definition: Simplex.hpp:25
Definition: Accessor.cpp:8
- - + + diff --git a/_mutable_accessor_8hpp__incl.md5 b/_mutable_accessor_8hpp__incl.md5 index fee4d461bf..071fae6544 100644 --- a/_mutable_accessor_8hpp__incl.md5 +++ b/_mutable_accessor_8hpp__incl.md5 @@ -1 +1 @@ -52b1dfcb03a04786e4c6486cd11b1a97 \ No newline at end of file +2aef55206949ba87797d52079e0a1446 \ No newline at end of file diff --git a/_mutable_accessor_8hpp__incl.svg b/_mutable_accessor_8hpp__incl.svg index 964e15169f..21e75e0359 100644 --- a/_mutable_accessor_8hpp__incl.svg +++ b/_mutable_accessor_8hpp__incl.svg @@ -793,13 +793,13 @@ var sectionId = 'dynsection-0';
- + Node39->Node4 - + Node39->Node31 @@ -814,7 +814,7 @@ var sectionId = 'dynsection-0'; - + Node39->Node40 @@ -829,19 +829,19 @@ var sectionId = 'dynsection-0'; - + Node39->Node46 - + Node40->Node7 - + Node40->Node9 @@ -856,7 +856,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node41 @@ -871,7 +871,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node42 @@ -886,31 +886,31 @@ var sectionId = 'dynsection-0'; - + Node40->Node45 - + Node42->Node6 - + Node42->Node7 - + Node42->Node10 - + Node42->Node15 @@ -925,13 +925,13 @@ var sectionId = 'dynsection-0'; - + Node42->Node43 - + Node43->Node10 @@ -946,43 +946,43 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 - + Node45->Node31 - + Node45->Node40 - + Node46->Node7 - + Node46->Node11 - + Node46->Node20 - + Node46->Node42 @@ -997,7 +997,7 @@ var sectionId = 'dynsection-0'; - + Node46->Node47 @@ -1012,31 +1012,31 @@ var sectionId = 'dynsection-0'; - + Node46->Node48 - + Node48->Node9 - + Node48->Node31 - + Node48->Node40 - + Node48->Node46 diff --git a/_mutable_accessor_8hpp__incl_org.svg b/_mutable_accessor_8hpp__incl_org.svg index 49817b6f9f..a82005f2a1 100644 --- a/_mutable_accessor_8hpp__incl_org.svg +++ b/_mutable_accessor_8hpp__incl_org.svg @@ -747,13 +747,13 @@ - + Node39->Node4 - + Node39->Node31 @@ -768,7 +768,7 @@ - + Node39->Node40 @@ -783,19 +783,19 @@ - + Node39->Node46 - + Node40->Node7 - + Node40->Node9 @@ -810,7 +810,7 @@ - + Node40->Node41 @@ -825,7 +825,7 @@ - + Node40->Node42 @@ -840,31 +840,31 @@ - + Node40->Node45 - + Node42->Node6 - + Node42->Node7 - + Node42->Node10 - + Node42->Node15 @@ -879,13 +879,13 @@ - + Node42->Node43 - + Node43->Node10 @@ -900,43 +900,43 @@ - + Node43->Node44 - + Node45->Node31 - + Node45->Node40 - + Node46->Node7 - + Node46->Node11 - + Node46->Node20 - + Node46->Node42 @@ -951,7 +951,7 @@ - + Node46->Node47 @@ -966,31 +966,31 @@ - + Node46->Node48 - + Node48->Node9 - + Node48->Node31 - + Node48->Node40 - + Node48->Node46 diff --git a/_mutable_accessor_8hxx__incl.md5 b/_mutable_accessor_8hxx__incl.md5 index 1b9518f0d5..873e5e5f50 100644 --- a/_mutable_accessor_8hxx__incl.md5 +++ b/_mutable_accessor_8hxx__incl.md5 @@ -1 +1 @@ -3266908f51fd366d7189db5639c4e193 \ No newline at end of file +47fcc3bb94e775adf8a28f36305687af \ No newline at end of file diff --git a/_mutable_accessor_8hxx__incl.svg b/_mutable_accessor_8hxx__incl.svg index 535e10c1cf..e52c91100f 100644 --- a/_mutable_accessor_8hxx__incl.svg +++ b/_mutable_accessor_8hxx__incl.svg @@ -799,13 +799,13 @@ var sectionId = 'dynsection-0'; - + Node40->Node5 - + Node40->Node32 @@ -820,7 +820,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node41 @@ -835,19 +835,19 @@ var sectionId = 'dynsection-0'; - + Node40->Node47 - + Node41->Node8 - + Node41->Node10 @@ -862,7 +862,7 @@ var sectionId = 'dynsection-0'; - + Node41->Node42 @@ -877,7 +877,7 @@ var sectionId = 'dynsection-0'; - + Node41->Node43 @@ -892,31 +892,31 @@ var sectionId = 'dynsection-0'; - + Node41->Node46 - + Node43->Node7 - + Node43->Node8 - + Node43->Node11 - + Node43->Node16 @@ -931,13 +931,13 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 - + Node44->Node11 @@ -952,43 +952,43 @@ var sectionId = 'dynsection-0'; - + Node44->Node45 - + Node46->Node32 - + Node46->Node41 - + Node47->Node8 - + Node47->Node12 - + Node47->Node21 - + Node47->Node43 @@ -1003,7 +1003,7 @@ var sectionId = 'dynsection-0'; - + Node47->Node48 @@ -1018,31 +1018,31 @@ var sectionId = 'dynsection-0'; - + Node47->Node49 - + Node49->Node10 - + Node49->Node32 - + Node49->Node41 - + Node49->Node47 diff --git a/_mutable_accessor_8hxx__incl_org.svg b/_mutable_accessor_8hxx__incl_org.svg index 3828afb8b6..187967a667 100644 --- a/_mutable_accessor_8hxx__incl_org.svg +++ b/_mutable_accessor_8hxx__incl_org.svg @@ -753,13 +753,13 @@ - + Node40->Node5 - + Node40->Node32 @@ -774,7 +774,7 @@ - + Node40->Node41 @@ -789,19 +789,19 @@ - + Node40->Node47 - + Node41->Node8 - + Node41->Node10 @@ -816,7 +816,7 @@ - + Node41->Node42 @@ -831,7 +831,7 @@ - + Node41->Node43 @@ -846,31 +846,31 @@ - + Node41->Node46 - + Node43->Node7 - + Node43->Node8 - + Node43->Node11 - + Node43->Node16 @@ -885,13 +885,13 @@ - + Node43->Node44 - + Node44->Node11 @@ -906,43 +906,43 @@ - + Node44->Node45 - + Node46->Node32 - + Node46->Node41 - + Node47->Node8 - + Node47->Node12 - + Node47->Node21 - + Node47->Node43 @@ -957,7 +957,7 @@ - + Node47->Node48 @@ -972,31 +972,31 @@ - + Node47->Node49 - + Node49->Node10 - + Node49->Node32 - + Node49->Node41 - + Node49->Node47 diff --git a/_new_attribute_strategy_8cpp_source.html b/_new_attribute_strategy_8cpp_source.html index 7b908b8142..e8e2721133 100644 --- a/_new_attribute_strategy_8cpp_source.html +++ b/_new_attribute_strategy_8cpp_source.html @@ -147,7 +147,7 @@
30 }
31 
-
33  PrimitiveType pt,
+
33  PrimitiveType pt,
34  const std::array<Tuple, 2>& simplices)
35 {
36  if (!bool(m_simplex_predicate)) {
@@ -187,7 +187,7 @@ - + diff --git a/_new_attribute_strategy_8hpp_source.html b/_new_attribute_strategy_8hpp_source.html index 64c3a53468..03f13dd886 100644 --- a/_new_attribute_strategy_8hpp_source.html +++ b/_new_attribute_strategy_8hpp_source.html @@ -144,7 +144,7 @@
27  virtual bool matches_attribute(const attribute::MeshAttributeHandle&) const = 0;
28  virtual void update_handle_mesh(Mesh&) = 0;
29 
-
30  virtual PrimitiveType primitive_type() const = 0;
+
30  virtual PrimitiveType primitive_type() const = 0;
31 
32  virtual Mesh& mesh() = 0;
33  const Mesh& mesh() const;
@@ -152,7 +152,7 @@
37 
-
38  std::bitset<2> evaluate_predicate(PrimitiveType pt, const std::array<Tuple, 2>& simplices);
+
38  std::bitset<2> evaluate_predicate(PrimitiveType pt, const std::array<Tuple, 2>& simplices);
39 
40 protected:
41 private:
@@ -183,7 +183,7 @@
Definition: Accessor.cpp:8
- + diff --git a/_no_boundary_collapse_to_interior_invariant_8cpp_source.html b/_no_boundary_collapse_to_interior_invariant_8cpp_source.html index a0a32ec79e..4eee6da9cf 100644 --- a/_no_boundary_collapse_to_interior_invariant_8cpp_source.html +++ b/_no_boundary_collapse_to_interior_invariant_8cpp_source.html @@ -126,10 +126,10 @@
9 
11 {
-
12  assert(t.primitive_type() == PrimitiveType::Edge);
-
13  bool v0_on_boundary = mesh().is_boundary(PrimitiveType::Vertex, t.tuple());
+
12  assert(t.primitive_type() == PrimitiveType::Edge);
+
13  bool v0_on_boundary = mesh().is_boundary(PrimitiveType::Vertex, t.tuple());
14  bool v1_on_boundary =
-
15  mesh().is_boundary(PrimitiveType::Vertex, mesh().switch_vertex(t.tuple()));
+
15  mesh().is_boundary(PrimitiveType::Vertex, mesh().switch_vertex(t.tuple()));
16 
17  if (v0_on_boundary == v1_on_boundary) {
18  return true;
@@ -152,8 +152,8 @@
const Tuple & tuple() const
Definition: Simplex.hpp:25
PrimitiveType primitive_type() const
Definition: Simplex.hpp:23
- - + + diff --git a/_operation_8cpp_source.html b/_operation_8cpp_source.html index b33752203a..c5d2c45b7e 100644 --- a/_operation_8cpp_source.html +++ b/_operation_8cpp_source.html @@ -288,7 +288,7 @@ -
multimesh::attribute::AttributeScopeHandle create_scope()
+
multimesh::attribute::AttributeScopeHandle create_scope()
ConstAccessor< int64_t > get_const_cell_hash_accessor() const
Definition: Mesh.cpp:92
std::vector< simplex::Simplex > map(const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
maps a simplex from this mesh to any other mesh
ConstAccessor< int64_t > get_cell_hash_accessor() const
Definition: Mesh.cpp:97
diff --git a/_operation_8hpp__incl.md5 b/_operation_8hpp__incl.md5 index f219d29f79..dc270b7309 100644 --- a/_operation_8hpp__incl.md5 +++ b/_operation_8hpp__incl.md5 @@ -1 +1 @@ -aa14cfaf0edc247f9b46cba9fc1d2599 \ No newline at end of file +8b15af7de5e7b1b5f9798d75ca9de1d5 \ No newline at end of file diff --git a/_operation_8hpp__incl.svg b/_operation_8hpp__incl.svg index a0cc750052..42a2b1a350 100644 --- a/_operation_8hpp__incl.svg +++ b/_operation_8hpp__incl.svg @@ -811,13 +811,13 @@ var sectionId = 'dynsection-0';
- + Node43->Node24 - + Node43->Node35 @@ -832,7 +832,7 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 @@ -847,19 +847,19 @@ var sectionId = 'dynsection-0'; - + Node43->Node50 - + Node44->Node27 - + Node44->Node28 @@ -874,7 +874,7 @@ var sectionId = 'dynsection-0'; - + Node44->Node45 @@ -889,7 +889,7 @@ var sectionId = 'dynsection-0'; - + Node44->Node46 @@ -904,25 +904,25 @@ var sectionId = 'dynsection-0'; - + Node44->Node49 - + Node46->Node9 - + Node46->Node26 - + Node46->Node27 @@ -937,43 +937,43 @@ var sectionId = 'dynsection-0'; - + Node46->Node31 - + Node49->Node35 - + Node49->Node44 - + Node50->Node7 - + Node50->Node15 - + Node50->Node27 - + Node50->Node46 @@ -988,7 +988,7 @@ var sectionId = 'dynsection-0'; - + Node50->Node51 @@ -1003,31 +1003,31 @@ var sectionId = 'dynsection-0'; - + Node50->Node52 - + Node52->Node28 - + Node52->Node35 - + Node52->Node44 - + Node52->Node50 diff --git a/_operation_8hpp__incl_org.svg b/_operation_8hpp__incl_org.svg index 4fbd24c00d..dc4b4451cb 100644 --- a/_operation_8hpp__incl_org.svg +++ b/_operation_8hpp__incl_org.svg @@ -765,13 +765,13 @@ - + Node43->Node24 - + Node43->Node35 @@ -786,7 +786,7 @@ - + Node43->Node44 @@ -801,19 +801,19 @@ - + Node43->Node50 - + Node44->Node27 - + Node44->Node28 @@ -828,7 +828,7 @@ - + Node44->Node45 @@ -843,7 +843,7 @@ - + Node44->Node46 @@ -858,25 +858,25 @@ - + Node44->Node49 - + Node46->Node9 - + Node46->Node26 - + Node46->Node27 @@ -891,43 +891,43 @@ - + Node46->Node31 - + Node49->Node35 - + Node49->Node44 - + Node50->Node7 - + Node50->Node15 - + Node50->Node27 - + Node50->Node46 @@ -942,7 +942,7 @@ - + Node50->Node51 @@ -957,31 +957,31 @@ - + Node50->Node52 - + Node52->Node28 - + Node52->Node35 - + Node52->Node44 - + Node52->Node50 diff --git a/_operation_8hpp_source.html b/_operation_8hpp_source.html index 79c0bd54ad..b6d81e4fdc 100644 --- a/_operation_8hpp_source.html +++ b/_operation_8hpp_source.html @@ -157,7 +157,7 @@
40  bool use_random_priority() const { return m_use_random_priority; }
42 
-
43  virtual PrimitiveType primitive_type() const = 0;
+
43  virtual PrimitiveType primitive_type() const = 0;
44 
45  const Mesh& mesh() const { return m_mesh; }
46  Mesh& mesh() { return m_mesh; }
@@ -264,7 +264,7 @@
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
- + diff --git a/_optimization_smoothing_8hpp__incl.md5 b/_optimization_smoothing_8hpp__incl.md5 index 9f6eb17fda..b8397c07d4 100644 --- a/_optimization_smoothing_8hpp__incl.md5 +++ b/_optimization_smoothing_8hpp__incl.md5 @@ -1 +1 @@ -0f76ba5799583ee8250c03ca6747e54a \ No newline at end of file +0b593aa988d838d993ced67c25aa1fbe \ No newline at end of file diff --git a/_optimization_smoothing_8hpp__incl.svg b/_optimization_smoothing_8hpp__incl.svg index cbac68ef97..0e301f0bcf 100644 --- a/_optimization_smoothing_8hpp__incl.svg +++ b/_optimization_smoothing_8hpp__incl.svg @@ -717,13 +717,13 @@ var sectionId = 'dynsection-0';
- + Node42->Node7 - + Node42->Node34 @@ -738,7 +738,7 @@ var sectionId = 'dynsection-0'; - + Node42->Node43 @@ -753,19 +753,19 @@ var sectionId = 'dynsection-0'; - + Node42->Node49 - + Node43->Node10 - + Node43->Node12 @@ -780,7 +780,7 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 @@ -795,25 +795,25 @@ var sectionId = 'dynsection-0'; - + Node43->Node45 - + Node45->Node9 - + Node45->Node10 - + Node45->Node13 @@ -828,31 +828,31 @@ var sectionId = 'dynsection-0'; - + Node45->Node18 - + Node49->Node10 - + Node49->Node14 - + Node49->Node23 - + Node49->Node45 diff --git a/_optimization_smoothing_8hpp__incl_org.svg b/_optimization_smoothing_8hpp__incl_org.svg index 77278e4912..397d320f25 100644 --- a/_optimization_smoothing_8hpp__incl_org.svg +++ b/_optimization_smoothing_8hpp__incl_org.svg @@ -671,13 +671,13 @@ - + Node42->Node7 - + Node42->Node34 @@ -692,7 +692,7 @@ - + Node42->Node43 @@ -707,19 +707,19 @@ - + Node42->Node49 - + Node43->Node10 - + Node43->Node12 @@ -734,7 +734,7 @@ - + Node43->Node44 @@ -749,25 +749,25 @@ - + Node43->Node45 - + Node45->Node9 - + Node45->Node10 - + Node45->Node13 @@ -782,31 +782,31 @@ - + Node45->Node18 - + Node49->Node10 - + Node49->Node14 - + Node49->Node23 - + Node49->Node45 diff --git a/_paraview_writer_8cpp_source.html b/_paraview_writer_8cpp_source.html index 9bc4385f26..e52eecb6f3 100644 --- a/_paraview_writer_8cpp_source.html +++ b/_paraview_writer_8cpp_source.html @@ -199,7 +199,7 @@
82  std::array<Eigen::MatrixXi, 4> cells;
83 
84  for (size_t i = 0; i < 4; ++i) {
-
85  const auto pt = PrimitiveType(i);
+
85  const auto pt = PrimitiveType(i);
86  if (m_enabled[i]) {
87  // include deleted tuples so that attributes are aligned
88  const auto tuples = mesh.get_all(pt, true);
@@ -212,25 +212,25 @@
95  cells[i](j, d) = 0;
96  }
97  } else {
-
98  int64_t vid = mesh.id(t, PrimitiveType::Vertex);
+
98  int64_t vid = mesh.id(t, PrimitiveType::Vertex);
99  cells[i](j, 0) = vid;
100  if (i > 0) {
-
101  auto t1 = mesh.switch_tuple(t, PrimitiveType::Vertex);
+
101  auto t1 = mesh.switch_tuple(t, PrimitiveType::Vertex);
102 
-
103  cells[i](j, 1) = mesh.id(t1, PrimitiveType::Vertex);
+
103  cells[i](j, 1) = mesh.id(t1, PrimitiveType::Vertex);
104  }
105  if (i > 1) {
-
106  auto t1 = mesh.switch_tuple(t, PrimitiveType::Edge);
-
107  auto t2 = mesh.switch_tuple(t1, PrimitiveType::Vertex);
+
106  auto t1 = mesh.switch_tuple(t, PrimitiveType::Edge);
+
107  auto t2 = mesh.switch_tuple(t1, PrimitiveType::Vertex);
108 
-
109  cells[i](j, 2) = mesh.id(t2, PrimitiveType::Vertex);
+
109  cells[i](j, 2) = mesh.id(t2, PrimitiveType::Vertex);
110  }
111  if (i > 2) {
-
112  auto t1 = mesh.switch_tuple(t, PrimitiveType::Face);
-
113  auto t2 = mesh.switch_tuple(t1, PrimitiveType::Edge);
-
114  auto t3 = mesh.switch_tuple(t2, PrimitiveType::Vertex);
+
112  auto t1 = mesh.switch_tuple(t, PrimitiveType::Face);
+
113  auto t2 = mesh.switch_tuple(t1, PrimitiveType::Edge);
+
114  auto t3 = mesh.switch_tuple(t2, PrimitiveType::Vertex);
115 
-
116  cells[i](j, 3) = mesh.id(t3, PrimitiveType::Vertex);
+
116  cells[i](j, 3) = mesh.id(t3, PrimitiveType::Vertex);
117  }
118  }
119  }
@@ -347,10 +347,10 @@
void write_internal(const std::string &name, const int64_t type, const int64_t stride, const std::vector< double > &val)
- - - - + + + + diff --git a/_paraview_writer_8hpp_source.html b/_paraview_writer_8hpp_source.html index 5430c8047e..9b08a49a2e 100644 --- a/_paraview_writer_8hpp_source.html +++ b/_paraview_writer_8hpp_source.html @@ -175,7 +175,7 @@
58 
59  bool write(const int dim) override { return dim == 0 || m_enabled[dim]; }
60 
-
61  void write_top_simplex_type(const PrimitiveType) override {}
+
61  void write_top_simplex_type(const PrimitiveType) override {}
62  void write_absolute_id(const std::vector<int64_t>& id) override
63  {
64  m_write = m_mm_level == 0;
@@ -261,8 +261,8 @@
void write_capacities(const std::vector< int64_t > &capacities) override
Definition: Accessor.cpp:8
-
io::ParaviewWriter ParaviewWriter
+ diff --git a/_per_simplex_autodiff_function_8cpp_source.html b/_per_simplex_autodiff_function_8cpp_source.html index e33b085d41..a7aee80d2c 100644 --- a/_per_simplex_autodiff_function_8cpp_source.html +++ b/_per_simplex_autodiff_function_8cpp_source.html @@ -126,7 +126,7 @@
9 
11  const Mesh& mesh,
-
12  const PrimitiveType primitive_type,
+
12  const PrimitiveType primitive_type,
13  const attribute::MeshAttributeHandle& variable_attribute_handle)
14  : PerSimplexFunction(mesh, primitive_type, variable_attribute_handle)
15 {}
@@ -199,7 +199,7 @@ -
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:887
+
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:886
Eigen::VectorXd get_gradient(const simplex::Simplex &domain_simplex, const simplex::Simplex &variable_simplex) const override
Eigen::MatrixXd get_hessian(const simplex::Simplex &domain_simplex, const simplex::Simplex &variable_simplex) const override
@@ -220,7 +220,7 @@
std::tuple< std::vector< typename attribute::AccessorBase< T >::ConstMapResult >, int64_t > get_simplex_attributes(const Mesh &mesh, const wmtk::attribute::ConstAccessor< T > &accessor, const PrimitiveType primitive_type, const simplex::Simplex &simplex_in, const std::optional< wmtk::Tuple > &vertex_marker)
get attributes from a simplex
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
- +
const Scalar & getValue() const
Definition: autodiff.h:545
const Hessian & getHessian() const
Definition: autodiff.h:547
const Gradient & getGradient() const
Definition: autodiff.h:546
diff --git a/_per_simplex_autodiff_function_8hpp_source.html b/_per_simplex_autodiff_function_8hpp_source.html index b5d3761af3..0162981f7a 100644 --- a/_per_simplex_autodiff_function_8hpp_source.html +++ b/_per_simplex_autodiff_function_8hpp_source.html @@ -138,7 +138,7 @@
26  std::is_same_v<Scalar, double>); // MTAO: i'm leaving scalar here but is it ever not double?
28  const Mesh& mesh,
-
29  const PrimitiveType primitive_type,
+
29  const PrimitiveType primitive_type,
30  const attribute::MeshAttributeHandle& variable_attribute_handle);
31 
@@ -193,7 +193,7 @@
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
- +
Automatic differentiation scalar with first- and second-order derivatives.
Definition: autodiff.h:501
_Scalar Scalar
Definition: autodiff.h:503
diff --git a/_per_simplex_function_8cpp_source.html b/_per_simplex_function_8cpp_source.html index 70cae02253..11a4006778 100644 --- a/_per_simplex_function_8cpp_source.html +++ b/_per_simplex_function_8cpp_source.html @@ -122,7 +122,7 @@
5 namespace wmtk::function {
7  const Mesh& mesh,
-
8  const PrimitiveType primitive_type,
+
8  const PrimitiveType primitive_type,
9  const attribute::MeshAttributeHandle& variable_attribute_handle)
10  : m_handle(variable_attribute_handle)
11  , m_mesh(mesh)
@@ -143,7 +143,7 @@ -
int64_t get_attribute_dimension(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:922
+
int64_t get_attribute_dimension(const TypedAttributeHandle< T > &handle) const
Definition: Mesh.hpp:921
@@ -154,7 +154,7 @@
PerSimplexFunction(const Mesh &mesh, const PrimitiveType primitive_type, const attribute::MeshAttributeHandle &variable_attribute_handle)
attribute::MeshAttributeHandle m_handle
- + diff --git a/_per_simplex_function_8hpp_source.html b/_per_simplex_function_8hpp_source.html index dbaa16a93d..286ab746df 100644 --- a/_per_simplex_function_8hpp_source.html +++ b/_per_simplex_function_8hpp_source.html @@ -130,7 +130,7 @@
13 public:
15  const Mesh& mesh,
-
16  const PrimitiveType primitive_type,
+
16  const PrimitiveType primitive_type,
17  const attribute::MeshAttributeHandle& variable_attribute_handle);
18  virtual ~PerSimplexFunction() {}
19 
@@ -162,7 +162,7 @@
52  const Mesh& m_mesh;
53 
54 protected:
- +
56 };
57 } // namespace wmtk::function
@@ -184,7 +184,7 @@ - + diff --git a/_point_mesh_8cpp_source.html b/_point_mesh_8cpp_source.html index f7702a3233..ac9e73c2af 100644 --- a/_point_mesh_8cpp_source.html +++ b/_point_mesh_8cpp_source.html @@ -134,7 +134,7 @@
17  initialize(size);
18 }
19 
- +
21 {
22  throw std::runtime_error("Tuple switch: Invalid primitive type");
23 }
@@ -143,14 +143,14 @@
26  // trivial orientation so nothing can happen
27  return true;
28 }
-
29 bool PointMesh::is_boundary(PrimitiveType pt, const Tuple& tuple) const
+
29 bool PointMesh::is_boundary(PrimitiveType pt, const Tuple& tuple) const
30 {
31  switch (pt) {
-
32  case PrimitiveType::Vertex: return is_boundary_vertex(tuple);
- - - - +
32  case PrimitiveType::Vertex: return is_boundary_vertex(tuple);
+ + + +
37  default: break;
38  }
39  throw std::runtime_error(
@@ -170,8 +170,8 @@
53 {
54  set_capacities({count});
- -
57  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
+ +
57  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
58  v_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
59  }
60 }
@@ -184,21 +184,21 @@
67  return Mesh::is_hash_valid(tuple, hash_accessor);
68 }
69 
-
70 int64_t PointMesh::id(const Tuple& tuple, PrimitiveType type) const
+
70 int64_t PointMesh::id(const Tuple& tuple, PrimitiveType type) const
71 {
72  switch (type) {
-
73  case PrimitiveType::Vertex: return tuple.m_global_cid;
- - - - +
73  case PrimitiveType::Vertex: return tuple.m_global_cid;
+ + + +
78  default: throw std::runtime_error("Tuple switch: Invalid primitive type"); break;
79  }
80 }
81 
-
82 Tuple PointMesh::tuple_from_id(const PrimitiveType type, const int64_t gid) const
+
82 Tuple PointMesh::tuple_from_id(const PrimitiveType type, const int64_t gid) const
83 {
-
84  if (type != PrimitiveType::Vertex) {
+
84  if (type != PrimitiveType::Vertex) {
85  throw std::runtime_error("Tuple switch: Invalid primitive type");
86  }
87  return vertex_tuple_from_id(gid);
@@ -214,18 +214,18 @@
97 } // namespace wmtk
-
void set_capacities(std::vector< int64_t > capacities)
+
void set_capacities(std::vector< int64_t > capacities)
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
bool is_hash_valid(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
Definition: Mesh.cpp:60
-
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
+
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
int64_t get_cell_hash_slow(int64_t cell_index) const
Definition: Mesh.cpp:154
-
void reserve_attributes_to_fit()
reserve space for all attributes data types for all dimensional simplices
+
void reserve_attributes_to_fit()
reserve space for all attributes data types for all dimensional simplices
Tuple vertex_tuple_from_id(int64_t id) const
Definition: PointMesh.cpp:4
bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
Definition: PointMesh.cpp:63
Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override
internal function that returns the tuple of requested type, and has the global index cid
Definition: PointMesh.cpp:82
-
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
+
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
Definition: PointMesh.cpp:20
std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
Definition: PointMesh.cpp:90
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: PointMesh.cpp:70
@@ -238,12 +238,12 @@
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
- - - - - - + + + + + + diff --git a/_point_mesh_8hpp_source.html b/_point_mesh_8hpp_source.html index b92f51cf72..0d88dad2dd 100644 --- a/_point_mesh_8hpp_source.html +++ b/_point_mesh_8hpp_source.html @@ -139,10 +139,10 @@
22  PointMesh& operator=(PointMesh&& o) = default;
23 
24  int64_t top_cell_dimension() const override { return 0; }
-
25  [[noreturn]] Tuple switch_tuple(const Tuple& tuple, PrimitiveType type) const override;
+
25  [[noreturn]] Tuple switch_tuple(const Tuple& tuple, PrimitiveType type) const override;
26  bool is_ccw(const Tuple& tuple) const override;
27  using Mesh::is_boundary;
-
28  bool is_boundary(PrimitiveType pt, const Tuple& tuple) const override;
+
28  bool is_boundary(PrimitiveType pt, const Tuple& tuple) const override;
29  bool is_boundary_vertex(const Tuple& tuple) const;
30 
31  void initialize(int64_t count);
@@ -156,9 +156,9 @@
39  const override;
40 
41 protected:
-
42  int64_t id(const Tuple& tuple, PrimitiveType type) const override;
+
42  int64_t id(const Tuple& tuple, PrimitiveType type) const override;
43 
-
51  Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override;
+
51  Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override;
52 };
53 
54 } // namespace wmtk
@@ -172,7 +172,7 @@
bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
Definition: PointMesh.cpp:63
Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override
internal function that returns the tuple of requested type, and has the global index cid
Definition: PointMesh.cpp:82
-
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
+
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
PointMesh(PointMesh &&o)=default
Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
Definition: PointMesh.cpp:20
PointMesh(const PointMesh &o)=delete
@@ -187,7 +187,7 @@
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
- + diff --git a/_position_map_a_m_i_p_s2_d_8cpp_source.html b/_position_map_a_m_i_p_s2_d_8cpp_source.html index c61898fbe6..7009727063 100644 --- a/_position_map_a_m_i_p_s2_d_8cpp_source.html +++ b/_position_map_a_m_i_p_s2_d_8cpp_source.html @@ -153,8 +153,8 @@
36  Vector2<DScalar> uv0;
37  uv0 = utils::as_DScalar<DScalar>(tuple_value);
38 
-
39  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
-
40  constexpr static PrimitiveType PE = PrimitiveType::Edge;
+
39  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
+
40  constexpr static PrimitiveType PE = PrimitiveType::Edge;
41 
42  Eigen::Vector2d uv2 = pos.const_vector_attribute(mesh().switch_tuples(tuple, {PE, PV}));
43  Eigen::Vector2d uv1 = pos.const_vector_attribute(mesh().switch_tuples(tuple, {PV, PE}));
@@ -180,9 +180,9 @@
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
Vector< T, 3 > Vector3
Definition: Types.hpp:23
Vector< T, 2 > Vector2
Definition: Types.hpp:21
- - - + + +
Automatic differentiation scalar with first- and second-order derivatives.
Definition: autodiff.h:501
diff --git a/_primitive_8cpp_source.html b/_primitive_8cpp_source.html index dc9321a500..af11fbf260 100644 --- a/_primitive_8cpp_source.html +++ b/_primitive_8cpp_source.html @@ -121,7 +121,7 @@
4 
5 namespace wmtk {
6 
-
7 Primitive::Primitive(const PrimitiveType& primitive_type, const Tuple& t)
+
7 Primitive::Primitive(const PrimitiveType& primitive_type, const Tuple& t)
8  : m_primitive_type{primitive_type}
9  , m_tuple{t}
10 {}
@@ -130,11 +130,11 @@
13  , m_tuple{simplex.tuple()}
14 {}
-
16  : m_primitive_type{get_primitive_type_from_id(cell.dimension())}
+
16  : m_primitive_type{get_primitive_type_from_id(cell.dimension())}
17  , m_tuple{cell.tuple()}
18 {}
19 
- +
21 {
22  return m_primitive_type;
23 }
@@ -145,23 +145,23 @@
28 
30 {
- +
32 }
34 {
-
35  return Primitive(PrimitiveType::Edge, t);
+
35  return Primitive(PrimitiveType::Edge, t);
36 }
38 {
-
39  return Primitive(PrimitiveType::Face, t);
+
39  return Primitive(PrimitiveType::Face, t);
40 }
42 {
- +
44 }
46 {
- +
48 }
49 
50 bool Primitive::operator==(const Primitive& o) const
@@ -192,13 +192,13 @@
Definition: Accessor.cpp:8
- - - - - - -
PrimitiveType get_primitive_type_from_id(int64_t id)
Get the primitive type corresponding to its unique integer id.
+
constexpr PrimitiveType get_primitive_type_from_id(int8_t id)
Get the primitive type corresponding to its unique integer id.
+ + + + + + diff --git a/_primitive_8hpp_source.html b/_primitive_8hpp_source.html index 6c30350cf9..496e0c1257 100644 --- a/_primitive_8hpp_source.html +++ b/_primitive_8hpp_source.html @@ -126,15 +126,15 @@
9 
10 class Primitive
11 {
- +
14 
15 public:
-
16  Primitive(const PrimitiveType& primitive_type, const Tuple& t);
+
16  Primitive(const PrimitiveType& primitive_type, const Tuple& t);
17  Primitive(const simplex::Simplex& simplex);
18  Primitive(const Cell& cell);
19 
- +
21  const Tuple& tuple() const;
22 
23  static Primitive vertex(const Tuple& t);
@@ -168,7 +168,7 @@
Definition: Accessor.cpp:8
- + diff --git a/_primitive_type_8cpp.html b/_primitive_type_8cpp.html index 4a4270fed2..c2a197255a 100644 --- a/_primitive_type_8cpp.html +++ b/_primitive_type_8cpp.html @@ -136,12 +136,9 @@ - - - - - - + + +

Functions

int64_t wmtk::get_max_primitive_type_id (const std::vector< PrimitiveType > &primitive_types)
 Get the maximum id for a list of primitive types. More...
 
PrimitiveType wmtk::get_primitive_type_from_id (int64_t id)
 Get the primitive type corresponding to its unique integer id. More...
 
int8_t wmtk::get_max_primitive_type_id (const std::vector< PrimitiveType > &primitive_types)
 Get the maximum id for a list of primitive types. More...
 
std::string_view wmtk::primitive_type_name (PrimitiveType t)
 
diff --git a/_primitive_type_8cpp.js b/_primitive_type_8cpp.js index ab46a5ed3a..26fb84f480 100644 --- a/_primitive_type_8cpp.js +++ b/_primitive_type_8cpp.js @@ -1,6 +1,5 @@ var _primitive_type_8cpp = [ - [ "get_max_primitive_type_id", "_primitive_type_8cpp.html#af933d187bc3d9d6398cb239aeab036de", null ], - [ "get_primitive_type_from_id", "_primitive_type_8cpp.html#af31f53a490a16a8d7b0384fa35d8a990", null ], + [ "get_max_primitive_type_id", "_primitive_type_8cpp.html#a71c70b23475a8313d0109f43cae0ca43", null ], [ "primitive_type_name", "_primitive_type_8cpp.html#a339897f6efeb23a997750141f12892ee", null ] ]; \ No newline at end of file diff --git a/_primitive_type_8cpp_source.html b/_primitive_type_8cpp_source.html index 871cf302fe..9bfe2c32fa 100644 --- a/_primitive_type_8cpp_source.html +++ b/_primitive_type_8cpp_source.html @@ -132,33 +132,33 @@
15  "Invalid"};
16 } // namespace
17 
-
18 int64_t get_max_primitive_type_id(const std::vector<PrimitiveType>& primitive_types)
+
18 int8_t get_max_primitive_type_id(const std::vector<PrimitiveType>& primitive_types)
19 {
-
20  int64_t max_id = -1;
+
20  int8_t max_id = -1;
21  for (const auto& t : primitive_types) {
-
22  max_id = std::max(max_id, get_primitive_type_id(t));
+
22  max_id = std::max(max_id, get_primitive_type_id(t));
23  }
24 
25  return max_id;
26 }
27 
- -
29 {
-
30  switch (id) {
-
31  case 0: return PrimitiveType::Vertex;
-
32  case 1: return PrimitiveType::Edge;
-
33  case 2: return PrimitiveType::Face;
-
34  case 3: return PrimitiveType::Tetrahedron;
-
35  case 4: return PrimitiveType::HalfEdge;
-
36  default: break; // just return at the end because compilers can be finicky
-
37  }
-
38 
-
39  return PrimitiveType::Vertex;
-
40 }
+
28 // PrimitiveType get_primitive_type_from_id(int8_t id)
+
29 //{
+
30 // switch (id) {
+
31 // case 0: return PrimitiveType::Vertex;
+
32 // case 1: return PrimitiveType::Edge;
+
33 // case 2: return PrimitiveType::Face;
+
34 // case 3: return PrimitiveType::Tetrahedron;
+
35 // case 4: return PrimitiveType::HalfEdge;
+
36 // default: break; // just return at the end because compilers can be finicky
+
37 // }
+
38 //
+
39 // return PrimitiveType::Vertex;
+
40 //}
41 
- +
43 {
-
44  int64_t id = get_primitive_type_id(t);
+
44  int64_t id = get_primitive_type_id(t);
45  constexpr size_t valid_ids = sizeof(names) / sizeof(std::string) - 1;
46  if (id >= 0 && id <= valid_ids) {
47  return std::string_view(names[id]);
@@ -171,15 +171,9 @@
Definition: Accessor.cpp:8
std::string_view primitive_type_name(PrimitiveType t)
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- - - - - - -
PrimitiveType get_primitive_type_from_id(int64_t id)
Get the primitive type corresponding to its unique integer id.
-
int64_t get_max_primitive_type_id(const std::vector< PrimitiveType > &primitive_types)
Get the maximum id for a list of primitive types.
+
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+
int8_t get_max_primitive_type_id(const std::vector< PrimitiveType > &primitive_types)
Get the maximum id for a list of primitive types.
+ diff --git a/_primitive_type_8hpp.html b/_primitive_type_8hpp.html index 3d2ccc0c72..ca09ca012b 100644 --- a/_primitive_type_8hpp.html +++ b/_primitive_type_8hpp.html @@ -144,22 +144,22 @@ - - +

Enumerations

enum class  wmtk::PrimitiveType {
-  wmtk::Vertex -, wmtk::Edge -, wmtk::Face -, wmtk::Tetrahedron +
enum class  wmtk::PrimitiveType : int8_t {
+  wmtk::Vertex = 0 +, wmtk::Edge = 1 +, wmtk::Face = 2 +, wmtk::Tetrahedron = 3 ,
-  wmtk::HalfEdge +  wmtk::HalfEdge = 4
}
 
 
- - - + + + @@ -172,12 +172,12 @@ - - - - - - + + + + + +

Functions

constexpr int64_t wmtk::get_primitive_type_id (PrimitiveType t)
 Get a unique integer id corresponding to each primitive type. More...
 
constexpr int8_t wmtk::get_primitive_type_id (PrimitiveType t)
 Get a unique integer id corresponding to each primitive type. More...
 
constexpr bool wmtk::operator== (PrimitiveType a, PrimitiveType b)
 
constexpr bool wmtk::operator!= (PrimitiveType a, PrimitiveType b)
 
constexpr bool wmtk::operator>= (PrimitiveType a, PrimitiveType b)
 
PrimitiveType wmtk::get_primitive_type_from_id (int64_t id)
 Get the primitive type corresponding to its unique integer id. More...
 
int64_t wmtk::get_max_primitive_type_id (const std::vector< PrimitiveType > &primitive_types)
 Get the maximum id for a list of primitive types. More...
 
constexpr PrimitiveType wmtk::get_primitive_type_from_id (int8_t id)
 Get the primitive type corresponding to its unique integer id. More...
 
int8_t wmtk::get_max_primitive_type_id (const std::vector< PrimitiveType > &primitive_types)
 Get the maximum id for a list of primitive types. More...
 
std::string_view wmtk::primitive_type_name (PrimitiveType t)
 
diff --git a/_primitive_type_8hpp.js b/_primitive_type_8hpp.js index 73a624b482..dbcd0cfa07 100644 --- a/_primitive_type_8hpp.js +++ b/_primitive_type_8hpp.js @@ -1,15 +1,15 @@ var _primitive_type_8hpp = [ - [ "PrimitiveType", "_primitive_type_8hpp.html#aabd7b1b1c5e0ccce4b6e146c0e7c8c80", [ - [ "Vertex", "_primitive_type_8hpp.html#aabd7b1b1c5e0ccce4b6e146c0e7c8c80ab22b929ba52471a02d18bb3a4e4472e6", null ], - [ "Edge", "_primitive_type_8hpp.html#aabd7b1b1c5e0ccce4b6e146c0e7c8c80ae4a297a0f76119a442c2595ac040673e", null ], - [ "Face", "_primitive_type_8hpp.html#aabd7b1b1c5e0ccce4b6e146c0e7c8c80a8af5861002f3c157f9ba842bba10aa3f", null ], - [ "Tetrahedron", "_primitive_type_8hpp.html#aabd7b1b1c5e0ccce4b6e146c0e7c8c80ae029cf63d8d01a489974f9289b50dc80", null ], - [ "HalfEdge", "_primitive_type_8hpp.html#aabd7b1b1c5e0ccce4b6e146c0e7c8c80a3568e227a2a6b7e8cf8322633d0991f9", null ] + [ "PrimitiveType", "_primitive_type_8hpp.html#af11e67c10a0ab2b57b9bbc3998b62345", [ + [ "Vertex", "_primitive_type_8hpp.html#af11e67c10a0ab2b57b9bbc3998b62345ab22b929ba52471a02d18bb3a4e4472e6", null ], + [ "Edge", "_primitive_type_8hpp.html#af11e67c10a0ab2b57b9bbc3998b62345ae4a297a0f76119a442c2595ac040673e", null ], + [ "Face", "_primitive_type_8hpp.html#af11e67c10a0ab2b57b9bbc3998b62345a8af5861002f3c157f9ba842bba10aa3f", null ], + [ "Tetrahedron", "_primitive_type_8hpp.html#af11e67c10a0ab2b57b9bbc3998b62345ae029cf63d8d01a489974f9289b50dc80", null ], + [ "HalfEdge", "_primitive_type_8hpp.html#af11e67c10a0ab2b57b9bbc3998b62345a3568e227a2a6b7e8cf8322633d0991f9", null ] ] ], - [ "get_max_primitive_type_id", "_primitive_type_8hpp.html#af933d187bc3d9d6398cb239aeab036de", null ], - [ "get_primitive_type_from_id", "_primitive_type_8hpp.html#af31f53a490a16a8d7b0384fa35d8a990", null ], - [ "get_primitive_type_id", "_primitive_type_8hpp.html#a9e8fdc205b7ba54f122eec3761706a8e", null ], + [ "get_max_primitive_type_id", "_primitive_type_8hpp.html#a71c70b23475a8313d0109f43cae0ca43", null ], + [ "get_primitive_type_from_id", "_primitive_type_8hpp.html#a3b08a5d7fb42f02c54bae85758b39f59", null ], + [ "get_primitive_type_id", "_primitive_type_8hpp.html#a5cf45c152e856196bb734c6f48919a24", null ], [ "operator!=", "_primitive_type_8hpp.html#a3075bfd0661202be17cc2ada8e8f4791", null ], [ "operator<", "_primitive_type_8hpp.html#a856de97c0666837a63748fea7e3f5873", null ], [ "operator<=", "_primitive_type_8hpp.html#a0718510ab8656a7188b524d3c0f8a0ae", null ], diff --git a/_primitive_type_8hpp_source.html b/_primitive_type_8hpp_source.html index a950749ac8..41c2748258 100644 --- a/_primitive_type_8hpp_source.html +++ b/_primitive_type_8hpp_source.html @@ -123,72 +123,66 @@
6 
7 namespace wmtk {
8 
- +
9 enum class PrimitiveType : int8_t { Vertex = 0, Edge = 1, Face = 2, Tetrahedron = 3, HalfEdge = 4 };
10 
- +
17 constexpr inline int8_t get_primitive_type_id(PrimitiveType t)
18 {
-
19  switch (t) {
-
20  case PrimitiveType::Vertex: return 0;
-
21  case PrimitiveType::Edge: return 1;
-
22  case PrimitiveType::Face: return 2;
-
23  case PrimitiveType::Tetrahedron: return 3;
-
24  case PrimitiveType::HalfEdge: return 4;
-
25  default: break; // just return at the end because compilers can be finicky
-
26  }
-
27 
-
28  return -2;
+
19  return static_cast<int8_t>(t);
+
20 }
+
21 
+
22 constexpr inline bool operator==(PrimitiveType a, PrimitiveType b)
+
23 {
+ +
25 }
+
26 constexpr inline bool operator!=(PrimitiveType a, PrimitiveType b)
+
27 {
+
29 }
-
30 
- -
32 {
- -
34 }
- -
36 {
- -
38 }
- -
40 {
- -
42 }
- -
44 {
- -
46 }
- -
48 {
- -
50 }
- +
30 constexpr inline bool operator<(PrimitiveType a, PrimitiveType b)
+
31 {
+ +
33 }
+
34 constexpr inline bool operator>(PrimitiveType a, PrimitiveType b)
+
35 {
+ +
37 }
+
38 constexpr inline bool operator<=(PrimitiveType a, PrimitiveType b)
+
39 {
+ +
41 }
+
42 constexpr inline bool operator>=(PrimitiveType a, PrimitiveType b)
+
43 {
+ +
45 }
+
46 
+
47 
+
51 constexpr inline PrimitiveType get_primitive_type_from_id(int8_t id)
52 {
- +
53  return static_cast<PrimitiveType>(id);
54 }
55 
-
56 
- -
61 
-
68 int64_t get_max_primitive_type_id(const std::vector<PrimitiveType>& primitive_types);
-
69 
-
70 std::string_view primitive_type_name(PrimitiveType t);
-
71 
-
72 } // namespace wmtk
+
62 int8_t get_max_primitive_type_id(const std::vector<PrimitiveType>& primitive_types);
+
63 
+
64 std::string_view primitive_type_name(PrimitiveType t);
+
65 
+
66 } // namespace wmtk
Definition: Accessor.cpp:8
-
constexpr bool operator<=(PrimitiveType a, PrimitiveType b)
-
constexpr bool operator>=(PrimitiveType a, PrimitiveType b)
-
constexpr bool operator!=(PrimitiveType a, PrimitiveType b)
-
constexpr bool operator==(PrimitiveType a, PrimitiveType b)
+
constexpr bool operator<=(PrimitiveType a, PrimitiveType b)
+
constexpr bool operator>=(PrimitiveType a, PrimitiveType b)
+
constexpr bool operator!=(PrimitiveType a, PrimitiveType b)
+
constexpr bool operator==(PrimitiveType a, PrimitiveType b)
std::string_view primitive_type_name(PrimitiveType t)
-
constexpr bool operator<(PrimitiveType a, PrimitiveType b)
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- - - - - - -
constexpr bool operator>(PrimitiveType a, PrimitiveType b)
-
PrimitiveType get_primitive_type_from_id(int64_t id)
Get the primitive type corresponding to its unique integer id.
-
int64_t get_max_primitive_type_id(const std::vector< PrimitiveType > &primitive_types)
Get the maximum id for a list of primitive types.
+
constexpr PrimitiveType get_primitive_type_from_id(int8_t id)
Get the primitive type corresponding to its unique integer id.
+
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+
int8_t get_max_primitive_type_id(const std::vector< PrimitiveType > &primitive_types)
Get the maximum id for a list of primitive types.
+
constexpr bool operator<(PrimitiveType a, PrimitiveType b)
+ + + + + + +
constexpr bool operator>(PrimitiveType a, PrimitiveType b)
diff --git a/_project_operation_8cpp_source.html b/_project_operation_8cpp_source.html index 27ba6a3f32..8edf4416dd 100644 --- a/_project_operation_8cpp_source.html +++ b/_project_operation_8cpp_source.html @@ -128,7 +128,7 @@
11  std::shared_ptr<Operation> main_op,
12  const TypedAttributeHandle<double>& coordinates,
13  const TypedAttributeHandle<int64_t>& proj_tag,
-
14  wmtk::PrimitiveType proj_type,
+
14  wmtk::PrimitiveType proj_type,
15  int64_t proj_value)
16  : AttributesUpdate(m)
17  , m_main_op(main_op)
@@ -154,7 +154,7 @@
38  mesh(),
39  simplex::Simplex(proj_type, f),
- +
41 
42  assert(tmp.size() == dim);
43  for (int64_t j = 0; j < tmp.size(); ++j) {
@@ -200,7 +200,7 @@
std::vector< Tuple > get_all(PrimitiveType type) const
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index.
Definition: Mesh.cpp:22
-
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
const Mesh & mesh() const
Definition: Operation.hpp:45
@@ -217,8 +217,8 @@
std::vector< Tuple > faces_single_dimension_tuples(const Mesh &mesh, const Simplex &simplex, const PrimitiveType face_type)
SimplexCollection faces(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Returns all faces of a simplex.
Definition: faces.cpp:10
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
- - + + diff --git a/_project_operation_8hpp__incl.md5 b/_project_operation_8hpp__incl.md5 index 30e040cea7..a5ddca52e0 100644 --- a/_project_operation_8hpp__incl.md5 +++ b/_project_operation_8hpp__incl.md5 @@ -1 +1 @@ -480db70fa7f4b72cf13a4886aea2b636 \ No newline at end of file +4c1a4716cb9cbf238fd49eb797198880 \ No newline at end of file diff --git a/_project_operation_8hpp__incl.svg b/_project_operation_8hpp__incl.svg index 099c113e49..cba6430e5f 100644 --- a/_project_operation_8hpp__incl.svg +++ b/_project_operation_8hpp__incl.svg @@ -848,13 +848,13 @@ var sectionId = 'dynsection-0';
- + Node45->Node26 - + Node45->Node37 @@ -869,7 +869,7 @@ var sectionId = 'dynsection-0'; - + Node45->Node46 @@ -884,19 +884,19 @@ var sectionId = 'dynsection-0'; - + Node45->Node52 - + Node46->Node29 - + Node46->Node30 @@ -911,7 +911,7 @@ var sectionId = 'dynsection-0'; - + Node46->Node47 @@ -926,7 +926,7 @@ var sectionId = 'dynsection-0'; - + Node46->Node48 @@ -941,25 +941,25 @@ var sectionId = 'dynsection-0'; - + Node46->Node51 - + Node48->Node11 - + Node48->Node28 - + Node48->Node29 @@ -974,43 +974,43 @@ var sectionId = 'dynsection-0'; - + Node48->Node33 - + Node51->Node37 - + Node51->Node46 - + Node52->Node9 - + Node52->Node17 - + Node52->Node29 - + Node52->Node48 diff --git a/_project_operation_8hpp__incl_org.svg b/_project_operation_8hpp__incl_org.svg index 73fdf14084..519a9cb5fe 100644 --- a/_project_operation_8hpp__incl_org.svg +++ b/_project_operation_8hpp__incl_org.svg @@ -802,13 +802,13 @@ - + Node45->Node26 - + Node45->Node37 @@ -823,7 +823,7 @@ - + Node45->Node46 @@ -838,19 +838,19 @@ - + Node45->Node52 - + Node46->Node29 - + Node46->Node30 @@ -865,7 +865,7 @@ - + Node46->Node47 @@ -880,7 +880,7 @@ - + Node46->Node48 @@ -895,25 +895,25 @@ - + Node46->Node51 - + Node48->Node11 - + Node48->Node28 - + Node48->Node29 @@ -928,43 +928,43 @@ - + Node48->Node33 - + Node51->Node37 - + Node51->Node46 - + Node52->Node9 - + Node52->Node17 - + Node52->Node29 - + Node52->Node48 diff --git a/_project_operation_8hpp_source.html b/_project_operation_8hpp_source.html index 6d04c5c39d..b8ad0d94e2 100644 --- a/_project_operation_8hpp_source.html +++ b/_project_operation_8hpp_source.html @@ -134,11 +134,11 @@
17  std::shared_ptr<wmtk::operations::Operation> main_op,
18  const TypedAttributeHandle<double>& coordinates,
19  const TypedAttributeHandle<int64_t>& proj_tag,
-
20  wmtk::PrimitiveType proj_type,
+
20  wmtk::PrimitiveType proj_type,
21  int64_t proj_value);
22 
23  std::vector<simplex::Simplex> execute(const simplex::Simplex& simplex) override;
-
24  PrimitiveType primitive_type() const override { return m_main_op->primitive_type(); }
+
24  PrimitiveType primitive_type() const override { return m_main_op->primitive_type(); }
25 
26 
27 private:
@@ -165,7 +165,7 @@ - + diff --git a/_raw_simplex_8cpp_source.html b/_raw_simplex_8cpp_source.html index 755caa12f6..3268e34d55 100644 --- a/_raw_simplex_8cpp_source.html +++ b/_raw_simplex_8cpp_source.html @@ -132,7 +132,7 @@
15 
16  for (size_t i = 0; i < vertices.size(); ++i) {
17  m_vertices.emplace_back(
-
18  mesh.is_valid(vertices[i], hash_accessor) ? mesh.id(vertices[i], PrimitiveType::Vertex)
+
18  mesh.is_valid(vertices[i], hash_accessor) ? mesh.id(vertices[i], PrimitiveType::Vertex)
19  : -1);
20  }
21 
@@ -148,9 +148,9 @@
31 RawSimplex::RawSimplex(const Mesh& mesh, const Simplex& simplex)
32  : RawSimplex(
33  mesh,
-
34  simplex.primitive_type() == PrimitiveType::Vertex
+
34  simplex.primitive_type() == PrimitiveType::Vertex
35  ? std::vector<Tuple>{simplex.tuple()}
- +
37 {}
38 
39 int64_t RawSimplex::dimension() const
@@ -202,7 +202,7 @@
86 
87  int64_t excluded_id =
-
88  mesh.is_valid(vertex, hash_accessor) ? mesh.id(vertex, PrimitiveType::Vertex) : -1;
+
88  mesh.is_valid(vertex, hash_accessor) ? mesh.id(vertex, PrimitiveType::Vertex) : -1;
89 
90  return opposite_face(excluded_id);
91 }
@@ -305,8 +305,8 @@
std::vector< Tuple > vertices(const Mesh &m, const Simplex &simplex)
std::vector< Tuple > faces_single_dimension_tuples(const Mesh &mesh, const Simplex &simplex, const PrimitiveType face_type)
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
- - + + diff --git a/_raw_simplex_collection_8cpp_source.html b/_raw_simplex_collection_8cpp_source.html index c079a22b86..71153b3698 100644 --- a/_raw_simplex_collection_8cpp_source.html +++ b/_raw_simplex_collection_8cpp_source.html @@ -171,7 +171,7 @@
54 
56  const Mesh& mesh,
-
57  const PrimitiveType& ptype,
+
57  const PrimitiveType& ptype,
58  const std::vector<Tuple>& tuple_vec)
59 {
60  m_simplices.reserve(m_simplices.size() + tuple_vec.size());
@@ -263,7 +263,7 @@
const std::vector< Simplex > & simplex_vector() const
Return const reference to the simplex vector.
- + diff --git a/_raw_simplex_collection_8hpp_source.html b/_raw_simplex_collection_8hpp_source.html index ac07f0c617..744fb11279 100644 --- a/_raw_simplex_collection_8hpp_source.html +++ b/_raw_simplex_collection_8hpp_source.html @@ -145,7 +145,7 @@
39 
40  void add(const SimplexCollection& simplex_collection);
41 
-
42  void add(const Mesh& mesh, const PrimitiveType& ptype, const std::vector<Tuple>& tuple_vec);
+
42  void add(const Mesh& mesh, const PrimitiveType& ptype, const std::vector<Tuple>& tuple_vec);
43 
47  void sort_and_clean();
48 
@@ -198,7 +198,7 @@ - + diff --git a/_regular_space_8cpp_source.html b/_regular_space_8cpp_source.html index f24f2784f0..916d840bad 100644 --- a/_regular_space_8cpp_source.html +++ b/_regular_space_8cpp_source.html @@ -135,13 +135,13 @@
18 {
19 public:
20  Accessor<int64_t> m_accessor;
- +
22  int64_t m_val;
23 
25  Mesh& m,
26  const attribute::MeshAttributeHandle& attribute,
-
27  PrimitiveType ptype,
+
27  PrimitiveType ptype,
28  int64_t val)
29  : m_accessor(m.create_accessor<int64_t>(attribute))
30  , m_ptype(ptype)
@@ -187,7 +187,7 @@
70  // make sure tag vector is complete and sorted in descending order
71  for (size_t i = 0; i < tag_attributes.size(); ++i) {
72  TagAttribute& a = tag_attributes[i];
-
73  if (get_primitive_type_id(a.m_ptype) != m_mesh.top_cell_dimension() - i) {
+
73  if (get_primitive_type_id(a.m_ptype) != m_mesh.top_cell_dimension() - i) {
74  log_and_throw_error("Tag array must be sorted in descending order starting with "
75  "the top simplex type up to vertex.");
76  }
@@ -202,8 +202,8 @@
85  continue; // t is not tagged
86  }
87 
-
88  const PrimitiveType face_ptype =
- +
88  const PrimitiveType face_ptype =
+
91  m_mesh,
92  simplex::Simplex(ta.m_ptype, t),
@@ -228,8 +228,8 @@
111  continue; // t is tagged
112  }
113 
-
114  const PrimitiveType face_ptype =
- +
114  const PrimitiveType face_ptype =
+
117  m_mesh,
118  simplex::Simplex(ta.m_ptype, t),
@@ -251,14 +251,14 @@
134  }
135  }
136 
- +
138  log_and_throw_error("Regular space component not implemented for TetMeshes.");
139  }
140 
141  // split simplex because all its faces are tagged
142  Scheduler scheduler;
143  switch (ta.m_ptype) {
-
144  case PrimitiveType::Edge: { // edge split
+
144  case PrimitiveType::Edge: { // edge split
145  EdgeSplit op_split(m_mesh);
146  op_split.add_invariant(std::make_shared<TodoInvariant>(
147  m_mesh,
@@ -289,7 +289,7 @@
172 
173  break;
174  }
-
175  case PrimitiveType::Face: { // face split
+
175  case PrimitiveType::Face: { // face split
176  composite::TriFaceSplit op_face_split(m_mesh);
177  op_face_split.add_invariant(std::make_shared<TodoInvariant>(
178  m_mesh,
@@ -323,7 +323,7 @@
206 
207  break;
208  }
- +
210  log_and_throw_error("Regular space component not implemented for TetMeshes.");
211  }
212  default: log_and_throw_error("unknown primitive type: {}", ta.m_ptype); break;
@@ -343,7 +343,7 @@
attribute::MeshAttributeHandle register_attribute(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
std::vector< Tuple > get_all(PrimitiveType type) const
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index.
Definition: Mesh.cpp:22
-
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
PrimitiveType top_simplex_type() const
Definition: Mesh.cpp:13
virtual int64_t top_cell_dimension() const =0
@@ -377,13 +377,13 @@
std::vector< Tuple > faces_single_dimension_tuples(const Mesh &mesh, const Simplex &simplex, const PrimitiveType face_type)
SimplexCollection faces(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Returns all faces of a simplex.
Definition: faces.cpp:10
+
constexpr PrimitiveType get_primitive_type_from_id(int8_t id)
Get the primitive type corresponding to its unique integer id.
void log_and_throw_error(const std::string &msg)
Definition: Logger.cpp:93
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- - - - -
PrimitiveType get_primitive_type_from_id(int64_t id)
Get the primitive type corresponding to its unique integer id.
+
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+ + + + diff --git a/_scheduler_8hpp__incl.md5 b/_scheduler_8hpp__incl.md5 index 0ee4a40d50..d56f20fb93 100644 --- a/_scheduler_8hpp__incl.md5 +++ b/_scheduler_8hpp__incl.md5 @@ -1 +1 @@ -e473bfd25fdd306488c7970714f9283a \ No newline at end of file +3a01143b44fcf40061d7ec166ea6b722 \ No newline at end of file diff --git a/_scheduler_8hpp__incl.svg b/_scheduler_8hpp__incl.svg index 5f62f72aed..f4afa30c63 100644 --- a/_scheduler_8hpp__incl.svg +++ b/_scheduler_8hpp__incl.svg @@ -825,13 +825,13 @@ var sectionId = 'dynsection-0';
- + Node44->Node25 - + Node44->Node36 @@ -846,7 +846,7 @@ var sectionId = 'dynsection-0'; - + Node44->Node45 @@ -861,19 +861,19 @@ var sectionId = 'dynsection-0'; - + Node44->Node51 - + Node45->Node28 - + Node45->Node29 @@ -888,7 +888,7 @@ var sectionId = 'dynsection-0'; - + Node45->Node46 @@ -903,7 +903,7 @@ var sectionId = 'dynsection-0'; - + Node45->Node47 @@ -918,25 +918,25 @@ var sectionId = 'dynsection-0'; - + Node45->Node50 - + Node47->Node10 - + Node47->Node27 - + Node47->Node28 @@ -951,43 +951,43 @@ var sectionId = 'dynsection-0'; - + Node47->Node32 - + Node50->Node36 - + Node50->Node45 - + Node51->Node8 - + Node51->Node16 - + Node51->Node28 - + Node51->Node47 @@ -1002,7 +1002,7 @@ var sectionId = 'dynsection-0'; - + Node51->Node52 diff --git a/_scheduler_8hpp__incl_org.svg b/_scheduler_8hpp__incl_org.svg index ca3d265d02..b2aa947351 100644 --- a/_scheduler_8hpp__incl_org.svg +++ b/_scheduler_8hpp__incl_org.svg @@ -779,13 +779,13 @@ - + Node44->Node25 - + Node44->Node36 @@ -800,7 +800,7 @@ - + Node44->Node45 @@ -815,19 +815,19 @@ - + Node44->Node51 - + Node45->Node28 - + Node45->Node29 @@ -842,7 +842,7 @@ - + Node45->Node46 @@ -857,7 +857,7 @@ - + Node45->Node47 @@ -872,25 +872,25 @@ - + Node45->Node50 - + Node47->Node10 - + Node47->Node27 - + Node47->Node28 @@ -905,43 +905,43 @@ - + Node47->Node32 - + Node50->Node36 - + Node50->Node45 - + Node51->Node8 - + Node51->Node16 - + Node51->Node28 - + Node51->Node47 @@ -956,7 +956,7 @@ - + Node51->Node52 diff --git a/_simplex_8hpp_source.html b/_simplex_8hpp_source.html index 890a44a4b5..76f28dc629 100644 --- a/_simplex_8hpp_source.html +++ b/_simplex_8hpp_source.html @@ -124,11 +124,11 @@
7 
8 class Simplex
9 {
- +
12 
13 public:
-
14  Simplex(const PrimitiveType& ptype, const Tuple& t)
+
14  Simplex(const PrimitiveType& ptype, const Tuple& t)
15  : m_primitive_type{ptype}
16  , m_tuple{t}
17  {}
@@ -137,14 +137,14 @@
20  Simplex& operator=(const Simplex&) = default;
21  Simplex& operator=(Simplex&&) = default;
22 
- -
24  int64_t dimension() const { return get_primitive_type_id(m_primitive_type); }
+ +
24  int64_t dimension() const { return get_primitive_type_id(m_primitive_type); }
25  const Tuple& tuple() const { return m_tuple; }
26 
-
27  static Simplex vertex(const Tuple& t) { return Simplex(PrimitiveType::Vertex, t); }
-
28  static Simplex edge(const Tuple& t) { return Simplex(PrimitiveType::Edge, t); }
-
29  static Simplex face(const Tuple& t) { return Simplex(PrimitiveType::Face, t); }
-
30  static Simplex tetrahedron(const Tuple& t) { return Simplex(PrimitiveType::Tetrahedron, t); }
+
27  static Simplex vertex(const Tuple& t) { return Simplex(PrimitiveType::Vertex, t); }
+
28  static Simplex edge(const Tuple& t) { return Simplex(PrimitiveType::Edge, t); }
+
29  static Simplex face(const Tuple& t) { return Simplex(PrimitiveType::Face, t); }
+
30  static Simplex tetrahedron(const Tuple& t) { return Simplex(PrimitiveType::Tetrahedron, t); }
31 
32  bool operator==(const Simplex& o) const;
33  bool operator<(const Simplex& o) const;
@@ -171,12 +171,12 @@
static Simplex face(const Tuple &t)
Definition: Simplex.hpp:29
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- - - - - +
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+ + + + + diff --git a/_simplex_collection_8cpp_source.html b/_simplex_collection_8cpp_source.html index f7e746ac88..2b84765ea5 100644 --- a/_simplex_collection_8cpp_source.html +++ b/_simplex_collection_8cpp_source.html @@ -122,7 +122,7 @@
5 namespace wmtk::simplex {
6 
7 
-
8 std::vector<Simplex> SimplexCollection::simplex_vector(const PrimitiveType& ptype) const
+
8 std::vector<Simplex> SimplexCollection::simplex_vector(const PrimitiveType& ptype) const
9 {
10  std::vector<Simplex> simplices;
11  simplices.reserve(m_simplices.size() / 3); // giving the vector some (hopefully) resonable size
@@ -142,7 +142,7 @@
25  return m_mesh;
26 }
27 
- +
29 {
30  std::vector<Tuple> tuples;
31  tuples.reserve(m_simplices.size() / 3); // giving the vector some (hopefully) resonable size
@@ -168,7 +168,7 @@
51  m_simplices.insert(m_simplices.end(), s.begin(), s.end());
52 }
53 
-
54 void SimplexCollection::add(const PrimitiveType& ptype, const std::vector<Tuple>& tuple_vec)
+
54 void SimplexCollection::add(const PrimitiveType& ptype, const std::vector<Tuple>& tuple_vec)
55 {
56  m_simplices.reserve(m_simplices.size() + tuple_vec.size());
57 
@@ -274,7 +274,7 @@ - + diff --git a/_simplex_collection_8hpp_source.html b/_simplex_collection_8hpp_source.html index fea21861f4..2d312745b2 100644 --- a/_simplex_collection_8hpp_source.html +++ b/_simplex_collection_8hpp_source.html @@ -135,17 +135,17 @@
18  {}
19 
23  const std::vector<Simplex>& simplex_vector() const { return m_simplices; }
-
27  std::vector<Simplex> simplex_vector(const PrimitiveType& ptype) const;
+
27  std::vector<Simplex> simplex_vector(const PrimitiveType& ptype) const;
28 
29  const Mesh& mesh() const;
30 
-
34  std::vector<Tuple> simplex_vector_tuples(PrimitiveType ptype) const;
+
34  std::vector<Tuple> simplex_vector_tuples(PrimitiveType ptype) const;
35 
41  void add(const Simplex& simplex);
42 
43  void add(const SimplexCollection& simplex_collection);
44 
-
45  void add(const PrimitiveType& ptype, const std::vector<Tuple>& tuple_vec);
+
45  void add(const PrimitiveType& ptype, const std::vector<Tuple>& tuple_vec);
49  void sort_and_clean();
50  void sort();
51 
@@ -216,7 +216,7 @@ - + diff --git a/_simplex_comparisons_8cpp_source.html b/_simplex_comparisons_8cpp_source.html index 9a8dcf3ee4..e9960039de 100644 --- a/_simplex_comparisons_8cpp_source.html +++ b/_simplex_comparisons_8cpp_source.html @@ -128,15 +128,15 @@
12  const Mesh& m,
13  const Tuple& a,
-
14  PrimitiveType a_pt,
+
14  PrimitiveType a_pt,
15  const Tuple& b,
-
16  PrimitiveType b_pt)
+
16  PrimitiveType b_pt)
17 {
18  return a_pt == b_pt && equal(m, a_pt, a, b);
19 }
21  const Mesh& m,
-
22  PrimitiveType primitive_type,
+
22  PrimitiveType primitive_type,
23  const Tuple& a,
24  const Tuple& b)
25 {
@@ -150,9 +150,9 @@
34  const Mesh& m,
35  const Tuple& a,
-
36  PrimitiveType a_pt,
+
36  PrimitiveType a_pt,
37  const Tuple& b,
-
38  PrimitiveType b_pt)
+
38  PrimitiveType b_pt)
39 {
40  if (a_pt == b_pt) {
41  return less(m, a_pt, a, b);
@@ -162,7 +162,7 @@
45 }
47  const Mesh& m,
-
48  PrimitiveType primitive_type,
+
48  PrimitiveType primitive_type,
49  const Tuple& a,
50  const Tuple& b)
51 {
@@ -180,7 +180,7 @@
static bool equal(const Mesh &m, const Simplex &s0, const Simplex &s1)
static bool less(const Mesh &m, const Simplex &s0, const Simplex &s1)
- + diff --git a/_simplex_comparisons_8hpp_source.html b/_simplex_comparisons_8hpp_source.html index f2f5f4175c..1025ed504e 100644 --- a/_simplex_comparisons_8hpp_source.html +++ b/_simplex_comparisons_8hpp_source.html @@ -144,7 +144,7 @@
27  * @return true if two simplices are the same
28  * */
29  static bool
-
30  equal(const Mesh& m, const Tuple& a, PrimitiveType a_pt, const Tuple& b, PrimitiveType b_pt);
+
30  equal(const Mesh& m, const Tuple& a, PrimitiveType a_pt, const Tuple& b, PrimitiveType b_pt);
31 
32  /* @brief checks if simplex objects of the same dimension represent the same simplex
33  * @param m the mesh these simplices belong to
@@ -153,7 +153,7 @@
36  * @param b the second simplex compared's tuple
37  * @return true if two simplices are the same
38  * */
-
39  static bool equal(const Mesh& m, PrimitiveType primitive_type, const Tuple& a, const Tuple& b);
+
39  static bool equal(const Mesh& m, PrimitiveType primitive_type, const Tuple& a, const Tuple& b);
40 
41 
42  /* @brief checks if simplex objects are less than one another
@@ -178,7 +178,7 @@
61  * @return true if two simplices are the same
62  * */
63  static bool
-
64  less(const Mesh& m, const Tuple& a, PrimitiveType a_pt, const Tuple& b, PrimitiveType b_pt);
+
64  less(const Mesh& m, const Tuple& a, PrimitiveType a_pt, const Tuple& b, PrimitiveType b_pt);
65  /* @brief checks if simplex objects are less than one another
66  *
67  * uses lexicgoraphic order of (primtiive type, id)
@@ -189,7 +189,7 @@
72  * @param b the second simplex compared's tuple
73  * @return true if two simplices are the same
74  * */
-
75  static bool less(const Mesh& m, PrimitiveType primitive_type, const Tuple& a, const Tuple& b);
+
75  static bool less(const Mesh& m, PrimitiveType primitive_type, const Tuple& a, const Tuple& b);
76 };
77 } // namespace wmtk::simplex::utils
@@ -202,7 +202,7 @@
static bool less(const Mesh &m, const Simplex &s0, const Simplex &s1)
Definition: Accessor.cpp:8
- + diff --git a/_simplex_getter_8cpp__incl.md5 b/_simplex_getter_8cpp__incl.md5 index 2ae72ce86a..a6848e0bb9 100644 --- a/_simplex_getter_8cpp__incl.md5 +++ b/_simplex_getter_8cpp__incl.md5 @@ -1 +1 @@ -5c322bf4b336e9f8c7f331bbf6bedbd3 \ No newline at end of file +34a27c9be9e7f35a8d63971ac4ef2cd2 \ No newline at end of file diff --git a/_simplex_getter_8cpp__incl.svg b/_simplex_getter_8cpp__incl.svg index 73491562d7..3608071f63 100644 --- a/_simplex_getter_8cpp__incl.svg +++ b/_simplex_getter_8cpp__incl.svg @@ -559,7 +559,7 @@ var sectionId = 'dynsection-0';
- + Node40->Node10 @@ -574,7 +574,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node32 diff --git a/_simplex_getter_8cpp__incl_org.svg b/_simplex_getter_8cpp__incl_org.svg index 836ef2fa20..e9d862d3f9 100644 --- a/_simplex_getter_8cpp__incl_org.svg +++ b/_simplex_getter_8cpp__incl_org.svg @@ -513,7 +513,7 @@ - + Node40->Node10 @@ -528,7 +528,7 @@ - + Node40->Node32 diff --git a/_simplex_getter_8cpp_source.html b/_simplex_getter_8cpp_source.html index 6b20738655..303c39094e 100644 --- a/_simplex_getter_8cpp_source.html +++ b/_simplex_getter_8cpp_source.html @@ -126,7 +126,7 @@
10  const Mesh& mesh,
11  const wmtk::attribute::ConstAccessor<T>& accessor,
-
12  const PrimitiveType primitive_type,
+
12  const PrimitiveType primitive_type,
13  const simplex::Simplex& simplex_in,
14  const std::optional<wmtk::Tuple>& vertex_marker)
15 {
@@ -176,7 +176,7 @@
60  const Mesh& mesh,
-
62  const PrimitiveType primitive_type,
+
62  const PrimitiveType primitive_type,
63  const simplex::Simplex& simplex,
64  const std::optional<wmtk::Tuple>& vertex_marker);
65 
@@ -184,7 +184,7 @@
68  const Mesh& mesh,
-
70  const PrimitiveType primitive_type,
+
70  const PrimitiveType primitive_type,
71  const simplex::Simplex& simplex,
72  const std::optional<wmtk::Tuple>& vertex_marker);
73 
@@ -192,7 +192,7 @@
76  const Mesh& mesh,
-
78  const PrimitiveType primitive_type,
+
78  const PrimitiveType primitive_type,
79  const simplex::Simplex& simplex,
80  const std::optional<wmtk::Tuple>& vertex_marker);
81 
@@ -201,14 +201,14 @@
85  const Mesh& mesh,
-
87  const PrimitiveType primitive_type,
+
87  const PrimitiveType primitive_type,
88  const simplex::Simplex& simplex,
89  const std::optional<wmtk::Tuple>& vertex_marker);
90 } // namespace wmtk::function::utils
virtual bool is_ccw(const Tuple &tuple) const =0
TODO this needs dimension?
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
A TupleAccessor that can only read from attributes.
@@ -223,7 +223,7 @@
std::tuple< std::vector< typename attribute::AccessorBase< T >::ConstMapResult >, int64_t > get_simplex_attributes(const Mesh &mesh, const wmtk::attribute::ConstAccessor< T > &accessor, const PrimitiveType primitive_type, const simplex::Simplex &simplex_in, const std::optional< wmtk::Tuple > &vertex_marker)
get attributes from a simplex
std::vector< Tuple > faces_single_dimension_tuples(const Mesh &mesh, const Simplex &simplex, const PrimitiveType face_type)
SimplexCollection faces(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Returns all faces of a simplex.
Definition: faces.cpp:10
- + diff --git a/_simplex_getter_8hpp__incl.md5 b/_simplex_getter_8hpp__incl.md5 index 0785f17cb8..531225a66b 100644 --- a/_simplex_getter_8hpp__incl.md5 +++ b/_simplex_getter_8hpp__incl.md5 @@ -1 +1 @@ -673decfb9f5f5b1bb6b7b76aefc3d97a \ No newline at end of file +056e5544367ff129362e3690aae46929 \ No newline at end of file diff --git a/_simplex_getter_8hpp__incl.svg b/_simplex_getter_8hpp__incl.svg index de58133ef2..a830fcff1f 100644 --- a/_simplex_getter_8hpp__incl.svg +++ b/_simplex_getter_8hpp__incl.svg @@ -811,13 +811,13 @@ var sectionId = 'dynsection-0';
- + Node39->Node9 - + Node39->Node31 @@ -832,7 +832,7 @@ var sectionId = 'dynsection-0'; - + Node39->Node40 @@ -847,19 +847,19 @@ var sectionId = 'dynsection-0'; - + Node39->Node46 - + Node40->Node12 - + Node40->Node14 @@ -874,7 +874,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node41 @@ -889,7 +889,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node42 @@ -904,31 +904,31 @@ var sectionId = 'dynsection-0'; - + Node40->Node45 - + Node42->Node11 - + Node42->Node12 - + Node42->Node15 - + Node42->Node19 @@ -943,13 +943,13 @@ var sectionId = 'dynsection-0'; - + Node42->Node43 - + Node43->Node15 @@ -964,43 +964,43 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 - + Node45->Node31 - + Node45->Node40 - + Node46->Node6 - + Node46->Node12 - + Node46->Node24 - + Node46->Node42 @@ -1015,7 +1015,7 @@ var sectionId = 'dynsection-0'; - + Node46->Node47 @@ -1030,31 +1030,31 @@ var sectionId = 'dynsection-0'; - + Node46->Node48 - + Node48->Node14 - + Node48->Node31 - + Node48->Node40 - + Node48->Node46 diff --git a/_simplex_getter_8hpp__incl_org.svg b/_simplex_getter_8hpp__incl_org.svg index 4dec7b153c..558e05a441 100644 --- a/_simplex_getter_8hpp__incl_org.svg +++ b/_simplex_getter_8hpp__incl_org.svg @@ -765,13 +765,13 @@ - + Node39->Node9 - + Node39->Node31 @@ -786,7 +786,7 @@ - + Node39->Node40 @@ -801,19 +801,19 @@ - + Node39->Node46 - + Node40->Node12 - + Node40->Node14 @@ -828,7 +828,7 @@ - + Node40->Node41 @@ -843,7 +843,7 @@ - + Node40->Node42 @@ -858,31 +858,31 @@ - + Node40->Node45 - + Node42->Node11 - + Node42->Node12 - + Node42->Node15 - + Node42->Node19 @@ -897,13 +897,13 @@ - + Node42->Node43 - + Node43->Node15 @@ -918,43 +918,43 @@ - + Node43->Node44 - + Node45->Node31 - + Node45->Node40 - + Node46->Node6 - + Node46->Node12 - + Node46->Node24 - + Node46->Node42 @@ -969,7 +969,7 @@ - + Node46->Node47 @@ -984,31 +984,31 @@ - + Node46->Node48 - + Node48->Node14 - + Node48->Node31 - + Node48->Node40 - + Node48->Node46 diff --git a/_simplex_getter_8hpp_source.html b/_simplex_getter_8hpp_source.html index ff70c56059..1e535fa0bf 100644 --- a/_simplex_getter_8hpp_source.html +++ b/_simplex_getter_8hpp_source.html @@ -128,7 +128,7 @@
27  const Mesh& mesh,
28  const wmtk::attribute::ConstAccessor<T>& accessor,
-
29  const PrimitiveType primitive_type,
+
29  const PrimitiveType primitive_type,
30  const simplex::Simplex& simplex,
31  const std::optional<wmtk::Tuple>& vertex_marker = {});
32 }
@@ -137,7 +137,7 @@
A TupleAccessor that can only read from attributes.
std::tuple< std::vector< typename attribute::AccessorBase< T >::ConstMapResult >, int64_t > get_simplex_attributes(const Mesh &mesh, const wmtk::attribute::ConstAccessor< T > &accessor, const PrimitiveType primitive_type, const simplex::Simplex &simplex_in, const std::optional< wmtk::Tuple > &vertex_marker)
get attributes from a simplex
- + diff --git a/_simplex_inversion_invariant_8cpp_source.html b/_simplex_inversion_invariant_8cpp_source.html index 0e9731bd77..9cd2be48c1 100644 --- a/_simplex_inversion_invariant_8cpp_source.html +++ b/_simplex_inversion_invariant_8cpp_source.html @@ -135,7 +135,7 @@
18 {
20 
-
21  if (mesh().top_simplex_type() == PrimitiveType::Tetrahedron) {
+
21  if (mesh().top_simplex_type() == PrimitiveType::Tetrahedron) {
22  assert(accessor.dimension() == 3);
23 
24  for (const auto& t : top_dimension_tuples_after) {
@@ -157,7 +157,7 @@
40 
41  return true;
42 
-
43  } else if (mesh().top_simplex_type() == PrimitiveType::Face) {
+
43  } else if (mesh().top_simplex_type() == PrimitiveType::Face) {
44  assert(accessor.dimension() == 2);
45 
46  for (const Tuple& tuple : top_dimension_tuples_after) {
@@ -175,7 +175,7 @@
58 
59 
60  return true;
-
61  } else if (mesh().top_simplex_type() == PrimitiveType::Edge) {
+
61  } else if (mesh().top_simplex_type() == PrimitiveType::Edge) {
62  assert(accessor.dimension() == 1);
63 
64  for (const Tuple& tuple : top_dimension_tuples_after) {
@@ -197,8 +197,8 @@ -
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
bool after(const std::vector< Tuple > &, const std::vector< Tuple > &top_dimension_tuples_after) const override
we assume with local vid order (v0,v1,v2,v3) has positive volume (orient3d(v0,v1,v2,...
const TypedAttributeHandle< double > m_coordinate_handle
SimplexInversionInvariant(const Mesh &m, const TypedAttributeHandle< double > &coordinate)
@@ -210,9 +210,9 @@
bool is_ccw(const Tuple &tuple)
Definition: is_ccw.cpp:7
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
- - - + + + diff --git a/_split_new_attribute_strategy_8cpp_source.html b/_split_new_attribute_strategy_8cpp_source.html index 5049d3e1fd..19e7e4d8d0 100644 --- a/_split_new_attribute_strategy_8cpp_source.html +++ b/_split_new_attribute_strategy_8cpp_source.html @@ -218,13 +218,13 @@
101 
102  auto& mesh = m_handle.mesh();
103 
- +
105  m_topo_info =
106  std::make_unique<edge_mesh::SplitNewAttributeTopoInfo>(static_cast<EdgeMesh&>(mesh));
-
107  } else if (mesh.top_simplex_type() == PrimitiveType::Face) {
+
107  } else if (mesh.top_simplex_type() == PrimitiveType::Face) {
108  m_topo_info =
109  std::make_unique<tri_mesh::SplitNewAttributeTopoInfo>(static_cast<TriMesh&>(mesh));
- +
111  m_topo_info =
112  std::make_unique<tet_mesh::SplitNewAttributeTopoInfo>(static_cast<TetMesh&>(mesh));
113  } else {
@@ -247,7 +247,7 @@
130  const auto& return_data_variant =
131  data.get_variant(mesh(), wmtk::simplex::Simplex::edge(input_tuple));
132 
-
133  for (const PrimitiveType pt : wmtk::utils::primitive_below(mesh().top_simplex_type())) {
+
133  for (const PrimitiveType pt : wmtk::utils::primitive_below(mesh().top_simplex_type())) {
134  {
135  auto old_simps =
136  m_topo_info->input_ear_simplices(return_data_variant, input_tuple, pt);
@@ -281,7 +281,7 @@
164 
165 template <typename T>
-
167  PrimitiveType pt,
+
167  PrimitiveType pt,
168  const std::array<Tuple, 2>& input_ears,
169  const Tuple& final_simplex)
170 {
@@ -310,7 +310,7 @@
193 
194 template <typename T>
-
196  PrimitiveType pt,
+
196  PrimitiveType pt,
197  const Tuple& input_simplex,
198  const std::array<Tuple, 2>& split_simplices)
199 {
@@ -362,7 +362,7 @@
245 }
246 
247 template <typename T>
- +
249 {
250  return m_handle.primitive_type();
251 }
@@ -434,10 +434,10 @@
std::vector< PrimitiveType > primitive_below(PrimitiveType pt, bool lower_to_upper)
- - - - + + + + diff --git a/_split_new_attribute_strategy_8hpp_source.html b/_split_new_attribute_strategy_8hpp_source.html index aff7c407e3..222520486b 100644 --- a/_split_new_attribute_strategy_8hpp_source.html +++ b/_split_new_attribute_strategy_8hpp_source.html @@ -178,7 +178,7 @@
61 
62 
63  Mesh& mesh() override;
-
64  PrimitiveType primitive_type() const override;
+
64  PrimitiveType primitive_type() const override;
65  void update_handle_mesh(Mesh& m) override;
66  bool matches_attribute(const attribute::MeshAttributeHandle&) const override;
67 
@@ -189,12 +189,12 @@
72  std::unique_ptr<SplitNewAttributeTopoInfo> m_topo_info;
73 
74  void assign_split(
-
75  PrimitiveType pt,
+
75  PrimitiveType pt,
76  const Tuple& input_simplex,
77  const std::array<Tuple, 2>& split_simplices);
78 
79  void assign_split_ribs(
-
80  PrimitiveType pt,
+
80  PrimitiveType pt,
81  const std::array<Tuple, 2>& input_ears,
82  const Tuple& final_simplex);
83 
@@ -253,7 +253,7 @@
Vector< T, Eigen::Dynamic > VectorX
Definition: Types.hpp:18
- + diff --git a/_split_new_value_applicator_8hpp_source.html b/_split_new_value_applicator_8hpp_source.html index f1fe3b09da..e153c81a9a 100644 --- a/_split_new_value_applicator_8hpp_source.html +++ b/_split_new_value_applicator_8hpp_source.html @@ -131,7 +131,7 @@
14  std::vector<Tuple> new_spine_simplices(
15  const ReturnData& ret_data,
16  const Tuple& output_tuple,
-
17  PrimitiveType pt) const;
+
17  PrimitiveType pt) const;
18 
19 
20  // the sipmlices that were split from one
@@ -139,7 +139,7 @@
22  std::vector<std::array<Tuple, 2>> new_rib_simplices(
23  const ReturnData& ret_data,
24  const Tuple& output_tuple,
-
25  PrimitiveType pt) const;
+
25  PrimitiveType pt) const;
26 
27  // the simplices that were split in half
28  // vertex should return 0
@@ -147,7 +147,7 @@
30  std::vector<Tuple> split_rib_simplices(
31  const ReturnData& ret_data,
32  const Tuple& input_tuple,
-
33  PrimitiveType pt) const;
+
33  PrimitiveType pt) const;
34 
35 
36  // set of faces whose one ring were modified
@@ -155,7 +155,7 @@
38  std::vector<Tuple> output_modified_simplices(
39  const ReturnData& ret_data,
40  const Tuple& output_tuple,
-
41  const PrimitiveType pt) const;
+
41  const PrimitiveType pt) const;
42 
43 
44  // the top dimension that were removed in the operation
@@ -175,7 +175,7 @@
std::vector< Tuple > split_top_dimension_simplices(const ReturnData &ret_data, const Tuple &input_tuple) const
std::vector< Tuple > output_modified_simplices(const ReturnData &ret_data, const Tuple &output_tuple, const PrimitiveType pt) const
std::vector< Tuple > split_rib_simplices(const ReturnData &ret_data, const Tuple &input_tuple, PrimitiveType pt) const
- + diff --git a/_tag_intersection_8cpp_source.html b/_tag_intersection_8cpp_source.html index 818c6e7183..6316995357 100644 --- a/_tag_intersection_8cpp_source.html +++ b/_tag_intersection_8cpp_source.html @@ -162,7 +162,7 @@
45 
46  // iterate through all simplices and check if the simplex itself or any of its cofaces is
47  // tagged
-
48  for (const Tuple& t : m.get_all(PrimitiveType::Vertex)) {
+
48  for (const Tuple& t : m.get_all(PrimitiveType::Vertex)) {
50  if (simplex_is_in_intersection(m, v, input_tag_attributes)) {
51  for (TagAttribute& ta : output_tag_attributes) {
@@ -175,7 +175,7 @@
58  return;
59  }
60 
-
61  for (const Tuple& t : m.get_all(PrimitiveType::Edge)) {
+
61  for (const Tuple& t : m.get_all(PrimitiveType::Edge)) {
63  if (simplex_is_in_intersection(m, e, input_tag_attributes)) {
64  for (TagAttribute& ta : output_tag_attributes) {
@@ -188,7 +188,7 @@
71  return;
72  }
73 
-
74  for (const Tuple& t : m.get_all(PrimitiveType::Face)) {
+
74  for (const Tuple& t : m.get_all(PrimitiveType::Face)) {
76  if (simplex_is_in_intersection(m, f, input_tag_attributes)) {
77  for (TagAttribute& ta : output_tag_attributes) {
@@ -201,7 +201,7 @@
84  return;
85  }
86 
-
87  for (const Tuple& t : m.get_all(PrimitiveType::Tetrahedron)) {
+
87  for (const Tuple& t : m.get_all(PrimitiveType::Tetrahedron)) {
89  if (simplex_is_in_intersection(m, f, input_tag_attributes)) {
90  for (TagAttribute& ta : output_tag_attributes) {
@@ -230,10 +230,10 @@
static Simplex face(const Tuple &t)
Definition: Simplex.hpp:29
SimplexCollection open_star(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Definition: open_star.cpp:11
Definition: Accessor.cpp:8
- - - - + + + + diff --git a/_tag_intersection_8hpp_source.html b/_tag_intersection_8hpp_source.html index 964c9cb054..edd5b70d1c 100644 --- a/_tag_intersection_8hpp_source.html +++ b/_tag_intersection_8hpp_source.html @@ -132,13 +132,13 @@
19 {
20 public:
21  Accessor<int64_t> m_tag_accessor; // access primitives' tag value
-
22  PrimitiveType m_ptype; // record this tag attribute's primitivetype
+
22  PrimitiveType m_ptype; // record this tag attribute's primitivetype
23  int64_t m_tag_val; // a given tagvalue used to check or tag the attributes
24 
26  Mesh& m,
27  const attribute::MeshAttributeHandle& attribute,
-
28  PrimitiveType ptype,
+
28  PrimitiveType ptype,
29  int64_t val)
30  : m_tag_accessor(m.create_accessor<int64_t>(attribute))
31  , m_ptype(ptype)
@@ -205,7 +205,7 @@
PrimitiveType primitive_type() const
Definition: Simplex.hpp:23
Definition: Accessor.cpp:8
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
- + diff --git a/_tet_cell_split_8cpp_source.html b/_tet_cell_split_8cpp_source.html index 568b82bba3..bf9d65d9f2 100644 --- a/_tet_cell_split_8cpp_source.html +++ b/_tet_cell_split_8cpp_source.html @@ -178,8 +178,8 @@ -
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:945
-
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:949
+
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:944
+
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:948
const Mesh & mesh() const
Definition: Operation.hpp:45
diff --git a/_tet_cell_split_8hpp_source.html b/_tet_cell_split_8hpp_source.html index 55e31d0cf8..aad6dd5854 100644 --- a/_tet_cell_split_8hpp_source.html +++ b/_tet_cell_split_8hpp_source.html @@ -126,7 +126,7 @@
20 public:
21  TetCellSplit(Mesh& m);
22 
- +
24 
25  inline EdgeSplit& split() { return m_split; }
26  inline EdgeCollapse& collapse() { return m_collapse; }
@@ -160,8 +160,8 @@
PrimitiveType primitive_type() const override
- - + + diff --git a/_tet_edge_swap_8cpp_source.html b/_tet_edge_swap_8cpp_source.html index dde7bbd1ea..7d06218793 100644 --- a/_tet_edge_swap_8cpp_source.html +++ b/_tet_edge_swap_8cpp_source.html @@ -163,7 +163,7 @@
47  std::array<std::vector<simplex::Simplex>, 4> simplices_generated_by_split;
48  for (const simplex::Simplex& s : split_tuple_open_star.simplex_vector()) {
-
49  simplices_generated_by_split[get_primitive_type_id(s.primitive_type())].emplace_back(s);
+
49  simplices_generated_by_split[get_primitive_type_id(s.primitive_type())].emplace_back(s);
50  }
51 
52  const auto v_open_star = simplex::open_star(mesh(), simplex::Simplex::vertex(collapse_tuple));
@@ -173,7 +173,7 @@
56  std::array<std::vector<simplex::Simplex>, 4> simplices_deleted_by_collapse;
57 
58  for (const simplex::Simplex& s : sc.simplex_vector()) {
-
59  simplices_deleted_by_collapse[get_primitive_type_id(s.primitive_type())].emplace_back(s);
+
59  simplices_deleted_by_collapse[get_primitive_type_id(s.primitive_type())].emplace_back(s);
60  }
61 
62  // check if #edge_generated_by_split > #edges_deleted_by_collapse, if not, return face instead
@@ -274,7 +274,7 @@ -
Tuple switch_tetrahedron(const Tuple &tuple) const
Definition: Mesh.hpp:953
+
Tuple switch_tetrahedron(const Tuple &tuple) const
Definition: Mesh.hpp:952
PrimitiveType primitive_type() const override
@@ -295,7 +295,7 @@
SimplexCollection open_star(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Definition: open_star.cpp:11
SimplexCollection closed_star(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Definition: closed_star.cpp:11
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
diff --git a/_tet_edge_swap_8hpp_source.html b/_tet_edge_swap_8hpp_source.html index b97f193642..c9cde1d8fa 100644 --- a/_tet_edge_swap_8hpp_source.html +++ b/_tet_edge_swap_8hpp_source.html @@ -127,7 +127,7 @@
20 public:
21  TetEdgeSwap(Mesh& m, int64_t collapse_index = 0);
22 
-
23  PrimitiveType primitive_type() const override { return PrimitiveType::Edge; }
+
23  PrimitiveType primitive_type() const override { return PrimitiveType::Edge; }
24 
25  inline EdgeSplit& split() { return m_split; }
26  inline EdgeCollapse& collapse() { return m_collapse; }
@@ -164,8 +164,8 @@
TetEdgeSwap(Mesh &m, int64_t collapse_index=0)
Definition: TetEdgeSwap.cpp:10
- - + + diff --git a/_tet_face_swap_8cpp_source.html b/_tet_face_swap_8cpp_source.html index 38285dccbc..93bf4bfb38 100644 --- a/_tet_face_swap_8cpp_source.html +++ b/_tet_face_swap_8cpp_source.html @@ -127,10 +127,10 @@
10 
11 std::vector<simplex::Simplex> TetFaceSwap::execute(const simplex::Simplex& simplex)
12 {
-
13  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
-
14  constexpr static PrimitiveType PE = PrimitiveType::Edge;
-
15  constexpr static PrimitiveType PF = PrimitiveType::Face;
-
16  constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
+
13  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
+
14  constexpr static PrimitiveType PE = PrimitiveType::Edge;
+
15  constexpr static PrimitiveType PF = PrimitiveType::Face;
+
16  constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
17 
18  // first split, split the edge of the input tuple
19  const auto split_simplicies_first = m_split(simplex::Simplex::edge(simplex.tuple()));
@@ -188,7 +188,7 @@ -
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:962
+
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:961
const Mesh & mesh() const
Definition: Operation.hpp:45
@@ -202,11 +202,11 @@
const Tuple & tuple() const
Definition: Simplex.hpp:25
static Simplex edge(const Tuple &t)
Definition: Simplex.hpp:28
- - - - - + + + + + diff --git a/_tet_face_swap_8hpp_source.html b/_tet_face_swap_8hpp_source.html index 2d6a8a80a8..a45626e31b 100644 --- a/_tet_face_swap_8hpp_source.html +++ b/_tet_face_swap_8hpp_source.html @@ -127,7 +127,7 @@
39 public:
40  TetFaceSwap(Mesh& m);
41 
-
42  PrimitiveType primitive_type() const override { return PrimitiveType::Face; }
+
42  PrimitiveType primitive_type() const override { return PrimitiveType::Face; }
43 
44  inline EdgeSplit& split() { return m_split; }
45  inline EdgeCollapse& collapse() { return m_collapse; }
@@ -160,8 +160,8 @@ - - + + diff --git a/_tet_mesh_8cpp_source.html b/_tet_mesh_8cpp_source.html index 40656861a9..555a68fcd6 100644 --- a/_tet_mesh_8cpp_source.html +++ b/_tet_mesh_8cpp_source.html @@ -133,17 +133,17 @@
16 
18  : Mesh(3)
-
19  , m_vt_handle(register_attribute_typed<int64_t>("m_vt", PrimitiveType::Vertex, 1, false, -1))
-
20  , m_et_handle(register_attribute_typed<int64_t>("m_et", PrimitiveType::Edge, 1, false, -1))
-
21  , m_ft_handle(register_attribute_typed<int64_t>("m_ft", PrimitiveType::Face, 1, false, -1))
+
19  , m_vt_handle(register_attribute_typed<int64_t>("m_vt", PrimitiveType::Vertex, 1, false, -1))
+
20  , m_et_handle(register_attribute_typed<int64_t>("m_et", PrimitiveType::Edge, 1, false, -1))
+
21  , m_ft_handle(register_attribute_typed<int64_t>("m_ft", PrimitiveType::Face, 1, false, -1))
22  , m_tv_handle(
-
23  register_attribute_typed<int64_t>("m_tv", PrimitiveType::Tetrahedron, 4, false, -1))
+
23  register_attribute_typed<int64_t>("m_tv", PrimitiveType::Tetrahedron, 4, false, -1))
24  , m_te_handle(
-
25  register_attribute_typed<int64_t>("m_te", PrimitiveType::Tetrahedron, 6, false, -1))
+
25  register_attribute_typed<int64_t>("m_te", PrimitiveType::Tetrahedron, 6, false, -1))
26  , m_tf_handle(
-
27  register_attribute_typed<int64_t>("m_tf", PrimitiveType::Tetrahedron, 4, false, -1))
+
27  register_attribute_typed<int64_t>("m_tf", PrimitiveType::Tetrahedron, 4, false, -1))
28  , m_tt_handle(
-
29  register_attribute_typed<int64_t>("m_tt", PrimitiveType::Tetrahedron, 4, false, -1))
+
29  register_attribute_typed<int64_t>("m_tt", PrimitiveType::Tetrahedron, 4, false, -1))
30 {}
31 
32 
@@ -177,13 +177,13 @@
60  Accessor<int64_t> tf_accessor = create_accessor<int64_t>(m_tf_handle);
61  Accessor<int64_t> tt_accessor = create_accessor<int64_t>(m_tt_handle);
62 
- - - - + + + +
67 
68  // iterate over the matrices and fill attributes
-
69  for (int64_t i = 0; i < capacity(PrimitiveType::Tetrahedron); ++i) {
+
69  for (int64_t i = 0; i < capacity(PrimitiveType::Tetrahedron); ++i) {
70  tv_accessor.index_access().vector_attribute(i) = TV.row(i).transpose();
71  te_accessor.index_access().vector_attribute(i) = TE.row(i).transpose();
72  tf_accessor.index_access().vector_attribute(i) = TF.row(i).transpose();
@@ -191,17 +191,17 @@
74  t_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
75  }
76  // m_vt
-
77  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
+
77  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
78  vt_accessor.index_access().scalar_attribute(i) = VT(i);
79  v_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
80  }
81  // m_et
-
82  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
+
82  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
83  et_accessor.index_access().scalar_attribute(i) = ET(i);
84  e_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
85  }
86  // m_ft
-
87  for (int64_t i = 0; i < capacity(PrimitiveType::Face); ++i) {
+
87  for (int64_t i = 0; i < capacity(PrimitiveType::Face); ++i) {
88  ft_accessor.index_access().scalar_attribute(i) = FT(i);
89  f_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
90  }
@@ -314,71 +314,71 @@
197  return t_tuple;
198 }
199 
-
200 Tuple TetMesh::tuple_from_id(const PrimitiveType type, const int64_t gid) const
+
200 Tuple TetMesh::tuple_from_id(const PrimitiveType type, const int64_t gid) const
201 {
202  switch (type) {
-
203  case PrimitiveType::Vertex: {
+
203  case PrimitiveType::Vertex: {
204  return vertex_tuple_from_id(gid);
205  break;
206  }
-
207  case PrimitiveType::Edge: {
+
207  case PrimitiveType::Edge: {
208  return edge_tuple_from_id(gid);
209  break;
210  }
-
211  case PrimitiveType::Face: {
+
211  case PrimitiveType::Face: {
212  return face_tuple_from_id(gid);
213  break;
214  }
- +
216  return tet_tuple_from_id(gid);
217  break;
218  }
- +
220  default: throw std::runtime_error("Invalid primitive type");
221  }
222 }
223 
-
224 int64_t TetMesh::id(const Tuple& tuple, PrimitiveType type) const
+
224 int64_t TetMesh::id(const Tuple& tuple, PrimitiveType type) const
225 {
226  switch (type) {
-
227  case PrimitiveType::Vertex: {
+
227  case PrimitiveType::Vertex: {
228  ConstAccessor<int64_t> tv_accessor = create_accessor<int64_t>(m_tv_handle);
229  auto tv = tv_accessor.const_vector_attribute(tuple);
230  return tv(tuple.m_local_vid);
231  break;
232  }
-
233  case PrimitiveType::Edge: {
+
233  case PrimitiveType::Edge: {
234  ConstAccessor<int64_t> te_accessor = create_accessor<int64_t>(m_te_handle);
235  auto te = te_accessor.const_vector_attribute(tuple);
236  return te(tuple.m_local_eid);
237  break;
238  }
-
239  case PrimitiveType::Face: {
+
239  case PrimitiveType::Face: {
240  ConstAccessor<int64_t> tf_accessor = create_accessor<int64_t>(m_tf_handle);
241  auto tf = tf_accessor.const_vector_attribute(tuple);
242  return tf(tuple.m_local_fid);
243  break;
244  }
- +
246  return tuple.m_global_cid;
247  break;
248  }
- +
250  default: throw std::runtime_error("Tuple id: Invalid primitive type");
251  }
252 }
253 
- +
255 {
256  assert(is_valid_slow(tuple));
257  switch (type) {
258  // bool ccw = is_ccw(tuple);
- +
260  assert(!is_boundary_face(tuple));
261  // need test
-
262  const int64_t gvid = id(tuple, PrimitiveType::Vertex);
-
263  const int64_t geid = id(tuple, PrimitiveType::Edge);
-
264  const int64_t gfid = id(tuple, PrimitiveType::Face);
+
262  const int64_t gvid = id(tuple, PrimitiveType::Vertex);
+
263  const int64_t geid = id(tuple, PrimitiveType::Edge);
+
264  const int64_t gfid = id(tuple, PrimitiveType::Face);
265 
266  ConstAccessor<int64_t> tt_accessor = create_const_accessor<int64_t>(m_tt_handle);
267  auto tt = tt_accessor.const_vector_attribute(tuple);
@@ -459,11 +459,11 @@
344  assert(is_valid_slow(res));
345  return res;
346  }
- -
348  case PrimitiveType::Edge:
-
349  case PrimitiveType::Face:
+ +
348  case PrimitiveType::Edge:
+
349  case PrimitiveType::Face:
350  default: return autogen::tet_mesh::local_switch_tuple(tuple, type);
-
351  case PrimitiveType::HalfEdge: throw std::runtime_error("Tuple id: Invalid primitive type");
+
351  case PrimitiveType::HalfEdge: throw std::runtime_error("Tuple id: Invalid primitive type");
352  }
353 }
354 
@@ -487,14 +487,14 @@
372  return Mesh::is_hash_valid(tuple, hash_accessor);
373 }
374 
-
375 bool TetMesh::is_boundary(PrimitiveType pt, const Tuple& tuple) const
+
375 bool TetMesh::is_boundary(PrimitiveType pt, const Tuple& tuple) const
376 {
377  switch (pt) {
-
378  case PrimitiveType::Vertex: return is_boundary_vertex(tuple);
-
379  case PrimitiveType::Edge: return is_boundary_edge(tuple);
-
380  case PrimitiveType::Face: return is_boundary_face(tuple);
- - +
378  case PrimitiveType::Vertex: return is_boundary_vertex(tuple);
+
379  case PrimitiveType::Edge: return is_boundary_edge(tuple);
+
380  case PrimitiveType::Face: return is_boundary_face(tuple);
+ +
383  default: break;
384  }
385  throw std::runtime_error(
@@ -514,7 +514,7 @@
400  *this,
- +
403  if (is_boundary_face(f)) {
404  return true;
405  }
@@ -526,7 +526,7 @@
411  // go through all faces and check if they are boundary
412  const simplex::SimplexCollection neigh =
-
414  for (const simplex::Simplex& s : neigh.simplex_vector(PrimitiveType::Face)) {
+
414  for (const simplex::Simplex& s : neigh.simplex_vector(PrimitiveType::Face)) {
415  if (is_boundary(s)) {
416  return true;
417  }
@@ -545,13 +545,13 @@
430  ConstAccessor<int64_t> vt_accessor = create_const_accessor<int64_t>(m_vt_handle);
431  ConstAccessor<int64_t> et_accessor = create_const_accessor<int64_t>(m_et_handle);
432  ConstAccessor<int64_t> ft_accessor = create_const_accessor<int64_t>(m_ft_handle);
- - - - + + + +
437 
438  // VT and TV
-
439  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
+
439  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
440  if (v_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
441  wmtk::logger().debug("Vertex {} is deleted", i);
442  continue;
@@ -570,7 +570,7 @@
455  }
456 
457  // ET and TE
-
458  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
+
458  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
459  if (e_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
460  wmtk::logger().debug("Edge {} is deleted", i);
461  continue;
@@ -589,7 +589,7 @@
474  }
475 
476  // FT and TF
-
477  for (int64_t i = 0; i < capacity(PrimitiveType::Face); ++i) {
+
477  for (int64_t i = 0; i < capacity(PrimitiveType::Face); ++i) {
478  if (f_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
479  wmtk::logger().debug("Face {} is deleted", i);
480  continue;
@@ -608,7 +608,7 @@
493  }
494 
495  // TF and TT
-
496  for (int64_t i = 0; i < capacity(PrimitiveType::Tetrahedron); ++i) {
+
496  for (int64_t i = 0; i < capacity(PrimitiveType::Tetrahedron); ++i) {
497  if (t_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
498  wmtk::logger().debug("Tet {} is deleted", i);
499  continue;
@@ -706,10 +706,10 @@ -
void set_capacities(std::vector< int64_t > capacities)
+
void set_capacities(std::vector< int64_t > capacities)
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
bool is_hash_valid(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
Definition: Mesh.cpp:60
-
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
+
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
int64_t get_cell_hash_slow(int64_t cell_index) const
Definition: Mesh.cpp:154
ConstAccessor< int64_t > get_const_cell_hash_accessor() const
Definition: Mesh.cpp:92
bool is_valid_slow(const Tuple &tuple) const
Definition: Mesh.cpp:72
@@ -722,7 +722,7 @@
Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
Definition: TetMesh.cpp:254
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: TetMesh.cpp:224
Tuple tuple_from_global_ids(int64_t tid, int64_t fid, int64_t eid, int64_t vid) const
Definition: TetMesh.cpp:553
-
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
+
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
TypedAttributeHandle< int64_t > m_tv_handle
Definition: TetMesh.hpp:80
bool is_boundary_edge(const Tuple &tuple) const
Definition: TetMesh.cpp:397
Tuple edge_tuple_from_id(int64_t id) const
Definition: TetMesh.cpp:128
@@ -763,13 +763,13 @@
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
- - - - - -
std::tuple< RowVectors6l, RowVectors4l, RowVectors4l, VectorXl, VectorXl, VectorXl > tetmesh_topology_initialization(Eigen::Ref< const RowVectors4l > T)
Given the mesh connectivity in matrix format, finds unique edges and faces and their relations.
+ + + + + + diff --git a/_tet_mesh_8hpp_source.html b/_tet_mesh_8hpp_source.html index 89a40fb0ae..6d88a60350 100644 --- a/_tet_mesh_8hpp_source.html +++ b/_tet_mesh_8hpp_source.html @@ -139,10 +139,10 @@
22  TetMesh& operator=(TetMesh&& o)= default;
23 
24  int64_t top_cell_dimension() const override { return 3; }
-
25  Tuple switch_tuple(const Tuple& tuple, PrimitiveType type) const override;
+
25  Tuple switch_tuple(const Tuple& tuple, PrimitiveType type) const override;
26  bool is_ccw(const Tuple& tuple) const override;
27  using Mesh::is_boundary;
-
28  bool is_boundary(PrimitiveType pt, const Tuple& tuple ) const override;
+
28  bool is_boundary(PrimitiveType pt, const Tuple& tuple ) const override;
29  bool is_boundary_vertex(const Tuple& tuple) const ;
30  bool is_boundary_edge(const Tuple& tuple) const ;
31  bool is_boundary_face(const Tuple& tuple) const;
@@ -165,19 +165,19 @@
48  const override;
49 
50 protected:
-
51  int64_t id(const Tuple& tuple, PrimitiveType type) const override;
+
51  int64_t id(const Tuple& tuple, PrimitiveType type) const override;
52  int64_t id(const simplex::Simplex& simplex) const
53  {
54  return id(simplex.tuple(), simplex.primitive_type());
55  }
56 
57 
-
58  int64_t id_vertex(const Tuple& tuple) const { return id(tuple, PrimitiveType::Vertex); }
-
59  int64_t id_edge(const Tuple& tuple) const { return id(tuple, PrimitiveType::Edge); }
-
60  int64_t id_face(const Tuple& tuple) const { return id(tuple, PrimitiveType::Face); }
-
61  int64_t id_tet(const Tuple& tuple) const { return id(tuple, PrimitiveType::Tetrahedron); }
+
58  int64_t id_vertex(const Tuple& tuple) const { return id(tuple, PrimitiveType::Vertex); }
+
59  int64_t id_edge(const Tuple& tuple) const { return id(tuple, PrimitiveType::Edge); }
+
60  int64_t id_face(const Tuple& tuple) const { return id(tuple, PrimitiveType::Face); }
+
61  int64_t id_tet(const Tuple& tuple) const { return id(tuple, PrimitiveType::Tetrahedron); }
62 
-
70  Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override;
+
70  Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override;
71  Tuple tuple_from_global_ids(int64_t tid, int64_t fid, int64_t eid, int64_t vid) const;
72 
73  // private:
@@ -215,7 +215,7 @@
Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
Definition: TetMesh.cpp:254
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: TetMesh.cpp:224
Tuple tuple_from_global_ids(int64_t tid, int64_t fid, int64_t eid, int64_t vid) const
Definition: TetMesh.cpp:553
-
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
+
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
TypedAttributeHandle< int64_t > m_tv_handle
Definition: TetMesh.hpp:80
bool is_boundary_edge(const Tuple &tuple) const
Definition: TetMesh.cpp:397
Tuple edge_tuple_from_id(int64_t id) const
Definition: TetMesh.cpp:128
@@ -248,11 +248,11 @@
PrimitiveType primitive_type() const
Definition: Simplex.hpp:23
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
- - - - - + + + + + diff --git a/_tet_mesh_operation_executor_8cpp_source.html b/_tet_mesh_operation_executor_8cpp_source.html index 83121a2ba0..67bac5cd07 100644 --- a/_tet_mesh_operation_executor_8cpp_source.html +++ b/_tet_mesh_operation_executor_8cpp_source.html @@ -127,8 +127,8 @@
10 
11 namespace wmtk {
12 namespace {
-
13 constexpr static PrimitiveType PE = PrimitiveType::Edge;
-
14 constexpr static PrimitiveType PF = PrimitiveType::Face;
+
13 constexpr static PrimitiveType PE = PrimitiveType::Edge;
+
14 constexpr static PrimitiveType PF = PrimitiveType::Face;
15 } // namespace
16 
17 std::tuple<std::vector<Tuple>, std::vector<Tuple>>
@@ -209,7 +209,7 @@
92  TetMesh& m,
93  const Tuple& operating_tuple,
94  Accessor<int64_t>& hash_acc)
- +
96  , tt_accessor(m.create_accessor<int64_t>(m.m_tt_handle))
97  , tf_accessor(m.create_accessor<int64_t>(m.m_tf_handle))
98  , te_accessor(m.create_accessor<int64_t>(m.m_te_handle))
@@ -241,7 +241,7 @@
124 
125  // update hash on all tets in the two-ring neighborhood
126  simplex::SimplexCollection hash_update_region(m);
-
127  for (const simplex::Simplex& v : edge_closed_star.simplex_vector(PrimitiveType::Vertex)) {
+
127  for (const simplex::Simplex& v : edge_closed_star.simplex_vector(PrimitiveType::Vertex)) {
128  const simplex::SimplexCollection v_closed_star = simplex::closed_star(m_mesh, v);
129  hash_update_region.add(v_closed_star);
130  }
@@ -251,7 +251,7 @@
134  simplex::SimplexCollection faces(m_mesh);
135 
136  for (const simplex::Simplex& t :
-
137  hash_update_region.simplex_vector(PrimitiveType::Tetrahedron)) {
+
137  hash_update_region.simplex_vector(PrimitiveType::Tetrahedron)) {
138  cell_ids_to_update_hash.push_back(m_mesh.id(t));
139 
140  faces.add(wmtk::simplex::faces(m, t, false));
@@ -291,7 +291,7 @@
175  std::array<std::vector<int64_t>, 4> ids;
176  for (const simplex::Simplex& s : sc) {
-
177  ids[get_primitive_type_id(s.primitive_type())].emplace_back(m.id(s));
+
177  ids[get_primitive_type_id(s.primitive_type())].emplace_back(m.id(s));
178  }
179 
180  return ids;
@@ -312,7 +312,7 @@
195 
196  std::array<std::vector<int64_t>, 4> ids;
197  for (const simplex::Simplex& s : sc) {
-
198  ids[get_primitive_type_id(s.primitive_type())].emplace_back(m.id(s));
+
198  ids[get_primitive_type_id(s.primitive_type())].emplace_back(m.id(s));
199  }
200 
201  return ids;
@@ -344,13 +344,13 @@
227  simplex_ids_to_delete = get_split_simplices_to_delete(m_operating_tuple, m_mesh);
228 
229  // create new vertex (center)
-
230  std::vector<int64_t> new_vids = this->request_simplex_indices(PrimitiveType::Vertex, 1);
+
230  std::vector<int64_t> new_vids = this->request_simplex_indices(PrimitiveType::Vertex, 1);
231  assert(new_vids.size() == 1);
232  const int64_t v_new = new_vids[0];
233  m_split_new_vid = v_new;
234 
235  // create new edges (spine)
-
236  std::vector<int64_t> new_eids = this->request_simplex_indices(PrimitiveType::Edge, 2);
+
236  std::vector<int64_t> new_eids = this->request_simplex_indices(PrimitiveType::Edge, 2);
237  assert(new_eids.size() == 2);
238  std::copy(new_eids.begin(), new_eids.end(), m_split_new_spine_eids.begin());
239 
@@ -366,8 +366,8 @@
249  // create new faces and edges
250  std::vector<FaceSplitData> new_incident_face_data;
251  for (int64_t i = 0; i < incident_faces.size(); ++i) {
-
252  std::vector<int64_t> new_fids = this->request_simplex_indices(PrimitiveType::Face, 2);
-
253  std::vector<int64_t> splitting_eids = this->request_simplex_indices(PrimitiveType::Edge, 1);
+
252  std::vector<int64_t> new_fids = this->request_simplex_indices(PrimitiveType::Face, 2);
+
253  std::vector<int64_t> splitting_eids = this->request_simplex_indices(PrimitiveType::Edge, 1);
254 
255  FaceSplitData fsd;
256  fsd.fid_old = m_mesh.id_face(incident_faces[i]);
@@ -388,8 +388,8 @@
271  m_incident_tet_datas.clear();
272  for (int64_t i = 0; i < incident_tets.size(); ++i) {
273  std::vector<int64_t> new_tids =
- -
275  std::vector<int64_t> split_fids = this->request_simplex_indices(PrimitiveType::Face, 1);
+ +
275  std::vector<int64_t> split_fids = this->request_simplex_indices(PrimitiveType::Face, 1);
276 
277  IncidentTetData tsd;
278  tsd.local_operating_tuple = incident_tets[i];
@@ -402,7 +402,7 @@
285  // get ears here
286  Tuple ear1 = m_mesh.switch_face(m_mesh.switch_edge(incident_tets[i]));
287  if (!m_mesh.is_boundary_face(ear1)) {
-
288  ear1 = m_mesh.switch_tuple(ear1, PrimitiveType::Tetrahedron);
+
288  ear1 = m_mesh.switch_tuple(ear1, PrimitiveType::Tetrahedron);
289  tsd.ears[0] = EarTet{m_mesh.id_tet(ear1), m_mesh.id_face(ear1)};
290  } else {
291  tsd.ears[0] = EarTet{-1, m_mesh.id_face(ear1)};
@@ -410,7 +410,7 @@
293 
294  Tuple ear2 = m_mesh.switch_face(m_mesh.switch_edge(m_mesh.switch_vertex(incident_tets[i])));
295  if (!m_mesh.is_boundary_face(ear2)) {
-
296  ear2 = m_mesh.switch_tuple(ear2, PrimitiveType::Tetrahedron);
+
296  ear2 = m_mesh.switch_tuple(ear2, PrimitiveType::Tetrahedron);
297  tsd.ears[1] = EarTet{m_mesh.id_tet(ear2), m_mesh.id_face(ear2)};
298  } else {
299  tsd.ears[1] = EarTet{-1, m_mesh.id_face(ear2)};
@@ -889,7 +889,7 @@
772  // get ears
773  Tuple ear1 = m_mesh.switch_face(m_mesh.switch_edge(tet));
774  if (!m_mesh.is_boundary_face(ear1)) {
-
775  ear1 = m_mesh.switch_tuple(ear1, PrimitiveType::Tetrahedron);
+
775  ear1 = m_mesh.switch_tuple(ear1, PrimitiveType::Tetrahedron);
776  tcd.ears[0] = EarTet{m_mesh.id_tet(ear1), m_mesh.id_face(ear1)};
777  } else {
778  tcd.ears[0] = EarTet{-1, m_mesh.id_face(ear1)};
@@ -897,7 +897,7 @@
780 
781  Tuple ear2 = m_mesh.switch_face(m_mesh.switch_edge(m_mesh.switch_vertex(tet)));
782  if (!m_mesh.is_boundary_face(ear2)) {
-
783  ear2 = m_mesh.switch_tuple(ear2, PrimitiveType::Tetrahedron);
+
783  ear2 = m_mesh.switch_tuple(ear2, PrimitiveType::Tetrahedron);
784  tcd.ears[1] = EarTet{m_mesh.id_tet(ear2), m_mesh.id_face(ear2)};
785  } else {
786  tcd.ears[1] = EarTet{-1, m_mesh.id_face(ear2)};
@@ -1130,7 +1130,7 @@
1014  const int64_t v0 = m_spine_vids[0];
1015  const int64_t v1 = m_spine_vids[1];
1016 
-
1017  for (const simplex::Simplex& t : v0_star.simplex_vector(PrimitiveType::Tetrahedron)) {
+
1017  for (const simplex::Simplex& t : v0_star.simplex_vector(PrimitiveType::Tetrahedron)) {
1018  const int64_t tid = m_mesh.id(t);
1019  auto tv = tv_accessor.index_access().vector_attribute(tid);
1020  auto te = te_accessor.index_access().vector_attribute(tid);
@@ -1171,7 +1171,7 @@
1055 }
1056 
-
1058  const PrimitiveType type,
+
1058  const PrimitiveType type,
1059  int64_t count)
1060 {
1061  m_mesh.guarantee_more_attributes(type, count);
@@ -1188,9 +1188,9 @@
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
void update_cell_hash(const Tuple &cell, Accessor< int64_t > &hash_accessor)
update hash in given cell
Definition: Mesh.cpp:106
-
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:949
-
Tuple switch_tetrahedron(const Tuple &tuple) const
Definition: Mesh.hpp:953
-
std::vector< int64_t > request_simplex_indices(PrimitiveType type, int64_t count)
+
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:948
+
Tuple switch_tetrahedron(const Tuple &tuple) const
Definition: Mesh.hpp:952
+
std::vector< int64_t > request_simplex_indices(PrimitiveType type, int64_t count)
std::tuple< std::vector< Tuple >, std::vector< Tuple > > get_incident_tets_and_faces(Tuple t)
Get the incident tets and faces for an edge tuple.
std::vector< int64_t > request_simplex_indices(const PrimitiveType type, int64_t count)
@@ -1230,13 +1230,13 @@
SimplexCollection faces(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Returns all faces of a simplex.
Definition: faces.cpp:10
Definition: Accessor.cpp:8
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
+
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- - - - - + + + + +
An EarTet is a neighbor of a tet to be deleted in the split/collapse operation.
diff --git a/_tet_mesh_operation_executor_8hpp_source.html b/_tet_mesh_operation_executor_8hpp_source.html index a375df4d37..941630d4a7 100644 --- a/_tet_mesh_operation_executor_8hpp_source.html +++ b/_tet_mesh_operation_executor_8hpp_source.html @@ -161,7 +161,7 @@
85 
104  void collapse_edge();
105 
-
106  std::vector<int64_t> request_simplex_indices(const PrimitiveType type, int64_t count);
+
106  std::vector<int64_t> request_simplex_indices(const PrimitiveType type, int64_t count);
107 
108 
@@ -204,7 +204,7 @@
Definition: Accessor.cpp:8
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
- + diff --git a/_tet_mesh_substructure_topology_preserving_invariant_8cpp_source.html b/_tet_mesh_substructure_topology_preserving_invariant_8cpp_source.html index de3c19df81..b262e87f7a 100644 --- a/_tet_mesh_substructure_topology_preserving_invariant_8cpp_source.html +++ b/_tet_mesh_substructure_topology_preserving_invariant_8cpp_source.html @@ -139,7 +139,7 @@
23  const simplex::Simplex& input_simplex) const
24 {
-
25  assert(input_simplex.primitive_type() == PrimitiveType::Edge);
+
25  assert(input_simplex.primitive_type() == PrimitiveType::Edge);
26 
27  using namespace simplex;
28 
@@ -149,9 +149,9 @@
32  // edge e = (u,v)
33 
34  const simplex::Simplex& edge_e = input_simplex;
-
35  const simplex::Simplex vertex_u(PrimitiveType::Vertex, input_simplex.tuple());
+
35  const simplex::Simplex vertex_u(PrimitiveType::Vertex, input_simplex.tuple());
36  const simplex::Simplex vertex_v(
- +
38  mesh().switch_vertex(input_simplex.tuple()));
39 
40  RawSimplexCollection lk_u_0(link(mesh(), vertex_u));
@@ -160,10 +160,10 @@
43 
44  simplex::SimplexCollection u_open_star = open_star(mesh(), vertex_u);
45 
-
46  for (const simplex::Simplex& f_u : u_open_star.simplex_vector(PrimitiveType::Face)) {
+
46  for (const simplex::Simplex& f_u : u_open_star.simplex_vector(PrimitiveType::Face)) {
47  if (face_tag_acc.const_scalar_attribute(f_u.tuple()) == m_substructure_tag_value) {
48  std::vector<Tuple> vertices_dummy_tet =
- +
50  vertices_dummy_tet.emplace_back(Tuple()); // add dummy vertex
51 
52  RawSimplex dummy_tet(mesh(), vertices_dummy_tet);
@@ -183,11 +183,11 @@
66 
67  int64_t u_incident_subset_edges = 0;
68 
-
69  for (const simplex::Simplex& e_u : u_open_star.simplex_vector(PrimitiveType::Edge)) {
+
69  for (const simplex::Simplex& e_u : u_open_star.simplex_vector(PrimitiveType::Edge)) {
70  if (edge_tag_acc.const_scalar_attribute(e_u.tuple()) == m_substructure_tag_value) {
71  ++u_incident_subset_edges;
72  std::vector<Tuple> vertices_dummy_tri =
- +
74  vertices_dummy_tri.emplace_back(Tuple()); // add dummy vertex
75 
76  RawSimplex dummy_tri(mesh(), vertices_dummy_tri);
@@ -220,10 +220,10 @@
103 
104  simplex::SimplexCollection v_open_star = open_star(mesh(), vertex_v);
105 
-
106  for (const simplex::Simplex& f_v : v_open_star.simplex_vector(PrimitiveType::Face)) {
+
106  for (const simplex::Simplex& f_v : v_open_star.simplex_vector(PrimitiveType::Face)) {
107  if (face_tag_acc.const_scalar_attribute(f_v.tuple()) == m_substructure_tag_value) {
108  std::vector<Tuple> vertices_dummy_tet =
- +
110  vertices_dummy_tet.emplace_back(Tuple()); // add dummy vertex
111 
112  RawSimplex dummy_tet(mesh(), vertices_dummy_tet);
@@ -243,11 +243,11 @@
126 
127  int64_t v_incident_subset_edges = 0;
128 
-
129  for (const simplex::Simplex& e_v : v_open_star.simplex_vector(PrimitiveType::Edge)) {
+
129  for (const simplex::Simplex& e_v : v_open_star.simplex_vector(PrimitiveType::Edge)) {
130  if (edge_tag_acc.const_scalar_attribute(e_v.tuple()) == m_substructure_tag_value) {
131  ++v_incident_subset_edges;
132  std::vector<Tuple> vertices_dummy_tri =
- +
134  vertices_dummy_tri.emplace_back(Tuple()); // add dummy vertex
135 
136  RawSimplex dummy_tri(mesh(), vertices_dummy_tri);
@@ -283,10 +283,10 @@
166  RawSimplex raw_edge_e(mesh(), edge_e);
167 
168  for (const simplex::Simplex& f_e :
- +
170  if (face_tag_acc.const_scalar_attribute(f_e.tuple()) == m_substructure_tag_value) {
171  std::vector<Tuple> vertices_dummy_tet =
- +
173  vertices_dummy_tet.emplace_back(Tuple()); // add dummy vertex
174 
175  RawSimplex raw_f_e(mesh(), f_e);
@@ -329,7 +329,7 @@ -
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:887
+
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:886
@@ -352,9 +352,9 @@
SimplexCollection link(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Definition: link.cpp:11
std::vector< Simplex > cofaces_single_dimension_simplices(const Mesh &mesh, const Simplex &simplex, PrimitiveType cofaces_type)
std::vector< Tuple > faces_single_dimension_tuples(const Mesh &mesh, const Simplex &simplex, const PrimitiveType face_type)
- - - + + + diff --git a/_todo_invariant_8cpp_source.html b/_todo_invariant_8cpp_source.html index 03ef880b14..489e3b22cc 100644 --- a/_todo_invariant_8cpp_source.html +++ b/_todo_invariant_8cpp_source.html @@ -170,7 +170,7 @@ -
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
bool before(const simplex::Simplex &t) const override
const TypedAttributeHandle< int64_t > m_todo_handle
const int64_t m_val
diff --git a/_tri_edge_swap_8cpp_source.html b/_tri_edge_swap_8cpp_source.html index 2480083a83..935a4daad1 100644 --- a/_tri_edge_swap_8cpp_source.html +++ b/_tri_edge_swap_8cpp_source.html @@ -194,8 +194,8 @@ -
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:949
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:948
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
PrimitiveType primitive_type() const override
diff --git a/_tri_edge_swap_8hpp_source.html b/_tri_edge_swap_8hpp_source.html index 1d4ccf5829..4933972e68 100644 --- a/_tri_edge_swap_8hpp_source.html +++ b/_tri_edge_swap_8hpp_source.html @@ -127,7 +127,7 @@
42 public:
43  TriEdgeSwap(Mesh& m);
44 
-
45  PrimitiveType primitive_type() const override { return PrimitiveType::Edge; }
+
45  PrimitiveType primitive_type() const override { return PrimitiveType::Edge; }
46 
47  inline EdgeSplit& split() { return m_split; }
48  inline EdgeCollapse& collapse() { return m_collapse; }
@@ -160,8 +160,8 @@ - - + + diff --git a/_tri_face_split_8cpp_source.html b/_tri_face_split_8cpp_source.html index 82d8c86d35..da5da723cb 100644 --- a/_tri_face_split_8cpp_source.html +++ b/_tri_face_split_8cpp_source.html @@ -224,8 +224,8 @@ -
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:945
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:944
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
const Mesh & mesh() const
Definition: Operation.hpp:45
diff --git a/_tri_face_split_8hpp_source.html b/_tri_face_split_8hpp_source.html index aa11aeb010..4acae12efc 100644 --- a/_tri_face_split_8hpp_source.html +++ b/_tri_face_split_8hpp_source.html @@ -127,7 +127,7 @@
22 public:
23  TriFaceSplit(Mesh& m);
24 
-
25  PrimitiveType primitive_type() const override { return PrimitiveType::Face; }
+
25  PrimitiveType primitive_type() const override { return PrimitiveType::Face; }
26 
27  inline EdgeSplit& split() { return m_split; }
28  inline EdgeCollapse& collapse() { return m_collapse; }
@@ -160,8 +160,8 @@
std::vector< simplex::Simplex > unmodified_primitives(const simplex::Simplex &simplex) const override
Returns all simplices that will be potentially affected by the operation.
- - + + diff --git a/_tri_mesh_8cpp_source.html b/_tri_mesh_8cpp_source.html index fb9f1dc15e..06cf8f5c78 100644 --- a/_tri_mesh_8cpp_source.html +++ b/_tri_mesh_8cpp_source.html @@ -126,65 +126,65 @@
9 namespace wmtk {
11  : Mesh(2)
-
12  , m_vf_handle(register_attribute_typed<int64_t>("m_vf", PrimitiveType::Vertex, 1, false, -1))
-
13  , m_ef_handle(register_attribute_typed<int64_t>("m_ef", PrimitiveType::Edge, 1, false, -1))
-
14  , m_fv_handle(register_attribute_typed<int64_t>("m_fv", PrimitiveType::Face, 3, false, -1))
-
15  , m_fe_handle(register_attribute_typed<int64_t>("m_fe", PrimitiveType::Face, 3, false, -1))
-
16  , m_ff_handle(register_attribute_typed<int64_t>("m_ff", PrimitiveType::Face, 3, false, -1))
-
17 {}
-
18 
-
19 
- -
21 {
-
22  //m_vf_accessor = std::make_unique<ConstAccessor<int64_t>>(*this,m_vf_handle);
-
23  //m_ef_accessor = std::make_unique<ConstAccessor<int64_t>>(*this,m_ef_handle);
-
24  //m_fv_accessor = std::make_unique<ConstAccessor<int64_t>>(*this,m_fv_handle);
-
25  //m_fe_accessor = std::make_unique<ConstAccessor<int64_t>>(*this,m_fe_handle);
-
26  //m_ff_accessor = std::make_unique<ConstAccessor<int64_t>>(*this,m_ff_handle);
-
27 }
-
28 
-
29 int64_t TriMesh::id(const Tuple& tuple, PrimitiveType type) const
-
30 {
-
31  switch (type) {
-
32  case PrimitiveType::Vertex: {
-
33  ConstAccessor<int64_t> fv_accessor = create_const_accessor<int64_t>(m_fv_handle);
-
34  int64_t v = fv_accessor.const_topological_scalar_attribute(tuple, PrimitiveType::Vertex);
-
35  return v;
-
36  }
-
37  case PrimitiveType::Edge: {
-
38  ConstAccessor<int64_t> fe_accessor = create_const_accessor<int64_t>(m_fe_handle);
-
39  int64_t v = fe_accessor.const_topological_scalar_attribute(tuple, PrimitiveType::Edge);
-
40  return v;
-
41  }
-
42  case PrimitiveType::Face: {
-
43  return tuple.m_global_cid;
-
44  }
-
45  case PrimitiveType::HalfEdge: [[fallthrough]];
-
46  case PrimitiveType::Tetrahedron: [[fallthrough]];
-
47  default: throw std::runtime_error("Tuple id: Invalid primitive type");
-
48  }
-
49 }
-
50 
-
51 bool TriMesh::is_boundary(PrimitiveType pt, const Tuple& tuple) const
-
52 {
-
53  switch (pt) {
-
54  case PrimitiveType::Vertex: return is_boundary_vertex(tuple);
-
55  case PrimitiveType::Edge: return is_boundary_edge(tuple);
- - - -
59  default: break;
-
60  }
-
61  throw std::runtime_error(
-
62  "tried to compute the boundary of an tri mesh for an invalid simplex dimension");
-
63  return false;
-
64 }
-
65 
-
66 bool TriMesh::is_boundary_edge(const Tuple& tuple) const
-
67 {
-
68  assert(is_valid_slow(tuple));
-
69  ConstAccessor<int64_t> ff_accessor = create_const_accessor<int64_t>(m_ff_handle);
-
70  return ff_accessor.const_vector_attribute(tuple)(tuple.m_local_eid) < 0;
+
12  , m_vf_handle(register_attribute_typed<int64_t>("m_vf", PrimitiveType::Vertex, 1, false, -1))
+
13  , m_ef_handle(register_attribute_typed<int64_t>("m_ef", PrimitiveType::Edge, 1, false, -1))
+
14  , m_fv_handle(register_attribute_typed<int64_t>("m_fv", PrimitiveType::Face, 3, false, -1))
+
15  , m_fe_handle(register_attribute_typed<int64_t>("m_fe", PrimitiveType::Face, 3, false, -1))
+
16  , m_ff_handle(register_attribute_typed<int64_t>("m_ff", PrimitiveType::Face, 3, false, -1))
+
17 {
+
18  m_vf_accessor = std::make_unique<attribute::MutableAccessor<int64_t>>(*this, m_vf_handle);
+
19  m_ef_accessor = std::make_unique<attribute::MutableAccessor<int64_t>>(*this, m_ef_handle);
+
20  m_fv_accessor = std::make_unique<attribute::MutableAccessor<int64_t>>(*this, m_fv_handle);
+
21  m_fe_accessor = std::make_unique<attribute::MutableAccessor<int64_t>>(*this, m_fe_handle);
+
22  m_ff_accessor = std::make_unique<attribute::MutableAccessor<int64_t>>(*this, m_ff_handle);
+
23 }
+
24 
+
25 
+
26 int64_t TriMesh::id(const Tuple& tuple, PrimitiveType type) const
+
27 {
+
28  switch (type) {
+
29  case PrimitiveType::Vertex: {
+
30  ConstAccessor<int64_t> fv_accessor = create_const_accessor<int64_t>(m_fv_handle);
+
31  // int64_t v = fv_accessor.const_topological_scalar_attribute(tuple, PrimitiveType::Vertex);
+
32  int64_t v = m_fv_accessor->const_topological_scalar_attribute(tuple, PrimitiveType::Vertex);
+
33  return v;
+
34  }
+
35  case PrimitiveType::Edge: {
+
36  // ConstAccessor<int64_t> fe_accessor = create_const_accessor<int64_t>(m_fe_handle);
+
37  // int64_t v = fe_accessor.const_topological_scalar_attribute(tuple, PrimitiveType::Edge);
+
38  int64_t v = m_fe_accessor->const_topological_scalar_attribute(tuple, PrimitiveType::Edge);
+
39  return v;
+
40  }
+
41  case PrimitiveType::Face: {
+
42  return tuple.m_global_cid;
+
43  }
+
44  case PrimitiveType::HalfEdge: [[fallthrough]];
+
45  case PrimitiveType::Tetrahedron: [[fallthrough]];
+
46  default: throw std::runtime_error("Tuple id: Invalid primitive type");
+
47  }
+
48 }
+
49 
+
50 bool TriMesh::is_boundary(PrimitiveType pt, const Tuple& tuple) const
+
51 {
+
52  switch (pt) {
+
53  case PrimitiveType::Vertex: return is_boundary_vertex(tuple);
+
54  case PrimitiveType::Edge: return is_boundary_edge(tuple);
+ + + +
58  default: break;
+
59  }
+
60  throw std::runtime_error(
+
61  "tried to compute the boundary of an tri mesh for an invalid simplex dimension");
+
62  return false;
+
63 }
+
64 
+
65 bool TriMesh::is_boundary_edge(const Tuple& tuple) const
+
66 {
+
67  assert(is_valid_slow(tuple));
+
68  // ConstAccessor<int64_t> ff_accessor = create_const_accessor<int64_t>(m_ff_handle);
+
69  // return ff_accessor.const_vector_attribute(tuple)(tuple.m_local_eid) < 0;
+
70  return m_ff_accessor->const_vector_attribute(tuple)(tuple.m_local_eid) < 0;
71 }
72 
73 bool TriMesh::is_boundary_vertex(const Tuple& vertex) const
@@ -208,502 +208,517 @@
91  return false;
92 }
93 
- +
95 {
96  assert(is_valid_slow(tuple));
97  bool ccw = is_ccw(tuple);
98 
99  switch (type) {
-
100  case PrimitiveType::Face: {
-
101  const int64_t gvid = id(tuple, PrimitiveType::Vertex);
-
102  const int64_t geid = id(tuple, PrimitiveType::Edge);
-
103  const int64_t gfid = id(tuple, PrimitiveType::Face);
+
100  case PrimitiveType::Face: {
+
101  const int64_t gvid = id(tuple, PrimitiveType::Vertex);
+
102  const int64_t geid = id(tuple, PrimitiveType::Edge);
+
103  const int64_t gfid = id(tuple, PrimitiveType::Face);
104 
-
105  ConstAccessor<int64_t> ff_accessor = create_const_accessor<int64_t>(m_ff_handle);
-
106  auto ff = ff_accessor.const_vector_attribute(tuple);
-
107 
-
108  int64_t gcid_new = ff(tuple.m_local_eid);
-
109  int64_t lvid_new = -1, leid_new = -1;
-
110 
-
111  ConstAccessor<int64_t> fv_accessor = create_const_accessor<int64_t>(m_fv_handle);
-
112  auto fv = fv_accessor.index_access().const_vector_attribute(gcid_new);
-
113 
-
114  ConstAccessor<int64_t> fe_accessor = create_const_accessor<int64_t>(m_fe_handle);
-
115  auto fe = fe_accessor.index_access().const_vector_attribute(gcid_new);
-
116 
-
117  if (gfid == gcid_new) {
-
118  // this supports 0,1,0 triangles not 0,0,0 triangles
-
119  int64_t oleid = tuple.m_local_eid;
-
120  int64_t olvid = tuple.m_local_vid;
-
121  for (int64_t i = 0; i < 3; ++i) {
-
122  if (i != oleid && fe(i) == geid) {
-
123  leid_new = i;
-
124  }
-
125  }
-
126  // if the old vertex is no "opposite of the old or new edges
-
127  // then they share the vertex
-
128  // a
-
129  // 0/ \1 <-- 0 and c share local ids, 1 and b share local ids
-
130  // /____\.
-
131  // b c
-
132  if (oleid != olvid && leid_new != olvid) {
-
133  lvid_new = olvid;
-
134  } else {
-
135  for (int64_t i = 0; i < 3; ++i) {
-
136  if (i != olvid && fv(i) == gvid) {
-
137  lvid_new = i;
-
138  }
-
139  }
-
140  }
-
141  } else {
-
142  for (int64_t i = 0; i < 3; ++i) {
-
143  if (fe(i) == geid) {
-
144  leid_new = i;
-
145  }
-
146  if (fv(i) == gvid) {
-
147  lvid_new = i;
+
105  //ConstAccessor<int64_t> ff_accessor = create_const_accessor<int64_t>(m_ff_handle);
+
106  //auto ff = ff_accessor.const_vector_attribute(tuple);
+
107  auto ff = m_ff_accessor->const_vector_attribute(tuple);
+
108 
+
109  int64_t gcid_new = ff(tuple.m_local_eid);
+
110  int64_t lvid_new = -1, leid_new = -1;
+
111 
+
112  ConstAccessor<int64_t> fv_accessor = create_const_accessor<int64_t>(m_fv_handle);
+
113  auto fv = fv_accessor.index_access().const_vector_attribute(gcid_new);
+
114  // auto fv = m_fv_accessor->index_access().const_vector_attribute(gcid_new);
+
115 
+
116  //ConstAccessor<int64_t> fe_accessor = create_const_accessor<int64_t>(m_fe_handle);
+
117  //auto fe = fe_accessor.index_access().const_vector_attribute(gcid_new);
+
118  auto fe = m_fe_accessor->index_access().const_vector_attribute(gcid_new);
+
119 
+
120  if (gfid == gcid_new) {
+
121  // this supports 0,1,0 triangles not 0,0,0 triangles
+
122  int64_t oleid = tuple.m_local_eid;
+
123  int64_t olvid = tuple.m_local_vid;
+
124  for (int64_t i = 0; i < 3; ++i) {
+
125  if (i != oleid && fe(i) == geid) {
+
126  leid_new = i;
+
127  }
+
128  }
+
129  // if the old vertex is no "opposite of the old or new edges
+
130  // then they share the vertex
+
131  // a
+
132  // 0/ \1 <-- 0 and c share local ids, 1 and b share local ids
+
133  // /____\.
+
134  // b c
+
135  if (oleid != olvid && leid_new != olvid) {
+
136  lvid_new = olvid;
+
137  } else {
+
138  for (int64_t i = 0; i < 3; ++i) {
+
139  if (i != olvid && fv(i) == gvid) {
+
140  lvid_new = i;
+
141  }
+
142  }
+
143  }
+
144  } else {
+
145  for (int64_t i = 0; i < 3; ++i) {
+
146  if (fe(i) == geid) {
+
147  leid_new = i;
148  }
-
149  }
-
150  }
-
151  assert(lvid_new != -1);
-
152  assert(leid_new != -1);
-
153 
- -
155 
-
156  const Tuple res(
-
157  lvid_new,
-
158  leid_new,
-
159  tuple.m_local_fid,
-
160  gcid_new,
-
161  get_cell_hash(gcid_new, hash_accessor));
-
162  assert(is_valid(res, hash_accessor));
-
163  return res;
-
164  }
- - - - -
169  default: {
-
170  assert(false);
-
171  return autogen::tri_mesh::local_switch_tuple(tuple, type);
-
172  }
-
173  }
-
174 }
-
175 
-
176 bool TriMesh::is_ccw(const Tuple& tuple) const
-
177 {
-
178  assert(is_valid_slow(tuple));
-
179  return autogen::tri_mesh::is_ccw(tuple);
-
180 }
-
181 
- -
183  Eigen::Ref<const RowVectors3l> FV,
-
184  Eigen::Ref<const RowVectors3l> FE,
-
185  Eigen::Ref<const RowVectors3l> FF,
-
186  Eigen::Ref<const VectorXl> VF,
-
187  Eigen::Ref<const VectorXl> EF)
-
188 {
-
189  // reserve memory for attributes
-
190 
-
191 
-
192  std::vector<int64_t> cap{
-
193  static_cast<int64_t>(VF.rows()),
-
194  static_cast<int64_t>(EF.rows()),
-
195  static_cast<int64_t>(FF.rows())};
-
196 
-
197  set_capacities(cap);
-
198 
+
149  if (fv(i) == gvid) {
+
150  lvid_new = i;
+
151  }
+
152  }
+
153  }
+
154  assert(lvid_new != -1);
+
155  assert(leid_new != -1);
+
156 
+ +
158 
+
159  const Tuple res(
+
160  lvid_new,
+
161  leid_new,
+
162  tuple.m_local_fid,
+
163  gcid_new,
+
164  get_cell_hash(gcid_new, hash_accessor));
+
165  assert(is_valid(res, hash_accessor));
+
166  return res;
+
167  }
+ + + + +
172  default: {
+
173  assert(false);
+
174  return autogen::tri_mesh::local_switch_tuple(tuple, type);
+
175  }
+
176  }
+
177 }
+
178 
+
179 bool TriMesh::is_ccw(const Tuple& tuple) const
+
180 {
+
181  assert(is_valid_slow(tuple));
+
182  return autogen::tri_mesh::is_ccw(tuple);
+
183 }
+
184 
+ +
186  Eigen::Ref<const RowVectors3l> FV,
+
187  Eigen::Ref<const RowVectors3l> FE,
+
188  Eigen::Ref<const RowVectors3l> FF,
+
189  Eigen::Ref<const VectorXl> VF,
+
190  Eigen::Ref<const VectorXl> EF)
+
191 {
+
192  // reserve memory for attributes
+
193 
+
194 
+
195  std::vector<int64_t> cap{
+
196  static_cast<int64_t>(VF.rows()),
+
197  static_cast<int64_t>(EF.rows()),
+
198  static_cast<int64_t>(FF.rows())};
199 
-
200  // get Accessors for topology
-
201  Accessor<int64_t> fv_accessor = create_accessor<int64_t>(m_fv_handle);
-
202  Accessor<int64_t> fe_accessor = create_accessor<int64_t>(m_fe_handle);
-
203  Accessor<int64_t> ff_accessor = create_accessor<int64_t>(m_ff_handle);
-
204  Accessor<int64_t> vf_accessor = create_accessor<int64_t>(m_vf_handle);
-
205  Accessor<int64_t> ef_accessor = create_accessor<int64_t>(m_ef_handle);
-
206 
- - - -
210 
-
211  // iterate over the matrices and fill attributes
-
212  for (int64_t i = 0; i < capacity(PrimitiveType::Face); ++i) {
-
213  fv_accessor.index_access().vector_attribute(i) = FV.row(i).transpose();
-
214  fe_accessor.index_access().vector_attribute(i) = FE.row(i).transpose();
-
215  ff_accessor.index_access().vector_attribute(i) = FF.row(i).transpose();
-
216 
-
217  f_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
-
218  }
-
219  // m_vf
-
220  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
-
221  vf_accessor.index_access().scalar_attribute(i) = VF(i);
-
222  v_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
-
223  }
-
224  // m_ef
-
225  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
-
226  ef_accessor.index_access().scalar_attribute(i) = EF(i);
-
227  e_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
-
228  }
-
229 }
-
230 
-
231 void TriMesh::initialize(Eigen::Ref<const RowVectors3l> F)
-
232 {
-
233  auto [FE, FF, VF, EF] = trimesh_topology_initialization(F);
-
234  initialize(F, FE, FF, VF, EF);
-
235 }
-
236 
-
237 Tuple TriMesh::tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
-
238 {
-
239  ConstAccessor<int64_t> fv_accessor = create_const_accessor<int64_t>(m_fv_handle);
-
240  auto fv = fv_accessor.index_access().const_vector_attribute(fid);
-
241  ConstAccessor<int64_t> fe_accessor = create_const_accessor<int64_t>(m_fe_handle);
-
242  auto fe = fe_accessor.index_access().const_vector_attribute(fid);
-
243 
-
244  int64_t lvid = -1;
-
245  int64_t leid = -1;
-
246 
-
247  for (int j = 0; j < 3; ++j) {
-
248  if (fv(j) == vid) {
-
249  lvid = j;
-
250  }
-
251  if (fe(j) == eid) {
-
252  leid = j;
-
253  }
-
254  }
-
255  assert(lvid != -1);
-
256  assert(leid != -1);
-
257 
-
258  return Tuple(
-
259  lvid,
-
260  leid,
-
261  -1,
-
262  fid,
-
263  get_cell_hash_slow(fid)); // TODO replace by function that takes hash accessor as parameter
-
264 }
-
265 
-
266 Tuple TriMesh::tuple_from_id(const PrimitiveType type, const int64_t gid) const
-
267 {
-
268  switch (type) {
-
269  case PrimitiveType::Vertex: {
-
270  return vertex_tuple_from_id(gid);
-
271  }
-
272  case PrimitiveType::Edge: {
-
273  return edge_tuple_from_id(gid);
-
274  }
-
275  case PrimitiveType::Face: {
-
276  return face_tuple_from_id(gid);
-
277  }
- - -
280  throw std::runtime_error("no tet tuple supported for trimesh");
-
281  break;
-
282  }
-
283  default: throw std::runtime_error("Invalid primitive type"); break;
+
200  set_capacities(cap);
+
201 
+
202 
+
203  // get Accessors for topology
+
204  Accessor<int64_t> fv_accessor = create_accessor<int64_t>(m_fv_handle);
+
205  Accessor<int64_t> fe_accessor = create_accessor<int64_t>(m_fe_handle);
+
206  Accessor<int64_t> ff_accessor = create_accessor<int64_t>(m_ff_handle);
+
207  Accessor<int64_t> vf_accessor = create_accessor<int64_t>(m_vf_handle);
+
208  Accessor<int64_t> ef_accessor = create_accessor<int64_t>(m_ef_handle);
+
209 
+ + + +
213 
+
214  // iterate over the matrices and fill attributes
+
215  for (int64_t i = 0; i < capacity(PrimitiveType::Face); ++i) {
+
216  fv_accessor.index_access().vector_attribute(i) = FV.row(i).transpose();
+
217  fe_accessor.index_access().vector_attribute(i) = FE.row(i).transpose();
+
218  ff_accessor.index_access().vector_attribute(i) = FF.row(i).transpose();
+
219 
+
220  f_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
+
221  }
+
222  // m_vf
+
223  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
+
224  auto& vf = vf_accessor.index_access().scalar_attribute(i);
+
225  vf = VF(i);
+
226  v_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
+
227  }
+
228  // m_ef
+
229  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
+
230  auto& ef = ef_accessor.index_access().scalar_attribute(i);
+
231  ef = EF(i);
+
232  e_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
+
233  }
+
234 }
+
235 
+
236 void TriMesh::initialize(Eigen::Ref<const RowVectors3l> F)
+
237 {
+
238  auto [FE, FF, VF, EF] = trimesh_topology_initialization(F);
+
239  initialize(F, FE, FF, VF, EF);
+
240 }
+
241 
+
242 Tuple TriMesh::tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
+
243 {
+
244  ConstAccessor<int64_t> fv_accessor = create_const_accessor<int64_t>(m_fv_handle);
+
245  auto fv = fv_accessor.index_access().const_vector_attribute(fid);
+
246  // auto fv = m_fv_accessor->index_access().const_vector_attribute(fid);
+
247  ConstAccessor<int64_t> fe_accessor = create_const_accessor<int64_t>(m_fe_handle);
+
248  auto fe = fe_accessor.index_access().const_vector_attribute(fid);
+
249  // auto fe = m_fe_accessor->index_access().const_vector_attribute(fid);
+
250 
+
251  int64_t lvid = -1;
+
252  int64_t leid = -1;
+
253 
+
254  for (int j = 0; j < 3; ++j) {
+
255  if (fv(j) == vid) {
+
256  lvid = j;
+
257  }
+
258  if (fe(j) == eid) {
+
259  leid = j;
+
260  }
+
261  }
+
262  assert(lvid != -1);
+
263  assert(leid != -1);
+
264 
+
265  return Tuple(
+
266  lvid,
+
267  leid,
+
268  -1,
+
269  fid,
+
270  get_cell_hash_slow(fid)); // TODO replace by function that takes hash accessor as parameter
+
271 }
+
272 
+
273 Tuple TriMesh::tuple_from_id(const PrimitiveType type, const int64_t gid) const
+
274 {
+
275  switch (type) {
+
276  case PrimitiveType::Vertex: {
+
277  return vertex_tuple_from_id(gid);
+
278  }
+
279  case PrimitiveType::Edge: {
+
280  return edge_tuple_from_id(gid);
+
281  }
+
282  case PrimitiveType::Face: {
+
283  return face_tuple_from_id(gid);
284  }
-
285 }
-
286 
- -
288 {
-
289  ConstAccessor<int64_t> vf_accessor = create_const_accessor<int64_t>(m_vf_handle);
-
290  auto f = vf_accessor.index_access().const_scalar_attribute(id);
-
291  ConstAccessor<int64_t> fv_accessor = create_const_accessor<int64_t>(m_fv_handle);
-
292  auto fv = fv_accessor.index_access().const_vector_attribute(f);
-
293  for (int64_t i = 0; i < 3; ++i) {
-
294  if (fv(i) == id) {
- -
296  const int64_t leid = autogen::tri_mesh::auto_2d_table_complete_vertex[i][1];
-
297  Tuple v_tuple = Tuple(
-
298  i,
-
299  leid,
-
300  -1,
-
301  f,
-
302  get_cell_hash_slow(f)); // TODO replace by function that takes hash
-
303  // accessor as parameter
-
304  assert(is_ccw(v_tuple)); // is_ccw also checks for validity
-
305  return v_tuple;
-
306  }
-
307  }
-
308  throw std::runtime_error("vertex_tuple_from_id failed");
-
309 }
-
310 
- -
312 {
-
313  ConstAccessor<int64_t> ef_accessor = create_const_accessor<int64_t>(m_ef_handle);
-
314  auto f = ef_accessor.index_access().const_scalar_attribute(id);
-
315  ConstAccessor<int64_t> fe_accessor = create_const_accessor<int64_t>(m_fe_handle);
-
316  auto fe = fe_accessor.index_access().const_vector_attribute(f);
-
317  for (int64_t i = 0; i < 3; ++i) {
-
318  if (fe(i) == id) {
- -
320  const int64_t lvid = autogen::tri_mesh::auto_2d_table_complete_edge[i][0];
-
321 
- -
323 
-
324  Tuple e_tuple = Tuple(lvid, i, -1, f, get_cell_hash(f, hash_accessor));
-
325  assert(is_ccw(e_tuple));
-
326  assert(is_valid(e_tuple, hash_accessor));
-
327  return e_tuple;
-
328  }
-
329  }
-
330  throw std::runtime_error("edge_tuple_from_id failed");
-
331 }
+ + +
287  throw std::runtime_error("no tet tuple supported for trimesh");
+
288  break;
+
289  }
+
290  default: throw std::runtime_error("Invalid primitive type"); break;
+
291  }
+
292 }
+
293 
+ +
295 {
+
296  //ConstAccessor<int64_t> vf_accessor = create_const_accessor<int64_t>(m_vf_handle);
+
297  //auto f = vf_accessor.index_access().const_scalar_attribute(id);
+
298  auto f = m_vf_accessor->index_access().const_scalar_attribute(id);
+
299  //ConstAccessor<int64_t> fv_accessor = create_const_accessor<int64_t>(m_fv_handle);
+
300  //auto fv = fv_accessor.index_access().const_vector_attribute(f);
+
301  auto fv = m_fv_accessor->index_access().const_vector_attribute(f);
+
302  for (int64_t i = 0; i < 3; ++i) {
+
303  if (fv(i) == id) {
+ +
305  const int64_t leid = autogen::tri_mesh::auto_2d_table_complete_vertex[i][1];
+
306  Tuple v_tuple = Tuple(
+
307  i,
+
308  leid,
+
309  -1,
+
310  f,
+
311  get_cell_hash_slow(f)); // TODO replace by function that takes hash
+
312  // accessor as parameter
+
313  assert(is_ccw(v_tuple)); // is_ccw also checks for validity
+
314  return v_tuple;
+
315  }
+
316  }
+
317  throw std::runtime_error("vertex_tuple_from_id failed");
+
318 }
+
319 
+ +
321 {
+
322  //ConstAccessor<int64_t> ef_accessor = create_const_accessor<int64_t>(m_ef_handle);
+
323  //auto f = ef_accessor.index_access().const_scalar_attribute(id);
+
324  auto f = m_ef_accessor->index_access().const_scalar_attribute(id);
+
325  //ConstAccessor<int64_t> fe_accessor = create_const_accessor<int64_t>(m_fe_handle);
+
326  //auto fe = fe_accessor.index_access().const_vector_attribute(f);
+
327  auto fe = m_fe_accessor->index_access().const_vector_attribute(f);
+
328  for (int64_t i = 0; i < 3; ++i) {
+
329  if (fe(i) == id) {
+ +
331  const int64_t lvid = autogen::tri_mesh::auto_2d_table_complete_edge[i][0];
332 
- -
334 {
-
335  Tuple f_tuple = Tuple(
- - -
338  -1,
-
339  id,
- -
341 
-
342 
-
343  );
-
344  assert(is_ccw(f_tuple));
-
345  assert(is_valid_slow(f_tuple));
-
346  return f_tuple;
-
347 }
-
348 
-
349 bool TriMesh::is_valid(const Tuple& tuple, ConstAccessor<int64_t>& hash_accessor) const
-
350 {
-
351  if (tuple.is_null()) {
-
352  logger().debug("Tuple was null and therefore not valid");
-
353  return false;
-
354  }
-
355 
-
356  const bool is_connectivity_valid = tuple.m_local_vid >= 0 && tuple.m_local_eid >= 0 &&
-
357  tuple.m_global_cid >= 0 &&
- + +
334 
+
335  Tuple e_tuple = Tuple(lvid, i, -1, f, get_cell_hash(f, hash_accessor));
+
336  assert(is_ccw(e_tuple));
+
337  assert(is_valid(e_tuple, hash_accessor));
+
338  return e_tuple;
+
339  }
+
340  }
+
341  throw std::runtime_error("edge_tuple_from_id failed");
+
342 }
+
343 
+ +
345 {
+
346  Tuple f_tuple = Tuple(
+ + +
349  -1,
+
350  id,
+ +
352 
+
353 
+
354  );
+
355  assert(is_ccw(f_tuple));
+
356  assert(is_valid_slow(f_tuple));
+
357  return f_tuple;
+
358 }
359 
-
360  if (!is_connectivity_valid) {
-
361 #if !defined(NDEBUG)
-
362  assert(tuple.m_local_vid >= 0);
-
363  assert(tuple.m_local_eid >= 0);
-
364  assert(tuple.m_global_cid);
- -
366  logger().debug(
-
367  "tuple.m_local_vid={} >= 0 && tuple.m_local_eid={} >= 0 &&"
-
368  " tuple.m_global_cid={} >= 0 &&"
-
369  " autogen::tri_mesh::tuple_is_valid_for_ccw(tuple)={}",
-
370  tuple.m_local_vid,
-
371  tuple.m_local_eid,
-
372  tuple.m_global_cid,
- -
374  ;
-
375 #endif
-
376  return false;
-
377  }
-
378 
-
379  return Mesh::is_hash_valid(tuple, hash_accessor);
-
380 }
-
381 
- -
383 {
-
384  // get Accessors for topology
-
385  ConstAccessor<int64_t> fv_accessor = create_const_accessor<int64_t>(m_fv_handle);
-
386  ConstAccessor<int64_t> fe_accessor = create_const_accessor<int64_t>(m_fe_handle);
-
387  ConstAccessor<int64_t> ff_accessor = create_const_accessor<int64_t>(m_ff_handle);
-
388  ConstAccessor<int64_t> vf_accessor = create_const_accessor<int64_t>(m_vf_handle);
-
389  ConstAccessor<int64_t> ef_accessor = create_const_accessor<int64_t>(m_ef_handle);
- - - -
393 
-
394  // EF and FE
-
395  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
-
396  if (e_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
-
397  wmtk::logger().debug("Edge {} is deleted", i);
-
398  continue;
-
399  }
-
400  int cnt = 0;
-
401  long ef_val = ef_accessor.index_access().const_scalar_attribute(i);
-
402 
-
403  auto fe_val = fe_accessor.index_access().const_vector_attribute(ef_val);
-
404  for (int64_t j = 0; j < 3; ++j) {
-
405  if (fe_val(j) == i) {
-
406  cnt++;
-
407  }
-
408  }
-
409  if (cnt == 0) {
-
410  wmtk::logger().debug(
-
411  "EF[{0}] {1} and FE:[EF[{0}]] = {2} are not "
-
412  "compatible ",
-
413  i,
-
414  ef_val,
-
415  fmt::join(fe_val, ","));
-
416 
-
417  // std::cout << "EF and FE not compatible" << std::endl;
-
418  return false;
+
360 bool TriMesh::is_valid(const Tuple& tuple, ConstAccessor<int64_t>& hash_accessor) const
+
361 {
+
362  if (tuple.is_null()) {
+
363  logger().debug("Tuple was null and therefore not valid");
+
364  return false;
+
365  }
+
366 
+
367  const bool is_connectivity_valid = tuple.m_local_vid >= 0 && tuple.m_local_eid >= 0 &&
+
368  tuple.m_global_cid >= 0 &&
+ +
370 
+
371  if (!is_connectivity_valid) {
+
372 #if !defined(NDEBUG)
+
373  assert(tuple.m_local_vid >= 0);
+
374  assert(tuple.m_local_eid >= 0);
+
375  assert(tuple.m_global_cid);
+ +
377  logger().debug(
+
378  "tuple.m_local_vid={} >= 0 && tuple.m_local_eid={} >= 0 &&"
+
379  " tuple.m_global_cid={} >= 0 &&"
+
380  " autogen::tri_mesh::tuple_is_valid_for_ccw(tuple)={}",
+
381  tuple.m_local_vid,
+
382  tuple.m_local_eid,
+
383  tuple.m_global_cid,
+ +
385  ;
+
386 #endif
+
387  return false;
+
388  }
+
389 
+
390  return Mesh::is_hash_valid(tuple, hash_accessor);
+
391 }
+
392 
+ +
394 {
+
395  // get Accessors for topology
+
396  ConstAccessor<int64_t> fv_accessor = create_const_accessor<int64_t>(m_fv_handle);
+
397  ConstAccessor<int64_t> fe_accessor = create_const_accessor<int64_t>(m_fe_handle);
+
398  ConstAccessor<int64_t> ff_accessor = create_const_accessor<int64_t>(m_ff_handle);
+
399  ConstAccessor<int64_t> vf_accessor = create_const_accessor<int64_t>(m_vf_handle);
+
400  ConstAccessor<int64_t> ef_accessor = create_const_accessor<int64_t>(m_ef_handle);
+ + + +
404 
+
405  // EF and FE
+
406  for (int64_t i = 0; i < capacity(PrimitiveType::Edge); ++i) {
+
407  if (e_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
+
408  wmtk::logger().debug("Edge {} is deleted", i);
+
409  continue;
+
410  }
+
411  int cnt = 0;
+
412  long ef_val = ef_accessor.index_access().const_scalar_attribute(i);
+
413 
+
414  auto fe_val = fe_accessor.index_access().const_vector_attribute(ef_val);
+
415  for (int64_t j = 0; j < 3; ++j) {
+
416  if (fe_val(j) == i) {
+
417  cnt++;
+
418  }
419  }
-
420  }
-
421 
-
422  // VF and FV
-
423  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
-
424  const int64_t vf = vf_accessor.index_access().const_scalar_attribute(i);
-
425  if (v_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
-
426  wmtk::logger().debug("Vertex {} is deleted", i);
-
427  continue;
-
428  }
-
429  int cnt = 0;
-
430 
-
431  auto fv = fv_accessor.index_access().const_vector_attribute(vf);
-
432  for (int64_t j = 0; j < 3; ++j) {
-
433  if (fv(j) == i) {
-
434  cnt++;
-
435  }
-
436  }
-
437  if (cnt == 0) {
-
438  wmtk::logger().debug(
-
439  "VF and FV not compatible, could not find VF[{}] = {} "
-
440  "in FV[{}] = [{}]",
-
441  i,
-
442  vf,
-
443  vf,
-
444  fmt::join(fv, ","));
-
445  return false;
-
446  }
-
447  }
-
448 
-
449  // FE and EF
-
450  for (int64_t i = 0; i < capacity(PrimitiveType::Face); ++i) {
-
451  if (f_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
-
452  wmtk::logger().debug("Face {} is deleted", i);
-
453  continue;
-
454  }
-
455  auto fe = fe_accessor.index_access().const_vector_attribute(i);
-
456  auto ff = ff_accessor.index_access().const_vector_attribute(i);
-
457 
-
458  for (int64_t j = 0; j < 3; ++j) {
-
459  int neighbor_fid = ff(j);
-
460  const bool is_boundary = neighbor_fid == -1;
-
461  if (is_boundary) {
-
462  auto ef = ef_accessor.index_access().const_scalar_attribute(fe(j));
-
463  if (ef != i) {
-
464  wmtk::logger().debug(
-
465  "Even though local edge {} of face {} is "
-
466  "boundary (global eid is {}), "
-
467  "ef[{}] = {} != {}",
-
468  j,
-
469  i,
-
470  fe(j),
-
471  fe(j),
-
472  ef,
-
473  i);
-
474  return false;
-
475  }
-
476  } else {
-
477  if (neighbor_fid == i) {
-
478  logger().warn(
-
479  "Connectivity check cannot work when mapping a "
-
480  "face to itself (face {})",
-
481  i);
-
482  assert(false);
-
483  continue;
-
484  }
-
485  auto neighbor_ff = ff_accessor.index_access().const_vector_attribute(neighbor_fid);
-
486 
-
487  if ((neighbor_ff.array() == i).any()) {
-
488  auto neighbor_fe =
-
489  fe_accessor.index_access().const_vector_attribute(neighbor_fid);
-
490 
-
491  int edge_shared_count = 0;
-
492  for (int local_neighbor_eid = 0; local_neighbor_eid < 3; ++local_neighbor_eid) {
-
493  // find some edge which is shared
-
494  if (neighbor_ff(local_neighbor_eid) == i) {
-
495  if (fe(j) == neighbor_fe(local_neighbor_eid)) {
-
496  edge_shared_count++;
-
497  }
-
498  }
-
499  }
-
500  if (edge_shared_count != 1) {
-
501  wmtk::logger().debug(
-
502  "face {} with fe={} neighbor fe[{}] = {} "
-
503  "was unable to find itself "
-
504  "uniquely (found {})",
-
505  i,
-
506  fmt::join(fe, ","),
-
507  neighbor_fid,
-
508  fmt::join(neighbor_fe, ","),
-
509  edge_shared_count);
-
510  return false;
-
511  }
-
512  } else {
-
513  wmtk::logger().debug(
-
514  "face {} with ff={} neighbor ff[{}] = {} was "
-
515  "unable to find itself",
-
516  i,
-
517  fmt::join(ff, ","),
-
518  neighbor_fid,
-
519  fmt::join(neighbor_ff, ","));
-
520  return false;
-
521  }
-
522  }
-
523  }
-
524  }
-
525 
-
526  return true;
-
527 }
-
528 
- -
530 {
-
531  Tuple r = t;
-
532  r.m_global_cid = cid;
-
533  return r;
-
534 }
-
535 
-
536 std::vector<std::vector<TypedAttributeHandle<int64_t>>> TriMesh::connectivity_attributes() const
-
537 {
-
538  std::vector<std::vector<TypedAttributeHandle<int64_t>>> handles(3);
+
420  if (cnt == 0) {
+
421  wmtk::logger().debug(
+
422  "EF[{0}] {1} and FE:[EF[{0}]] = {2} are not "
+
423  "compatible ",
+
424  i,
+
425  ef_val,
+
426  fmt::join(fe_val, ","));
+
427 
+
428  // std::cout << "EF and FE not compatible" << std::endl;
+
429  return false;
+
430  }
+
431  }
+
432 
+
433  // VF and FV
+
434  for (int64_t i = 0; i < capacity(PrimitiveType::Vertex); ++i) {
+
435  const int64_t vf = vf_accessor.index_access().const_scalar_attribute(i);
+
436  if (v_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
+
437  wmtk::logger().debug("Vertex {} is deleted", i);
+
438  continue;
+
439  }
+
440  int cnt = 0;
+
441 
+
442  auto fv = fv_accessor.index_access().const_vector_attribute(vf);
+
443  for (int64_t j = 0; j < 3; ++j) {
+
444  if (fv(j) == i) {
+
445  cnt++;
+
446  }
+
447  }
+
448  if (cnt == 0) {
+
449  wmtk::logger().debug(
+
450  "VF and FV not compatible, could not find VF[{}] = {} "
+
451  "in FV[{}] = [{}]",
+
452  i,
+
453  vf,
+
454  vf,
+
455  fmt::join(fv, ","));
+
456  return false;
+
457  }
+
458  }
+
459 
+
460  // FE and EF
+
461  for (int64_t i = 0; i < capacity(PrimitiveType::Face); ++i) {
+
462  if (f_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
+
463  wmtk::logger().debug("Face {} is deleted", i);
+
464  continue;
+
465  }
+
466  auto fe = fe_accessor.index_access().const_vector_attribute(i);
+
467  auto ff = ff_accessor.index_access().const_vector_attribute(i);
+
468 
+
469  for (int64_t j = 0; j < 3; ++j) {
+
470  int neighbor_fid = ff(j);
+
471  const bool is_boundary = neighbor_fid == -1;
+
472  if (is_boundary) {
+
473  auto ef = ef_accessor.index_access().const_scalar_attribute(fe(j));
+
474  if (ef != i) {
+
475  wmtk::logger().debug(
+
476  "Even though local edge {} of face {} is "
+
477  "boundary (global eid is {}), "
+
478  "ef[{}] = {} != {}",
+
479  j,
+
480  i,
+
481  fe(j),
+
482  fe(j),
+
483  ef,
+
484  i);
+
485  return false;
+
486  }
+
487  } else {
+
488  if (neighbor_fid == i) {
+
489  logger().warn(
+
490  "Connectivity check cannot work when mapping a "
+
491  "face to itself (face {})",
+
492  i);
+
493  assert(false);
+
494  continue;
+
495  }
+
496  auto neighbor_ff = ff_accessor.index_access().const_vector_attribute(neighbor_fid);
+
497 
+
498  if ((neighbor_ff.array() == i).any()) {
+
499  auto neighbor_fe =
+
500  fe_accessor.index_access().const_vector_attribute(neighbor_fid);
+
501 
+
502  int edge_shared_count = 0;
+
503  for (int local_neighbor_eid = 0; local_neighbor_eid < 3; ++local_neighbor_eid) {
+
504  // find some edge which is shared
+
505  if (neighbor_ff(local_neighbor_eid) == i) {
+
506  if (fe(j) == neighbor_fe(local_neighbor_eid)) {
+
507  edge_shared_count++;
+
508  }
+
509  }
+
510  }
+
511  if (edge_shared_count != 1) {
+
512  wmtk::logger().debug(
+
513  "face {} with fe={} neighbor fe[{}] = {} "
+
514  "was unable to find itself "
+
515  "uniquely (found {})",
+
516  i,
+
517  fmt::join(fe, ","),
+
518  neighbor_fid,
+
519  fmt::join(neighbor_fe, ","),
+
520  edge_shared_count);
+
521  return false;
+
522  }
+
523  } else {
+
524  wmtk::logger().debug(
+
525  "face {} with ff={} neighbor ff[{}] = {} was "
+
526  "unable to find itself",
+
527  i,
+
528  fmt::join(ff, ","),
+
529  neighbor_fid,
+
530  fmt::join(neighbor_ff, ","));
+
531  return false;
+
532  }
+
533  }
+
534  }
+
535  }
+
536 
+
537  return true;
+
538 }
539 
-
540  handles[2].push_back(m_vf_handle);
-
541  handles[2].push_back(m_ef_handle);
-
542  handles[2].push_back(m_ff_handle);
-
543 
-
544  handles[1].push_back(m_fe_handle);
-
545 
-
546  handles[0].push_back(m_fv_handle);
-
547 
-
548  return handles;
-
549 }
+ +
541 {
+
542  Tuple r = t;
+
543  r.m_global_cid = cid;
+
544  return r;
+
545 }
+
546 
+
547 std::vector<std::vector<TypedAttributeHandle<int64_t>>> TriMesh::connectivity_attributes() const
+
548 {
+
549  std::vector<std::vector<TypedAttributeHandle<int64_t>>> handles(3);
550 
-
551 
-
552 } // namespace wmtk
+
551  handles[2].push_back(m_vf_handle);
+
552  handles[2].push_back(m_ef_handle);
+
553  handles[2].push_back(m_ff_handle);
+
554 
+
555  handles[1].push_back(m_fe_handle);
+
556 
+
557  handles[0].push_back(m_fv_handle);
+
558 
+
559  return handles;
+
560 }
+
561 
+
562 
+
563 } // namespace wmtk
-
void set_capacities(std::vector< int64_t > capacities)
+
void set_capacities(std::vector< int64_t > capacities)
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
-
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:945
+
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:944
bool is_hash_valid(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
Definition: Mesh.cpp:60
-
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
+
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
int64_t get_cell_hash_slow(int64_t cell_index) const
Definition: Mesh.cpp:154
-
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:949
+
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:948
ConstAccessor< int64_t > get_const_cell_hash_accessor() const
Definition: Mesh.cpp:92
bool is_valid_slow(const Tuple &tuple) const
Definition: Mesh.cpp:72
int64_t get_cell_hash(int64_t cell_index, const ConstAccessor< int64_t > &hash_accessor) const
Definition: Mesh.cpp:149
-
std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
Definition: TriMesh.cpp:536
-
Tuple face_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:333
+
std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
Definition: TriMesh.cpp:547
+
Tuple face_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:344
bool is_boundary_vertex(const Tuple &tuple) const
Definition: TriMesh.cpp:73
-
attribute::TypedAttributeHandle< int64_t > m_vf_handle
Definition: TriMesh.hpp:89
-
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: TriMesh.cpp:29
-
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
-
Tuple vertex_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:287
-
Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
Definition: TriMesh.cpp:237
-
static Tuple with_different_cid(const Tuple &t, int64_t cid)
Definition: TriMesh.cpp:529
-
void initialize(Eigen::Ref< const RowVectors3l > FV, Eigen::Ref< const RowVectors3l > FE, Eigen::Ref< const RowVectors3l > FF, Eigen::Ref< const VectorXl > VF, Eigen::Ref< const VectorXl > EF)
Definition: TriMesh.cpp:182
-
bool is_connectivity_valid() const override
Definition: TriMesh.cpp:382
-
attribute::TypedAttributeHandle< int64_t > m_ff_handle
Definition: TriMesh.hpp:94
-
attribute::TypedAttributeHandle< int64_t > m_ef_handle
Definition: TriMesh.hpp:90
+
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_ff_accessor
Definition: TriMesh.hpp:101
+
attribute::TypedAttributeHandle< int64_t > m_vf_handle
Definition: TriMesh.hpp:90
+
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: TriMesh.cpp:26
+
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
+
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_vf_accessor
Definition: TriMesh.hpp:97
+
Tuple vertex_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:294
+
Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
Definition: TriMesh.cpp:242
+
static Tuple with_different_cid(const Tuple &t, int64_t cid)
Definition: TriMesh.cpp:540
+
void initialize(Eigen::Ref< const RowVectors3l > FV, Eigen::Ref< const RowVectors3l > FE, Eigen::Ref< const RowVectors3l > FF, Eigen::Ref< const VectorXl > VF, Eigen::Ref< const VectorXl > EF)
Definition: TriMesh.cpp:185
+
bool is_connectivity_valid() const override
Definition: TriMesh.cpp:393
+
attribute::TypedAttributeHandle< int64_t > m_ff_handle
Definition: TriMesh.hpp:95
+
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_fv_accessor
Definition: TriMesh.hpp:99
+
attribute::TypedAttributeHandle< int64_t > m_ef_handle
Definition: TriMesh.hpp:91
Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
Definition: TriMesh.cpp:94
-
void reload_accessors() const override
Definition: TriMesh.cpp:20
-
bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
Definition: TriMesh.cpp:176
-
bool is_boundary_edge(const Tuple &tuple) const
Definition: TriMesh.cpp:66
-
attribute::TypedAttributeHandle< int64_t > m_fv_handle
Definition: TriMesh.hpp:92
+
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_fe_accessor
Definition: TriMesh.hpp:100
+
bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
Definition: TriMesh.cpp:179
+
bool is_boundary_edge(const Tuple &tuple) const
Definition: TriMesh.cpp:65
+
attribute::TypedAttributeHandle< int64_t > m_fv_handle
Definition: TriMesh.hpp:93
+
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_ef_accessor
Definition: TriMesh.hpp:98
-
Tuple edge_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:311
-
bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
Definition: TriMesh.cpp:349
-
attribute::TypedAttributeHandle< int64_t > m_fe_handle
Definition: TriMesh.hpp:93
-
Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override
internal function that returns the tuple of requested type, and has the global index cid
Definition: TriMesh.cpp:266
+
Tuple edge_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:320
+
bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
Definition: TriMesh.cpp:360
+
attribute::TypedAttributeHandle< int64_t > m_fe_handle
Definition: TriMesh.hpp:94
+
Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override
internal function that returns the tuple of requested type, and has the global index cid
Definition: TriMesh.cpp:273
bool is_null() const
Definition: Tuple.cpp:56
int8_t m_local_vid
Definition: Tuple.hpp:34
@@ -719,13 +734,13 @@
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
- - - - - -
std::tuple< RowVectors3l, RowVectors3l, VectorXl, VectorXl > trimesh_topology_initialization(Eigen::Ref< const RowVectors3l > F)
+ + + + + + diff --git a/_tri_mesh_8hpp_source.html b/_tri_mesh_8hpp_source.html index cb77beffdb..55dc77fa0b 100644 --- a/_tri_mesh_8hpp_source.html +++ b/_tri_mesh_8hpp_source.html @@ -145,14 +145,14 @@
28 
29  int64_t top_cell_dimension() const override { return 2; }
30 
-
31  Tuple switch_tuple(const Tuple& tuple, PrimitiveType type) const override;
+
31  Tuple switch_tuple(const Tuple& tuple, PrimitiveType type) const override;
32 
36  Tuple next_edge(const Tuple& tuple) const { return switch_edge(switch_vertex(tuple)); }
40  Tuple prev_edge(const Tuple& tuple) const { return switch_vertex(switch_edge(tuple)); }
41 
42  bool is_ccw(const Tuple& tuple) const override;
43  using Mesh::is_boundary;
-
44  bool is_boundary(PrimitiveType pt, const Tuple& tuple) const override;
+
44  bool is_boundary(PrimitiveType pt, const Tuple& tuple) const override;
45  bool is_boundary_vertex(const Tuple& tuple) const;
46  bool is_boundary_edge(const Tuple& tuple) const;
47 
@@ -176,91 +176,91 @@
65 #else
66 protected:
67 #endif
-
68  int64_t id(const Tuple& tuple, PrimitiveType type) const override;
+
68  int64_t id(const Tuple& tuple, PrimitiveType type) const override;
69  int64_t id(const simplex::Simplex& simplex) const
70  {
71  return id(simplex.tuple(), simplex.primitive_type());
72  }
73 
-
74  int64_t id_vertex(const Tuple& tuple) const { return id(tuple, PrimitiveType::Vertex); }
-
75  int64_t id_edge(const Tuple& tuple) const { return id(tuple, PrimitiveType::Edge); }
-
76  int64_t id_face(const Tuple& tuple) const { return id(tuple, PrimitiveType::Face); }
+
74  int64_t id_vertex(const Tuple& tuple) const { return id(tuple, PrimitiveType::Vertex); }
+
75  int64_t id_edge(const Tuple& tuple) const { return id(tuple, PrimitiveType::Edge); }
+
76  int64_t id_face(const Tuple& tuple) const { return id(tuple, PrimitiveType::Face); }
77 
-
85  Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override;
+
85  Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override;
86  Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const;
87 
88 protected:
- - -
91 
- - - -
95 
-
96  mutable std::unique_ptr<ConstAccessor<int64_t>> m_vf_accessor;
-
97  mutable std::unique_ptr<ConstAccessor<int64_t>> m_ef_accessor;
-
98  mutable std::unique_ptr<ConstAccessor<int64_t>> m_fv_accessor;
-
99  mutable std::unique_ptr<ConstAccessor<int64_t>> m_fe_accessor;
-
100  mutable std::unique_ptr<ConstAccessor<int64_t>> m_ff_accessor;
-
101 
-
102  Tuple vertex_tuple_from_id(int64_t id) const;
-
103  Tuple edge_tuple_from_id(int64_t id) const;
-
104  Tuple face_tuple_from_id(int64_t id) const;
-
105 
-
106  void reload_accessors() const override;
+
89 
+ + +
92 
+ + + +
96 
+
97  std::unique_ptr<attribute::MutableAccessor<int64_t>> m_vf_accessor = nullptr;
+
98  std::unique_ptr<attribute::MutableAccessor<int64_t>> m_ef_accessor = nullptr;
+
99  std::unique_ptr<attribute::MutableAccessor<int64_t>> m_fv_accessor = nullptr;
+
100  std::unique_ptr<attribute::MutableAccessor<int64_t>> m_fe_accessor = nullptr;
+
101  std::unique_ptr<attribute::MutableAccessor<int64_t>> m_ff_accessor = nullptr;
+
102 
+
103 
+
104  Tuple vertex_tuple_from_id(int64_t id) const;
+
105  Tuple edge_tuple_from_id(int64_t id) const;
+
106  Tuple face_tuple_from_id(int64_t id) const;
107 
- -
109  static Tuple with_different_cid(const Tuple& t, int64_t cid);
-
110 };
-
111 
-
112 } // namespace wmtk
+
108 
+ +
110  static Tuple with_different_cid(const Tuple& t, int64_t cid);
+
111 };
+
112 
+
113 } // namespace wmtk
-
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:945
+
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:944
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
-
std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
Definition: TriMesh.cpp:536
-
std::unique_ptr< ConstAccessor< int64_t > > m_fe_accessor
Definition: TriMesh.hpp:99
+
std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
Definition: TriMesh.cpp:547
Tuple next_edge(const Tuple &tuple) const
jump to the next edge by performing a switch of vertex and edge
Definition: TriMesh.hpp:36
-
Tuple face_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:333
-
std::unique_ptr< ConstAccessor< int64_t > > m_vf_accessor
Definition: TriMesh.hpp:96
+
Tuple face_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:344
int64_t id_face(const Tuple &tuple) const
Definition: TriMesh.hpp:76
bool is_boundary_vertex(const Tuple &tuple) const
Definition: TriMesh.cpp:73
int64_t top_cell_dimension() const override
Definition: TriMesh.hpp:29
-
attribute::TypedAttributeHandle< int64_t > m_vf_handle
Definition: TriMesh.hpp:89
+
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_ff_accessor
Definition: TriMesh.hpp:101
+
attribute::TypedAttributeHandle< int64_t > m_vf_handle
Definition: TriMesh.hpp:90
TriMesh & operator=(const TriMesh &o)=delete
int64_t id_vertex(const Tuple &tuple) const
Definition: TriMesh.hpp:74
-
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: TriMesh.cpp:29
-
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
-
Tuple vertex_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:287
-
Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
Definition: TriMesh.cpp:237
+
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: TriMesh.cpp:26
+
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
+
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_vf_accessor
Definition: TriMesh.hpp:97
+
Tuple vertex_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:294
+
Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
Definition: TriMesh.cpp:242
int64_t id_edge(const Tuple &tuple) const
Definition: TriMesh.hpp:75
-
static Tuple with_different_cid(const Tuple &t, int64_t cid)
Definition: TriMesh.cpp:529
+
static Tuple with_different_cid(const Tuple &t, int64_t cid)
Definition: TriMesh.cpp:540
Tuple prev_edge(const Tuple &tuple) const
jump to the previous edge by performing a switch of edge and vertex
Definition: TriMesh.hpp:40
-
void initialize(Eigen::Ref< const RowVectors3l > FV, Eigen::Ref< const RowVectors3l > FE, Eigen::Ref< const RowVectors3l > FF, Eigen::Ref< const VectorXl > VF, Eigen::Ref< const VectorXl > EF)
Definition: TriMesh.cpp:182
-
bool is_connectivity_valid() const override
Definition: TriMesh.cpp:382
-
attribute::TypedAttributeHandle< int64_t > m_ff_handle
Definition: TriMesh.hpp:94
-
attribute::TypedAttributeHandle< int64_t > m_ef_handle
Definition: TriMesh.hpp:90
+
void initialize(Eigen::Ref< const RowVectors3l > FV, Eigen::Ref< const RowVectors3l > FE, Eigen::Ref< const RowVectors3l > FF, Eigen::Ref< const VectorXl > VF, Eigen::Ref< const VectorXl > EF)
Definition: TriMesh.cpp:185
+
bool is_connectivity_valid() const override
Definition: TriMesh.cpp:393
+
attribute::TypedAttributeHandle< int64_t > m_ff_handle
Definition: TriMesh.hpp:95
+
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_fv_accessor
Definition: TriMesh.hpp:99
+
attribute::TypedAttributeHandle< int64_t > m_ef_handle
Definition: TriMesh.hpp:91
Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
Definition: TriMesh.cpp:94
int64_t id(const simplex::Simplex &simplex) const
Definition: TriMesh.hpp:69
TriMesh(TriMesh &&o)=default
-
void reload_accessors() const override
Definition: TriMesh.cpp:20
-
bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
Definition: TriMesh.cpp:176
-
std::unique_ptr< ConstAccessor< int64_t > > m_ff_accessor
Definition: TriMesh.hpp:100
+
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_fe_accessor
Definition: TriMesh.hpp:100
+
bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
Definition: TriMesh.cpp:179
TriMesh & operator=(TriMesh &&o)=default
-
bool is_boundary_edge(const Tuple &tuple) const
Definition: TriMesh.cpp:66
-
attribute::TypedAttributeHandle< int64_t > m_fv_handle
Definition: TriMesh.hpp:92
+
bool is_boundary_edge(const Tuple &tuple) const
Definition: TriMesh.cpp:65
+
attribute::TypedAttributeHandle< int64_t > m_fv_handle
Definition: TriMesh.hpp:93
+
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_ef_accessor
Definition: TriMesh.hpp:98
TriMesh(const TriMesh &o)=delete
-
std::unique_ptr< ConstAccessor< int64_t > > m_fv_accessor
Definition: TriMesh.hpp:98
-
Tuple edge_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:311
-
bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
Definition: TriMesh.cpp:349
-
attribute::TypedAttributeHandle< int64_t > m_fe_handle
Definition: TriMesh.hpp:93
-
std::unique_ptr< ConstAccessor< int64_t > > m_ef_accessor
Definition: TriMesh.hpp:97
-
Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override
internal function that returns the tuple of requested type, and has the global index cid
Definition: TriMesh.cpp:266
+
Tuple edge_tuple_from_id(int64_t id) const
Definition: TriMesh.cpp:320
+
bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
Definition: TriMesh.cpp:360
+
attribute::TypedAttributeHandle< int64_t > m_fe_handle
Definition: TriMesh.hpp:94
+
Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const override
internal function that returns the tuple of requested type, and has the global index cid
Definition: TriMesh.cpp:273
@@ -271,10 +271,10 @@
PrimitiveType primitive_type() const
Definition: Simplex.hpp:23
Definition: Accessor.cpp:8
Accessor< T, true > ConstAccessor
Definition: Accessor.hpp:126
- - - - + + + + diff --git a/_tri_mesh_operation_executor_8cpp_source.html b/_tri_mesh_operation_executor_8cpp_source.html index 6ca86f83d4..bcf7ef9f12 100644 --- a/_tri_mesh_operation_executor_8cpp_source.html +++ b/_tri_mesh_operation_executor_8cpp_source.html @@ -207,7 +207,7 @@
90  TriMesh& m,
91  const Tuple& operating_tuple,
92  Accessor<int64_t>& hash_acc)
- +
94  , ff_accessor(m.create_accessor<int64_t>(m.m_ff_handle))
95  , fe_accessor(m.create_accessor<int64_t>(m.m_fe_handle))
96  , fv_accessor(m.create_accessor<int64_t>(m.m_fv_handle))
@@ -228,7 +228,7 @@
111  simplex::closed_star(m_mesh, simplex::Simplex::edge(operating_tuple));
112 
113  // get all faces incident to the edge
-
114  for (const simplex::Simplex& f : edge_closed_star.simplex_vector(PrimitiveType::Face)) {
+
114  for (const simplex::Simplex& f : edge_closed_star.simplex_vector(PrimitiveType::Face)) {
115  m_incident_face_datas.emplace_back(get_incident_face_data(f.tuple()));
116  }
117 
@@ -240,7 +240,7 @@
123 
124  // update hash on all faces in the two-ring neighborhood
125  simplex::SimplexCollection hash_update_region(m);
-
126  for (const simplex::Simplex& v : edge_closed_star.simplex_vector(PrimitiveType::Vertex)) {
+
126  for (const simplex::Simplex& v : edge_closed_star.simplex_vector(PrimitiveType::Vertex)) {
127  const simplex::SimplexCollection v_closed_star = simplex::closed_star(m_mesh, v);
128  hash_update_region.add(v_closed_star);
129  }
@@ -249,7 +249,7 @@
132  global_simplex_ids_with_potentially_modified_hashes.resize(3);
133  simplex::SimplexCollection faces(m_mesh);
134 
-
135  for (const simplex::Simplex& f : hash_update_region.simplex_vector(PrimitiveType::Face)) {
+
135  for (const simplex::Simplex& f : hash_update_region.simplex_vector(PrimitiveType::Face)) {
136  cell_ids_to_update_hash.push_back(m_mesh.id(f));
137 
138  faces.add(wmtk::simplex::faces(m, f, false));
@@ -303,7 +303,7 @@
187  std::array<std::vector<int64_t>, 3> ids;
188  for (const simplex::Simplex& s : sc) {
-
189  ids[get_primitive_type_id(s.primitive_type())].emplace_back(m.id(s));
+
189  ids[get_primitive_type_id(s.primitive_type())].emplace_back(m.id(s));
190  }
191 
192  return ids;
@@ -324,7 +324,7 @@
207 
208  std::array<std::vector<int64_t>, 3> ids;
209  for (const simplex::Simplex& s : sc) {
-
210  ids[get_primitive_type_id(s.primitive_type())].emplace_back(m.id(s));
+
210  ids[get_primitive_type_id(s.primitive_type())].emplace_back(m.id(s));
211  }
212 
213  return ids;
@@ -420,10 +420,10 @@
312  const int64_t f1_bottom = m_incident_face_datas[1].split_f[1];
313  auto ff_old_top = ff_accessor.index_access().vector_attribute(f_old_top);
314  auto ff_old_bottom = ff_accessor.index_access().vector_attribute(f_old_bottom);
-
315  assert(m_mesh.capacity(PrimitiveType::Face) > f0_top);
-
316  assert(m_mesh.capacity(PrimitiveType::Face) > f1_top);
-
317  assert(m_mesh.capacity(PrimitiveType::Face) > f0_bottom);
-
318  assert(m_mesh.capacity(PrimitiveType::Face) > f1_bottom);
+
315  assert(m_mesh.capacity(PrimitiveType::Face) > f0_top);
+
316  assert(m_mesh.capacity(PrimitiveType::Face) > f1_top);
+
317  assert(m_mesh.capacity(PrimitiveType::Face) > f0_bottom);
+
318  assert(m_mesh.capacity(PrimitiveType::Face) > f1_bottom);
319 
320  // local edge ids are the same for both, f1 and f2
321  int64_t local_eid_top = -1;
@@ -448,12 +448,12 @@
341 {
342  // create new faces
-
343  std::vector<int64_t> new_fids = this->request_simplex_indices(PrimitiveType::Face, 2);
+
343  std::vector<int64_t> new_fids = this->request_simplex_indices(PrimitiveType::Face, 2);
344  assert(new_fids.size() == 2);
345 
346  std::copy(new_fids.begin(), new_fids.end(), face_data.split_f.begin());
347 
-
348  std::vector<int64_t> splitting_edges = this->request_simplex_indices(PrimitiveType::Edge, 1);
+
348  std::vector<int64_t> splitting_edges = this->request_simplex_indices(PrimitiveType::Edge, 1);
349  assert(splitting_edges[0] > -1); // TODO: is this assert reasonable at all?
350  int64_t& split_edge_eid = face_data.new_edge_id;
351  split_edge_eid = splitting_edges[0];
@@ -544,12 +544,12 @@
436  simplex_ids_to_delete = get_split_simplices_to_delete(m_operating_tuple, m_mesh);
437 
438  // create new vertex (center)
-
439  std::vector<int64_t> new_vids = this->request_simplex_indices(PrimitiveType::Vertex, 1);
+
439  std::vector<int64_t> new_vids = this->request_simplex_indices(PrimitiveType::Vertex, 1);
440  assert(new_vids.size() == 1);
441  split_new_vid = new_vids[0];
442 
443  // create new edges (spine)
-
444  std::vector<int64_t> new_eids = this->request_simplex_indices(PrimitiveType::Edge, 2);
+
444  std::vector<int64_t> new_eids = this->request_simplex_indices(PrimitiveType::Edge, 2);
445  assert(new_eids.size() == 2);
446 
447  std::copy(new_eids.begin(), new_eids.end(), split_spine_eids.begin());
@@ -610,7 +610,7 @@
502  const int64_t& v1 = m_spine_vids[1];
503 
504  // replace v0 by v1 in incident faces
-
505  for (const simplex::Simplex& f : v0_star.simplex_vector(PrimitiveType::Face)) {
+
505  for (const simplex::Simplex& f : v0_star.simplex_vector(PrimitiveType::Face)) {
506  const int64_t fid = m_mesh.id(f);
507  bool is_fid_deleted = false;
508  for (int64_t i = 0; i < m_incident_face_datas.size(); ++i) {
@@ -662,7 +662,7 @@
554 }
555 
-
557  const PrimitiveType type,
+
557  const PrimitiveType type,
558  int64_t count)
559 {
560  m_mesh.guarantee_more_attributes(type, count);
@@ -675,7 +675,7 @@
ConstAccessor< char > get_flag_accessor(PrimitiveType type) const
Definition: Mesh.cpp:79
void update_cell_hash(const Tuple &cell, Accessor< int64_t > &hash_accessor)
update hash in given cell
Definition: Mesh.cpp:106
-
std::vector< int64_t > request_simplex_indices(PrimitiveType type, int64_t count)
+
std::vector< int64_t > request_simplex_indices(PrimitiveType type, int64_t count)
static const std::array< std::vector< int64_t >, 3 > get_split_simplices_to_delete(const Tuple &tuple, const TriMesh &m)
gather all simplices that are deleted in a split
static const std::array< std::vector< int64_t >, 3 > get_collapse_simplices_to_delete(const Tuple &tuple, const TriMesh &m)
gather all simplices that are deleted in a collapse
@@ -691,7 +691,7 @@
void update_ids_in_ear(const EarData &ear, const int64_t new_fid, const int64_t old_fid)
handling the topology glueing of ear to non-ear face, transfering data from ear-oldface to ear-newfac...
-
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: TriMesh.cpp:29
+
int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
Definition: TriMesh.cpp:26
void add(const Simplex &simplex)
Add simplex to the collection.
@@ -710,11 +710,11 @@
SimplexCollection faces(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Returns all faces of a simplex.
Definition: faces.cpp:10
Definition: Accessor.cpp:8
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- - - - +
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+ + + +
An ear is a face that is adjacent to a face that is incident to the edge on which the operation is pe...
diff --git a/_tri_mesh_operation_executor_8hpp_source.html b/_tri_mesh_operation_executor_8hpp_source.html index d7feff8128..af4abfa5ad 100644 --- a/_tri_mesh_operation_executor_8hpp_source.html +++ b/_tri_mesh_operation_executor_8hpp_source.html @@ -160,7 +160,7 @@
61  // return the two new fids in order
62  void replace_incident_face(IncidentFaceData& face_data);
-
64  std::vector<int64_t> request_simplex_indices(const PrimitiveType type, int64_t count);
+
64  std::vector<int64_t> request_simplex_indices(const PrimitiveType type, int64_t count);
65 
67 
@@ -201,7 +201,7 @@
Definition: Accessor.cpp:8
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
- +
An ear is a face that is adjacent to a face that is incident to the edge on which the operation is pe...
Data on the incident face relevant for performing operations.
diff --git a/_tri_mesh_substructure_topology_preserving_invariant_8cpp_source.html b/_tri_mesh_substructure_topology_preserving_invariant_8cpp_source.html index 0cb59baef3..e042971faa 100644 --- a/_tri_mesh_substructure_topology_preserving_invariant_8cpp_source.html +++ b/_tri_mesh_substructure_topology_preserving_invariant_8cpp_source.html @@ -137,7 +137,7 @@
21  const simplex::Simplex& input_simplex) const
22 {
-
23  assert(input_simplex.primitive_type() == PrimitiveType::Edge);
+
23  assert(input_simplex.primitive_type() == PrimitiveType::Edge);
24 
25  using namespace simplex;
26 
@@ -146,9 +146,9 @@
29  // edge e = (u,v)
30 
31  const simplex::Simplex edge_e = input_simplex;
-
32  const simplex::Simplex vertex_u(PrimitiveType::Vertex, input_simplex.tuple());
+
32  const simplex::Simplex vertex_u(PrimitiveType::Vertex, input_simplex.tuple());
33  const simplex::Simplex vertex_v(
- +
35  mesh().switch_vertex(input_simplex.tuple()));
36 
37  RawSimplexCollection lk_u_0(link(mesh(), vertex_u));
@@ -158,12 +158,12 @@
41  int64_t u_incident_subset_edges = 0;
42 
43  for (const simplex::Simplex& e_u :
- +
45  if (edge_tag_acc.const_scalar_attribute(e_u.tuple()) == m_substructure_tag_value) {
46  ++u_incident_subset_edges;
47 
48  std::vector<Tuple> vertices_dummy_tri =
- +
50  vertices_dummy_tri.emplace_back(Tuple()); // add dummy vertex
51 
52  RawSimplex dummy_tri(mesh(), vertices_dummy_tri);
@@ -197,12 +197,12 @@
80  int64_t v_incident_subset_edges = 0;
81 
82  for (const simplex::Simplex& e_v :
- +
84  if (edge_tag_acc.const_scalar_attribute(e_v.tuple()) == m_substructure_tag_value) {
85  ++v_incident_subset_edges;
86 
87  std::vector<Tuple> vertices_dummy_tri =
- +
89  vertices_dummy_tri.emplace_back(Tuple()); // add dummy vertex
90 
91  RawSimplex dummy_tri(mesh(), vertices_dummy_tri);
@@ -265,7 +265,7 @@ -
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:887
+
ConstAccessor< T > create_const_accessor(const attribute::MeshAttributeHandle &handle) const
Definition: Mesh.hpp:886
@@ -284,8 +284,8 @@
SimplexCollection link(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Definition: link.cpp:11
std::vector< Simplex > cofaces_single_dimension_simplices(const Mesh &mesh, const Simplex &simplex, PrimitiveType cofaces_type)
std::vector< Tuple > faces_single_dimension_tuples(const Mesh &mesh, const Simplex &simplex, const PrimitiveType face_type)
- - + + diff --git a/_triangle_a_m_i_p_s_8cpp_source.html b/_triangle_a_m_i_p_s_8cpp_source.html index 2deec3f5a2..0ea4951cf9 100644 --- a/_triangle_a_m_i_p_s_8cpp_source.html +++ b/_triangle_a_m_i_p_s_8cpp_source.html @@ -126,7 +126,7 @@
10  const TriMesh& mesh,
11  const attribute::MeshAttributeHandle& vertex_attribute_handle)
-
12  : PerSimplexAutodiffFunction(mesh, PrimitiveType::Vertex, vertex_attribute_handle)
+
12  : PerSimplexAutodiffFunction(mesh, PrimitiveType::Vertex, vertex_attribute_handle)
13 {}
14 
@@ -141,7 +141,7 @@
24 {
25  assert(coords.size() == 3);
26 
-
27  if (domain_simplex.primitive_type() != PrimitiveType::Face)
+
27  if (domain_simplex.primitive_type() != PrimitiveType::Face)
28  throw std::runtime_error("TriangleAMIPS only supports faces meshes");
29 
30  switch (embedded_dimension()) {
@@ -177,9 +177,9 @@
Eigen::Vector2< DScalar > DSVec2
typename PerSimplexAutodiffFunction::DScalar DScalar
Eigen::Vector3< DScalar > DSVec3
- - - + + +
Automatic differentiation scalar with first- and second-order derivatives.
Definition: autodiff.h:501
diff --git a/_triangle_fan_options_8cpp_source.html b/_triangle_fan_options_8cpp_source.html index 7a7b1fe7b9..65b0b65b50 100644 --- a/_triangle_fan_options_8cpp_source.html +++ b/_triangle_fan_options_8cpp_source.html @@ -162,7 +162,7 @@
45  }
46  Eigen::Vector2d::ConstMapType o(csettings.center.data());
47  P.rowwise() += o.transpose();
- +
49  }
50  return mptr;
51 }
@@ -172,7 +172,7 @@ -
void initialize(Eigen::Ref< const RowVectors3l > FV, Eigen::Ref< const RowVectors3l > FE, Eigen::Ref< const RowVectors3l > FF, Eigen::Ref< const VectorXl > VF, Eigen::Ref< const VectorXl > EF)
Definition: TriMesh.cpp:182
+
void initialize(Eigen::Ref< const RowVectors3l > FV, Eigen::Ref< const RowVectors3l > FE, Eigen::Ref< const RowVectors3l > FF, Eigen::Ref< const VectorXl > VF, Eigen::Ref< const VectorXl > EF)
Definition: TriMesh.cpp:185
@@ -184,7 +184,7 @@
attribute::MeshAttributeHandle set_matrix_attribute(const Mat &data, const std::string &name, const PrimitiveType &type, Mesh &mesh)
Definition: mesh_utils.hpp:9
Vector< int64_t, 3 > Vector3l
Definition: Types.hpp:34
RowVectors< int64_t, 3 > RowVectors3l
Definition: Types.hpp:42
- + diff --git a/_tuple_accessor_8hpp__incl.md5 b/_tuple_accessor_8hpp__incl.md5 index f7d581ec05..0542c45210 100644 --- a/_tuple_accessor_8hpp__incl.md5 +++ b/_tuple_accessor_8hpp__incl.md5 @@ -1 +1 @@ -323fe6747783a3aeab1b25b71d802c2d \ No newline at end of file +ec688e3ed6a79fe5313d90eddd3fbbc1 \ No newline at end of file diff --git a/_tuple_accessor_8hpp__incl.svg b/_tuple_accessor_8hpp__incl.svg index abcb912cb3..cb6cddbc85 100644 --- a/_tuple_accessor_8hpp__incl.svg +++ b/_tuple_accessor_8hpp__incl.svg @@ -760,13 +760,13 @@ var sectionId = 'dynsection-0';
- + Node37->Node2 - + Node37->Node29 @@ -781,7 +781,7 @@ var sectionId = 'dynsection-0'; - + Node37->Node38 @@ -796,19 +796,19 @@ var sectionId = 'dynsection-0'; - + Node37->Node44 - + Node38->Node5 - + Node38->Node7 @@ -823,7 +823,7 @@ var sectionId = 'dynsection-0'; - + Node38->Node39 @@ -838,7 +838,7 @@ var sectionId = 'dynsection-0'; - + Node38->Node40 @@ -853,31 +853,31 @@ var sectionId = 'dynsection-0'; - + Node38->Node43 - + Node40->Node4 - + Node40->Node5 - + Node40->Node8 - + Node40->Node13 @@ -892,13 +892,13 @@ var sectionId = 'dynsection-0'; - + Node40->Node41 - + Node41->Node8 @@ -913,43 +913,43 @@ var sectionId = 'dynsection-0'; - + Node41->Node42 - + Node43->Node29 - + Node43->Node38 - + Node44->Node5 - + Node44->Node9 - + Node44->Node18 - + Node44->Node40 @@ -964,7 +964,7 @@ var sectionId = 'dynsection-0'; - + Node44->Node45 @@ -979,31 +979,31 @@ var sectionId = 'dynsection-0'; - + Node44->Node46 - + Node46->Node7 - + Node46->Node29 - + Node46->Node38 - + Node46->Node44 diff --git a/_tuple_accessor_8hpp__incl_org.svg b/_tuple_accessor_8hpp__incl_org.svg index 4c80fcd2d9..077a4d2b46 100644 --- a/_tuple_accessor_8hpp__incl_org.svg +++ b/_tuple_accessor_8hpp__incl_org.svg @@ -714,13 +714,13 @@ - + Node37->Node2 - + Node37->Node29 @@ -735,7 +735,7 @@ - + Node37->Node38 @@ -750,19 +750,19 @@ - + Node37->Node44 - + Node38->Node5 - + Node38->Node7 @@ -777,7 +777,7 @@ - + Node38->Node39 @@ -792,7 +792,7 @@ - + Node38->Node40 @@ -807,31 +807,31 @@ - + Node38->Node43 - + Node40->Node4 - + Node40->Node5 - + Node40->Node8 - + Node40->Node13 @@ -846,13 +846,13 @@ - + Node40->Node41 - + Node41->Node8 @@ -867,43 +867,43 @@ - + Node41->Node42 - + Node43->Node29 - + Node43->Node38 - + Node44->Node5 - + Node44->Node9 - + Node44->Node18 - + Node44->Node40 @@ -918,7 +918,7 @@ - + Node44->Node45 @@ -933,31 +933,31 @@ - + Node44->Node46 - + Node46->Node7 - + Node46->Node29 - + Node46->Node38 - + Node46->Node44 diff --git a/_tuple_accessor_8hpp_source.html b/_tuple_accessor_8hpp_source.html index 72172a7e7f..da2a52aedf 100644 --- a/_tuple_accessor_8hpp_source.html +++ b/_tuple_accessor_8hpp_source.html @@ -147,7 +147,7 @@
35  TupleAccessor(const TupleAccessor&) = delete;
37 
- +
40 
41  T const_scalar_attribute(const Tuple& t) const;
@@ -210,7 +210,7 @@
T & topological_scalar_attribute(const Tuple &t)
Definition: Accessor.cpp:8
- + diff --git a/_tuple_accessor_8hxx__incl.md5 b/_tuple_accessor_8hxx__incl.md5 index 2d37845250..a5b1e90c13 100644 --- a/_tuple_accessor_8hxx__incl.md5 +++ b/_tuple_accessor_8hxx__incl.md5 @@ -1 +1 @@ -1cf1176d25a19d1022ca03675f757d69 \ No newline at end of file +43da73478e50f54361e1720ebd6c262a \ No newline at end of file diff --git a/_tuple_accessor_8hxx__incl.svg b/_tuple_accessor_8hxx__incl.svg index 7fc0e66904..5506033e68 100644 --- a/_tuple_accessor_8hxx__incl.svg +++ b/_tuple_accessor_8hxx__incl.svg @@ -772,13 +772,13 @@ var sectionId = 'dynsection-0';
- + Node38->Node2 - + Node38->Node6 @@ -793,7 +793,7 @@ var sectionId = 'dynsection-0'; - + Node38->Node39 @@ -808,19 +808,19 @@ var sectionId = 'dynsection-0'; - + Node38->Node45 - + Node39->Node9 - + Node39->Node11 @@ -835,7 +835,7 @@ var sectionId = 'dynsection-0'; - + Node39->Node40 @@ -850,7 +850,7 @@ var sectionId = 'dynsection-0'; - + Node39->Node41 @@ -865,31 +865,31 @@ var sectionId = 'dynsection-0'; - + Node39->Node44 - + Node41->Node8 - + Node41->Node9 - + Node41->Node12 - + Node41->Node17 @@ -904,13 +904,13 @@ var sectionId = 'dynsection-0'; - + Node41->Node42 - + Node42->Node12 @@ -925,43 +925,43 @@ var sectionId = 'dynsection-0'; - + Node42->Node43 - + Node44->Node2 - + Node44->Node39 - + Node45->Node9 - + Node45->Node13 - + Node45->Node22 - + Node45->Node41 @@ -976,7 +976,7 @@ var sectionId = 'dynsection-0'; - + Node45->Node46 @@ -991,31 +991,31 @@ var sectionId = 'dynsection-0'; - + Node45->Node47 - + Node47->Node2 - + Node47->Node11 - + Node47->Node39 - + Node47->Node45 diff --git a/_tuple_accessor_8hxx__incl_org.svg b/_tuple_accessor_8hxx__incl_org.svg index 1b16ed6d7f..819de3bf88 100644 --- a/_tuple_accessor_8hxx__incl_org.svg +++ b/_tuple_accessor_8hxx__incl_org.svg @@ -726,13 +726,13 @@ - + Node38->Node2 - + Node38->Node6 @@ -747,7 +747,7 @@ - + Node38->Node39 @@ -762,19 +762,19 @@ - + Node38->Node45 - + Node39->Node9 - + Node39->Node11 @@ -789,7 +789,7 @@ - + Node39->Node40 @@ -804,7 +804,7 @@ - + Node39->Node41 @@ -819,31 +819,31 @@ - + Node39->Node44 - + Node41->Node8 - + Node41->Node9 - + Node41->Node12 - + Node41->Node17 @@ -858,13 +858,13 @@ - + Node41->Node42 - + Node42->Node12 @@ -879,43 +879,43 @@ - + Node42->Node43 - + Node44->Node2 - + Node44->Node39 - + Node45->Node9 - + Node45->Node13 - + Node45->Node22 - + Node45->Node41 @@ -930,7 +930,7 @@ - + Node45->Node46 @@ -945,31 +945,31 @@ - + Node45->Node47 - + Node47->Node2 - + Node47->Node11 - + Node47->Node39 - + Node47->Node45 diff --git a/_tuple_accessor_8hxx_source.html b/_tuple_accessor_8hxx_source.html index b33e42b049..3f8a6ae82b 100644 --- a/_tuple_accessor_8hxx_source.html +++ b/_tuple_accessor_8hxx_source.html @@ -163,19 +163,19 @@
46 }
47 
48 template <typename T>
- +
50 {
51 
52  assert(mesh().top_simplex_type() == BaseType::primitive_type());
53  switch (pt) {
- +
55  return CachingBaseType::const_scalar_attribute(t.m_global_cid, t.m_local_vid);
- +
57  return CachingBaseType::const_scalar_attribute(t.m_global_cid, t.m_local_eid);
- +
59  return CachingBaseType::const_scalar_attribute(t.m_global_cid, t.m_local_fid);
-
60  case PrimitiveType::Tetrahedron: [[fallthrough]];
-
61  case PrimitiveType::HalfEdge: [[fallthrough]];
+
60  case PrimitiveType::Tetrahedron: [[fallthrough]];
+
61  case PrimitiveType::HalfEdge: [[fallthrough]];
62  default: return T(0);
63  }
64 }
@@ -202,12 +202,12 @@
T const_scalar_attribute(const Tuple &t) const
T & topological_scalar_attribute(const Tuple &t)
- - - - - - + + + + + + diff --git a/_tuple_tag_8cpp_source.html b/_tuple_tag_8cpp_source.html index 5cb3c64104..050ef384e1 100644 --- a/_tuple_tag_8cpp_source.html +++ b/_tuple_tag_8cpp_source.html @@ -123,26 +123,26 @@
6  : m_mesh(mesh)
7  , m_critical_points(critical_points)
8  , m_vertex_tag_acc(mesh.create_accessor(
-
9  mesh.register_attribute<int64_t>("vertex_tag", PrimitiveType::Vertex, 1).as<int64_t>()))
+
9  mesh.register_attribute<int64_t>("vertex_tag", PrimitiveType::Vertex, 1).as<int64_t>()))
10  , m_edge_tag_acc(mesh.create_accessor(
-
11  mesh.register_attribute<int64_t>("edge_tag", PrimitiveType::Edge, 1).as<int64_t>()))
+
11  mesh.register_attribute<int64_t>("edge_tag", PrimitiveType::Edge, 1).as<int64_t>()))
12 {
13  initialize();
14 }
15 
17 {
-
18  std::vector<Tuple> v_tuples = mesh().get_all(PrimitiveType::Vertex);
-
19  std::vector<Tuple> e_tuples = mesh().get_all(PrimitiveType::Edge);
+
18  std::vector<Tuple> v_tuples = mesh().get_all(PrimitiveType::Vertex);
+
19  std::vector<Tuple> e_tuples = mesh().get_all(PrimitiveType::Edge);
20  // initializing all the edge tags to be -1
21  for (const Tuple& e : e_tuples) {
-
22  if (mesh().is_boundary(PrimitiveType::Edge, e)) {
+
22  if (mesh().is_boundary(PrimitiveType::Edge, e)) {
23  set_edge_tag(e, -1);
24  }
25  }
26  // initializing all the vertex tags to be the vertex id
27  for (const Tuple& v : v_tuples) {
-
28  if (mesh().is_boundary(PrimitiveType::Vertex, v)) {
+
28  if (mesh().is_boundary(PrimitiveType::Vertex, v)) {
29  set_vertex_tag(v, vid(v));
30  }
31  }
@@ -151,19 +151,19 @@
34 std::set<int64_t> TupleTag::run()
35 {
36  std::set<int64_t> tags;
-
37  std::vector<Tuple> v_tuples = mesh().get_all(PrimitiveType::Vertex);
-
38  std::vector<Tuple> e_tuples = mesh().get_all(PrimitiveType::Edge);
-
39  int64_t vid_max = mesh().capacity(PrimitiveType::Vertex);
+
37  std::vector<Tuple> v_tuples = mesh().get_all(PrimitiveType::Vertex);
+
38  std::vector<Tuple> e_tuples = mesh().get_all(PrimitiveType::Edge);
+
39  int64_t vid_max = mesh().capacity(PrimitiveType::Vertex);
40  // the pass to tag all vertices
41  for (const Tuple& e : e_tuples) {
-
42  if (mesh().is_boundary(PrimitiveType::Edge, e)) {
+
42  if (mesh().is_boundary(PrimitiveType::Edge, e)) {
43  run(e);
44  }
45  }
46  // the pass to tag all edges
47  int64_t edge_tag = 0;
48  for (const Tuple& e : e_tuples) {
-
49  if (mesh().is_boundary(PrimitiveType::Edge, e)) {
+
49  if (mesh().is_boundary(PrimitiveType::Edge, e)) {
50  Tuple v1 = e;
51  Tuple v2 = mesh().switch_vertex(e);
52  // both vertices are critical points
@@ -218,12 +218,12 @@
101 
102 int64_t TupleTag::vid(const Tuple& tuple) const
103 {
-
104  return mesh().id(tuple, PrimitiveType::Vertex);
+
104  return mesh().id(tuple, PrimitiveType::Vertex);
105 }
106 
107 Tuple TupleTag::v_tuple(int64_t vid) const
108 {
- +
110  return v_tuple;
111 }
112 
@@ -290,10 +290,10 @@
virtual int64_t id(const Tuple &tuple, PrimitiveType type) const =0
return the global id of the Tuple of the given dimension
-
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
+
int64_t capacity(PrimitiveType type) const
read in the m_capacities return the upper bound for the number of entities of the given dimension
virtual Tuple tuple_from_id(const PrimitiveType type, const int64_t gid) const =0
internal function that returns the tuple of requested type, and has the global index cid
std::vector< Tuple > get_all(PrimitiveType type) const
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index.
Definition: Mesh.cpp:22
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
@@ -314,9 +314,9 @@
int64_t get_vertex_tag(const Tuple &tuple) const
Definition: TupleTag.cpp:83
- - - + + + diff --git a/_typed_attribute_handle_8hpp_source.html b/_typed_attribute_handle_8hpp_source.html index ee192386d6..95980d38cd 100644 --- a/_typed_attribute_handle_8hpp_source.html +++ b/_typed_attribute_handle_8hpp_source.html @@ -154,13 +154,13 @@
37  friend class AttributeManager;
38  friend class wmtk::hash<TypedAttributeHandle<T>>;
- +
41 
- +
43  : m_base_handle(ah)
44  , m_primitive_type(pt)
45  {}
- +
48  {}
49 
@@ -182,7 +182,7 @@
65  }
66  bool operator<(const TypedAttributeHandle<T>& o) const;
67  bool is_valid() const { return m_base_handle.is_valid(); }
- +
69  const AttributeHandle& base_handle() const { return m_base_handle; }
70 };
71 using TypedAttributeHandleVariant = std::variant<
@@ -223,7 +223,7 @@
std::variant< TypedAttributeHandle< char >, TypedAttributeHandle< int64_t >, TypedAttributeHandle< double >, TypedAttributeHandle< Rational > > TypedAttributeHandleVariant
Definition: Accessor.cpp:8
- + diff --git a/_update_edge_operation_multi_mesh_map_functor_8cpp_source.html b/_update_edge_operation_multi_mesh_map_functor_8cpp_source.html index 9113f7f50e..87bb18a6ae 100644 --- a/_update_edge_operation_multi_mesh_map_functor_8cpp_source.html +++ b/_update_edge_operation_multi_mesh_map_functor_8cpp_source.html @@ -132,10 +132,10 @@
15 namespace wmtk::operations::utils {
16 
17 namespace {
-
18 constexpr static PrimitiveType PV = PrimitiveType::Vertex;
-
19 constexpr static PrimitiveType PE = PrimitiveType::Edge;
-
20 constexpr static PrimitiveType PF = PrimitiveType::Face;
-
21 constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
+
18 constexpr static PrimitiveType PV = PrimitiveType::Vertex;
+
19 constexpr static PrimitiveType PE = PrimitiveType::Edge;
+
20 constexpr static PrimitiveType PF = PrimitiveType::Face;
+
21 constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
22 } // namespace
24  Mesh& m,
@@ -143,7 +143,7 @@
26  const std::vector<std::tuple<int64_t, std::array<int64_t, 2>>>& split_cell_maps) const
27 {
28  assert(m.top_cell_dimension() + 1 == simplices_to_update.size());
-
29  constexpr static PrimitiveType PTs[] = {PV, PE, PF, PT};
+
29  constexpr static PrimitiveType PTs[] = {PV, PE, PF, PT};
30  // logger().trace("{} {}", m.top_cell_dimension(), simplices_to_update.size());
31  for (size_t j = 0; j < simplices_to_update.size(); ++j) {
@@ -238,7 +238,7 @@
121  auto child_to_parent_accessor = child_ptr->create_accessor(child_to_parent_handle);
122  auto parent_to_child_accessor = m.create_accessor(parent_to_child_handle);
123  auto child_cell_flag_accessor =
-
124  child_ptr->get_const_flag_accessor(PrimitiveType::Edge);
+
124  child_ptr->get_const_flag_accessor(PrimitiveType::Edge);
125 
126  const int64_t parent_ear_eid_old = parent_data.ears[ear_index].eid;
127  const int64_t parent_merged_eid = parent_data.new_edge_id;
@@ -335,7 +335,7 @@
218  child_ptr->create_accessor(child_to_parent_handle);
219  auto parent_to_child_accessor = m.create_accessor(parent_to_child_handle);
220  auto child_cell_flag_accessor =
-
221  child_ptr->get_const_flag_accessor(PrimitiveType::Face);
+
221  child_ptr->get_const_flag_accessor(PrimitiveType::Face);
222 
223  const int64_t parent_ear_fid_old = parent_data.ears[ear_index].fid;
224  const int64_t parent_merged_fid = parent_data.new_face_id;
@@ -433,7 +433,7 @@
316  child_ptr->create_accessor(child_to_parent_handle);
317  auto parent_to_child_accessor = m.create_accessor(parent_to_child_handle);
318  auto child_cell_flag_accessor =
-
319  child_ptr->get_const_flag_accessor(PrimitiveType::Edge);
+
319  child_ptr->get_const_flag_accessor(PrimitiveType::Edge);
320 
321  const int64_t parent_ear_fid_old = parent_data.ears[ear_index].fid;
322  const int64_t parent_merged_fid = parent_data.new_face_id;
@@ -689,9 +689,9 @@
572  }
573 
574  // update_hash on neighboring cells. use only 2 to get the cell types on either case
-
575  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
-
576  constexpr static PrimitiveType PE = PrimitiveType::Edge;
-
577  constexpr static PrimitiveType PF = PrimitiveType::Face;
+
575  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
+
576  constexpr static PrimitiveType PE = PrimitiveType::Edge;
+
577  constexpr static PrimitiveType PF = PrimitiveType::Face;
578 
579  // NOTE: this is purpuosely verbose to show a point
580  // We have to select with PrimitiveTypes are supported as children for each type of mesh
@@ -1034,15 +1034,15 @@
Tuple tuple_from_global_ids(int64_t eid, int64_t vid) const
Definition: EdgeMesh.cpp:203
-
static auto & get_index_access(attribute::MutableAccessor< T > &attr)
Definition: Mesh.hpp:808
-
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
static auto & get_index_access(attribute::MutableAccessor< T > &attr)
Definition: Mesh.hpp:807
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
ConstAccessor< int64_t > get_const_cell_hash_accessor() const
Definition: Mesh.cpp:92
bool is_valid_slow(const Tuple &tuple) const
Definition: Mesh.cpp:72
virtual int64_t top_cell_dimension() const =0
decltype(auto) parent_scope(Functor &&f, Args &&... args) const
Evaluate the passed in function inside the parent scope.
std::vector< std::shared_ptr< Mesh > > get_child_meshes() const
returns the direct multimesh child meshes for the current mesh
Tuple resurrect_tuple(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
return the same tuple but with updated hash
Definition: Mesh.cpp:136
-
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:826
+
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:825
void update_map_tuple_hashes(Mesh &my_mesh, PrimitiveType primitive_type, const std::vector< std::tuple< int64_t, std::vector< Tuple >>> &simplices_to_update, const std::vector< std::tuple< int64_t, std::array< int64_t, 2 >>> &split_cell_maps={})
static int64_t parent_local_fid(const attribute::ConstAccessor< int64_t > &child_to_parent, int64_t child_gid)
static int64_t child_global_cid(const attribute::ConstAccessor< int64_t > &parent_to_child, int64_t parent_gid)
@@ -1054,7 +1054,7 @@
int64_t id_edge(const Tuple &tuple) const
Definition: TetMesh.hpp:59
int64_t id_vertex(const Tuple &tuple) const
Definition: TriMesh.hpp:74
-
Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
Definition: TriMesh.cpp:237
+
Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
Definition: TriMesh.cpp:242
bool is_null() const
Definition: Tuple.cpp:56
A TupleAccessor that can only read from attributes.
@@ -1086,11 +1086,11 @@
std::tuple< Tuple, Tuple > vectors_to_tuples(const Eigen::Ref< const TwoTupleVector > &v)
spdlog::logger & logger()
Retrieves the current logger.
Definition: Logger.cpp:50
- - - - - + + + + + diff --git a/_update_vertex_multi_mesh_map_hash_8cpp_source.html b/_update_vertex_multi_mesh_map_hash_8cpp_source.html index 6151816262..4db43d6676 100644 --- a/_update_vertex_multi_mesh_map_hash_8cpp_source.html +++ b/_update_vertex_multi_mesh_map_hash_8cpp_source.html @@ -128,37 +128,37 @@
11 namespace wmtk::operations::utils {
12 void update_vertex_operation_hashes(Mesh& m, const Tuple& vertex, Accessor<int64_t>& hash_accessor)
13 {
-
14  const PrimitiveType pt = m.top_simplex_type();
+
14  const PrimitiveType pt = m.top_simplex_type();
15  const simplex::SimplexCollection star =
17  std::vector<Tuple> tuples_to_update;
18  switch (pt) {
-
19  case PrimitiveType::Vertex: {
-
20  const auto star_vertices = star.simplex_vector(PrimitiveType::Vertex);
+
19  case PrimitiveType::Vertex: {
+
20  const auto star_vertices = star.simplex_vector(PrimitiveType::Vertex);
21  tuples_to_update.reserve(star_vertices.size());
22  for (const simplex::Simplex& s : star_vertices) {
23  tuples_to_update.emplace_back(s.tuple());
24  }
25  break;
26  }
-
27  case PrimitiveType::Edge: {
-
28  const auto star_edges = star.simplex_vector(PrimitiveType::Edge);
+
27  case PrimitiveType::Edge: {
+
28  const auto star_edges = star.simplex_vector(PrimitiveType::Edge);
29  tuples_to_update.reserve(star_edges.size());
30  for (const simplex::Simplex& s : star_edges) {
31  tuples_to_update.emplace_back(s.tuple());
32  }
33  break;
34  }
-
35  case PrimitiveType::Face: {
-
36  const auto star_faces = star.simplex_vector(PrimitiveType::Face);
+
35  case PrimitiveType::Face: {
+
36  const auto star_faces = star.simplex_vector(PrimitiveType::Face);
37  tuples_to_update.reserve(star_faces.size());
38  for (const simplex::Simplex& s : star_faces) {
39  tuples_to_update.emplace_back(s.tuple());
40  }
41  break;
42  }
- -
44  const auto star_tets = star.simplex_vector(PrimitiveType::Tetrahedron);
+ +
44  const auto star_tets = star.simplex_vector(PrimitiveType::Tetrahedron);
45  tuples_to_update.reserve(star_tets.size());
46  for (const simplex::Simplex& s : star_tets) {
47  tuples_to_update.emplace_back(s.tuple());
@@ -166,7 +166,7 @@
49  break;
50  }
51  default:
-
52  case PrimitiveType::HalfEdge: throw std::runtime_error("invalid input");
+
52  case PrimitiveType::HalfEdge: throw std::runtime_error("invalid input");
53  }
54 
55 
@@ -224,7 +224,7 @@
PrimitiveType top_simplex_type() const
Definition: Mesh.cpp:13
Tuple resurrect_tuple(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
return the same tuple but with updated hash
Definition: Mesh.cpp:136
-
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:826
+
MultiMeshManager m_multi_mesh_manager
Definition: Mesh.hpp:825
void update_cell_hashes(const std::vector< Tuple > &cells, Accessor< int64_t > &hash_accessor)
update hashes in given cells
Definition: Mesh.cpp:116
std::array< attribute::MutableAccessor< int64_t >, 2 > get_map_accessors(Mesh &my_mesh, ChildData &c)
@@ -240,12 +240,12 @@
void update_vertex_operation_multimesh_map_hash(Mesh &m, const simplex::SimplexCollection &vertex_closed_star, Accessor< int64_t > &parent_hash_accessor)
SimplexCollection closed_star(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Definition: closed_star.cpp:11
std::conditional_t< IsConst, attribute::ConstAccessor< T >, attribute::MutableAccessor< T > > Accessor
Definition: Accessor.hpp:30
- - - - - - + + + + + + diff --git a/_update_vertex_multi_mesh_map_hash_8hpp__incl.md5 b/_update_vertex_multi_mesh_map_hash_8hpp__incl.md5 index 0a06726d46..ae5ef26663 100644 --- a/_update_vertex_multi_mesh_map_hash_8hpp__incl.md5 +++ b/_update_vertex_multi_mesh_map_hash_8hpp__incl.md5 @@ -1 +1 @@ -4e281d4da78cdbcb6a7d12a7027f9984 \ No newline at end of file +a2b7c7fb3f36f1ed03ebce2c2d7fea04 \ No newline at end of file diff --git a/_update_vertex_multi_mesh_map_hash_8hpp__incl.svg b/_update_vertex_multi_mesh_map_hash_8hpp__incl.svg index 3db3e95617..1a2108b54f 100644 --- a/_update_vertex_multi_mesh_map_hash_8hpp__incl.svg +++ b/_update_vertex_multi_mesh_map_hash_8hpp__incl.svg @@ -788,13 +788,13 @@ var sectionId = 'dynsection-0';
- + Node40->Node5 - + Node40->Node32 @@ -809,7 +809,7 @@ var sectionId = 'dynsection-0'; - + Node40->Node41 @@ -824,19 +824,19 @@ var sectionId = 'dynsection-0'; - + Node40->Node47 - + Node41->Node8 - + Node41->Node10 @@ -851,7 +851,7 @@ var sectionId = 'dynsection-0'; - + Node41->Node42 @@ -866,7 +866,7 @@ var sectionId = 'dynsection-0'; - + Node41->Node43 @@ -881,31 +881,31 @@ var sectionId = 'dynsection-0'; - + Node41->Node46 - + Node43->Node7 - + Node43->Node8 - + Node43->Node11 - + Node43->Node16 @@ -920,49 +920,49 @@ var sectionId = 'dynsection-0'; - + Node43->Node44 - + Node44->Node11 - + Node46->Node32 - + Node46->Node41 - + Node47->Node8 - + Node47->Node12 - + Node47->Node21 - + Node47->Node43 @@ -977,7 +977,7 @@ var sectionId = 'dynsection-0'; - + Node47->Node48 @@ -992,31 +992,31 @@ var sectionId = 'dynsection-0'; - + Node47->Node49 - + Node49->Node10 - + Node49->Node32 - + Node49->Node41 - + Node49->Node47 diff --git a/_update_vertex_multi_mesh_map_hash_8hpp__incl_org.svg b/_update_vertex_multi_mesh_map_hash_8hpp__incl_org.svg index 46e7aa7b13..2246f1f093 100644 --- a/_update_vertex_multi_mesh_map_hash_8hpp__incl_org.svg +++ b/_update_vertex_multi_mesh_map_hash_8hpp__incl_org.svg @@ -742,13 +742,13 @@ - + Node40->Node5 - + Node40->Node32 @@ -763,7 +763,7 @@ - + Node40->Node41 @@ -778,19 +778,19 @@ - + Node40->Node47 - + Node41->Node8 - + Node41->Node10 @@ -805,7 +805,7 @@ - + Node41->Node42 @@ -820,7 +820,7 @@ - + Node41->Node43 @@ -835,31 +835,31 @@ - + Node41->Node46 - + Node43->Node7 - + Node43->Node8 - + Node43->Node11 - + Node43->Node16 @@ -874,49 +874,49 @@ - + Node43->Node44 - + Node44->Node11 - + Node46->Node32 - + Node46->Node41 - + Node47->Node8 - + Node47->Node12 - + Node47->Node21 - + Node47->Node43 @@ -931,7 +931,7 @@ - + Node47->Node48 @@ -946,31 +946,31 @@ - + Node47->Node49 - + Node49->Node10 - + Node49->Node32 - + Node49->Node41 - + Node49->Node47 diff --git a/_valence_improvement_invariant_8cpp_source.html b/_valence_improvement_invariant_8cpp_source.html index bf623a25be..31fa6103a1 100644 --- a/_valence_improvement_invariant_8cpp_source.html +++ b/_valence_improvement_invariant_8cpp_source.html @@ -129,14 +129,14 @@
12 {
13  const Tuple& t = simplex.tuple();
14 
-
15  assert(simplex.primitive_type() == PrimitiveType::Edge);
+
15  assert(simplex.primitive_type() == PrimitiveType::Edge);
16 
18  const simplex::Simplex f1 = simplex::Simplex::face(mesh().switch_face(t));
19  const std::vector<Tuple> vertices_t0 =
- +
21  const std::vector<Tuple> vertices_t1 =
- +
23  const Tuple v0 = vertices_t0[0];
24  const Tuple v1 = vertices_t0[1];
25  const Tuple v2 = vertices_t0[2];
@@ -144,7 +144,7 @@
27 
28  auto valence = [this](const Tuple& v) {
29  return static_cast<int64_t>(simplex::link(mesh(), simplex::Simplex::vertex(v))
- +
31  .size());
32  };
33 
@@ -152,16 +152,16 @@
35  int64_t val1 = valence(v1);
36  int64_t val2 = valence(v2);
37  int64_t val3 = valence(v3);
-
38  if (mesh().is_boundary(PrimitiveType::Vertex, v0)) {
+
38  if (mesh().is_boundary(PrimitiveType::Vertex, v0)) {
39  val0 += 2;
40  }
-
41  if (mesh().is_boundary(PrimitiveType::Vertex, v1)) {
+
41  if (mesh().is_boundary(PrimitiveType::Vertex, v1)) {
42  val1 += 2;
43  }
-
44  if (mesh().is_boundary(PrimitiveType::Vertex, v2)) {
+
44  if (mesh().is_boundary(PrimitiveType::Vertex, v2)) {
45  val2 += 2;
46  }
-
47  if (mesh().is_boundary(PrimitiveType::Vertex, v3)) {
+
47  if (mesh().is_boundary(PrimitiveType::Vertex, v3)) {
48  val3 += 2;
49  }
50 
@@ -197,8 +197,8 @@
SimplexCollection link(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Definition: link.cpp:11
std::vector< Tuple > faces_single_dimension_tuples(const Mesh &mesh, const Simplex &simplex, const PrimitiveType face_type)
- - + + diff --git a/_vertex_laplacian_smooth_8cpp_source.html b/_vertex_laplacian_smooth_8cpp_source.html index e03cd83bcd..4f253b9301 100644 --- a/_vertex_laplacian_smooth_8cpp_source.html +++ b/_vertex_laplacian_smooth_8cpp_source.html @@ -134,7 +134,7 @@
17 {
18  auto accessor = mesh.create_accessor<double>(m_attibute_handle);
19  const std::vector<simplex::Simplex> one_ring =
- +
21  auto p_mid = accessor.vector_attribute(simplex.tuple());
22  p_mid.setZero();
23  for (const simplex::Simplex& s : one_ring) {
@@ -149,7 +149,7 @@ -
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
virtual bool operator()(Mesh &m, const simplex::Simplex &s)
@@ -161,7 +161,7 @@
SimplexCollection link(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Definition: link.cpp:11
- + diff --git a/_vertex_tangential_laplacian_smooth_8cpp_source.html b/_vertex_tangential_laplacian_smooth_8cpp_source.html index 9ebb9bac33..4b90af9ab2 100644 --- a/_vertex_tangential_laplacian_smooth_8cpp_source.html +++ b/_vertex_tangential_laplacian_smooth_8cpp_source.html @@ -143,16 +143,16 @@
26  assert(mesh.is_valid_slow(tup));
27  const Eigen::Vector3d g = accessor.vector_attribute(tup); // center of gravity
28 
-
29  if (mesh.is_boundary(PrimitiveType::Vertex, tup)) {
+
29  if (mesh.is_boundary(PrimitiveType::Vertex, tup)) {
30  //
31  Tuple t0 = tup;
-
32  while (!mesh.is_boundary(PrimitiveType::Edge, t0)) {
+
32  while (!mesh.is_boundary(PrimitiveType::Edge, t0)) {
33  t0 = mesh.switch_edge(mesh.switch_face(t0));
34  }
35  const Tuple v0 = mesh.switch_vertex(t0);
36 
37  Tuple t1 = mesh.switch_edge(tup);
-
38  while (!mesh.is_boundary(PrimitiveType::Edge, t1)) {
+
38  while (!mesh.is_boundary(PrimitiveType::Edge, t1)) {
39  t1 = mesh.switch_edge(mesh.switch_face(t1));
40  }
41  const Tuple v1 = mesh.switch_vertex(t1);
@@ -189,12 +189,12 @@ -
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:945
+
Tuple switch_edge(const Tuple &tuple) const
Definition: Mesh.hpp:944
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
Definition: Mesh.cpp:54
-
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:949
-
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:879
+
Tuple switch_face(const Tuple &tuple) const
Definition: Mesh.hpp:948
+
Accessor< T > create_accessor(const attribute::MeshAttributeHandle &handle)
Definition: Mesh.hpp:878
bool is_valid_slow(const Tuple &tuple) const
Definition: Mesh.cpp:72
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
@@ -208,8 +208,8 @@
Eigen::Vector3d compute_vertex_normal(const TriMesh &m, const Accessor< double > &pos, const Tuple &v)
compute the normalized vertex normal from the incident area weighted face normals
Definition: mesh_utils.cpp:25
- - + + diff --git a/attribute__new_2_collapse_new_attribute_topo_info_8hpp_source.html b/attribute__new_2_collapse_new_attribute_topo_info_8hpp_source.html index 16a87694a5..09941200ba 100644 --- a/attribute__new_2_collapse_new_attribute_topo_info_8hpp_source.html +++ b/attribute__new_2_collapse_new_attribute_topo_info_8hpp_source.html @@ -133,14 +133,14 @@
16  virtual std::vector<std::array<Tuple, 2>> merged_simplices(
17  const ReturnVariant& ret_data,
18  const Tuple& input_tuple,
-
19  PrimitiveType pt) const = 0;
+
19  PrimitiveType pt) const = 0;
20 
21  // these virtuals are handled by per-mesh dimension code
22  // the simplices that were created by merging simplices
23  virtual std::vector<Tuple> new_simplices(
24  const ReturnVariant& ret_data,
25  const Tuple& input_tuple,
-
26  PrimitiveType pt) const = 0;
+
26  PrimitiveType pt) const = 0;
27 
28  // set of faces whose one ring were modified
29  // SHOULD be safe to resurrect to a previous state
@@ -160,7 +160,7 @@
wmtk::utils::metaprogramming::ReferenceWrappedFunctorReturnCache< wmtk::operations::utils::MultiMeshEdgeCollapseFunctor, wmtk::utils::metaprogramming::MeshVariantTraits, simplex::Simplex > CollapseReturnData
- + diff --git a/attribute__new_2_split_new_attribute_topo_info_8hpp_source.html b/attribute__new_2_split_new_attribute_topo_info_8hpp_source.html index 1ce8c8d191..2239f946f8 100644 --- a/attribute__new_2_split_new_attribute_topo_info_8hpp_source.html +++ b/attribute__new_2_split_new_attribute_topo_info_8hpp_source.html @@ -131,7 +131,7 @@
14  virtual std::vector<std::array<Tuple, 2>> input_ear_simplices(
15  const ReturnVariant& ret_data,
16  const Tuple& input_tuple,
-
17  PrimitiveType pt) const = 0;
+
17  PrimitiveType pt) const = 0;
18 
19  // the simplices at the boundary of the pairs of simplices that were split
20  // vertex should return 0
@@ -139,7 +139,7 @@
22  virtual std::vector<Tuple> output_rib_simplices(
23  const ReturnVariant& ret_data,
24  const Tuple& output_tuple,
-
25  PrimitiveType pt) const = 0;
+
25  PrimitiveType pt) const = 0;
26 
27 
28  // the sipmlices that were split from one simplex above
@@ -147,7 +147,7 @@
30  virtual std::vector<std::array<Tuple, 2>> output_split_simplices(
31  const ReturnVariant& ret_data,
32  const Tuple& output_tuple,
-
33  PrimitiveType pt) const = 0;
+
33  PrimitiveType pt) const = 0;
34 
35  // the simplices that were split in half
36  // vertex should return 0
@@ -155,7 +155,7 @@
38  virtual std::vector<Tuple> input_split_simplices(
39  const ReturnVariant& ret_data,
40  const Tuple& input_tuple,
-
41  PrimitiveType pt) const = 0;
+
41  PrimitiveType pt) const = 0;
42 
43 
46  // virtual std::vector<Tuple> output_modified_simplices(
@@ -181,7 +181,7 @@
wmtk::utils::metaprogramming::ReferenceWrappedFunctorReturnCache< wmtk::operations::utils::MultiMeshEdgeSplitFunctor, wmtk::utils::metaprogramming::MeshVariantTraits, simplex::Simplex > SplitReturnData
- + diff --git a/autogen_2edge__mesh_2local__switch__tuple_8cpp_source.html b/autogen_2edge__mesh_2local__switch__tuple_8cpp_source.html index e285428c03..7350e517f3 100644 --- a/autogen_2edge__mesh_2local__switch__tuple_8cpp_source.html +++ b/autogen_2edge__mesh_2local__switch__tuple_8cpp_source.html @@ -120,13 +120,13 @@
4 
5 namespace wmtk::autogen::edge_mesh {
- +
7 {
8  using namespace utils;
9  const int64_t global_cid = TupleInspector::global_cid(tuple);
10  const int64_t hash = TupleInspector::hash(tuple);
11  switch (pt) {
- +
13  return Tuple(
14  1 - TupleInspector::local_vid(tuple),
15  TupleInspector::local_eid(tuple),
@@ -134,10 +134,10 @@
17  global_cid,
18  hash);
19 
- - - - + + + +
24  default: throw std::runtime_error("Tuple switch: Invalid primitive type"); break;
25  }
26  return Tuple();
@@ -149,12 +149,12 @@
Tuple local_switch_tuple(const Tuple &tuple, PrimitiveType pt)
- - - - - - + + + + + + diff --git a/autogen_2edge__mesh_2local__switch__tuple_8hpp_source.html b/autogen_2edge__mesh_2local__switch__tuple_8hpp_source.html index 99b01a2fc0..883f995333 100644 --- a/autogen_2edge__mesh_2local__switch__tuple_8hpp_source.html +++ b/autogen_2edge__mesh_2local__switch__tuple_8hpp_source.html @@ -120,13 +120,13 @@
3 #include <wmtk/Tuple.hpp>
4 
5 namespace wmtk::autogen::edge_mesh {
-
6 Tuple local_switch_tuple(const Tuple& t, PrimitiveType pt);
+
6 Tuple local_switch_tuple(const Tuple& t, PrimitiveType pt);
7 }
Tuple local_switch_tuple(const Tuple &tuple, PrimitiveType pt)
- + diff --git a/autogen_2local__switch__tuple_8cpp_source.html b/autogen_2local__switch__tuple_8cpp_source.html index b0810d00a8..0e2f519156 100644 --- a/autogen_2local__switch__tuple_8cpp_source.html +++ b/autogen_2local__switch__tuple_8cpp_source.html @@ -120,14 +120,14 @@
5 namespace wmtk::autogen {
- +
7 {
8  switch (mesh_type) {
- - - - - + + + + +
14  default: throw std::runtime_error("not implemented"); break;
15  }
16  return Tuple();
@@ -143,12 +143,12 @@
Tuple local_switch_tuple(const Tuple &t, PrimitiveType pt)
Tuple local_switch_tuple(PrimitiveType mesh_type, const Tuple &t, PrimitiveType pt)
- - - - - - + + + + + + diff --git a/autogen_2local__switch__tuple_8hpp_source.html b/autogen_2local__switch__tuple_8hpp_source.html index 45d4bf31da..95686c548c 100644 --- a/autogen_2local__switch__tuple_8hpp_source.html +++ b/autogen_2local__switch__tuple_8hpp_source.html @@ -122,13 +122,13 @@
5 
6 // NOTE: this header primarily exists to simplify unit testing, not really for use
7 namespace wmtk::autogen {
-
8 Tuple local_switch_tuple(PrimitiveType mesh_type, const Tuple& t, PrimitiveType pt);
+
8 Tuple local_switch_tuple(PrimitiveType mesh_type, const Tuple& t, PrimitiveType pt);
9 }
Tuple local_switch_tuple(PrimitiveType mesh_type, const Tuple &t, PrimitiveType pt)
- + diff --git a/autogen_2tet__mesh_2local__switch__tuple_8cpp_source.html b/autogen_2tet__mesh_2local__switch__tuple_8cpp_source.html index fe40262afa..90e9c22470 100644 --- a/autogen_2tet__mesh_2local__switch__tuple_8cpp_source.html +++ b/autogen_2tet__mesh_2local__switch__tuple_8cpp_source.html @@ -123,7 +123,7 @@
6 
7 
8 namespace wmtk::autogen::tet_mesh {
- +
10 {
11  using namespace utils;
12  const int64_t offset = local_id_table_offset(tuple);
@@ -132,7 +132,7 @@
15  const int64_t global_cid = TupleInspector::global_cid(tuple);
16  const int64_t hash = TupleInspector::hash(tuple);
17  switch (pt) {
- +
19  return Tuple(
20  auto_3d_table_vertex[offset][0],
21  auto_3d_table_vertex[offset][1],
@@ -140,14 +140,14 @@
23  global_cid,
24  hash);
25 
- +
27  return Tuple(
28  auto_3d_table_edge[offset][0],
29  auto_3d_table_edge[offset][1],
30  auto_3d_table_edge[offset][2],
31  global_cid,
32  hash);
- +
34  return Tuple(
35  auto_3d_table_face[offset][0],
36  auto_3d_table_face[offset][1],
@@ -155,8 +155,8 @@
38  global_cid,
39  hash);
40 
- - + +
43  default: throw std::runtime_error("Tuple switch: Invalid primitive type"); break;
44  }
45  return Tuple();
@@ -172,12 +172,12 @@
int64_t local_id_table_offset(const Tuple &tuple)
const int64_t auto_3d_table_vertex[96][3]
const int64_t auto_3d_table_edge[96][3]
- - - - - - + + + + + + diff --git a/autogen_2tet__mesh_2local__switch__tuple_8hpp_source.html b/autogen_2tet__mesh_2local__switch__tuple_8hpp_source.html index dbb068a035..44c7537729 100644 --- a/autogen_2tet__mesh_2local__switch__tuple_8hpp_source.html +++ b/autogen_2tet__mesh_2local__switch__tuple_8hpp_source.html @@ -120,13 +120,13 @@
3 #include <wmtk/Tuple.hpp>
4 
5 namespace wmtk::autogen::tet_mesh {
-
6 Tuple local_switch_tuple(const Tuple& t, PrimitiveType pt);
+
6 Tuple local_switch_tuple(const Tuple& t, PrimitiveType pt);
7 }
Tuple local_switch_tuple(const Tuple &tuple, PrimitiveType pt)
- + diff --git a/autogen_2tri__mesh_2local__switch__tuple_8hpp_source.html b/autogen_2tri__mesh_2local__switch__tuple_8hpp_source.html index 265534861f..a52488518f 100644 --- a/autogen_2tri__mesh_2local__switch__tuple_8hpp_source.html +++ b/autogen_2tri__mesh_2local__switch__tuple_8hpp_source.html @@ -120,7 +120,7 @@
3 #include <wmtk/Tuple.hpp>
4 
5 namespace wmtk::autogen::tri_mesh {
-
6 Tuple local_switch_tuple(const Tuple& t, PrimitiveType pt);
+
6 Tuple local_switch_tuple(const Tuple& t, PrimitiveType pt);
7 }
8 
9 #include "local_switch_tuple.hxx"
@@ -129,7 +129,7 @@
Tuple local_switch_tuple(const Tuple &t, PrimitiveType pt)
- + diff --git a/boundary_8cpp_source.html b/boundary_8cpp_source.html index 21d06ffc20..cca61357c5 100644 --- a/boundary_8cpp_source.html +++ b/boundary_8cpp_source.html @@ -121,34 +121,34 @@
4 
5 namespace wmtk::simplex {
6 
-
7 std::vector<Tuple> boundary_tuples(const Mesh& m, const Tuple& t, PrimitiveType pt)
+
7 std::vector<Tuple> boundary_tuples(const Mesh& m, const Tuple& t, PrimitiveType pt)
8 {
9  std::vector<Tuple> ret;
-
10  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
-
11  constexpr static PrimitiveType PE = PrimitiveType::Edge;
-
12  constexpr static PrimitiveType PF = PrimitiveType::Face;
-
13  constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
+
10  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
+
11  constexpr static PrimitiveType PE = PrimitiveType::Edge;
+
12  constexpr static PrimitiveType PF = PrimitiveType::Face;
+
13  constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
14  switch (pt) {
-
15  case PrimitiveType::Vertex: {
+
15  case PrimitiveType::Vertex: {
16  // vertex does not have a boundary
17  } break;
-
18  case PrimitiveType::Edge: {
+
18  case PrimitiveType::Edge: {
19  ret = {t, m.switch_vertex(t)};
20  } break;
-
21  case PrimitiveType::Face: {
+
21  case PrimitiveType::Face: {
22  ret = {
23  t, //
24  m.switch_tuples(t, {PE}),
25  m.switch_tuples(t, {PV, PE})};
26  } break;
- +
28  ret = {
29  t, //
30  m.switch_tuples(t, {PF}), //
31  m.switch_tuples(t, {PE, PF}), //
32  m.switch_tuples(t, {PV, PE, PF})};
33  } break;
- +
35  default: assert(false); break;
36  }
37  return ret;
@@ -166,7 +166,7 @@
50  boundary_tuples(mesh, simplex),
51 
- +
53 
54  if (sort_and_clean) {
55  collection.sort_and_clean();
@@ -178,8 +178,8 @@ -
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:962
-
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:941
+
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:961
+
Tuple switch_vertex(const Tuple &tuple) const
Definition: Mesh.hpp:940
void sort_and_clean()
Sort simplex vector and remove duplicates.
@@ -190,14 +190,14 @@
std::vector< Tuple > boundary_tuples(const Mesh &m, const Tuple &t, PrimitiveType pt)
Definition: boundary.cpp:7
SimplexCollection boundary(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Returns all boundary simplices of a simplex.
Definition: boundary.cpp:45
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- - - - - - -
PrimitiveType get_primitive_type_from_id(int64_t id)
Get the primitive type corresponding to its unique integer id.
+
constexpr PrimitiveType get_primitive_type_from_id(int8_t id)
Get the primitive type corresponding to its unique integer id.
+
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+ + + + + + diff --git a/boundary_8hpp_source.html b/boundary_8hpp_source.html index 028808c3af..7c23a66651 100644 --- a/boundary_8hpp_source.html +++ b/boundary_8hpp_source.html @@ -124,13 +124,13 @@
24 boundary(const Mesh& mesh, const Simplex& simplex, const bool sort_and_clean = true);
25 
26 std::vector<Tuple> boundary_tuples(const Mesh& mesh, const Simplex& simplex);
-
27 std::vector<Tuple> boundary_tuples(const Mesh& mesh, const Tuple& t, PrimitiveType pt);
+
27 std::vector<Tuple> boundary_tuples(const Mesh& mesh, const Tuple& t, PrimitiveType pt);
28 } // namespace wmtk::simplex
std::vector< Tuple > boundary_tuples(const Mesh &m, const Tuple &t, PrimitiveType pt)
Definition: boundary.cpp:7
SimplexCollection boundary(const Mesh &mesh, const Simplex &simplex, const bool sort_and_clean)
Returns all boundary simplices of a simplex.
Definition: boundary.cpp:45
- + diff --git a/boundary__with__preserved__coface_8cpp_source.html b/boundary__with__preserved__coface_8cpp_source.html index ebdafa3199..3f7bb32319 100644 --- a/boundary__with__preserved__coface_8cpp_source.html +++ b/boundary__with__preserved__coface_8cpp_source.html @@ -123,29 +123,29 @@
7  const Mesh& mesh,
8  const Tuple& t,
-
9  PrimitiveType pt,
+
9  PrimitiveType pt,
10  PrimtiiveType coface_pt)
11 {
12  std::vector<Tuple> ret;
-
13  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
-
14  constexpr static PrimitiveType PE = PrimitiveType::Edge;
-
15  constexpr static PrimitiveType PF = PrimitiveType::Face;
-
16  constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
+
13  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
+
14  constexpr static PrimitiveType PE = PrimitiveType::Edge;
+
15  constexpr static PrimitiveType PF = PrimitiveType::Face;
+
16  constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
17  if (coface_pt < pt) {
18  ret.emplace_back(t);
19  }
20  switch (pt) {
-
21  case PrimitiveType::Vertex: {
+
21  case PrimitiveType::Vertex: {
22  // vertex does not have a boundary
23  } break;
-
24  case PrimitiveType::Edge: {
+
24  case PrimitiveType::Edge: {
25  } break;
-
26  case PrimitiveType::Face: {
+
26  case PrimitiveType::Face: {
27  if (coface_pt < PE) {
28  ret.emplace_back(m.switch_tuples(t, {PE}));
29  }
30  } break;
- +
32  if (coface_pt < PF) {
33  ret.emplace_back(m.switch_tuples(t, {PF}));
34  if (coface_pt < PE) {
@@ -153,7 +153,7 @@
36  }
37  }
38  } break;
- +
40  default: assert(false); break;
41  }
42  return ret;
@@ -164,12 +164,12 @@
std::vector< Tuple > coface_preserving_boundary_tuples(const Mesh &mesh, const Tuple &t, PrimitiveType pt, PrimtiiveType coface_pt)
- - - - - - + + + + + + diff --git a/boundary__with__preserved__coface_8hpp_source.html b/boundary__with__preserved__coface_8hpp_source.html index e57a910ee7..92d87df72c 100644 --- a/boundary__with__preserved__coface_8hpp_source.html +++ b/boundary__with__preserved__coface_8hpp_source.html @@ -128,8 +128,8 @@
27  const Mesh& mesh,
28  const Tuple& t,
-
29  PrimitiveType pt,
-
30  PrimitiveType coface_pt);
+
29  PrimitiveType pt,
+
30  PrimitiveType coface_pt);
31 } // namespace wmtk::simplex::internal
@@ -137,7 +137,7 @@
std::vector< Tuple > coface_preserving_boundary_tuples(const Mesh &mesh, const Tuple &t, PrimitiveType pt, PrimitiveType coface_pt)
Returns the boundary of a simplex ignoring some sorts of switches.
Definition: Accessor.cpp:8
- + diff --git a/boundary__with__preserved__face_8cpp_source.html b/boundary__with__preserved__face_8cpp_source.html index 8f1a50878d..482b8f1fb1 100644 --- a/boundary__with__preserved__face_8cpp_source.html +++ b/boundary__with__preserved__face_8cpp_source.html @@ -124,29 +124,29 @@
8  const Mesh& mesh,
9  const Tuple& t,
-
10  PrimitiveType pt,
-
11  PrimitiveType face_pt)
+
10  PrimitiveType pt,
+
11  PrimitiveType face_pt)
12 {
13  std::vector<Tuple> ret;
-
14  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
-
15  constexpr static PrimitiveType PE = PrimitiveType::Edge;
-
16  constexpr static PrimitiveType PF = PrimitiveType::Face;
-
17  constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
+
14  constexpr static PrimitiveType PV = PrimitiveType::Vertex;
+
15  constexpr static PrimitiveType PE = PrimitiveType::Edge;
+
16  constexpr static PrimitiveType PF = PrimitiveType::Face;
+
17  constexpr static PrimitiveType PT = PrimitiveType::Tetrahedron;
18  if (face_pt < pt) {
19  ret.emplace_back(t);
20  }
21  switch (pt) {
-
22  case PrimitiveType::Vertex: {
+
22  case PrimitiveType::Vertex: {
23  // vertex does not have a boundary
24  } break;
-
25  case PrimitiveType::Edge: {
+
25  case PrimitiveType::Edge: {
26  } break;
-
27  case PrimitiveType::Face: {
+
27  case PrimitiveType::Face: {
28  if (face_pt < PE) {
29  ret.emplace_back(mesh.switch_tuples(t, {PE}));
30  }
31  } break;
- +
33  if (face_pt < PF) {
34  ret.emplace_back(mesh.switch_tuples(t, {PF}));
35  if (face_pt < PE) {
@@ -154,7 +154,7 @@
37  }
38  }
39  } break;
- +
41  default:
42  throw std::runtime_error("called boundary_with_preserveD_coface_tuples with halfedge");
43  break;
@@ -163,7 +163,7 @@
46 }
47 
48 std::vector<Tuple>
-
49 boundary_with_preserved_face_tuples(const Mesh& mesh, const Simplex& simplex, PrimitiveType face_pt)
+
49 boundary_with_preserved_face_tuples(const Mesh& mesh, const Simplex& simplex, PrimitiveType face_pt)
50 {
52  mesh,
@@ -175,21 +175,21 @@
59  const Mesh& mesh,
60  const Tuple& t,
-
61  PrimitiveType pt,
-
62  PrimitiveType face_pt)
+
61  PrimitiveType pt,
+
62  PrimitiveType face_pt)
63 {
-
64  if (pt == PrimitiveType::Vertex) {
+
64  if (pt == PrimitiveType::Vertex) {
65  return {};
66  }
68  boundary_with_preserved_face_tuples(mesh, t, pt, face_pt),
- +
70 }
71 
73  const Mesh& mesh,
74  const Simplex& simplex,
-
75  PrimitiveType face_pt)
+
75  PrimitiveType face_pt)
76 {
78  mesh,
@@ -201,7 +201,7 @@ -
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:962
+
Tuple switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) const
Definition: Mesh.hpp:961
const Tuple & tuple() const
Definition: Simplex.hpp:25
@@ -210,14 +210,14 @@
std::vector< Simplex > boundary_with_preserved_face_simplices(const Mesh &mesh, const Tuple &t, PrimitiveType pt, PrimitiveType face_pt)
Returns the boundary of a simplex ignoring some sorts of switches.
std::vector< Tuple > boundary_with_preserved_face_tuples(const Mesh &mesh, const Tuple &t, PrimitiveType pt, PrimitiveType face_pt)
Returns the boundary of a simplex ignoring some sorts of switches.
std::vector< Simplex > tuple_vector_to_homogeneous_simplex_vector(const std::vector< Tuple > &tups, PrimitiveType primitive)
-
constexpr int64_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
- - - - - - -
PrimitiveType get_primitive_type_from_id(int64_t id)
Get the primitive type corresponding to its unique integer id.
+
constexpr PrimitiveType get_primitive_type_from_id(int8_t id)
Get the primitive type corresponding to its unique integer id.
+
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.
+ + + + + + diff --git a/boundary__with__preserved__face_8hpp_source.html b/boundary__with__preserved__face_8hpp_source.html index 8cdfcc4f5c..f0c05d6fa2 100644 --- a/boundary__with__preserved__face_8hpp_source.html +++ b/boundary__with__preserved__face_8hpp_source.html @@ -128,33 +128,33 @@
26 std::vector<Tuple> boundary_with_preserved_face_tuples(
27  const Mesh& mesh,
28  const Tuple& t,
-
29  PrimitiveType pt,
-
30  PrimitiveType face_pt);
+
29  PrimitiveType pt,
+
30  PrimitiveType face_pt);
31 
32 
44 std::vector<Tuple> boundary_with_preserved_face_tuples(
45  const Mesh& mesh,
46  const Simplex& simplex,
-
47  PrimitiveType face_pt);
+
47  PrimitiveType face_pt);
48 
64 std::vector<Simplex> boundary_with_preserved_face_simplices(
65  const Mesh& mesh,
66  const Tuple& t,
-
67  PrimitiveType pt,
-
68  PrimitiveType face_pt);
+
67  PrimitiveType pt,
+
68  PrimitiveType face_pt);
69 
70 
82 std::vector<Simplex> boundary_with_preserved_face_simplices(
83  const Mesh& mesh,
84  const Simplex& simplex,
-
85  PrimitiveType face_pt);
+
85  PrimitiveType face_pt);
86 } // namespace wmtk::simplex::internal
std::vector< Simplex > boundary_with_preserved_face_simplices(const Mesh &mesh, const Tuple &t, PrimitiveType pt, PrimitiveType face_pt)
Returns the boundary of a simplex ignoring some sorts of switches.
std::vector< Tuple > boundary_with_preserved_face_tuples(const Mesh &mesh, const Tuple &t, PrimitiveType pt, PrimitiveType face_pt)
Returns the boundary of a simplex ignoring some sorts of switches.
Definition: Accessor.cpp:8
- + diff --git a/classwmtk_1_1_cell.html b/classwmtk_1_1_cell.html index 9ee53e8007..47d2a9efd7 100644 --- a/classwmtk_1_1_cell.html +++ b/classwmtk_1_1_cell.html @@ -135,7 +135,7 @@    Cell (const simplex::Simplex &simplex)   - Cell (const Tuple &t, PrimitiveType pt) + Cell (const Tuple &t, PrimitiveType pt)   int64_t dimension () const   @@ -241,7 +241,7 @@

- PrimitiveType  + PrimitiveType  pt  diff --git a/classwmtk_1_1_edge_mesh-members.html b/classwmtk_1_1_edge_mesh-members.html index 63d123a6c5..52a9de5050 100644 --- a/classwmtk_1_1_edge_mesh-members.html +++ b/classwmtk_1_1_edge_mesh-members.html @@ -234,41 +234,40 @@ register_attribute(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))wmtk::Mesh register_attribute_typed(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))wmtk::Mesh register_child_mesh(const std::shared_ptr< Mesh > &child_mesh, const std::vector< std::array< Tuple, 2 >> &map_tuples)wmtk::Mesh - reload_accessors() constwmtk::Meshinlinevirtual - request_simplex_indices(PrimitiveType type, int64_t count)wmtk::Meshprotected - reserve_attributes(PrimitiveType type, int64_t size)wmtk::Meshprotected - reserve_attributes(int64_t dimension, int64_t size)wmtk::Meshprotected - reserve_attributes_to_fit()wmtk::Meshprotected - reserve_more_attributes(PrimitiveType type, int64_t size)wmtk::Meshprotected - reserve_more_attributes(const std::vector< int64_t > &sizes)wmtk::Meshprotected - resurrect_tuple(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) constwmtk::Meshprotected - resurrect_tuple_slow(const Tuple &tuple)wmtk::Meshprotected - serialize(MeshWriter &writer) constwmtk::Mesh - set_capacities(std::vector< int64_t > capacities)wmtk::Meshprotected - set_capacities_from_flags()wmtk::Mesh - simplices_to_gids(const std::vector< std::vector< simplex::Simplex >> &simplices) constwmtk::Meshprotected - switch_edge(const Tuple &tuple) constwmtk::Meshinline - switch_face(const Tuple &tuple) constwmtk::Meshinline - switch_tetrahedron(const Tuple &tuple) constwmtk::Meshinline - switch_tuple(const Tuple &tuple, PrimitiveType type) const overridewmtk::EdgeMeshvirtual - switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) constwmtk::Mesh - switch_tuples(const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) constwmtk::Mesh - switch_tuples_unsafe(const Tuple &tuple, const ContainerType &op_sequence) constwmtk::Mesh - switch_tuples_unsafe(const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) constwmtk::Mesh - switch_vertex(const Tuple &tuple) constwmtk::Meshinline - top_cell_dimension() const overridewmtk::EdgeMeshinlinevirtual - top_simplex_type() constwmtk::Mesh - tuple_from_global_ids(int64_t eid, int64_t vid) constwmtk::EdgeMeshprotected - tuple_from_id(const PrimitiveType type, const int64_t gid) const overridewmtk::EdgeMeshprotectedvirtual - update_cell_hash(const Tuple &cell, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected - update_cell_hash(const int64_t cell_index, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected - update_cell_hashes(const std::vector< Tuple > &cells, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected - update_cell_hashes(const std::vector< int64_t > &cell_indices, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected - update_cell_hashes_slow(const std::vector< Tuple > &cells)wmtk::Meshprotected - update_vertex_operation_hashes(const Tuple &vertex, Accessor< int64_t > &hash_accessor)wmtk::Mesh - vertex_tuple_from_id(int64_t id) constwmtk::EdgeMeshprotected - ~Hashable()wmtk::utils::Hashablevirtual - ~Mesh()wmtk::Meshvirtual + request_simplex_indices(PrimitiveType type, int64_t count)wmtk::Meshprotected + reserve_attributes(PrimitiveType type, int64_t size)wmtk::Meshprotected + reserve_attributes(int64_t dimension, int64_t size)wmtk::Meshprotected + reserve_attributes_to_fit()wmtk::Meshprotected + reserve_more_attributes(PrimitiveType type, int64_t size)wmtk::Meshprotected + reserve_more_attributes(const std::vector< int64_t > &sizes)wmtk::Meshprotected + resurrect_tuple(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) constwmtk::Meshprotected + resurrect_tuple_slow(const Tuple &tuple)wmtk::Meshprotected + serialize(MeshWriter &writer) constwmtk::Mesh + set_capacities(std::vector< int64_t > capacities)wmtk::Meshprotected + set_capacities_from_flags()wmtk::Mesh + simplices_to_gids(const std::vector< std::vector< simplex::Simplex >> &simplices) constwmtk::Meshprotected + switch_edge(const Tuple &tuple) constwmtk::Meshinline + switch_face(const Tuple &tuple) constwmtk::Meshinline + switch_tetrahedron(const Tuple &tuple) constwmtk::Meshinline + switch_tuple(const Tuple &tuple, PrimitiveType type) const overridewmtk::EdgeMeshvirtual + switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) constwmtk::Mesh + switch_tuples(const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) constwmtk::Mesh + switch_tuples_unsafe(const Tuple &tuple, const ContainerType &op_sequence) constwmtk::Mesh + switch_tuples_unsafe(const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) constwmtk::Mesh + switch_vertex(const Tuple &tuple) constwmtk::Meshinline + top_cell_dimension() const overridewmtk::EdgeMeshinlinevirtual + top_simplex_type() constwmtk::Mesh + tuple_from_global_ids(int64_t eid, int64_t vid) constwmtk::EdgeMeshprotected + tuple_from_id(const PrimitiveType type, const int64_t gid) const overridewmtk::EdgeMeshprotectedvirtual + update_cell_hash(const Tuple &cell, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected + update_cell_hash(const int64_t cell_index, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected + update_cell_hashes(const std::vector< Tuple > &cells, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected + update_cell_hashes(const std::vector< int64_t > &cell_indices, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected + update_cell_hashes_slow(const std::vector< Tuple > &cells)wmtk::Meshprotected + update_vertex_operation_hashes(const Tuple &vertex, Accessor< int64_t > &hash_accessor)wmtk::Mesh + vertex_tuple_from_id(int64_t id) constwmtk::EdgeMeshprotected + ~Hashable()wmtk::utils::Hashablevirtual + ~Mesh()wmtk::Meshvirtual diff --git a/classwmtk_1_1_edge_mesh.html b/classwmtk_1_1_edge_mesh.html index 3c49984a37..7af3217e57 100644 --- a/classwmtk_1_1_edge_mesh.html +++ b/classwmtk_1_1_edge_mesh.html @@ -156,13 +156,13 @@   int64_t top_cell_dimension () const override   -Tuple switch_tuple (const Tuple &tuple, PrimitiveType type) const override +Tuple switch_tuple (const Tuple &tuple, PrimitiveType type) const override  switch the orientation of the Tuple of the given dimension More...
  bool is_ccw (const Tuple &tuple) const override  TODO this needs dimension? More...
  -bool is_boundary (PrimitiveType, const Tuple &tuple) const override +bool is_boundary (PrimitiveType, const Tuple &tuple) const override  check if a simplex (encoded as a tuple/primitive pair) lies on a boundary or not More...
  bool is_boundary_vertex (const Tuple &tuple) const @@ -182,13 +182,11 @@ bool is_boundary (const simplex::Simplex &tuple) const  check if a simplex lies on a boundary or not More...
  -virtual bool is_boundary (PrimitiveType, const Tuple &tuple) const=0 +virtual bool is_boundary (PrimitiveType, const Tuple &tuple) const=0  check if a simplex (encoded as a tuple/primitive pair) lies on a boundary or not More...
  - Public Member Functions inherited from wmtk::Mesh -virtual void reload_accessors () const -  -PrimitiveType top_simplex_type () const +PrimitiveType top_simplex_type () const   std::map< std::string, const wmtk::utils::Hashable * > child_hashables () const override   @@ -196,7 +194,7 @@    Mesh (const int64_t &dimension)   - Mesh (const int64_t &dimension, const int64_t &max_primitive_type_id, PrimitiveType hash_type) + Mesh (const int64_t &dimension, const int64_t &max_primitive_type_id, PrimitiveType hash_type)    Mesh (Mesh &&other)   @@ -210,7 +208,7 @@   void serialize (MeshWriter &writer) const   -std::vector< Tupleget_all (PrimitiveType type) const +std::vector< Tupleget_all (PrimitiveType type) const  Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index. More...
  virtual std::tuple< std::vector< std::vector< int64_t > >, std::vector< std::vector< int64_t > > > consolidate () @@ -221,19 +219,19 @@ std::vector< attribute::TypedAttributeHandleVariantcustom_attributes () const   template<typename T > -attribute::MeshAttributeHandle register_attribute (const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0)) +attribute::MeshAttributeHandle register_attribute (const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))   template<typename T > -attribute::TypedAttributeHandle< T > register_attribute_typed (const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0)) +attribute::TypedAttributeHandle< T > register_attribute_typed (const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))   template<typename T > -bool has_attribute (const std::string &name, const PrimitiveType ptype) const +bool has_attribute (const std::string &name, const PrimitiveType ptype) const   template<typename T > -attribute::MeshAttributeHandle get_attribute_handle (const std::string &name, const PrimitiveType ptype) const +attribute::MeshAttributeHandle get_attribute_handle (const std::string &name, const PrimitiveType ptype) const   template<typename T > -attribute::TypedAttributeHandle< T > get_attribute_handle_typed (const std::string &name, const PrimitiveType ptype) const +attribute::TypedAttributeHandle< T > get_attribute_handle_typed (const std::string &name, const PrimitiveType ptype) const   template<typename T > Accessor< T > create_accessor (const attribute::MeshAttributeHandle &handle) @@ -271,11 +269,11 @@ decltype(auto) parent_scope (Functor &&f, Args &&... args) const  Evaluate the passed in function inside the parent scope. More...
  -ConstAccessor< char > get_flag_accessor (PrimitiveType type) const +ConstAccessor< char > get_flag_accessor (PrimitiveType type) const   ConstAccessor< int64_t > get_cell_hash_accessor () const   -ConstAccessor< char > get_const_flag_accessor (PrimitiveType type) const +ConstAccessor< char > get_const_flag_accessor (PrimitiveType type) const   ConstAccessor< int64_t > get_const_cell_hash_accessor () const   @@ -298,16 +296,16 @@ template<typename ContainerType > Tuple switch_tuples (const Tuple &tuple, const ContainerType &op_sequence) const   -Tuple switch_tuples (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const +Tuple switch_tuples (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const   template<typename ContainerType > Tuple switch_tuples_unsafe (const Tuple &tuple, const ContainerType &op_sequence) const   -Tuple switch_tuples_unsafe (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const +Tuple switch_tuples_unsafe (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const   void set_capacities_from_flags ()   -int64_t capacity (PrimitiveType type) const +int64_t capacity (PrimitiveType type) const  read in the m_capacities return the upper bound for the number of entities of the given dimension More...
  bool is_boundary (const simplex::Simplex &tuple) const @@ -368,12 +366,12 @@ std::vector< Tuplemap_tuples (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const  maps a simplex from this mesh to any other mesh More...
  -std::vector< Tuplemap_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const +std::vector< Tuplemap_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const   std::vector< Tuplelub_map_tuples (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const  maps a simplex from this mesh to any other mesh using LUB mesh as root More...
  -std::vector< Tuplelub_map_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const +std::vector< Tuplelub_map_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const   Tuple map_to_parent_tuple (const simplex::Simplex &my_simplex) const  optimized map from a simplex from this mesh to its direct parent More...
@@ -415,7 +413,7 @@ - + @@ -424,7 +422,7 @@ - + @@ -434,7 +432,7 @@ - + @@ -463,25 +461,25 @@ - + - + - + - + - + @@ -540,7 +538,7 @@

Definition at line 7 of file EdgeMesh.cpp.

-

References wmtk::Edge, and wmtk::Vertex.

+

References wmtk::Edge, and wmtk::Vertex.

@@ -729,7 +727,7 @@

- + @@ -759,7 +757,7 @@

Definition at line 14 of file EdgeMesh.cpp.

-

References wmtk::Edge, wmtk::Face, wmtk::HalfEdge, m_ev_handle, wmtk::Tuple::m_global_cid, wmtk::Tuple::m_local_vid, wmtk::Tetrahedron, and wmtk::Vertex.

+

References wmtk::Edge, wmtk::Face, wmtk::HalfEdge, m_ev_handle, wmtk::Tuple::m_global_cid, wmtk::Tuple::m_local_vid, wmtk::Tetrahedron, and wmtk::Vertex.

Referenced by id(), id_edge(), id_vertex(), and switch_tuple().

- + @@ -1007,7 +1005,7 @@

Definition at line 32 of file EdgeMesh.cpp.

-

References wmtk::Edge, wmtk::Face, wmtk::HalfEdge, is_boundary_vertex(), wmtk::Tetrahedron, and wmtk::Vertex.

+

References wmtk::Edge, wmtk::Face, wmtk::HalfEdge, is_boundary_vertex(), wmtk::Tetrahedron, and wmtk::Vertex.

Here is the call graph for this function:

- + @@ -1340,7 +1338,7 @@

Definition at line 54 of file EdgeMesh.cpp.

-

References wmtk::Edge, wmtk::Face, wmtk::Mesh::get_cell_hash(), wmtk::Mesh::get_const_cell_hash_accessor(), wmtk::HalfEdge, id(), is_ccw(), is_valid(), wmtk::Mesh::is_valid_slow(), m_ee_handle, m_ev_handle, wmtk::Tuple::m_global_cid, wmtk::Tuple::m_hash, wmtk::Tuple::m_local_eid, wmtk::Tuple::m_local_fid, wmtk::Tuple::m_local_vid, wmtk::Tetrahedron, and wmtk::Vertex.

+

References wmtk::Edge, wmtk::Face, wmtk::Mesh::get_cell_hash(), wmtk::Mesh::get_const_cell_hash_accessor(), wmtk::HalfEdge, id(), is_ccw(), is_valid(), wmtk::Mesh::is_valid_slow(), m_ee_handle, m_ev_handle, wmtk::Tuple::m_global_cid, wmtk::Tuple::m_hash, wmtk::Tuple::m_local_eid, wmtk::Tuple::m_local_fid, wmtk::Tuple::m_local_vid, wmtk::Tetrahedron, and wmtk::Vertex.

Referenced by wmtk::operations::edge_mesh::EdgeOperationData::input_endpoints(), and wmtk::simplex::link_condition().

@@ -1453,7 +1451,7 @@

Tuple wmtk::EdgeMesh::tuple_from_id

- + @@ -1488,7 +1486,7 @@

Definition at line 158 of file EdgeMesh.cpp.

-

References wmtk::Edge, edge_tuple_from_id(), wmtk::Face, wmtk::HalfEdge, wmtk::Tetrahedron, wmtk::Vertex, and vertex_tuple_from_id().

+

References wmtk::Edge, edge_tuple_from_id(), wmtk::Face, wmtk::HalfEdge, wmtk::Tetrahedron, wmtk::Vertex, and vertex_tuple_from_id().

Here is the call graph for this function:
diff --git a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor.html b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor.html index 369cd8e608..7f137e2287 100644 --- a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor.html +++ b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor.html @@ -156,7 +156,7 @@

- + @@ -220,7 +220,7 @@ - +

Protected Member Functions

int64_t id (const Tuple &tuple, PrimitiveType type) const override
int64_t id (const Tuple &tuple, PrimitiveType type) const override
 return the global id of the Tuple of the given dimension More...
 
int64_t id (const simplex::Simplex &simplex) const
 
int64_t id_edge (const Tuple &tuple) const
 
Tuple tuple_from_id (const PrimitiveType type, const int64_t gid) const override
Tuple tuple_from_id (const PrimitiveType type, const int64_t gid) const override
 internal function that returns the tuple of requested type, and has the global index cid More...
 
Tuple tuple_from_global_ids (int64_t eid, int64_t vid) const
Tuple edge_tuple_from_id (int64_t id) const
 
- Protected Member Functions inherited from wmtk::Mesh
Accessor< char > get_flag_accessor (PrimitiveType type)
Accessor< char > get_flag_accessor (PrimitiveType type)
 
Accessor< int64_t > get_cell_hash_accessor ()
 
void reserve_attributes_to_fit ()
 reserve space for all attributes data types for all dimensional simplices More...
 
void reserve_attributes (PrimitiveType type, int64_t size)
void reserve_attributes (PrimitiveType type, int64_t size)
 
void reserve_attributes (int64_t dimension, int64_t size)
 
void set_capacities (std::vector< int64_t > capacities)
 
void reserve_more_attributes (PrimitiveType type, int64_t size)
void reserve_more_attributes (PrimitiveType type, int64_t size)
 
void reserve_more_attributes (const std::vector< int64_t > &sizes)
 
void guarantee_more_attributes (PrimitiveType type, int64_t size)
void guarantee_more_attributes (PrimitiveType type, int64_t size)
 
void guarantee_more_attributes (const std::vector< int64_t > &sizes)
 
void guarantee_at_least_attributes (PrimitiveType type, int64_t size)
void guarantee_at_least_attributes (PrimitiveType type, int64_t size)
 
void guarantee_at_least_attributes (const std::vector< int64_t > &sizes)
 
std::vector< int64_t > request_simplex_indices (PrimitiveType type, int64_t count)
std::vector< int64_t > request_simplex_indices (PrimitiveType type, int64_t count)
 
attribute::AttributeScopeHandle create_single_mesh_scope ()
 
PrimitiveType PrimitiveType  type 
(PrimitiveType PrimitiveType  ,
PrimitiveType PrimitiveType  type 
(const PrimitiveType const PrimitiveType  type,
 
Tuple collapse_edge_single_mesh ()
 
std::vector< int64_t > request_simplex_indices (const PrimitiveType type, int64_t count)
std::vector< int64_t > request_simplex_indices (const PrimitiveType type, int64_t count)
 
- Public Member Functions inherited from wmtk::operations::edge_mesh::EdgeOperationData
std::array< Tuple, 2 > input_endpoints (const EdgeMesh &m) const

Additional Inherited Members

- Static Protected Member Functions inherited from wmtk::operations::EdgeOperationData
static Tuple tuple_from_id (const Mesh &m, const PrimitiveType type, const int64_t gid)
static Tuple tuple_from_id (const Mesh &m, const PrimitiveType type, const int64_t gid)
 

Detailed Description

@@ -261,7 +261,7 @@

Definition at line 6 of file EdgeMeshOperationExecutor.cpp.

-

References wmtk::Edge, wmtk::Mesh::get_flag_accessor(), and wmtk::Vertex.

+

References wmtk::Edge, wmtk::Mesh::get_flag_accessor(), and wmtk::Vertex.

Here is the call graph for this function:
@@ -512,7 +512,7 @@

std::vector< int64_t > wmtk::EdgeMesh::EdgeMeshOperationExecutor::request_simplex_indices ( - const PrimitiveType  + const PrimitiveType  type, @@ -577,7 +577,7 @@

Definition at line 82 of file EdgeMeshOperationExecutor.cpp.

-

References wmtk::Edge, wmtk::Mesh::request_simplex_indices(), wmtk::Mesh::update_cell_hash(), and wmtk::Vertex.

+

References wmtk::Edge, wmtk::Mesh::request_simplex_indices(), wmtk::Mesh::update_cell_hash(), and wmtk::Vertex.

Here is the call graph for this function:
diff --git a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.map b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.map index c136a836e1..ccfe70d085 100644 --- a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.map +++ b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.map @@ -3,7 +3,7 @@ - + diff --git a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.md5 b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.md5 index 65bda7d0d7..bf3a69eb65 100644 --- a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.md5 +++ b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.md5 @@ -1 +1 @@ -0bffa4f1594086290bcd84952261cae0 \ No newline at end of file +1ef40a0b3e36c3a73abb078ff8e32184 \ No newline at end of file diff --git a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.svg b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.svg index fe3b65d431..00a377211e 100644 --- a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.svg +++ b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph.svg @@ -116,7 +116,7 @@ var sectionId = 'dynsection-2'; Node8 - + wmtk::get_primitive _type_id diff --git a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph_org.svg b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph_org.svg index 5cfdd4aa88..bddae7b0ad 100644 --- a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph_org.svg +++ b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_a58f9df6b90e9a063e83d77141f0ccc76_cgraph_org.svg @@ -70,7 +70,7 @@ Node8 - + wmtk::get_primitive _type_id diff --git a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.map b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.map index 2822b6eb6b..bcca693499 100644 --- a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.map +++ b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.map @@ -3,7 +3,7 @@ - + diff --git a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.md5 b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.md5 index 2aaa5f4fc8..ffc8cef3d7 100644 --- a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.md5 +++ b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.md5 @@ -1 +1 @@ -ad245d11d21a363408e2e4f0de25250f \ No newline at end of file +80fe89472720333c01914de8e0845faf \ No newline at end of file diff --git a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.svg b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.svg index 87201c4fd8..1720468818 100644 --- a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.svg +++ b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph.svg @@ -115,7 +115,7 @@ var sectionId = 'dynsection-8'; Node4 - + wmtk::get_primitive _type_id diff --git a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph_org.svg b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph_org.svg index f969e49221..5b39ac25dc 100644 --- a/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph_org.svg +++ b/classwmtk_1_1_edge_mesh_1_1_edge_mesh_operation_executor_acb42aca716850f7017290140eef6d94e_cgraph_org.svg @@ -69,7 +69,7 @@ Node4 - + wmtk::get_primitive _type_id diff --git a/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.map b/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.map index bd3459f777..379c49a874 100644 --- a/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.map +++ b/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.map @@ -3,7 +3,7 @@ - + diff --git a/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.md5 b/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.md5 index 849a4d4552..73859cf41c 100644 --- a/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.md5 +++ b/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.md5 @@ -1 +1 @@ -3ed66d6071515c103261ecb6d6528c1c \ No newline at end of file +8ba3ef215e1ec27dceb9a433e5e7823b \ No newline at end of file diff --git a/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.svg b/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.svg index 2ae4ce81aa..f6f2533ae4 100644 --- a/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.svg +++ b/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph.svg @@ -113,7 +113,7 @@ var sectionId = 'dynsection-17'; Node3 - + wmtk::get_primitive _type_id diff --git a/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph_org.svg b/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph_org.svg index 03f20169a7..45eac7c793 100644 --- a/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph_org.svg +++ b/classwmtk_1_1_edge_mesh_a3bf6f960d630d1e3a79a09c71a43100f_cgraph_org.svg @@ -67,7 +67,7 @@ Node3 - + wmtk::get_primitive _type_id diff --git a/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.map b/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.map index d123222b04..6327d353e4 100644 --- a/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.map +++ b/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.map @@ -3,7 +3,7 @@ - + diff --git a/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.md5 b/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.md5 index 1885dea048..a9407adbde 100644 --- a/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.md5 +++ b/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.md5 @@ -1 +1 @@ -9a9fc88dfa4c9c3ffa867cd2691e181b \ No newline at end of file +81c8a363030ef4525067800db4f00a4e \ No newline at end of file diff --git a/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.svg b/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.svg index c61e78839e..b8af065138 100644 --- a/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.svg +++ b/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph.svg @@ -112,7 +112,7 @@ var sectionId = 'dynsection-11'; Node3 - + wmtk::get_primitive _type_id diff --git a/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph_org.svg b/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph_org.svg index ac9edfa7c9..9779470bdb 100644 --- a/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph_org.svg +++ b/classwmtk_1_1_edge_mesh_abb11a77971448cf4bc93efe610e80bb5_cgraph_org.svg @@ -66,7 +66,7 @@ Node3 - + wmtk::get_primitive _type_id diff --git a/classwmtk_1_1_h_d_f5_reader.html b/classwmtk_1_1_h_d_f5_reader.html index 8eb0267131..3f6f6819cd 100644 --- a/classwmtk_1_1_h_d_f5_reader.html +++ b/classwmtk_1_1_h_d_f5_reader.html @@ -134,7 +134,7 @@ std::shared_ptr< Meshread_mesh (h5pp::File &hdf5_file, const std::string &dataset)   template<typename T > -void set_attribute (const T &default_val, const std::string &name, PrimitiveType pt, int64_t stride, const std::vector< T > &v, Mesh &mesh) +void set_attribute (const T &default_val, const std::string &name, PrimitiveType pt, int64_t stride, const std::vector< T > &v, Mesh &mesh)  

Detailed Description

@@ -225,7 +225,7 @@

Definition at line 110 of file HDF5Reader.cpp.

-

References wmtk::Edge, wmtk::Face, wmtk::HalfEdge, wmtk::logger(), wmtk::Tetrahedron, and wmtk::Vertex.

+

References wmtk::Edge, wmtk::Face, wmtk::HalfEdge, wmtk::logger(), wmtk::Tetrahedron, and wmtk::Vertex.

Here is the call graph for this function:
@@ -261,7 +261,7 @@

- PrimitiveType  + PrimitiveType  pt, @@ -297,7 +297,7 @@

Definition at line 191 of file HDF5Reader.cpp.

-

References wmtk::attribute::MeshAttributeHandle::as(), wmtk::Mesh::get_attribute_dimension(), wmtk::Mesh::get_attribute_handle(), wmtk::Mesh::has_attribute(), wmtk::log_and_throw_error(), and wmtk::Mesh::register_attribute().

+

References wmtk::attribute::MeshAttributeHandle::as(), wmtk::Mesh::get_attribute_dimension(), wmtk::Mesh::get_attribute_handle(), wmtk::Mesh::has_attribute(), wmtk::log_and_throw_error(), and wmtk::Mesh::register_attribute().

Here is the call graph for this function:
diff --git a/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.map b/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.map index d0453bdf87..31ebefda94 100644 --- a/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.map +++ b/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.map @@ -12,5 +12,4 @@ - diff --git a/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.md5 b/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.md5 index c640b65e8f..1cc7a89bb8 100644 --- a/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.md5 +++ b/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.md5 @@ -1 +1 @@ -c92eb18fcd73b4940f0a61130565f6d6 \ No newline at end of file +2fe3cc84ef86d459412c31e7bb39a091 \ No newline at end of file diff --git a/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.svg b/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.svg index 83c611ad95..de1bc0dcdb 100644 --- a/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.svg +++ b/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph.svg @@ -124,8 +124,8 @@ var sectionId = 'dynsection-2'; Node1->Node9 - - + + @@ -260,22 +260,6 @@ var sectionId = 'dynsection-2'; - - -Node14 - - -wmtk::Mesh::reload -_accessors - - - - - -Node13->Node14 - - - diff --git a/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph_org.svg b/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph_org.svg index 6a07e92828..428439ea18 100644 --- a/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph_org.svg +++ b/classwmtk_1_1_h_d_f5_reader_a24253eae6c0cdca26556f7dee93d7a7c_cgraph_org.svg @@ -78,8 +78,8 @@ Node1->Node9 - - + + @@ -214,21 +214,5 @@ - - -Node14 - - -wmtk::Mesh::reload -_accessors - - - - - -Node13->Node14 - - - diff --git a/classwmtk_1_1_h_d_f5_writer.html b/classwmtk_1_1_h_d_f5_writer.html index 93db428f91..c746de5b20 100644 --- a/classwmtk_1_1_h_d_f5_writer.html +++ b/classwmtk_1_1_h_d_f5_writer.html @@ -139,7 +139,7 @@ Public Member Functions

 HDF5Writer (const std::filesystem::path &filename)   -void write_top_simplex_type (const PrimitiveType type) override +void write_top_simplex_type (const PrimitiveType type) override   void write_absolute_id (const std::vector< int64_t > &id) override   @@ -700,7 +700,7 @@

void wmtk::HDF5Writer::write_top_simplex_type ( - const PrimitiveType  + const PrimitiveType  type) diff --git a/classwmtk_1_1_max_edge_length_invariant.html b/classwmtk_1_1_max_edge_length_invariant.html index 22b42022a2..cbd1e9c691 100644 --- a/classwmtk_1_1_max_edge_length_invariant.html +++ b/classwmtk_1_1_max_edge_length_invariant.html @@ -238,7 +238,7 @@

Definition at line 14 of file MaxEdgeLengthInvariant.cpp.

-

References wmtk::Mesh::create_accessor(), m_coordinate_handle, m_threshold_squared, wmtk::invariants::Invariant::mesh(), and wmtk::simplex::Simplex::tuple().

+

References wmtk::Mesh::create_accessor(), m_coordinate_handle, m_threshold_squared, wmtk::invariants::Invariant::mesh(), and wmtk::simplex::Simplex::tuple().

Here is the call graph for this function:
diff --git a/classwmtk_1_1_mesh-members.html b/classwmtk_1_1_mesh-members.html index 9a314ff880..a2268cf8bc 100644 --- a/classwmtk_1_1_mesh-members.html +++ b/classwmtk_1_1_mesh-members.html @@ -235,41 +235,40 @@ register_attribute(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))wmtk::Mesh register_attribute_typed(const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))wmtk::Mesh register_child_mesh(const std::shared_ptr< Mesh > &child_mesh, const std::vector< std::array< Tuple, 2 >> &map_tuples)wmtk::Mesh - reload_accessors() constwmtk::Meshinlinevirtual - request_simplex_indices(PrimitiveType type, int64_t count)wmtk::Meshprotected - reserve_attributes(PrimitiveType type, int64_t size)wmtk::Meshprotected - reserve_attributes(int64_t dimension, int64_t size)wmtk::Meshprotected - reserve_attributes_to_fit()wmtk::Meshprotected - reserve_more_attributes(PrimitiveType type, int64_t size)wmtk::Meshprotected - reserve_more_attributes(const std::vector< int64_t > &sizes)wmtk::Meshprotected - resurrect_tuple(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) constwmtk::Meshprotected - resurrect_tuple_slow(const Tuple &tuple)wmtk::Meshprotected - serialize(MeshWriter &writer) constwmtk::Mesh - set_capacities(std::vector< int64_t > capacities)wmtk::Meshprotected - set_capacities_from_flags()wmtk::Mesh - simplex::RawSimplex classwmtk::Meshfriend - simplex::utils::SimplexComparisons classwmtk::Meshfriend - simplices_to_gids(const std::vector< std::vector< simplex::Simplex >> &simplices) constwmtk::Meshprotected - switch_edge(const Tuple &tuple) constwmtk::Meshinline - switch_face(const Tuple &tuple) constwmtk::Meshinline - switch_tetrahedron(const Tuple &tuple) constwmtk::Meshinline - switch_tuple(const Tuple &tuple, PrimitiveType type) const =0wmtk::Meshpure virtual - switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) constwmtk::Mesh - switch_tuples(const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) constwmtk::Mesh - switch_tuples_unsafe(const Tuple &tuple, const ContainerType &op_sequence) constwmtk::Mesh - switch_tuples_unsafe(const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) constwmtk::Mesh - switch_vertex(const Tuple &tuple) constwmtk::Meshinline - top_cell_dimension() const =0wmtk::Meshpure virtual - top_simplex_type() constwmtk::Mesh - tuple_from_id(const PrimitiveType type, const int64_t gid) const =0wmtk::Meshprotectedpure virtual - update_cell_hash(const Tuple &cell, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected - update_cell_hash(const int64_t cell_index, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected - update_cell_hashes(const std::vector< Tuple > &cells, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected - update_cell_hashes(const std::vector< int64_t > &cell_indices, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected - update_cell_hashes_slow(const std::vector< Tuple > &cells)wmtk::Meshprotected - update_vertex_operation_hashes(const Tuple &vertex, Accessor< int64_t > &hash_accessor)wmtk::Mesh - ~Hashable()wmtk::utils::Hashablevirtual - ~Mesh()wmtk::Meshvirtual + request_simplex_indices(PrimitiveType type, int64_t count)wmtk::Meshprotected + reserve_attributes(PrimitiveType type, int64_t size)wmtk::Meshprotected + reserve_attributes(int64_t dimension, int64_t size)wmtk::Meshprotected + reserve_attributes_to_fit()wmtk::Meshprotected + reserve_more_attributes(PrimitiveType type, int64_t size)wmtk::Meshprotected + reserve_more_attributes(const std::vector< int64_t > &sizes)wmtk::Meshprotected + resurrect_tuple(const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) constwmtk::Meshprotected + resurrect_tuple_slow(const Tuple &tuple)wmtk::Meshprotected + serialize(MeshWriter &writer) constwmtk::Mesh + set_capacities(std::vector< int64_t > capacities)wmtk::Meshprotected + set_capacities_from_flags()wmtk::Mesh + simplex::RawSimplex classwmtk::Meshfriend + simplex::utils::SimplexComparisons classwmtk::Meshfriend + simplices_to_gids(const std::vector< std::vector< simplex::Simplex >> &simplices) constwmtk::Meshprotected + switch_edge(const Tuple &tuple) constwmtk::Meshinline + switch_face(const Tuple &tuple) constwmtk::Meshinline + switch_tetrahedron(const Tuple &tuple) constwmtk::Meshinline + switch_tuple(const Tuple &tuple, PrimitiveType type) const =0wmtk::Meshpure virtual + switch_tuples(const Tuple &tuple, const ContainerType &op_sequence) constwmtk::Mesh + switch_tuples(const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) constwmtk::Mesh + switch_tuples_unsafe(const Tuple &tuple, const ContainerType &op_sequence) constwmtk::Mesh + switch_tuples_unsafe(const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) constwmtk::Mesh + switch_vertex(const Tuple &tuple) constwmtk::Meshinline + top_cell_dimension() const =0wmtk::Meshpure virtual + top_simplex_type() constwmtk::Mesh + tuple_from_id(const PrimitiveType type, const int64_t gid) const =0wmtk::Meshprotectedpure virtual + update_cell_hash(const Tuple &cell, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected + update_cell_hash(const int64_t cell_index, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected + update_cell_hashes(const std::vector< Tuple > &cells, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected + update_cell_hashes(const std::vector< int64_t > &cell_indices, Accessor< int64_t > &hash_accessor)wmtk::Meshprotected + update_cell_hashes_slow(const std::vector< Tuple > &cells)wmtk::Meshprotected + update_vertex_operation_hashes(const Tuple &vertex, Accessor< int64_t > &hash_accessor)wmtk::Mesh + ~Hashable()wmtk::utils::Hashablevirtual + ~Mesh()wmtk::Meshvirtual

diff --git a/classwmtk_1_1_mesh.html b/classwmtk_1_1_mesh.html index 54681b1fb8..fd30289654 100644 --- a/classwmtk_1_1_mesh.html +++ b/classwmtk_1_1_mesh.html @@ -141,11 +141,9 @@ - - - + @@ -153,7 +151,7 @@ - + @@ -167,7 +165,7 @@ - + @@ -181,19 +179,19 @@ - + - + - + - + - + @@ -231,11 +229,11 @@ - + - + @@ -249,7 +247,7 @@ - + @@ -263,16 +261,16 @@ - + - + - + @@ -281,7 +279,7 @@ - + @@ -342,12 +340,12 @@ - + - + @@ -366,7 +364,7 @@ - + @@ -401,7 +399,7 @@

Public Member Functions

virtual void reload_accessors () const
 
virtual int64_t top_cell_dimension () const =0
 
PrimitiveType top_simplex_type () const
PrimitiveType top_simplex_type () const
 
std::map< std::string, const wmtk::utils::Hashable * > child_hashables () const override
 
 
 Mesh (const int64_t &dimension)
 
 Mesh (const int64_t &dimension, const int64_t &max_primitive_type_id, PrimitiveType hash_type)
 Mesh (const int64_t &dimension, const int64_t &max_primitive_type_id, PrimitiveType hash_type)
 
 Mesh (Mesh &&other)
 
 
void serialize (MeshWriter &writer) const
 
std::vector< Tupleget_all (PrimitiveType type) const
std::vector< Tupleget_all (PrimitiveType type) const
 Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index. More...
 
virtual std::tuple< std::vector< std::vector< int64_t > >, std::vector< std::vector< int64_t > > > consolidate ()
std::vector< attribute::TypedAttributeHandleVariantcustom_attributes () const
 
template<typename T >
attribute::MeshAttributeHandle register_attribute (const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
attribute::MeshAttributeHandle register_attribute (const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
 
template<typename T >
attribute::TypedAttributeHandle< T > register_attribute_typed (const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
attribute::TypedAttributeHandle< T > register_attribute_typed (const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
 
template<typename T >
bool has_attribute (const std::string &name, const PrimitiveType ptype) const
bool has_attribute (const std::string &name, const PrimitiveType ptype) const
 
template<typename T >
attribute::MeshAttributeHandle get_attribute_handle (const std::string &name, const PrimitiveType ptype) const
attribute::MeshAttributeHandle get_attribute_handle (const std::string &name, const PrimitiveType ptype) const
 
template<typename T >
attribute::TypedAttributeHandle< T > get_attribute_handle_typed (const std::string &name, const PrimitiveType ptype) const
attribute::TypedAttributeHandle< T > get_attribute_handle_typed (const std::string &name, const PrimitiveType ptype) const
 
template<typename T >
Accessor< T > create_accessor (const attribute::MeshAttributeHandle &handle)
decltype(auto) parent_scope (Functor &&f, Args &&... args) const
 Evaluate the passed in function inside the parent scope. More...
 
ConstAccessor< char > get_flag_accessor (PrimitiveType type) const
ConstAccessor< char > get_flag_accessor (PrimitiveType type) const
 
ConstAccessor< int64_t > get_cell_hash_accessor () const
 
ConstAccessor< char > get_const_flag_accessor (PrimitiveType type) const
ConstAccessor< char > get_const_flag_accessor (PrimitiveType type) const
 
ConstAccessor< int64_t > get_const_cell_hash_accessor () const
 
 
virtual bool is_connectivity_valid () const =0
 
virtual Tuple switch_tuple (const Tuple &tuple, PrimitiveType type) const =0
virtual Tuple switch_tuple (const Tuple &tuple, PrimitiveType type) const =0
 switch the orientation of the Tuple of the given dimension More...
 
Tuple switch_vertex (const Tuple &tuple) const
template<typename ContainerType >
Tuple switch_tuples (const Tuple &tuple, const ContainerType &op_sequence) const
 
Tuple switch_tuples (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const
Tuple switch_tuples (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const
 
template<typename ContainerType >
Tuple switch_tuples_unsafe (const Tuple &tuple, const ContainerType &op_sequence) const
 
Tuple switch_tuples_unsafe (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const
Tuple switch_tuples_unsafe (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const
 
void set_capacities_from_flags ()
 
int64_t capacity (PrimitiveType type) const
int64_t capacity (PrimitiveType type) const
 read in the m_capacities return the upper bound for the number of entities of the given dimension More...
 
virtual bool is_ccw (const Tuple &tuple) const =0
bool is_boundary (const simplex::Simplex &tuple) const
 check if a simplex lies on a boundary or not More...
 
virtual bool is_boundary (PrimitiveType, const Tuple &tuple) const =0
virtual bool is_boundary (PrimitiveType, const Tuple &tuple) const =0
 check if a simplex (encoded as a tuple/primitive pair) lies on a boundary or not More...
 
bool is_hash_valid (const Tuple &tuple, const ConstAccessor< int64_t > &hash_accessor) const
std::vector< Tuplemap_tuples (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
 maps a simplex from this mesh to any other mesh More...
 
std::vector< Tuplemap_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const
std::vector< Tuplemap_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const
 
std::vector< Tuplelub_map_tuples (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
 maps a simplex from this mesh to any other mesh using LUB mesh as root More...
 
std::vector< Tuplelub_map_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const
std::vector< Tuplelub_map_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const
 
Tuple map_to_parent_tuple (const simplex::Simplex &my_simplex) const
 optimized map from a simplex from this mesh to its direct parent More...
bool has_child_mesh_in_dimension (int64_t dimension) const
 returns if the mesh has a child mesh in the given dimension More...
 
virtual int64_t id (const Tuple &tuple, PrimitiveType type) const =0
virtual int64_t id (const Tuple &tuple, PrimitiveType type) const =0
 return the global id of the Tuple of the given dimension More...
 
int64_t id (const simplex::Simplex &s) const
- + @@ -425,7 +423,7 @@ - + @@ -433,25 +431,25 @@ - + - + - + - + - + @@ -467,7 +465,7 @@ Private Member Functions - +

Protected Member Functions

Accessor< char > get_flag_accessor (PrimitiveType type)
Accessor< char > get_flag_accessor (PrimitiveType type)
 
Accessor< int64_t > get_cell_hash_accessor ()
 
Tuple resurrect_tuple_slow (const Tuple &tuple)
 same as resurrect_tuple but slow because it creates a new accessor More...
 
virtual Tuple tuple_from_id (const PrimitiveType type, const int64_t gid) const =0
virtual Tuple tuple_from_id (const PrimitiveType type, const int64_t gid) const =0
 internal function that returns the tuple of requested type, and has the global index cid More...
 
std::vector< std::vector< int64_t > > simplices_to_gids (const std::vector< std::vector< simplex::Simplex >> &simplices) const
void reserve_attributes_to_fit ()
 reserve space for all attributes data types for all dimensional simplices More...
 
void reserve_attributes (PrimitiveType type, int64_t size)
void reserve_attributes (PrimitiveType type, int64_t size)
 
void reserve_attributes (int64_t dimension, int64_t size)
 
void set_capacities (std::vector< int64_t > capacities)
 
void reserve_more_attributes (PrimitiveType type, int64_t size)
void reserve_more_attributes (PrimitiveType type, int64_t size)
 
void reserve_more_attributes (const std::vector< int64_t > &sizes)
 
void guarantee_more_attributes (PrimitiveType type, int64_t size)
void guarantee_more_attributes (PrimitiveType type, int64_t size)
 
void guarantee_more_attributes (const std::vector< int64_t > &sizes)
 
void guarantee_at_least_attributes (PrimitiveType type, int64_t size)
void guarantee_at_least_attributes (PrimitiveType type, int64_t size)
 
void guarantee_at_least_attributes (const std::vector< int64_t > &sizes)
 
std::vector< int64_t > request_simplex_indices (PrimitiveType type, int64_t count)
std::vector< int64_t > request_simplex_indices (PrimitiveType type, int64_t count)
 
attribute::AttributeScopeHandle create_single_mesh_scope ()
 
bool is_from_same_multi_mesh_structure (const Mesh &other) const
 
std::vector< Tupleget_all (PrimitiveType type, const bool include_deleted) const
std::vector< Tupleget_all (PrimitiveType type, const bool include_deleted) const
 Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index. More...
 
@@ -552,7 +550,7 @@

-

Definition at line 32 of file Mesh_construction.cpp.

+

Definition at line 31 of file Mesh_construction.cpp.

@@ -577,7 +575,7 @@

- + @@ -588,9 +586,9 @@

-

Definition at line 36 of file Mesh_construction.cpp.

+

Definition at line 35 of file Mesh_construction.cpp.

-

References wmtk::get_primitive_type_from_id(), and m_flag_handles.

+

References wmtk::get_primitive_type_from_id(), and m_flag_handles.

Here is the call graph for this function:
@@ -618,7 +616,7 @@

Definition at line 12 of file Mesh_construction.cpp.

-

References m_cell_hash_handle, and m_flag_handles.

+

References m_cell_hash_handle, and m_flag_handles.

@@ -694,7 +692,7 @@

Definition at line 11 of file Mesh_multimesh.cpp.

-

References wmtk::MultiMeshManager::absolute_id(), and m_multi_mesh_manager.

+

References wmtk::MultiMeshManager::absolute_id(), and m_multi_mesh_manager.

Referenced by wmtk::MultiMeshManager::can_map_child(), wmtk::MultiMeshManager::check_child_map_valid(), wmtk::MultiMeshManager::child_hashes(), wmtk::MultiMeshManager::lub_map_tuples(), wmtk::MultiMeshManager::map_tuples(), and wmtk::operations::utils::MultiMeshEdgeSplitFunctor::operator()().

- + @@ -845,11 +843,11 @@

Returns
int
-

Definition at line 77 of file Mesh_attributes.cpp.

+

Definition at line 76 of file Mesh_attributes.cpp.

-

References wmtk::get_primitive_type_id(), m_attribute_manager, and wmtk::attribute::AttributeManager::m_capacities.

+

References wmtk::get_primitive_type_id(), m_attribute_manager, and wmtk::attribute::AttributeManager::m_capacities.

-

Referenced by consolidate(), get_all(), wmtk::EdgeMesh::initialize(), wmtk::TriMesh::initialize(), wmtk::TetMesh::initialize(), wmtk::PointMesh::initialize(), wmtk::EdgeMesh::is_connectivity_valid(), wmtk::TetMesh::is_connectivity_valid(), wmtk::TriMesh::is_connectivity_valid(), request_simplex_indices(), wmtk::multimesh::utils::internal::TupleTag::run(), wmtk::multimesh::same_simplex_dimension_bijection(), wmtk::MultiMeshManager::same_simplex_dimension_surjection(), and wmtk::MultiMeshManager::update_map_tuple_hashes().

+

Referenced by consolidate(), get_all(), wmtk::EdgeMesh::initialize(), wmtk::TriMesh::initialize(), wmtk::TetMesh::initialize(), wmtk::PointMesh::initialize(), wmtk::EdgeMesh::is_connectivity_valid(), wmtk::TetMesh::is_connectivity_valid(), wmtk::TriMesh::is_connectivity_valid(), request_simplex_indices(), wmtk::multimesh::utils::internal::TupleTag::run(), wmtk::multimesh::same_simplex_dimension_bijection(), wmtk::MultiMeshManager::same_simplex_dimension_surjection(), and wmtk::MultiMeshManager::update_map_tuple_hashes().

Here is the call graph for this function:
@@ -923,7 +921,7 @@

Definition at line 12 of file Mesh_hash.cpp.

-

References wmtk::utils::MerkleTreeInteriorNode::child_hashes(), m_cell_hash_handle, and m_flag_handles.

+

References wmtk::utils::MerkleTreeInteriorNode::child_hashes(), m_cell_hash_handle, and m_flag_handles.

Here is the call graph for this function:
@@ -948,9 +946,9 @@

-

Definition at line 157 of file Mesh_attributes.cpp.

+

Definition at line 156 of file Mesh_attributes.cpp.

-

References wmtk::attribute::AttributeManager::clear_attributes(), custom_attributes(), and m_attribute_manager.

+

References wmtk::attribute::AttributeManager::clear_attributes(), custom_attributes(), and m_attribute_manager.

Here is the call graph for this function:
@@ -976,7 +974,7 @@

-

Definition at line 169 of file Mesh_attributes.cpp.

+

Definition at line 168 of file Mesh_attributes.cpp.

@@ -1004,9 +1002,9 @@

Definition at line 162 of file Mesh_attributes.cpp.

+

Definition at line 161 of file Mesh_attributes.cpp.

-

References wmtk::attribute::AttributeManager::clear_attributes(), custom_attributes(), and m_attribute_manager.

+

References wmtk::attribute::AttributeManager::clear_attributes(), custom_attributes(), and m_attribute_manager.

Referenced by wmtk::components::marching(), wmtk::components::regular_space(), and wmtk::components::tag_intersection().

@@ -1052,7 +1050,7 @@

wmtk::TriMesh, wmtk::TetMesh, wmtk::PointMesh, and wmtk::EdgeMesh.

-

Referenced by builtin_attributes(), and consolidate().

+

Referenced by builtin_attributes(), and consolidate().

Here is the caller graph for this function:
@@ -1201,9 +1199,9 @@

-

Definition at line 873 of file Mesh.hpp.

+

Definition at line 872 of file Mesh.hpp.

-

References create_const_accessor().

+

References create_const_accessor().

Here is the call graph for this function:
@@ -1239,11 +1237,11 @@

-

Definition at line 887 of file Mesh.hpp.

+

Definition at line 886 of file Mesh.hpp.

References wmtk::attribute::MeshAttributeHandle::as(), wmtk::attribute::MeshAttributeHandle::holds(), and wmtk::attribute::MeshAttributeHandle::mesh().

-

Referenced by wmtk::invariants::TetMeshSubstructureTopologyPreservingInvariant::before(), wmtk::invariants::TriMeshSubstructureTopologyPreservingInvariant::before(), wmtk::MultiMeshManager::check_child_map_valid(), create_accessor(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), get_const_cell_hash_accessor(), get_const_flag_accessor(), wmtk::function::PerSimplexAutodiffFunction::get_coordinates(), wmtk::MultiMeshManager::get_map_const_accessors(), wmtk::function::AMIPS::get_raw_coordinates(), wmtk::multimesh::utils::read_tuple_map_attribute_slow(), and wmtk::components::relative_to_absolute_length().

+

Referenced by wmtk::invariants::TetMeshSubstructureTopologyPreservingInvariant::before(), wmtk::invariants::TriMeshSubstructureTopologyPreservingInvariant::before(), wmtk::MultiMeshManager::check_child_map_valid(), create_accessor(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), get_const_cell_hash_accessor(), get_const_flag_accessor(), wmtk::function::PerSimplexAutodiffFunction::get_coordinates(), wmtk::MultiMeshManager::get_map_const_accessors(), wmtk::function::AMIPS::get_raw_coordinates(), wmtk::multimesh::utils::read_tuple_map_attribute_slow(), and wmtk::components::relative_to_absolute_length().

Here is the call graph for this function:
@@ -1285,7 +1283,7 @@

-

Definition at line 868 of file Mesh.hpp.

+

Definition at line 867 of file Mesh.hpp.

@@ -1304,7 +1302,7 @@

-

Definition at line 180 of file Mesh_attributes.cpp.

+

Definition at line 179 of file Mesh_attributes.cpp.

Referenced by wmtk::operations::Operation::operator()().

- + @@ -1435,7 +1433,7 @@

std::vector< Tuple > wmtk::Mesh::get_all

- + @@ -1469,7 +1467,7 @@

Definition at line 28 of file Mesh.cpp.

-

References capacity(), wmtk::attribute::CachingAccessor< T >::const_scalar_attribute(), get_flag_accessor(), and tuple_from_id().

+

References capacity(), wmtk::attribute::CachingAccessor< T >::const_scalar_attribute(), get_flag_accessor(), and tuple_from_id().

Here is the call graph for this function:

- + @@ -1582,7 +1580,7 @@

-

Definition at line 896 of file Mesh.hpp.

+

Definition at line 895 of file Mesh.hpp.

Referenced by wmtk::MultiMeshManager::check_child_map_valid(), wmtk::components::delaunay_exec(), wmtk::multimesh::utils::extract_and_register_child_mesh_from_tag(), wmtk::components::gather_attributes(), wmtk::components::isotropic_remeshing(), wmtk::components::points_to_rowvectors(), wmtk::HDF5Reader::set_attribute(), and TEST_CASE().

@@ -1611,7 +1609,7 @@

- + @@ -1622,9 +1620,9 @@

-

Definition at line 906 of file Mesh.hpp.

+

Definition at line 905 of file Mesh.hpp.

-

References wmtk::attribute::AttributeManager::get(), m_attribute_manager, wmtk::attribute::TypedAttributeHandle< T >::m_base_handle, and wmtk::attribute::TypedAttributeHandle< T >::m_primitive_type.

+

References wmtk::attribute::AttributeManager::get(), m_attribute_manager, wmtk::attribute::TypedAttributeHandle< T >::m_base_handle, and wmtk::attribute::TypedAttributeHandle< T >::m_primitive_type.

Here is the call graph for this function:
@@ -1650,9 +1648,9 @@

-

Definition at line 153 of file Mesh_attributes.cpp.

+

Definition at line 152 of file Mesh_attributes.cpp.

-

References wmtk::attribute::AttributeManager::get_name(), and m_attribute_manager.

+

References wmtk::attribute::AttributeManager::get_name(), and m_attribute_manager.

Here is the call graph for this function:
@@ -1680,9 +1678,9 @@

-

Definition at line 928 of file Mesh.hpp.

+

Definition at line 927 of file Mesh.hpp.

-

References wmtk::attribute::AttributeManager::get_name(), and m_attribute_manager.

+

References wmtk::attribute::AttributeManager::get_name(), and m_attribute_manager.

Here is the call graph for this function:
@@ -1720,7 +1718,7 @@

Definition at line 149 of file Mesh.cpp.

-

Referenced by wmtk::TetMesh::edge_tuple_from_id(), wmtk::TriMesh::edge_tuple_from_id(), wmtk::TetMesh::face_tuple_from_id(), get_cell_hash_slow(), is_hash_valid(), resurrect_tuple(), wmtk::EdgeMesh::switch_tuple(), wmtk::TriMesh::switch_tuple(), wmtk::TetMesh::tet_tuple_from_id(), and wmtk::TetMesh::vertex_tuple_from_id().

+

Referenced by wmtk::TetMesh::edge_tuple_from_id(), wmtk::TriMesh::edge_tuple_from_id(), wmtk::TetMesh::face_tuple_from_id(), get_cell_hash_slow(), is_hash_valid(), resurrect_tuple(), wmtk::EdgeMesh::switch_tuple(), wmtk::TriMesh::switch_tuple(), wmtk::TetMesh::tet_tuple_from_id(), and wmtk::TetMesh::vertex_tuple_from_id().

Here is the caller graph for this function:
@@ -1755,7 +1753,7 @@

Definition at line 101 of file Mesh.cpp.

-

References create_accessor(), and m_cell_hash_handle.

+

References create_accessor(), and m_cell_hash_handle.

Here is the call graph for this function:
@@ -1820,7 +1818,7 @@

References get_cell_hash(), and get_cell_hash_accessor().

-

Referenced by wmtk::EdgeMesh::edge_tuple_from_id(), wmtk::TriMesh::face_tuple_from_id(), wmtk::MultiMeshManager::find_valid_tuple_from_split(), wmtk::TetMesh::switch_tuple(), wmtk::EdgeMesh::tuple_from_global_ids(), wmtk::TriMesh::tuple_from_global_ids(), wmtk::TetMesh::tuple_from_global_ids(), wmtk::EdgeMesh::vertex_tuple_from_id(), wmtk::PointMesh::vertex_tuple_from_id(), and wmtk::TriMesh::vertex_tuple_from_id().

+

Referenced by wmtk::EdgeMesh::edge_tuple_from_id(), wmtk::TriMesh::face_tuple_from_id(), wmtk::MultiMeshManager::find_valid_tuple_from_split(), wmtk::TetMesh::switch_tuple(), wmtk::EdgeMesh::tuple_from_global_ids(), wmtk::TriMesh::tuple_from_global_ids(), wmtk::TetMesh::tuple_from_global_ids(), wmtk::EdgeMesh::vertex_tuple_from_id(), wmtk::PointMesh::vertex_tuple_from_id(), and wmtk::TriMesh::vertex_tuple_from_id().

Here is the call graph for this function:
@@ -1855,7 +1853,7 @@

Definition at line 211 of file Mesh_multimesh.cpp.

-

References wmtk::MultiMeshManager::get_child_meshes(), and m_multi_mesh_manager.

+

References wmtk::MultiMeshManager::get_child_meshes(), and m_multi_mesh_manager.

Referenced by get_all_child_meshes(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::operator()(), and wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_ear_replacement().

- + @@ -1926,7 +1924,7 @@

Definition at line 83 of file Mesh.cpp.

-

References create_const_accessor(), wmtk::get_primitive_type_id(), and m_flag_handles.

+

References create_const_accessor(), wmtk::get_primitive_type_id(), and m_flag_handles.

Referenced by wmtk::MultiMeshManager::find_valid_tuple_from_alternatives(), get_flag_accessor(), wmtk::MultiMeshManager::same_simplex_dimension_surjection(), and wmtk::MultiMeshManager::update_map_tuple_hashes().

@@ -1956,7 +1954,7 @@

Accessor< char > wmtk::Mesh::get_flag_accessor

- + @@ -1970,7 +1968,7 @@

Definition at line 87 of file Mesh.cpp.

-

References create_accessor(), wmtk::get_primitive_type_id(), and m_flag_handles.

+

References create_accessor(), wmtk::get_primitive_type_id(), and m_flag_handles.

Here is the call graph for this function:
@@ -1989,7 +1987,7 @@

ConstAccessor< char > wmtk::Mesh::get_flag_accessor

- + @@ -2000,7 +1998,7 @@

References get_const_flag_accessor().

-

Referenced by wmtk::MultiMeshManager::check_child_map_valid(), consolidate(), wmtk::EdgeMesh::EdgeMeshOperationExecutor::EdgeMeshOperationExecutor(), get_all(), wmtk::EdgeMesh::initialize(), wmtk::TriMesh::initialize(), wmtk::TetMesh::initialize(), wmtk::PointMesh::initialize(), wmtk::EdgeMesh::is_connectivity_valid(), wmtk::TetMesh::is_connectivity_valid(), wmtk::TriMesh::is_connectivity_valid(), request_simplex_indices(), wmtk::TetMesh::TetMeshOperationExecutor::TetMeshOperationExecutor(), and wmtk::TriMesh::TriMeshOperationExecutor::TriMeshOperationExecutor().

+

Referenced by wmtk::MultiMeshManager::check_child_map_valid(), consolidate(), wmtk::EdgeMesh::EdgeMeshOperationExecutor::EdgeMeshOperationExecutor(), get_all(), wmtk::EdgeMesh::initialize(), wmtk::TriMesh::initialize(), wmtk::TetMesh::initialize(), wmtk::PointMesh::initialize(), wmtk::EdgeMesh::is_connectivity_valid(), wmtk::TetMesh::is_connectivity_valid(), wmtk::TriMesh::is_connectivity_valid(), request_simplex_indices(), wmtk::TetMesh::TetMeshOperationExecutor::TetMeshOperationExecutor(), and wmtk::TriMesh::TriMeshOperationExecutor::TriMeshOperationExecutor().

Here is the call graph for this function:
@@ -2042,7 +2040,7 @@

-

Definition at line 808 of file Mesh.hpp.

+

Definition at line 807 of file Mesh.hpp.

References wmtk::attribute::MutableAccessor< T >::index_access().

@@ -2088,7 +2086,7 @@

-

Definition at line 813 of file Mesh.hpp.

+

Definition at line 812 of file Mesh.hpp.

References wmtk::attribute::ConstAccessor< T >::index_access().

@@ -2118,7 +2116,7 @@

Definition at line 202 of file Mesh_multimesh.cpp.

-

References wmtk::MultiMeshManager::get_child_mesh(), and m_multi_mesh_manager.

+

References wmtk::MultiMeshManager::get_child_mesh(), and m_multi_mesh_manager.

Here is the call graph for this function:
@@ -2146,7 +2144,7 @@

Definition at line 206 of file Mesh_multimesh.cpp.

-

References wmtk::MultiMeshManager::get_child_mesh(), and m_multi_mesh_manager.

+

References wmtk::MultiMeshManager::get_child_mesh(), and m_multi_mesh_manager.

Here is the call graph for this function:
@@ -2174,7 +2172,7 @@

Definition at line 192 of file Mesh_multimesh.cpp.

-

References wmtk::MultiMeshManager::get_mesh(), and m_multi_mesh_manager.

+

References wmtk::MultiMeshManager::get_mesh(), and m_multi_mesh_manager.

Here is the call graph for this function:
@@ -2202,7 +2200,7 @@

Definition at line 196 of file Mesh_multimesh.cpp.

-

References wmtk::MultiMeshManager::get_mesh(), and m_multi_mesh_manager.

+

References wmtk::MultiMeshManager::get_mesh(), and m_multi_mesh_manager.

Here is the call graph for this function:

- + @@ -2348,9 +2346,9 @@

-

Definition at line 108 of file Mesh_attributes.cpp.

+

Definition at line 107 of file Mesh_attributes.cpp.

-

References wmtk::get_primitive_type_id(), wmtk::attribute::AttributeManager::guarantee_at_least_attributes(), and m_attribute_manager.

+

References wmtk::get_primitive_type_id(), wmtk::attribute::AttributeManager::guarantee_at_least_attributes(), and m_attribute_manager.

Here is the call graph for this function:

- + @@ -2430,9 +2428,9 @@

-

Definition at line 119 of file Mesh_attributes.cpp.

+

Definition at line 118 of file Mesh_attributes.cpp.

-

References wmtk::get_primitive_type_id(), wmtk::attribute::AttributeManager::guarantee_more_attributes(), and m_attribute_manager.

+

References wmtk::get_primitive_type_id(), wmtk::attribute::AttributeManager::guarantee_more_attributes(), and m_attribute_manager.

Here is the call graph for this function:
@@ -2459,7 +2457,7 @@

- + @@ -2470,9 +2468,9 @@

-

Definition at line 916 of file Mesh.hpp.

+

Definition at line 915 of file Mesh.hpp.

-

References wmtk::attribute::AttributeManager::get(), and m_attribute_manager.

+

References wmtk::attribute::AttributeManager::get(), and m_attribute_manager.

Referenced by wmtk::MultiMeshManager::check_child_map_valid(), and wmtk::HDF5Reader::set_attribute().

@@ -2525,9 +2523,9 @@

Definition at line 770 of file Mesh.hpp.

+

Definition at line 769 of file Mesh.hpp.

-

References wmtk::MultiMeshManager::has_child_mesh_in_dimension(), and m_multi_mesh_manager.

+

References wmtk::MultiMeshManager::has_child_mesh_in_dimension(), and m_multi_mesh_manager.

Here is the call graph for this function:
@@ -2561,11 +2559,11 @@

-

Definition at line 804 of file Mesh.hpp.

+

Definition at line 803 of file Mesh.hpp.

-

References id(), wmtk::simplex::Simplex::primitive_type(), and wmtk::simplex::Simplex::tuple().

+

References id(), wmtk::simplex::Simplex::primitive_type(), and wmtk::simplex::Simplex::tuple().

-

Referenced by id().

+

Referenced by id().

Here is the call graph for this function:
@@ -2599,7 +2597,7 @@

- + @@ -2668,7 +2666,7 @@

References wmtk::simplex::Simplex::primitive_type(), and wmtk::simplex::Simplex::tuple().

-

Referenced by wmtk::invariants::InteriorSimplexInvariant::before(), wmtk::invariants::NoBoundaryCollapseToInteriorInvariant::before(), wmtk::MultiMeshManager::check_child_map_valid(), wmtk::multimesh::BoundaryChecker::is_boundary(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::operations::NewAttributeStrategy::set_simplex_predicate(), and switch_tuples().

+

Referenced by wmtk::invariants::InteriorSimplexInvariant::before(), wmtk::invariants::NoBoundaryCollapseToInteriorInvariant::before(), wmtk::MultiMeshManager::check_child_map_valid(), wmtk::multimesh::BoundaryChecker::is_boundary(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::operations::NewAttributeStrategy::set_simplex_predicate(), and switch_tuples().

Here is the call graph for this function:

- + @@ -2881,7 +2879,7 @@

References get_cell_hash(), wmtk::logger(), wmtk::Tuple::m_global_cid, and wmtk::Tuple::m_hash.

-

Referenced by wmtk::EdgeMesh::is_valid(), wmtk::PointMesh::is_valid(), wmtk::TetMesh::is_valid(), and wmtk::TriMesh::is_valid().

+

Referenced by wmtk::EdgeMesh::is_valid(), wmtk::PointMesh::is_valid(), wmtk::TetMesh::is_valid(), and wmtk::TriMesh::is_valid().

Here is the call graph for this function:
@@ -2916,7 +2914,7 @@

Definition at line 179 of file Mesh_multimesh.cpp.

-

References wmtk::MultiMeshManager::is_root(), and m_multi_mesh_manager.

+

References wmtk::MultiMeshManager::is_root(), and m_multi_mesh_manager.

Referenced by map_to_parent(), and map_to_parent_tuple().

@@ -3012,7 +3010,7 @@

References get_const_cell_hash_accessor(), and is_valid().

-

Referenced by wmtk::MultiMeshManager::check_child_map_valid(), wmtk::simplex::closed_star(), wmtk::EdgeMesh::edge_tuple_from_id(), wmtk::multimesh::MultiMeshSimplexVisitor< cell_dimension_, NodeFunctor_ >::execute_from_root(), wmtk::TriMesh::face_tuple_from_id(), wmtk::MultiMeshManager::find_valid_tuple_from_split(), wmtk::TriMesh::is_boundary_edge(), wmtk::EdgeMesh::is_boundary_vertex(), wmtk::EdgeMesh::is_ccw(), wmtk::TetMesh::is_ccw(), wmtk::TriMesh::is_ccw(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::operator()(), wmtk::EdgeMesh::switch_tuple(), wmtk::TetMesh::switch_tuple(), wmtk::TriMesh::switch_tuple(), and wmtk::MultiMeshManager::update_map_tuple_hashes().

+

Referenced by wmtk::MultiMeshManager::check_child_map_valid(), wmtk::simplex::closed_star(), wmtk::EdgeMesh::edge_tuple_from_id(), wmtk::multimesh::MultiMeshSimplexVisitor< cell_dimension_, NodeFunctor_ >::execute_from_root(), wmtk::TriMesh::face_tuple_from_id(), wmtk::MultiMeshManager::find_valid_tuple_from_split(), wmtk::TriMesh::is_boundary_edge(), wmtk::EdgeMesh::is_boundary_vertex(), wmtk::EdgeMesh::is_ccw(), wmtk::TetMesh::is_ccw(), wmtk::TriMesh::is_ccw(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::operator()(), wmtk::EdgeMesh::switch_tuple(), wmtk::TetMesh::switch_tuple(), wmtk::TriMesh::switch_tuple(), and wmtk::MultiMeshManager::update_map_tuple_hashes().

Here is the call graph for this function:

- + @@ -3263,7 +3261,7 @@

Definition at line 37 of file Mesh_multimesh.cpp.

-

References is_from_same_multi_mesh_structure(), m_multi_mesh_manager, and wmtk::MultiMeshManager::map().

+

References is_from_same_multi_mesh_structure(), m_multi_mesh_manager, and wmtk::MultiMeshManager::map().

Referenced by wmtk::operations::Operation::before(), wmtk::invariants::InvariantCollection::directly_modified_after(), and map().

@@ -3358,7 +3356,7 @@

Definition at line 99 of file Mesh_multimesh.cpp.

-

References is_from_same_multi_mesh_structure(), m_multi_mesh_manager, and wmtk::MultiMeshManager::map_to_child().

+

References is_from_same_multi_mesh_structure(), m_multi_mesh_manager, and wmtk::MultiMeshManager::map_to_child().

Here is the call graph for this function:
@@ -3407,7 +3405,7 @@

Definition at line 168 of file Mesh_multimesh.cpp.

-

References is_from_same_multi_mesh_structure(), m_multi_mesh_manager, and wmtk::MultiMeshManager::map_to_child_tuples().

+

References is_from_same_multi_mesh_structure(), m_multi_mesh_manager, and wmtk::MultiMeshManager::map_to_child_tuples().

Here is the call graph for this function:
@@ -3446,7 +3444,7 @@

Definition at line 87 of file Mesh_multimesh.cpp.

-

References is_multi_mesh_root(), m_multi_mesh_manager, and wmtk::MultiMeshManager::map_to_parent().

+

References is_multi_mesh_root(), m_multi_mesh_manager, and wmtk::MultiMeshManager::map_to_parent().

Here is the call graph for this function:

- + @@ -3722,9 +3720,9 @@

-

Definition at line 22 of file Mesh_construction.cpp.

+

Definition at line 21 of file Mesh_construction.cpp.

-

References m_attribute_manager, m_cell_hash_handle, m_flag_handles, and m_multi_mesh_manager.

+

References m_attribute_manager, m_cell_hash_handle, m_flag_handles, and m_multi_mesh_manager.

@@ -3746,7 +3744,7 @@

Definition at line 168 of file Mesh.cpp.

-

References m_attribute_manager.

+

References m_attribute_manager.

@@ -3816,7 +3814,7 @@

- + @@ -3847,16 +3845,8 @@

Definition at line 10 of file Mesh_attributes.cpp.

-

References reload_accessors().

-

Referenced by wmtk::components::gather_attributes(), wmtk::components::internal::RegularSpace::regularize_tags(), and wmtk::HDF5Reader::set_attribute().

-Here is the call graph for this function:
-
-
-
-
-
Here is the caller graph for this function:
@@ -3882,7 +3872,7 @@

- + @@ -3911,15 +3901,15 @@

-

Definition at line 25 of file Mesh_attributes.cpp.

+

Definition at line 24 of file Mesh_attributes.cpp.

-

References m_attribute_manager, wmtk::attribute::AttributeManager::register_attribute(), and reload_accessors().

+

References m_attribute_manager, and wmtk::attribute::AttributeManager::register_attribute().

Referenced by wmtk::components::internal::Marching::process(), and wmtk::MultiMeshManager::register_child_mesh().

Here is the call graph for this function:
-
+

PrimitiveType PrimitiveType  hash_type 
(PrimitiveType PrimitiveType  type) const
(PrimitiveType PrimitiveType  type) const
(PrimitiveType PrimitiveType  type,
const PrimitiveType const PrimitiveType  ptype 
const PrimitiveType const PrimitiveType  ptype 
(PrimitiveType PrimitiveType  type) const
(PrimitiveType PrimitiveType  type)
(PrimitiveType PrimitiveType  type) const
(PrimitiveType PrimitiveType  type,
(PrimitiveType PrimitiveType  type,
const PrimitiveType const PrimitiveType  ptype 
PrimitiveType PrimitiveType  type 
(PrimitiveType PrimitiveType  ,
PrimitiveType PrimitiveType  pt,
PrimitiveType PrimitiveType  pt,
PrimitiveType PrimitiveType  type,
PrimitiveType PrimitiveType  type,
- - - - -
- - - - - - - -
virtual void wmtk::Mesh::reload_accessors () const
-
-inlinevirtual
-

- -

Reimplemented in wmtk::TriMesh.

- -

Definition at line 134 of file Mesh.hpp.

- -

Referenced by register_attribute(), and register_attribute_typed().

-
-Here is the caller graph for this function:
-
-
-
-
-

@@ -4036,7 +3989,7 @@

std::vector< int64_t > wmtk::Mesh::request_simplex_indices ( - PrimitiveType  + PrimitiveType  type, @@ -4058,9 +4011,9 @@

-

Definition at line 37 of file Mesh_attributes.cpp.

+

Definition at line 36 of file Mesh_attributes.cpp.

-

References capacity(), get_flag_accessor(), wmtk::get_primitive_type_id(), wmtk::logger(), m_attribute_manager, wmtk::attribute::AttributeManager::m_capacities, wmtk::primitive_type_name(), and wmtk::attribute::CachingAccessor< T >::scalar_attribute().

+

References capacity(), get_flag_accessor(), wmtk::get_primitive_type_id(), wmtk::logger(), m_attribute_manager, wmtk::attribute::AttributeManager::m_capacities, wmtk::primitive_type_name(), and wmtk::attribute::CachingAccessor< T >::scalar_attribute().

Referenced by wmtk::TriMesh::TriMeshOperationExecutor::replace_incident_face(), wmtk::TetMesh::TetMeshOperationExecutor::split_edge(), wmtk::EdgeMesh::EdgeMeshOperationExecutor::split_edge_single_mesh(), and wmtk::TriMesh::TriMeshOperationExecutor::split_edge_single_mesh().

@@ -4126,7 +4079,7 @@

void wmtk::Mesh::reserve_attributes ( - PrimitiveType  + PrimitiveType  type, @@ -4148,9 +4101,9 @@

-

Definition at line 86 of file Mesh_attributes.cpp.

+

Definition at line 85 of file Mesh_attributes.cpp.

-

References wmtk::get_primitive_type_id(), m_attribute_manager, and wmtk::attribute::AttributeManager::reserve_attributes().

+

References wmtk::get_primitive_type_id(), m_attribute_manager, and wmtk::attribute::AttributeManager::reserve_attributes().

Here is the call graph for this function:
@@ -4191,9 +4144,9 @@

Definition at line 82 of file Mesh_attributes.cpp.

+

Definition at line 81 of file Mesh_attributes.cpp.

-

References m_attribute_manager, and wmtk::attribute::AttributeManager::reserve_to_fit().

+

References m_attribute_manager, and wmtk::attribute::AttributeManager::reserve_to_fit().

Referenced by wmtk::PointMesh::initialize().

@@ -4235,9 +4188,9 @@

-

Definition at line 101 of file Mesh_attributes.cpp.

+

Definition at line 100 of file Mesh_attributes.cpp.

-

References m_attribute_manager, wmtk::attribute::AttributeManager::reserve_more_attributes(), and top_cell_dimension().

+

References m_attribute_manager, wmtk::attribute::AttributeManager::reserve_more_attributes(), and top_cell_dimension().

Here is the call graph for this function:
@@ -4259,7 +4212,7 @@

void wmtk::Mesh::reserve_more_attributes ( - PrimitiveType  + PrimitiveType  type, @@ -4281,9 +4234,9 @@

-

Definition at line 96 of file Mesh_attributes.cpp.

+

Definition at line 95 of file Mesh_attributes.cpp.

-

References wmtk::get_primitive_type_id(), m_attribute_manager, and wmtk::attribute::AttributeManager::reserve_more_attributes().

+

References wmtk::get_primitive_type_id(), m_attribute_manager, and wmtk::attribute::AttributeManager::reserve_more_attributes().

Here is the call graph for this function:
@@ -4414,7 +4367,7 @@

Definition at line 44 of file Mesh.cpp.

-

References wmtk::MultiMeshManager::absolute_id(), m_attribute_manager, m_multi_mesh_manager, wmtk::attribute::AttributeManager::serialize(), wmtk::MultiMeshManager::serialize(), top_simplex_type(), wmtk::MeshWriter::write_absolute_id(), and wmtk::MeshWriter::write_top_simplex_type().

+

References wmtk::MultiMeshManager::absolute_id(), m_attribute_manager, m_multi_mesh_manager, wmtk::attribute::AttributeManager::serialize(), wmtk::MultiMeshManager::serialize(), top_simplex_type(), wmtk::MeshWriter::write_absolute_id(), and wmtk::MeshWriter::write_top_simplex_type().

Referenced by TEST_CASE(), and wmtk::io::Cache::write_mesh().

@@ -4557,9 +4510,9 @@

-

Definition at line 945 of file Mesh.hpp.

+

Definition at line 944 of file Mesh.hpp.

-

References wmtk::Edge, and switch_tuple().

+

References wmtk::Edge, and switch_tuple().

Referenced by wmtk::MultiMeshManager::check_child_map_valid(), wmtk::mesh_utils::compute_face_normal_area_weighted(), wmtk::simplex::edges(), wmtk::invariants::EnvelopeInvariant::EnvelopeInvariant(), wmtk::operations::composite::TetCellSplit::execute(), wmtk::operations::composite::TriFaceSplit::execute(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), wmtk::simplex::faces(), wmtk::TriMesh::is_boundary_vertex(), wmtk::simplex::link_condition(), wmtk::TriMesh::next_edge(), wmtk::simplex::open_star(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::TriMesh::prev_edge(), wmtk::simplex::top_dimension_cofaces_tuples(), and wmtk::simplex::vertices().

@@ -4601,9 +4554,9 @@

-

Definition at line 949 of file Mesh.hpp.

+

Definition at line 948 of file Mesh.hpp.

-

References wmtk::Face, and switch_tuple().

+

References wmtk::Face, and switch_tuple().

Referenced by wmtk::MultiMeshManager::check_child_map_valid(), wmtk::simplex::edges(), wmtk::operations::composite::TetCellSplit::execute(), wmtk::operations::composite::TriEdgeSwap::execute(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), wmtk::simplex::faces(), wmtk::TetMesh::TetMeshOperationExecutor::get_incident_tets_and_faces(), wmtk::TriMesh::is_boundary_vertex(), wmtk::MultiMeshManager::map_tuple_between_meshes(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), and wmtk::simplex::vertices().

@@ -4645,9 +4598,9 @@

-

Definition at line 953 of file Mesh.hpp.

+

Definition at line 952 of file Mesh.hpp.

-

References switch_tuple(), and wmtk::Tetrahedron.

+

References switch_tuple(), and wmtk::Tetrahedron.

Referenced by wmtk::operations::composite::TetEdgeSwap::execute(), and wmtk::TetMesh::TetMeshOperationExecutor::get_incident_tets_and_faces().

@@ -4683,7 +4636,7 @@

- PrimitiveType  + PrimitiveType  type  @@ -4711,7 +4664,7 @@

wmtk::TriMesh, wmtk::TetMesh, wmtk::PointMesh, and wmtk::EdgeMesh.

-

Referenced by wmtk::io::ParaviewWriter::ParaviewWriter(), switch_edge(), switch_face(), switch_tetrahedron(), switch_tuples(), switch_tuples_unsafe(), and switch_vertex().

+

Referenced by wmtk::io::ParaviewWriter::ParaviewWriter(), switch_edge(), switch_face(), switch_tetrahedron(), switch_tuples(), switch_tuples_unsafe(), and switch_vertex().

Here is the caller graph for this function:
@@ -4749,7 +4702,7 @@

-

Definition at line 962 of file Mesh.hpp.

+

Definition at line 961 of file Mesh.hpp.

References is_boundary(), switch_tuple(), top_cell_dimension(), and top_simplex_type().

@@ -4784,7 +4737,7 @@

- const std::initializer_list< PrimitiveType > &  + const std::initializer_list< PrimitiveType > &  op_sequence  @@ -4827,7 +4780,7 @@

-

Definition at line 988 of file Mesh.hpp.

+

Definition at line 987 of file Mesh.hpp.

References switch_tuple().

@@ -4854,7 +4807,7 @@

- const std::initializer_list< PrimitiveType > &  + const std::initializer_list< PrimitiveType > &  op_sequence  @@ -4893,9 +4846,9 @@

-

Definition at line 941 of file Mesh.hpp.

+

Definition at line 940 of file Mesh.hpp.

-

References switch_tuple(), and wmtk::Vertex.

+

References switch_tuple(), and wmtk::Vertex.

Referenced by wmtk::SimplexInversionInvariant::after(), wmtk::MultiMeshEdgeTopologyInvariant::before(), wmtk::simplex::boundary_tuples(), wmtk::MultiMeshManager::check_child_map_valid(), wmtk::mesh_utils::compute_face_normal_area_weighted(), wmtk::mesh_utils::compute_vertex_normal(), wmtk::simplex::edges(), wmtk::invariants::EnvelopeInvariant::EnvelopeInvariant(), wmtk::operations::composite::TriEdgeSwap::execute(), wmtk::operations::composite::TriFaceSplit::execute(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), wmtk::simplex::faces(), wmtk::function::utils::get_simplex_attributes(), wmtk::function::EdgeValenceEnergy::get_value(), wmtk::simplex::link_condition(), wmtk::simplex::link_condition_closed_tetmesh(), wmtk::TriMesh::next_edge(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::TriMesh::prev_edge(), wmtk::components::internal::Marching::process(), wmtk::multimesh::utils::internal::TupleTag::run(), wmtk::operations::EdgeCollapse::unmodified_primitives_aux(), and wmtk::simplex::vertices().

@@ -4938,7 +4891,7 @@

wmtk::TriMesh, wmtk::TetMesh, wmtk::PointMesh, and wmtk::EdgeMesh.

-

Referenced by wmtk::invariants::EnvelopeInvariant::after(), wmtk::components::TagIntersection::compute_intersection(), consolidate(), guarantee_at_least_attributes(), guarantee_more_attributes(), wmtk::multimesh::BoundaryChecker::is_boundary(), wmtk::components::marching(), wmtk::MultiMeshManager::register_child_mesh(), wmtk::components::internal::RegularSpace::regularize_tags(), reserve_more_attributes(), switch_tuples(), top_simplex_type(), and wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_all_hashes().

+

Referenced by wmtk::invariants::EnvelopeInvariant::after(), wmtk::components::TagIntersection::compute_intersection(), consolidate(), guarantee_at_least_attributes(), guarantee_more_attributes(), wmtk::multimesh::BoundaryChecker::is_boundary(), wmtk::components::marching(), wmtk::MultiMeshManager::register_child_mesh(), wmtk::components::internal::RegularSpace::regularize_tags(), reserve_more_attributes(), switch_tuples(), top_simplex_type(), and wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_all_hashes().

Here is the caller graph for this function:
@@ -4955,7 +4908,7 @@

- + @@ -4967,7 +4920,7 @@

References top_cell_dimension().

-

Referenced by wmtk::MultiMeshManager::can_map_child(), wmtk::MultiMeshManager::check_child_map_valid(), wmtk::simplex::cofaces_single_dimension_tuples(), wmtk::operations::CollapseNewAttributeStrategy< T >::CollapseNewAttributeStrategy(), wmtk::invariants::EnvelopeInvariant::EnvelopeInvariant(), wmtk::multimesh::utils::extract_and_register_child_mesh_from_tag(), wmtk::simplex::faces_single_dimension_tuples(), wmtk::MultiMeshManager::find_valid_tuple(), wmtk::MultiMeshManager::find_valid_tuple_from_split(), wmtk::components::gather_attributes(), wmtk::invariants::Invariant::get_top_dimension_cofaces(), wmtk::function::LocalNeighborsSumFunction::LocalNeighborsSumFunction(), wmtk::MultiMeshManager::map_to_child_tuples(), wmtk::MultiMeshManager::map_tuple_between_meshes(), wmtk::simplex::neighbors_single_dimension_tuples(), wmtk::operations::EdgeSplit::new_spine_edges(), wmtk::MultiMeshManager::register_child_mesh(), wmtk::components::internal::RegularSpace::regularize_tags(), wmtk::multimesh::same_simplex_dimension_bijection(), wmtk::MultiMeshManager::same_simplex_dimension_surjection(), serialize(), wmtk::operations::SplitNewAttributeStrategy< T >::SplitNewAttributeStrategy(), switch_tuples(), wmtk::simplex::top_dimension_cofaces(), wmtk::simplex::top_dimension_cofaces_tuples(), wmtk::MultiMeshManager::update_map_tuple_hashes(), wmtk::operations::utils::update_vertex_operation_hashes(), and wmtk::MultiMeshManager::update_vertex_operation_hashes_internal().

+

Referenced by wmtk::MultiMeshManager::can_map_child(), wmtk::MultiMeshManager::check_child_map_valid(), wmtk::simplex::cofaces_single_dimension_tuples(), wmtk::operations::CollapseNewAttributeStrategy< T >::CollapseNewAttributeStrategy(), wmtk::invariants::EnvelopeInvariant::EnvelopeInvariant(), wmtk::multimesh::utils::extract_and_register_child_mesh_from_tag(), wmtk::simplex::faces_single_dimension_tuples(), wmtk::MultiMeshManager::find_valid_tuple(), wmtk::MultiMeshManager::find_valid_tuple_from_split(), wmtk::components::gather_attributes(), wmtk::invariants::Invariant::get_top_dimension_cofaces(), wmtk::function::LocalNeighborsSumFunction::LocalNeighborsSumFunction(), wmtk::MultiMeshManager::map_to_child_tuples(), wmtk::MultiMeshManager::map_tuple_between_meshes(), wmtk::simplex::neighbors_single_dimension_tuples(), wmtk::operations::EdgeSplit::new_spine_edges(), wmtk::MultiMeshManager::register_child_mesh(), wmtk::components::internal::RegularSpace::regularize_tags(), wmtk::multimesh::same_simplex_dimension_bijection(), wmtk::MultiMeshManager::same_simplex_dimension_surjection(), serialize(), wmtk::operations::SplitNewAttributeStrategy< T >::SplitNewAttributeStrategy(), switch_tuples(), wmtk::simplex::top_dimension_cofaces(), wmtk::simplex::top_dimension_cofaces_tuples(), wmtk::MultiMeshManager::update_map_tuple_hashes(), wmtk::operations::utils::update_vertex_operation_hashes(), and wmtk::MultiMeshManager::update_vertex_operation_hashes_internal().

Here is the call graph for this function:
@@ -4995,7 +4948,7 @@

virtual Tuple wmtk::Mesh::tuple_from_id

- + @@ -5942,9 +5895,9 @@

-

Definition at line 824 of file Mesh.hpp.

+

Definition at line 823 of file Mesh.hpp.

-

Referenced by assert_capacity_valid(), capacity(), child_hashables(), clear_attributes(), consolidate(), create_single_mesh_scope(), custom_attributes(), get_attribute_dimension(), get_attribute_handle_typed(), get_attribute_name(), guarantee_at_least_attributes(), guarantee_more_attributes(), has_attribute(), operator=(), operator==(), register_attribute_typed(), request_simplex_indices(), reserve_attributes(), reserve_attributes_to_fit(), reserve_more_attributes(), serialize(), set_capacities(), and set_capacities_from_flags().

+

Referenced by assert_capacity_valid(), capacity(), child_hashables(), clear_attributes(), consolidate(), create_single_mesh_scope(), custom_attributes(), get_attribute_dimension(), get_attribute_handle_typed(), get_attribute_name(), guarantee_at_least_attributes(), guarantee_more_attributes(), has_attribute(), operator=(), operator==(), register_attribute_typed(), request_simplex_indices(), reserve_attributes(), reserve_attributes_to_fit(), reserve_more_attributes(), serialize(), set_capacities(), and set_capacities_from_flags().

@@ -5968,9 +5921,9 @@

-

Definition at line 849 of file Mesh.hpp.

+

Definition at line 848 of file Mesh.hpp.

-

Referenced by builtin_attributes(), child_hashes(), get_cell_hash_accessor(), get_const_cell_hash_accessor(), Mesh(), and operator=().

+

Referenced by builtin_attributes(), child_hashes(), get_cell_hash_accessor(), get_const_cell_hash_accessor(), Mesh(), and operator=().

@@ -5996,9 +5949,9 @@

Definition at line 845 of file Mesh.hpp.

+

Definition at line 844 of file Mesh.hpp.

-

Referenced by builtin_attributes(), child_hashes(), get_const_flag_accessor(), get_flag_accessor(), Mesh(), operator=(), and set_capacities_from_flags().

+

Referenced by builtin_attributes(), child_hashes(), get_const_flag_accessor(), get_flag_accessor(), Mesh(), operator=(), and set_capacities_from_flags().

@@ -6022,9 +5975,9 @@

-

Definition at line 826 of file Mesh.hpp.

+

Definition at line 825 of file Mesh.hpp.

-

Referenced by wmtk::MultiMeshManager::absolute_id(), absolute_multi_mesh_id(), builtin_attributes(), wmtk::MultiMeshManager::can_map(), can_map(), child_hashables(), wmtk::MultiMeshManager::get_child_mesh(), get_child_meshes(), wmtk::MultiMeshManager::get_map_accessors(), wmtk::MultiMeshManager::get_map_const_accessors(), wmtk::MultiMeshManager::get_mesh(), get_multi_mesh_child_mesh(), get_multi_mesh_mesh(), get_multi_mesh_root(), wmtk::MultiMeshManager::get_root_mesh(), has_child_mesh_in_dimension(), wmtk::MultiMeshManager::is_child(), is_multi_mesh_root(), lub_map(), wmtk::MultiMeshManager::lub_map_tuples(), lub_map_tuples(), map(), wmtk::MultiMeshManager::map_down_relative_tuples(), map_to_child(), map_to_child_tuples(), wmtk::MultiMeshManager::map_to_child_tuples(), map_to_parent(), map_to_parent_tuple(), map_to_root(), map_to_root_tuple(), wmtk::MultiMeshManager::map_tuple_to_parent_tuple(), wmtk::MultiMeshManager::map_tuple_to_root_tuple(), map_tuples(), wmtk::MultiMeshManager::map_up_to_tuples(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::operator()(), operator=(), register_child_mesh(), wmtk::MultiMeshManager::register_child_mesh(), wmtk::MultiMeshManager::relative_id(), serialize(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_all_hashes(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_ear_replacement(), wmtk::operations::utils::update_vertex_operation_multimesh_map_hash(), and wmtk::MultiMeshManager::update_vertex_operation_multimesh_map_hash_internal().

+

Referenced by wmtk::MultiMeshManager::absolute_id(), absolute_multi_mesh_id(), builtin_attributes(), wmtk::MultiMeshManager::can_map(), can_map(), child_hashables(), wmtk::MultiMeshManager::get_child_mesh(), get_child_meshes(), wmtk::MultiMeshManager::get_map_accessors(), wmtk::MultiMeshManager::get_map_const_accessors(), wmtk::MultiMeshManager::get_mesh(), get_multi_mesh_child_mesh(), get_multi_mesh_mesh(), get_multi_mesh_root(), wmtk::MultiMeshManager::get_root_mesh(), has_child_mesh_in_dimension(), wmtk::MultiMeshManager::is_child(), is_multi_mesh_root(), lub_map(), wmtk::MultiMeshManager::lub_map_tuples(), lub_map_tuples(), map(), wmtk::MultiMeshManager::map_down_relative_tuples(), map_to_child(), map_to_child_tuples(), wmtk::MultiMeshManager::map_to_child_tuples(), map_to_parent(), map_to_parent_tuple(), map_to_root(), map_to_root_tuple(), wmtk::MultiMeshManager::map_tuple_to_parent_tuple(), wmtk::MultiMeshManager::map_tuple_to_root_tuple(), map_tuples(), wmtk::MultiMeshManager::map_up_to_tuples(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::operator()(), operator=(), register_child_mesh(), wmtk::MultiMeshManager::register_child_mesh(), wmtk::MultiMeshManager::relative_id(), serialize(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_all_hashes(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_ear_replacement(), wmtk::operations::utils::update_vertex_operation_multimesh_map_hash(), and wmtk::MultiMeshManager::update_vertex_operation_multimesh_map_hash_internal().

diff --git a/classwmtk_1_1_mesh.js b/classwmtk_1_1_mesh.js index 487dd19240..246c062b2d 100644 --- a/classwmtk_1_1_mesh.js +++ b/classwmtk_1_1_mesh.js @@ -86,7 +86,6 @@ var classwmtk_1_1_mesh = [ "register_attribute", "classwmtk_1_1_mesh.html#a26b0600a273bc261624633441e1497cb", null ], [ "register_attribute_typed", "classwmtk_1_1_mesh.html#a3faf39088ce02c2a2f208c762d6f2b52", null ], [ "register_child_mesh", "classwmtk_1_1_mesh.html#a333e19ee5ddb037313fa7dbdb0e41771", null ], - [ "reload_accessors", "classwmtk_1_1_mesh.html#abf5c88264301a97108b4c4789944b880", null ], [ "request_simplex_indices", "classwmtk_1_1_mesh.html#ac205d6addf4e76f000c70547253735f0", null ], [ "reserve_attributes", "classwmtk_1_1_mesh.html#affa6b178c3b2c3e7ba4c5807c6f06384", null ], [ "reserve_attributes", "classwmtk_1_1_mesh.html#af61bda1e62667a0892f7f2e2af6f597a", null ], diff --git a/classwmtk_1_1_mesh_a05eaf6f3eeb78949f3b95c359cc6df68_cgraph.svg b/classwmtk_1_1_mesh_a05eaf6f3eeb78949f3b95c359cc6df68_cgraph.svg index 458c404183..d6a40d21fd 100644 --- a/classwmtk_1_1_mesh_a05eaf6f3eeb78949f3b95c359cc6df68_cgraph.svg +++ b/classwmtk_1_1_mesh_a05eaf6f3eeb78949f3b95c359cc6df68_cgraph.svg @@ -48,7 +48,7 @@ if (edges && edges.length) { - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + +

PrimitiveType wmtk::Mesh::top_simplex_type PrimitiveType wmtk::Mesh::top_simplex_type ( ) const(const PrimitiveType const PrimitiveType  type,