Date: Wed, 17 Jan 2024 21:07:58 +0000
Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20wildmesh?=
=?UTF-8?q?ing/wildmeshing-toolkit@7dc0bd3b46ac310d985f15e2332cab00651ea9d?=
=?UTF-8?q?5=20=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_disk_options_8cpp_source.html | 2 +-
_edge_valence_energy_8cpp_source.html | 2 +-
_isotropic_remeshing_8cpp_source.html | 2 +-
_tet_mesh_8cpp_source.html | 1157 +++++++++--------
_tet_mesh_8hpp_source.html | 154 ++-
_tet_mesh_operation_executor_8cpp_source.html | 6 +-
_tri_mesh_8cpp_source.html | 1107 ++++++++--------
_tri_mesh_8hpp_source.html | 151 ++-
_tri_mesh_operation_executor_8cpp_source.html | 2 +-
_triangle_fan_options_8cpp_source.html | 2 +-
...on_multi_mesh_map_functor_8cpp_source.html | 10 +-
classwmtk_1_1_mesh.html | 30 +-
...5eaf6f3eeb78949f3b95c359cc6df68_cgraph.svg | 2 +-
...eaf6f3eeb78949f3b95c359cc6df68_icgraph.svg | 2 +-
...0dc60988327a1f0ace86051df4f3e65_cgraph.svg | 2 +-
...33e19ee5ddb037313fa7dbdb0e41771_cgraph.svg | 2 +-
...3e19ee5ddb037313fa7dbdb0e41771_icgraph.svg | 2 +-
...805489402321155d4a1f7023faaf3a_icgraph.svg | 2 +-
...bb2f7ff22ab4aab437168c5962d6266_cgraph.svg | 2 +-
...af39088ce02c2a2f208c762d6f2b52_icgraph.svg | 2 +-
...58b1910b87752dc0e806742108bec4e_cgraph.svg | 2 +-
...165ceb4c2db2731df90e4ac100637d_icgraph.svg | 2 +-
...a10a23367f4d8804e0ac778475f02f_icgraph.svg | 2 +-
...a480b3f16ac2aadc9887c42748e239_icgraph.svg | 2 +-
...3d77f76d0adb7ae6fafee9db8b701b4_cgraph.svg | 2 +-
...8a7b7d592fdbf672f2c6c9653487ea_icgraph.svg | 2 +-
...023adc2c48442ea624fdc111ba278b_icgraph.map | 5 +
...023adc2c48442ea624fdc111ba278b_icgraph.md5 | 1 +
...023adc2c48442ea624fdc111ba278b_icgraph.svg | 51 +
...5a8a24158c4aa8580c57ba09f885f7_icgraph.svg | 2 +-
...326d46e931aebe5707255618d4a0b0_icgraph.svg | 2 +-
...77d8cd19421d1ce5959c8c0d3cb0b7e_cgraph.svg | 2 +-
...7d8cd19421d1ce5959c8c0d3cb0b7e_icgraph.svg | 2 +-
...f00438d0700358b160e310d69725c9_icgraph.svg | 2 +-
...e12857f52985bd548a968a4c819659_icgraph.svg | 2 +-
...205d6addf4e76f000c70547253735f0_cgraph.svg | 2 +-
...05d6addf4e76f000c70547253735f0_icgraph.svg | 2 +-
...778c1f8afef3a2b1b1c33a140b3166_icgraph.svg | 2 +-
...303dff226282b38e9110fb6d1c4c853_cgraph.svg | 2 +-
...90cad0755b0052b0ca4502e401bcd3_icgraph.svg | 2 +-
...8e5c13a9c5368402ace7c326b4bb58_icgraph.svg | 2 +-
classwmtk_1_1_tet_mesh-members.html | 22 +-
classwmtk_1_1_tet_mesh.html | 437 +++++--
classwmtk_1_1_tet_mesh.js | 12 +-
..._mesh_1_1_tet_mesh_operation_executor.html | 6 +-
...db03200a449485005c9c1c69c80a4fa_cgraph.svg | 2 +-
...5ff78f32516c14f745a2860477f7114_cgraph.svg | 2 +-
...ed8c8bad128a0bbb814197ee24aa036_cgraph.map | 4 +
...ed8c8bad128a0bbb814197ee24aa036_cgraph.md5 | 1 +
...ed8c8bad128a0bbb814197ee24aa036_cgraph.svg | 37 +
...1b2ec618edb4d478e36f0868a85d86e_cgraph.svg | 2 +-
...b2ec618edb4d478e36f0868a85d86e_icgraph.svg | 2 +-
...c8c827ae2a00cea402eb21cc5be56b_icgraph.map | 5 +
...c8c827ae2a00cea402eb21cc5be56b_icgraph.md5 | 1 +
...c8c827ae2a00cea402eb21cc5be56b_icgraph.svg | 52 +
...525e2b5565d11fda49e902958dbf4c4_cgraph.svg | 2 +-
...25e2b5565d11fda49e902958dbf4c4_icgraph.svg | 2 +-
...d9f4016fdd79930e161da787889bdf7_cgraph.svg | 2 +-
...27212d14d3fe4a5afb8dd31b106836_icgraph.svg | 2 +-
...72ea805c8faf84e78915f191a9af9bf_cgraph.svg | 2 +-
...bdbbfa0cd7bd9263241f6501db182a_icgraph.svg | 2 +-
...eb060aa0a69f3ce5108fe199decc578_cgraph.svg | 2 +-
...b060aa0a69f3ce5108fe199decc578_icgraph.svg | 2 +-
...8609916210858129ba39958a273e78e_cgraph.svg | 2 +-
...d216046ac28a11f7d0fd07f9e090ba3_cgraph.svg | 2 +-
...7bee9cf6bbb549d3d1e245816443794_cgraph.map | 5 +
...7bee9cf6bbb549d3d1e245816443794_cgraph.md5 | 1 +
...7bee9cf6bbb549d3d1e245816443794_cgraph.svg | 52 +
...e0e56365f9c2cb86588a9d7b1874203_cgraph.svg | 2 +-
...66e68dbc9ac6c9ecb34a8e023cb1ae2_cgraph.svg | 2 +-
...6e68dbc9ac6c9ecb34a8e023cb1ae2_icgraph.svg | 2 +-
...87b10e7c3a6956e37ebfa95da145d05_cgraph.svg | 2 +-
...247e83a140cafd3d62e06508ba128c7_cgraph.svg | 2 +-
...8b4b3182fb3778fa8da52ea4fa156b6_cgraph.svg | 2 +-
...021ae8290eda4fbad7ab4b742072084_cgraph.svg | 2 +-
...1a969015cd4809934ecfa862dd95a12_cgraph.map | 4 +
...1a969015cd4809934ecfa862dd95a12_cgraph.md5 | 1 +
...1a969015cd4809934ecfa862dd95a12_cgraph.svg | 37 +
...002e7a36e20373deb54576caffa682_icgraph.svg | 2 +-
classwmtk_1_1_tri_mesh-members.html | 137 +-
classwmtk_1_1_tri_mesh.html | 213 +--
classwmtk_1_1_tri_mesh.js | 5 +-
..._mesh_1_1_tri_mesh_operation_executor.html | 4 +-
...6693e4d11c3791da89396b412ae48db_cgraph.svg | 2 +-
...d5d124897281d6a649098213173fdb5_cgraph.svg | 2 +-
...5d124897281d6a649098213173fdb5_icgraph.svg | 2 +-
...3632ff92bbc774addbcfea135399640_cgraph.svg | 2 +-
...ad1e1da89aec444a4c0b7f2f9efdd0c_cgraph.map | 5 +
...ad1e1da89aec444a4c0b7f2f9efdd0c_cgraph.md5 | 1 +
...ad1e1da89aec444a4c0b7f2f9efdd0c_cgraph.svg | 52 +
...b9b18bfd6bd9223a2b39f01773a12c_icgraph.svg | 2 +-
...bbf2bda254d11ad60506d6b486de0b_icgraph.svg | 2 +-
...bdbbfa0cd7bd9263241f6501db182a_icgraph.svg | 2 +-
...165486fcd93cad88ad55456bd7efbba_cgraph.svg | 2 +-
...7a70482852aa4ac6583cf4c36d91767_cgraph.svg | 2 +-
...a70482852aa4ac6583cf4c36d91767_icgraph.svg | 2 +-
...44917af29492582c929e6b53b462f8_icgraph.map | 5 +
...44917af29492582c929e6b53b462f8_icgraph.md5 | 1 +
...44917af29492582c929e6b53b462f8_icgraph.svg | 52 +
...13ae302287fb113bae39b8ec0ee3937_cgraph.svg | 2 +-
...3ae302287fb113bae39b8ec0ee3937_icgraph.svg | 2 +-
...3fe826d80c8be74c3b0589f5818b279_cgraph.svg | 2 +-
...fe826d80c8be74c3b0589f5818b279_icgraph.svg | 2 +-
...80d7bf51ebd7a8c096e904867bd9a41_cgraph.svg | 2 +-
...0d7bf51ebd7a8c096e904867bd9a41_icgraph.svg | 2 +-
...5a7b693c52023d7277e8c00f975911d_cgraph.svg | 2 +-
...a7b693c52023d7277e8c00f975911d_icgraph.svg | 2 +-
...603f7969b10c674eb00e007a507a530_cgraph.svg | 2 +-
...03f7969b10c674eb00e007a507a530_icgraph.svg | 2 +-
...3c7d8fb567608e42391e1e4d59c237d_cgraph.map | 4 +
...3c7d8fb567608e42391e1e4d59c237d_cgraph.md5 | 1 +
...3c7d8fb567608e42391e1e4d59c237d_cgraph.svg | 37 +
...8e216e5a4c5267481b80a63299c1a98_cgraph.map | 4 +
...8e216e5a4c5267481b80a63299c1a98_cgraph.md5 | 1 +
...8e216e5a4c5267481b80a63299c1a98_cgraph.svg | 37 +
...68edb47957a4207ffb2e40f2f3686a8_cgraph.svg | 2 +-
...cb18c9452e58741b01d335ea8339e52_cgraph.svg | 2 +-
...d8cb26ee1436707bf26d811aa5e12c6_cgraph.svg | 2 +-
...8cb26ee1436707bf26d811aa5e12c6_icgraph.svg | 2 +-
...7c6200d5364ccf6a23fc0223dbd6421_cgraph.svg | 2 +-
classwmtk_1_1_tuple.html | 10 +-
...k_1_1function_1_1_edge_valence_energy.html | 2 +-
..._1_1tet__mesh_1_1_edge_operation_data.html | 2 +-
..._1_1tri__mesh_1_1_edge_operation_data.html | 2 +-
...edge_operation_multi_mesh_map_functor.html | 14 +-
classwmtk_1_1simplex_1_1_simplex.html | 8 +-
...mtk_1_1simplex_1_1_simplex_collection.html | 2 +-
functions.html | 4 +-
functions_func_m.html | 20 +-
functions_m.html | 31 +-
functions_t.html | 2 +-
functions_vars_m.html | 21 +
link__condition_8cpp_source.html | 12 +-
mesh__utils_8cpp_source.html | 2 +-
namespacewmtk.html | 6 +-
namespacewmtk_1_1autogen_1_1tet__mesh.html | 12 +-
namespacewmtk_1_1autogen_1_1tri__mesh.html | 10 +-
namespacewmtk_1_1components_1_1internal.html | 2 +-
...1components_1_1internal_1_1procedural.html | 4 +-
namespacewmtk_1_1mesh__utils.html | 2 +-
namespacewmtk_1_1simplex.html | 10 +-
navtreedata.js | 28 +-
navtreeindex10.js | 20 +-
navtreeindex11.js | 20 +-
navtreeindex12.js | 20 +-
navtreeindex13.js | 22 +-
navtreeindex14.js | 22 +-
navtreeindex15.js | 20 +-
navtreeindex16.js | 20 +-
navtreeindex17.js | 20 +-
navtreeindex18.js | 20 +-
navtreeindex19.js | 9 +
navtreeindex5.js | 104 +-
navtreeindex6.js | 20 +-
navtreeindex7.js | 20 +-
navtreeindex8.js | 20 +-
navtreeindex9.js | 20 +-
search/all_0.js | 141 +-
search/all_1.js | 64 +-
search/all_10.js | 4 +-
search/all_11.js | 204 +--
search/all_12.js | 298 ++---
search/all_13.js | 343 +++--
search/all_14.js | 98 +-
search/all_15.js | 117 +-
search/all_16.js | 116 +-
search/all_17.js | 74 +-
search/all_2.js | 284 ++--
search/all_3.js | 116 +-
search/all_4.js | 184 +--
search/all_5.js | 122 +-
search/all_6.js | 221 ++--
search/all_c.js | 644 ++++-----
search/all_d.js | 78 +-
search/all_e.js | 122 +-
search/all_f.js | 140 +-
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 | 97 +-
search/functions_1.js | 22 +-
search/functions_10.js | 76 +-
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 | 117 +-
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 | 391 +++---
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 +-
..._component__isotropic__remeshing_8cpp.html | 4 +-
...ent__isotropic__remeshing_8cpp_source.html | 4 +-
...esh_2_edge_operation_data_8cpp_source.html | 2 +-
...esh_2_edge_operation_data_8cpp_source.html | 2 +-
335 files changed, 6672 insertions(+), 5766 deletions(-)
create mode 100644 classwmtk_1_1_mesh_a95023adc2c48442ea624fdc111ba278b_icgraph.map
create mode 100644 classwmtk_1_1_mesh_a95023adc2c48442ea624fdc111ba278b_icgraph.md5
create mode 100644 classwmtk_1_1_mesh_a95023adc2c48442ea624fdc111ba278b_icgraph.svg
create mode 100644 classwmtk_1_1_tet_mesh_a2ed8c8bad128a0bbb814197ee24aa036_cgraph.map
create mode 100644 classwmtk_1_1_tet_mesh_a2ed8c8bad128a0bbb814197ee24aa036_cgraph.md5
create mode 100644 classwmtk_1_1_tet_mesh_a2ed8c8bad128a0bbb814197ee24aa036_cgraph.svg
create mode 100644 classwmtk_1_1_tet_mesh_a3ec8c827ae2a00cea402eb21cc5be56b_icgraph.map
create mode 100644 classwmtk_1_1_tet_mesh_a3ec8c827ae2a00cea402eb21cc5be56b_icgraph.md5
create mode 100644 classwmtk_1_1_tet_mesh_a3ec8c827ae2a00cea402eb21cc5be56b_icgraph.svg
create mode 100644 classwmtk_1_1_tet_mesh_a77bee9cf6bbb549d3d1e245816443794_cgraph.map
create mode 100644 classwmtk_1_1_tet_mesh_a77bee9cf6bbb549d3d1e245816443794_cgraph.md5
create mode 100644 classwmtk_1_1_tet_mesh_a77bee9cf6bbb549d3d1e245816443794_cgraph.svg
create mode 100644 classwmtk_1_1_tet_mesh_ae1a969015cd4809934ecfa862dd95a12_cgraph.map
create mode 100644 classwmtk_1_1_tet_mesh_ae1a969015cd4809934ecfa862dd95a12_cgraph.md5
create mode 100644 classwmtk_1_1_tet_mesh_ae1a969015cd4809934ecfa862dd95a12_cgraph.svg
create mode 100644 classwmtk_1_1_tri_mesh_a3ad1e1da89aec444a4c0b7f2f9efdd0c_cgraph.map
create mode 100644 classwmtk_1_1_tri_mesh_a3ad1e1da89aec444a4c0b7f2f9efdd0c_cgraph.md5
create mode 100644 classwmtk_1_1_tri_mesh_a3ad1e1da89aec444a4c0b7f2f9efdd0c_cgraph.svg
create mode 100644 classwmtk_1_1_tri_mesh_a6844917af29492582c929e6b53b462f8_icgraph.map
create mode 100644 classwmtk_1_1_tri_mesh_a6844917af29492582c929e6b53b462f8_icgraph.md5
create mode 100644 classwmtk_1_1_tri_mesh_a6844917af29492582c929e6b53b462f8_icgraph.svg
create mode 100644 classwmtk_1_1_tri_mesh_ad3c7d8fb567608e42391e1e4d59c237d_cgraph.map
create mode 100644 classwmtk_1_1_tri_mesh_ad3c7d8fb567608e42391e1e4d59c237d_cgraph.md5
create mode 100644 classwmtk_1_1_tri_mesh_ad3c7d8fb567608e42391e1e4d59c237d_cgraph.svg
create mode 100644 classwmtk_1_1_tri_mesh_ad8e216e5a4c5267481b80a63299c1a98_cgraph.map
create mode 100644 classwmtk_1_1_tri_mesh_ad8e216e5a4c5267481b80a63299c1a98_cgraph.md5
create mode 100644 classwmtk_1_1_tri_mesh_ad8e216e5a4c5267481b80a63299c1a98_cgraph.svg
diff --git a/_disk_options_8cpp_source.html b/_disk_options_8cpp_source.html
index 2d38f35748..8984fade79 100644
--- a/_disk_options_8cpp_source.html
+++ b/_disk_options_8cpp_source.html
@@ -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)
+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)
std::optional< Coordinates > coordinates
diff --git a/_edge_valence_energy_8cpp_source.html b/_edge_valence_energy_8cpp_source.html
index 544b79d646..2a9826d330 100644
--- a/_edge_valence_energy_8cpp_source.html
+++ b/_edge_valence_energy_8cpp_source.html
@@ -197,7 +197,7 @@
Tuple switch_vertex(const Tuple &tuple) const
-bool is_boundary_vertex(const Tuple &tuple) const
+bool is_boundary_vertex(const Tuple &tuple) const
virtual double get_value(const simplex::Simplex &domain_simplex) const=0
This function is defined over a simplex (normally a triangle or tetrahedron).
diff --git a/_isotropic_remeshing_8cpp_source.html b/_isotropic_remeshing_8cpp_source.html
index 442e0746e4..80af491800 100644
--- a/_isotropic_remeshing_8cpp_source.html
+++ b/_isotropic_remeshing_8cpp_source.html
@@ -323,7 +323,7 @@
int64_t number_of_successful_operations() const
Returns the number of successful operations performed by the scheduler.
-bool is_connectivity_valid() const override
+bool is_connectivity_valid() const override
const TypedAttributeHandle< T > & as() const
diff --git a/_tet_mesh_8cpp_source.html b/_tet_mesh_8cpp_source.html
index 555a68fcd6..097b5a5fae 100644
--- a/_tet_mesh_8cpp_source.html
+++ b/_tet_mesh_8cpp_source.html
@@ -144,563 +144,590 @@
-
-
-
+
+
+
-
- 35 Eigen::Ref<const RowVectors4l> TV,
- 36 Eigen::Ref<const RowVectors6l> TE,
- 37 Eigen::Ref<const RowVectors4l> TF,
- 38 Eigen::Ref<const RowVectors4l> TT,
- 39 Eigen::Ref<const VectorXl> VT,
- 40 Eigen::Ref<const VectorXl> ET,
- 41 Eigen::Ref<const VectorXl> FT)
-
-
-
+
+
+
+
+
+
+
+
+
+
+
- 46 std::vector<int64_t> cap{
- 47 static_cast<int64_t
>(VT.rows()),
- 48 static_cast<int64_t
>(ET.rows()),
- 49 static_cast<int64_t
>(FT.rows()),
- 50 static_cast<int64_t
>(TT.rows())};
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
- 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();
- 73 tt_accessor.index_access().vector_attribute(i) = TT.row(i).transpose();
- 74 t_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
-
-
-
- 78 vt_accessor.index_access().scalar_attribute(i) = VT(i);
- 79 v_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
-
-
-
- 83 et_accessor.index_access().scalar_attribute(i) = ET(i);
- 84 e_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
-
-
-
- 88 ft_accessor.index_access().scalar_attribute(i) = FT(i);
- 89 f_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
-
-
-
-
-
-
-
-
-
-
-
-
-
- 103 int64_t t = vt_accessor.index_access().const_scalar_attribute(
id);
-
- 105 auto tv = tv_accessor.index_access().const_vector_attribute(t);
-
-
- 108 for (int64_t i = 0; i < 4; ++i) {
-
-
-
-
-
-
-
- 116 assert(lvid == nlvid);
-
- 118 if (lvid < 0 || leid < 0 || lfid < 0)
throw std::runtime_error(
"vertex_tuple_from_id failed");
-
-
-
-
-
- 124 assert(
is_valid(v_tuple, hash_accessor));
-
-
-
-
-
-
- 131 int64_t t = et_accessor.index_access().const_scalar_attribute(
id);
-
- 133 auto te = te_accessor.index_access().const_vector_attribute(t);
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 78 Eigen::Ref<const RowVectors4l> TV,
+ 79 Eigen::Ref<const RowVectors6l> TE,
+ 80 Eigen::Ref<const RowVectors4l> TF,
+ 81 Eigen::Ref<const RowVectors4l> TT,
+ 82 Eigen::Ref<const VectorXl> VT,
+ 83 Eigen::Ref<const VectorXl> ET,
+ 84 Eigen::Ref<const VectorXl> FT)
+
+
+
+
+ 89 std::vector<int64_t> cap{
+ 90 static_cast<int64_t
>(VT.rows()),
+ 91 static_cast<int64_t
>(ET.rows()),
+ 92 static_cast<int64_t
>(FT.rows()),
+ 93 static_cast<int64_t
>(TT.rows())};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 113 tv_accessor.index_access().vector_attribute(i) = TV.row(i).transpose();
+ 114 te_accessor.index_access().vector_attribute(i) = TE.row(i).transpose();
+ 115 tf_accessor.index_access().vector_attribute(i) = TF.row(i).transpose();
+ 116 tt_accessor.index_access().vector_attribute(i) = TT.row(i).transpose();
+ 117 t_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
+
+
+
+ 121 vt_accessor.index_access().scalar_attribute(i) = VT(i);
+ 122 v_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
+
+
+
+ 126 et_accessor.index_access().scalar_attribute(i) = ET(i);
+ 127 e_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
+
+
+
+ 131 ft_accessor.index_access().scalar_attribute(i) = FT(i);
+ 132 f_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
+
+
+
- 137 for (int64_t i = 0; i < 6; ++i) {
-
-
-
-
-
-
- 144 assert(leid == nleid);
-
-
- 147 if (lvid < 0 || leid < 0 || lfid < 0)
throw std::runtime_error(
"edge_tuple_from_id failed");
+
+
+
+
+
+
+
+
+ 145 int64_t t =
m_vt_accessor->index_access().const_scalar_attribute(
id);
+ 146 auto tv =
m_tv_accessor->index_access().const_vector_attribute(t);
+
-
-
-
-
- 153 assert(
is_valid(e_tuple, hash_accessor));
-
-
-
-
-
-
- 160 int64_t t = ft_accessor.index_access().const_scalar_attribute(
id);
-
- 162 auto tf = tf_accessor.index_access().const_vector_attribute(t);
-
-
-
- 166 for (int64_t i = 0; i < 4; ++i) {
-
-
-
-
-
-
-
- 174 assert(lfid == nlfid);
+ 149 for (int64_t i = 0; i < 4; ++i) {
+
+
+
+
+
+
+
+ 157 assert(lvid == nlvid);
+
+ 159 if (lvid < 0 || leid < 0 || lfid < 0)
throw std::runtime_error(
"vertex_tuple_from_id failed");
+
+
+
+
+
+ 165 assert(
is_valid(v_tuple, hash_accessor));
+
+
+
+
+
+ 171 int64_t t =
m_et_accessor->index_access().const_scalar_attribute(
id);
+ 172 auto te =
m_te_accessor->index_access().const_vector_attribute(t);
+
+
- 176 if (lvid < 0 || leid < 0 || lfid < 0)
throw std::runtime_error(
"face_tuple_from_id failed");
-
-
-
-
-
- 182 assert(
is_valid(f_tuple, hash_accessor));
-
-
+ 176 for (int64_t i = 0; i < 6; ++i) {
+
+
+
+
+
+
+ 183 assert(leid == nleid);
+
-
-
- 188 const int64_t lvid = 0;
-
- 190 assert(lvid == nlvid);
-
-
-
-
-
- 196 assert(
is_valid(t_tuple, hash_accessor));
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 220 default:
throw std::runtime_error(
"Invalid primitive type");
-
-
-
-
-
-
-
-
- 229 auto tv = tv_accessor.const_vector_attribute(tuple);
-
-
-
-
-
- 235 auto te = te_accessor.const_vector_attribute(tuple);
-
-
-
-
-
- 241 auto tf = tf_accessor.const_vector_attribute(tuple);
-
-
-
-
-
-
-
-
- 250 default:
throw std::runtime_error(
"Tuple id: Invalid primitive type");
+ 186 if (lvid < 0 || leid < 0 || lfid < 0)
throw std::runtime_error(
"edge_tuple_from_id failed");
+
+
+
+
+
+ 192 assert(
is_valid(e_tuple, hash_accessor));
+
+
+
+
+
+ 198 int64_t t =
m_ft_accessor->index_access().const_scalar_attribute(
id);
+ 199 auto tf =
m_tf_accessor->index_access().const_vector_attribute(t);
+
+
+
+ 203 for (int64_t i = 0; i < 4; ++i) {
+
+
+
+
+
+
+
+ 211 assert(lfid == nlfid);
+
+ 213 if (lvid < 0 || leid < 0 || lfid < 0)
throw std::runtime_error(
"face_tuple_from_id failed");
+
+
+
+
+
+ 219 assert(
is_valid(f_tuple, hash_accessor));
+
+
+
+
+
+ 225 const int64_t lvid = 0;
+
+ 227 assert(lvid == nlvid);
+
+
+
+
+
+ 233 assert(
is_valid(t_tuple, hash_accessor));
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 267 auto tt = tt_accessor.const_vector_attribute(tuple);
-
-
-
-
- 272 assert(gcid_new != -1);
-
-
-
-
-
-
- 279 int64_t lvid_new = -1, leid_new = -1, lfid_new = -1;
-
-
- 282 auto tv = tv_accessor.index_access().const_vector_attribute(gcid_new);
-
-
- 285 auto te = te_accessor.index_access().const_vector_attribute(gcid_new);
-
-
- 288 auto tf = tf_accessor.index_access().const_vector_attribute(gcid_new);
-
- 290 for (int64_t i = 0; i < 4; ++i) {
-
-
-
-
-
-
-
-
-
- 301 std::vector<int64_t> debug_te;
- 302 std::vector<int64_t> debug_tv;
- 303 std::vector<int64_t> debug_tf;
- 304 std::vector<int64_t> debug_tt;
- 305 std::vector<int64_t> debug_origin_te;
- 306 std::vector<int64_t> debug_origin_tv;
- 307 std::vector<int64_t> debug_origin_tf;
- 308 std::vector<int64_t> debug_origin_tt;
-
- 310 auto te_old = te_accessor.const_vector_attribute(tuple);
- 311 auto tv_old = tv_accessor.const_vector_attribute(tuple);
- 312 auto tf_old = tf_accessor.const_vector_attribute(tuple);
- 313 auto tt_old = tt_accessor.const_vector_attribute(tuple);
-
- 315 for (int64_t i = 0; i < 6; ++i) {
- 316 debug_origin_te.push_back(te_old(i));
- 317 debug_te.push_back(te(i));
-
+
+
+
+
+
+ 257 default:
throw std::runtime_error(
"Invalid primitive type");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 284 default:
throw std::runtime_error(
"Tuple id: Invalid primitive type");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 305 assert(gcid_new != -1);
+
+
+
+
+
+
+ 312 int64_t lvid_new = -1, leid_new = -1, lfid_new = -1;
+
+ 314 auto tv =
m_tv_accessor->index_access().const_vector_attribute(gcid_new);
+
+ 316 auto te =
m_te_accessor->index_access().const_vector_attribute(gcid_new);
+
+ 318 auto tf =
m_tf_accessor->index_access().const_vector_attribute(gcid_new);
320 for (int64_t i = 0; i < 4; ++i) {
- 321 debug_origin_tv.push_back(tv_old(i));
- 322 debug_tv.push_back(tv(i));
- 323 debug_origin_tf.push_back(tf_old(i));
- 324 debug_tf.push_back(tf(i));
- 325 debug_origin_tt.push_back(tt_old(i));
- 326 debug_tt.push_back(tt(i));
+
+
+
+
+
+
-
- 331 for (int64_t i = 0; i < 6; ++i) {
-
-
-
-
-
-
-
- 339 assert(lvid_new != -1);
- 340 assert(leid_new != -1);
- 341 assert(lfid_new != -1);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ 331 std::vector<int64_t> debug_te;
+ 332 std::vector<int64_t> debug_tv;
+ 333 std::vector<int64_t> debug_tf;
+ 334 std::vector<int64_t> debug_tt;
+ 335 std::vector<int64_t> debug_origin_te;
+ 336 std::vector<int64_t> debug_origin_tv;
+ 337 std::vector<int64_t> debug_origin_tf;
+ 338 std::vector<int64_t> debug_origin_tt;
+
+
+
+
+
+
+ 345 for (int64_t i = 0; i < 6; ++i) {
+ 346 debug_origin_te.push_back(te_old(i));
+ 347 debug_te.push_back(te(i));
+
+
+ 350 for (int64_t i = 0; i < 4; ++i) {
+ 351 debug_origin_tv.push_back(tv_old(i));
+ 352 debug_tv.push_back(tv(i));
+ 353 debug_origin_tf.push_back(tf_old(i));
+ 354 debug_tf.push_back(tf(i));
+ 355 debug_origin_tt.push_back(tt_old(i));
+ 356 debug_tt.push_back(tt(i));
+
+
-
-
- 363 if (tuple.
is_null())
return false;
-
-
-
+ 361 for (int64_t i = 0; i < 6; ++i) {
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 385 throw std::runtime_error(
- 386 "tried to compute the boundary of an tet mesh for an invalid simplex dimension");
-
-
-
+
+ 369 assert(lvid_new != -1);
+ 370 assert(leid_new != -1);
+ 371 assert(lfid_new != -1);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
- 394 return tt_accessor.const_vector_attribute(tuple)(tuple.
m_local_fid) < 0;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ 393 if (tuple.
is_null())
return false;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 415 throw std::runtime_error(
+ 416 "tried to compute the boundary of an tet mesh for an invalid simplex dimension");
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 440 if (v_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
-
-
-
-
- 445 for (
int j = 0; j < 4; ++j) {
- 446 if (tv_accessor.index_access().const_vector_attribute(
- 447 vt_accessor.index_access().const_scalar_attribute(i))[j] == i) {
-
-
-
-
-
-
-
-
-
-
-
- 459 if (e_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
-
-
-
-
- 464 for (
int j = 0; j < 6; ++j) {
- 465 if (te_accessor.index_access().const_vector_attribute(
- 466 et_accessor.index_access().const_scalar_attribute(i))[j] == i) {
-
-
-
-
-
-
+
+
+
+
+ 424 return tt_accessor.const_vector_attribute(tuple)(tuple.
m_local_fid) < 0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 470 if (v_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
+
+
-
-
-
-
- 478 if (f_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
-
-
-
-
- 483 for (
int j = 0; j < 4; ++j) {
- 484 if (tf_accessor.index_access().const_vector_attribute(
- 485 ft_accessor.index_access().const_scalar_attribute(i))[j] == i) {
-
-
-
-
-
-
+
+ 475 for (
int j = 0; j < 4; ++j) {
+ 476 if (tv_accessor.index_access().const_vector_attribute(
+ 477 vt_accessor.index_access().const_scalar_attribute(i))[j] == i) {
+
+
+
+
+
+
+
+
+
+
+
+ 489 if (e_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
+
+
-
-
-
-
- 497 if (t_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
-
-
-
-
- 502 for (
int j = 0; j < 4; ++j) {
- 503 int64_t nb = tt_accessor.index_access().const_vector_attribute(i)(j);
-
- 505 if (ft_accessor.index_access().const_scalar_attribute(
- 506 tf_accessor.index_access().const_vector_attribute(i)(j)) != i) {
-
-
-
-
-
-
-
-
- 515 for (
int k = 0; k < 4; ++k) {
- 516 if (tt_accessor.index_access().const_vector_attribute(nb)(k) == i) {
-
-
-
-
-
-
-
-
-
- 526 if (tf_accessor.index_access().const_vector_attribute(i)(j) !=
- 527 tf_accessor.index_access().const_vector_attribute(nb)(id_in_nb)) {
-
-
-
-
-
-
-
-
-
-
-
- 539 std::vector<std::vector<TypedAttributeHandle<int64_t>>> handles(4);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 556 auto tv = tv_accessor.index_access().const_vector_attribute(tid);
-
- 558 auto te = te_accessor.index_access().const_vector_attribute(tid);
-
- 560 auto tf = tf_accessor.index_access().const_vector_attribute(tid);
-
- 562 int64_t lvid = -1, leid = -1, lfid = -1;
+
+ 494 for (
int j = 0; j < 6; ++j) {
+ 495 if (te_accessor.index_access().const_vector_attribute(
+ 496 et_accessor.index_access().const_scalar_attribute(i))[j] == i) {
+
+
+
+
+
+
+
+
+
+
+
+ 508 if (f_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
+
+
+
+
+ 513 for (
int j = 0; j < 4; ++j) {
+ 514 if (tf_accessor.index_access().const_vector_attribute(
+ 515 ft_accessor.index_access().const_scalar_attribute(i))[j] == i) {
+
+
+
+
+
+
+
+
+
+
+
+ 527 if (t_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
+
+
+
+
+ 532 for (
int j = 0; j < 4; ++j) {
+ 533 int64_t nb = tt_accessor.index_access().const_vector_attribute(i)(j);
+
+ 535 if (ft_accessor.index_access().const_scalar_attribute(
+ 536 tf_accessor.index_access().const_vector_attribute(i)(j)) != i) {
+
+
+
+
+
+
+
+
+ 545 for (
int k = 0; k < 4; ++k) {
+ 546 if (tt_accessor.index_access().const_vector_attribute(nb)(k) == i) {
+
+
+
+
+
+
+
+
+
+ 556 if (tf_accessor.index_access().const_vector_attribute(i)(j) !=
+ 557 tf_accessor.index_access().const_vector_attribute(nb)(id_in_nb)) {
+
+
+
+
+
- 564 for (
int j = 0; j < 4; ++j) {
-
-
-
-
-
-
-
-
- 573 for (
int j = 0; j < 6; ++j) {
-
-
-
-
-
+
+
+
+
+
+ 569 std::vector<std::vector<TypedAttributeHandle<int64_t>>> handles(4);
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ 585 auto tv =
m_tv_accessor->index_access().const_vector_attribute(tid);
+ 586 auto te =
m_te_accessor->index_access().const_vector_attribute(tid);
+ 587 auto tf =
m_tf_accessor->index_access().const_vector_attribute(tid);
+
+ 589 int64_t lvid = -1, leid = -1, lfid = -1;
+
+ 591 for (
int j = 0; j < 4; ++j) {
+
+
+
+
+
+
+
+
+ 600 for (
int j = 0; j < 6; ++j) {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -712,33 +739,44 @@
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
ConstAccessor< int64_t > get_const_cell_hash_accessor() const
+Mesh & operator=(const Mesh &other)=delete
bool is_valid_slow(const Tuple &tuple) const
int64_t get_cell_hash(int64_t cell_index, const ConstAccessor< int64_t > &hash_accessor) const
-TypedAttributeHandle< int64_t > m_tt_handle
-bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
-TypedAttributeHandle< int64_t > m_vt_handle
-std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
-bool is_boundary_vertex(const Tuple &tuple) const
-Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
-int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
-Tuple tuple_from_global_ids(int64_t tid, int64_t fid, int64_t eid, int64_t vid) const
+
+TypedAttributeHandle< int64_t > m_tt_handle
+bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
+TetMesh & operator=(const TetMesh &o)=delete
+TypedAttributeHandle< int64_t > m_vt_handle
+std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
+bool is_boundary_vertex(const Tuple &tuple) const
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_et_accessor
+void make_cached_accessors()
+Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
+int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
+Tuple tuple_from_global_ids(int64_t tid, int64_t fid, int64_t eid, int64_t vid) const
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
-TypedAttributeHandle< int64_t > m_tv_handle
-bool is_boundary_edge(const Tuple &tuple) const
-Tuple edge_tuple_from_id(int64_t id) const
-Tuple face_tuple_from_id(int64_t id) const
-Tuple tet_tuple_from_id(int64_t id) const
-bool is_connectivity_valid() const override
-TypedAttributeHandle< int64_t > m_tf_handle
-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
-Tuple vertex_tuple_from_id(int64_t id) const
-void initialize(Eigen::Ref< const RowVectors4l > TV, Eigen::Ref< const RowVectors6l > TE, Eigen::Ref< const RowVectors4l > TF, Eigen::Ref< const RowVectors4l > TT, Eigen::Ref< const VectorXl > VT, Eigen::Ref< const VectorXl > ET, Eigen::Ref< const VectorXl > FT)
-bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
-TypedAttributeHandle< int64_t > m_te_handle
-TypedAttributeHandle< int64_t > m_et_handle
-TypedAttributeHandle< int64_t > m_ft_handle
+TypedAttributeHandle< int64_t > m_tv_handle
+bool is_boundary_edge(const Tuple &tuple) const
+Tuple edge_tuple_from_id(int64_t id) const
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_ft_accessor
+Tuple face_tuple_from_id(int64_t id) const
+Tuple tet_tuple_from_id(int64_t id) const
+bool is_connectivity_valid() const override
+TypedAttributeHandle< int64_t > m_tf_handle
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_tf_accessor
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_tt_accessor
+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
+Tuple vertex_tuple_from_id(int64_t id) const
+void initialize(Eigen::Ref< const RowVectors4l > TV, Eigen::Ref< const RowVectors6l > TE, Eigen::Ref< const RowVectors4l > TF, Eigen::Ref< const RowVectors4l > TT, Eigen::Ref< const VectorXl > VT, Eigen::Ref< const VectorXl > ET, Eigen::Ref< const VectorXl > FT)
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_te_accessor
+bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
+TypedAttributeHandle< int64_t > m_te_handle
+TypedAttributeHandle< int64_t > m_et_handle
+TypedAttributeHandle< int64_t > m_ft_handle
-bool is_boundary_face(const Tuple &tuple) const
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_vt_accessor
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_tv_accessor
+bool is_boundary_face(const Tuple &tuple) const
@@ -751,6 +789,7 @@
static Simplex vertex(const Tuple &t)
static Simplex edge(const Tuple &t)
+
Tuple local_switch_tuple(const Tuple &tuple, PrimitiveType pt)
bool tuple_is_valid_for_ccw(const Tuple &tuple)
const int64_t auto_3d_table_complete_vertex[4][3]
diff --git a/_tet_mesh_8hpp_source.html b/_tet_mesh_8hpp_source.html
index 6d88a60350..59973b8b9d 100644
--- a/_tet_mesh_8hpp_source.html
+++ b/_tet_mesh_8hpp_source.html
@@ -134,17 +134,17 @@
-
-
-
+
+
+
-
-
-
+
+
+
@@ -165,79 +165,95 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
- 75 class TetMeshOperationExecutor;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ 76 class TetMeshOperationExecutor;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
-TypedAttributeHandle< int64_t > m_tt_handle
-bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
+TypedAttributeHandle< int64_t > m_tt_handle
+bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
TetMesh & operator=(const TetMesh &o)=delete
TetMesh(const TetMesh &o)=delete
-TypedAttributeHandle< int64_t > m_vt_handle
-std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
-int64_t id_face(const Tuple &tuple) const
-bool is_boundary_vertex(const Tuple &tuple) const
-TetMesh(TetMesh &&o)=default
-Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
-int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
-Tuple tuple_from_global_ids(int64_t tid, int64_t fid, int64_t eid, int64_t vid) const
+TypedAttributeHandle< int64_t > m_vt_handle
+std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
+int64_t id_face(const Tuple &tuple) const
+bool is_boundary_vertex(const Tuple &tuple) const
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_et_accessor
+void make_cached_accessors()
+Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
+int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
+Tuple tuple_from_global_ids(int64_t tid, int64_t fid, int64_t eid, int64_t vid) const
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
-TypedAttributeHandle< int64_t > m_tv_handle
-bool is_boundary_edge(const Tuple &tuple) const
-Tuple edge_tuple_from_id(int64_t id) const
-Tuple face_tuple_from_id(int64_t id) const
-TetMesh & operator=(TetMesh &&o)=default
-Tuple tet_tuple_from_id(int64_t id) const
-bool is_connectivity_valid() const override
-TypedAttributeHandle< int64_t > m_tf_handle
-int64_t id(const simplex::Simplex &simplex) const
-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
-int64_t id_tet(const Tuple &tuple) const
-Tuple vertex_tuple_from_id(int64_t id) const
-int64_t id_vertex(const Tuple &tuple) const
-int64_t id_edge(const Tuple &tuple) const
-void initialize(Eigen::Ref< const RowVectors4l > TV, Eigen::Ref< const RowVectors6l > TE, Eigen::Ref< const RowVectors4l > TF, Eigen::Ref< const RowVectors4l > TT, Eigen::Ref< const VectorXl > VT, Eigen::Ref< const VectorXl > ET, Eigen::Ref< const VectorXl > FT)
-bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
-TypedAttributeHandle< int64_t > m_te_handle
-TypedAttributeHandle< int64_t > m_et_handle
-TypedAttributeHandle< int64_t > m_ft_handle
+TypedAttributeHandle< int64_t > m_tv_handle
+bool is_boundary_edge(const Tuple &tuple) const
+Tuple edge_tuple_from_id(int64_t id) const
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_ft_accessor
+Tuple face_tuple_from_id(int64_t id) const
+Tuple tet_tuple_from_id(int64_t id) const
+bool is_connectivity_valid() const override
+TypedAttributeHandle< int64_t > m_tf_handle
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_tf_accessor
+int64_t id(const simplex::Simplex &simplex) const
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_tt_accessor
+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
+int64_t id_tet(const Tuple &tuple) const
+Tuple vertex_tuple_from_id(int64_t id) const
+int64_t id_vertex(const Tuple &tuple) const
+int64_t id_edge(const Tuple &tuple) const
+void initialize(Eigen::Ref< const RowVectors4l > TV, Eigen::Ref< const RowVectors6l > TE, Eigen::Ref< const RowVectors4l > TF, Eigen::Ref< const RowVectors4l > TT, Eigen::Ref< const VectorXl > VT, Eigen::Ref< const VectorXl > ET, Eigen::Ref< const VectorXl > FT)
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_te_accessor
+bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
+TypedAttributeHandle< int64_t > m_te_handle
+TypedAttributeHandle< int64_t > m_et_handle
+TypedAttributeHandle< int64_t > m_ft_handle
int64_t top_cell_dimension() const override
-bool is_boundary_face(const Tuple &tuple) const
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_vt_accessor
+std::unique_ptr< attribute::MutableAccessor< int64_t > > m_tv_accessor
+bool is_boundary_face(const Tuple &tuple) const
diff --git a/_tet_mesh_operation_executor_8cpp_source.html b/_tet_mesh_operation_executor_8cpp_source.html
index 67bac5cd07..97f0a413b4 100644
--- a/_tet_mesh_operation_executor_8cpp_source.html
+++ b/_tet_mesh_operation_executor_8cpp_source.html
@@ -1204,9 +1204,9 @@
void split_edge()
split edge v1-v2
-int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
-int64_t id_tet(const Tuple &tuple) const
-bool is_boundary_face(const Tuple &tuple) const
+int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
+int64_t id_tet(const Tuple &tuple) const
+bool is_boundary_face(const Tuple &tuple) const
std::array< std::vector< int64_t >, 4 > simplex_ids_to_delete
diff --git a/_tri_mesh_8cpp_source.html b/_tri_mesh_8cpp_source.html
index 06cf8f5c78..7275f761db 100644
--- a/_tri_mesh_8cpp_source.html
+++ b/_tri_mesh_8cpp_source.html
@@ -132,552 +132,556 @@
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))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 46 default:
throw std::runtime_error(
"Tuple id: Invalid primitive type");
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
- 60 throw std::runtime_error(
- 61 "tried to compute the boundary of an tri mesh for an invalid simplex dimension");
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 89 }
while (t != vertex);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 70 default:
throw std::runtime_error(
"Tuple id: Invalid primitive type");
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 84 throw std::runtime_error(
+ 85 "tried to compute the boundary of an tri mesh for an invalid simplex dimension");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
- 110 int64_t lvid_new = -1, leid_new = -1;
-
-
- 113 auto fv = fv_accessor.index_access().const_vector_attribute(gcid_new);
-
+
+
+
+
+
+
+ 111 }
while (t != vertex);
+
+
+
-
-
- 118 auto fe =
m_fe_accessor->index_access().const_vector_attribute(gcid_new);
-
- 120 if (gfid == gcid_new) {
-
-
-
- 124 for (int64_t i = 0; i < 3; ++i) {
- 125 if (i != oleid && fe(i) == geid) {
-
-
-
-
-
-
-
-
-
- 135 if (oleid != olvid && leid_new != olvid) {
-
-
- 138 for (int64_t i = 0; i < 3; ++i) {
- 139 if (i != olvid && fv(i) == gvid) {
-
-
-
-
-
- 145 for (int64_t i = 0; i < 3; ++i) {
-
-
-
-
-
-
-
-
- 154 assert(lvid_new != -1);
- 155 assert(leid_new != -1);
-
-
-
-
-
-
-
-
-
- 165 assert(
is_valid(res, hash_accessor));
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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)
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 130 int64_t lvid_new = -1, leid_new = -1;
+
+ 132 auto fv =
m_fv_accessor->index_access().const_vector_attribute(gcid_new);
+
+ 134 auto fe =
m_fe_accessor->index_access().const_vector_attribute(gcid_new);
+
+ 136 if (gfid == gcid_new) {
+
+
+
+ 140 for (int64_t i = 0; i < 3; ++i) {
+ 141 if (i != oleid && fe(i) == geid) {
+
+
+
+
+
+
+
+
+
+ 151 if (oleid != olvid && leid_new != olvid) {
+
+
+ 154 for (int64_t i = 0; i < 3; ++i) {
+ 155 if (i != olvid && fv(i) == gvid) {
+
+
+
+
+
+ 161 for (int64_t i = 0; i < 3; ++i) {
+
+
+
+
+
+
+
+
+ 170 assert(lvid_new != -1);
+ 171 assert(leid_new != -1);
+
+
+
+
+
+
+
+
+
+ 181 assert(
is_valid(res, hash_accessor));
+
+
+
+
+
+
+
+
+
+
+
+
- 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())};
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ 202 Eigen::Ref<const RowVectors3l> FV,
+ 203 Eigen::Ref<const RowVectors3l> FE,
+ 204 Eigen::Ref<const RowVectors3l> FF,
+ 205 Eigen::Ref<const VectorXl> VF,
+ 206 Eigen::Ref<const VectorXl> EF)
+
+
-
-
-
-
-
-
- 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();
-
- 220 f_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
-
-
-
- 224 auto& vf = vf_accessor.index_access().scalar_attribute(i);
-
- 226 v_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
-
-
-
- 230 auto& ef = ef_accessor.index_access().scalar_attribute(i);
-
- 232 e_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
-
-
+
+ 211 std::vector<int64_t> cap{
+ 212 static_cast<int64_t
>(VF.rows()),
+ 213 static_cast<int64_t
>(EF.rows()),
+ 214 static_cast<int64_t
>(FF.rows())};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 232 fv_accessor.index_access().vector_attribute(i) = FV.row(i).transpose();
+ 233 fe_accessor.index_access().vector_attribute(i) = FE.row(i).transpose();
+ 234 ff_accessor.index_access().vector_attribute(i) = FF.row(i).transpose();
-
-
-
-
-
-
-
-
-
- 245 auto fv = fv_accessor.index_access().const_vector_attribute(fid);
-
-
- 248 auto fe = fe_accessor.index_access().const_vector_attribute(fid);
-
-
-
-
-
- 254 for (
int j = 0; j < 3; ++j) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 287 throw std::runtime_error(
"no tet tuple supported for trimesh");
-
-
- 290 default:
throw std::runtime_error(
"Invalid primitive type");
break;
-
-
-
-
-
-
-
- 298 auto f =
m_vf_accessor->index_access().const_scalar_attribute(
id);
-
-
- 301 auto fv =
m_fv_accessor->index_access().const_vector_attribute(f);
- 302 for (int64_t i = 0; i < 3; ++i) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 317 throw std::runtime_error(
"vertex_tuple_from_id failed");
-
-
-
-
-
-
- 324 auto f =
m_ef_accessor->index_access().const_scalar_attribute(
id);
-
-
- 327 auto fe =
m_fe_accessor->index_access().const_vector_attribute(f);
- 328 for (int64_t i = 0; i < 3; ++i) {
-
-
-
-
-
-
-
-
- 337 assert(
is_valid(e_tuple, hash_accessor));
-
-
-
- 341 throw std::runtime_error(
"edge_tuple_from_id failed");
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 363 logger().debug(
"Tuple was null and therefore not valid");
-
-
-
-
-
-
+ 236 f_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
+
+
+
+ 240 auto& vf = vf_accessor.index_access().scalar_attribute(i);
+
+ 242 v_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
+
+
+
+ 246 auto& ef = ef_accessor.index_access().scalar_attribute(i);
+
+ 248 e_flag_accessor.index_access().scalar_attribute(i) |= 0x1;
+
+
+
+
+
+
+
+
+
+
+
+ 260 auto fv =
m_fv_accessor->index_access().const_vector_attribute(fid);
+ 261 auto fe =
m_fe_accessor->index_access().const_vector_attribute(fid);
+
+
+
+
+ 266 for (
int j = 0; j < 3; ++j) {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 299 throw std::runtime_error(
"no tet tuple supported for trimesh");
+
+
+ 302 default:
throw std::runtime_error(
"Invalid primitive type");
break;
+
+
+
+
+
+ 308 auto f =
m_vf_accessor->index_access().const_scalar_attribute(
id);
+ 309 auto fv =
m_fv_accessor->index_access().const_vector_attribute(f);
+ 310 for (int64_t i = 0; i < 3; ++i) {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 325 throw std::runtime_error(
"vertex_tuple_from_id failed");
+
+
+
+
+ 330 auto f =
m_ef_accessor->index_access().const_scalar_attribute(
id);
+ 331 auto fe =
m_fe_accessor->index_access().const_vector_attribute(f);
+ 332 for (int64_t i = 0; i < 3; ++i) {
+
+
+
+
+
+
+
+
+ 341 assert(
is_valid(e_tuple, hash_accessor));
+
+
+
+ 345 throw std::runtime_error(
"edge_tuple_from_id failed");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 367 logger().debug(
"Tuple was null and therefore not valid");
+
+
-
-
-
-
-
-
-
- 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)={}",
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 407 if (e_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
-
-
-
-
- 412 long ef_val = ef_accessor.index_access().const_scalar_attribute(i);
-
- 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) {
-
-
-
-
-
- 422 "EF[{0}] {1} and FE:[EF[{0}]] = {2} are not "
-
-
-
- 426 fmt::join(fe_val,
","));
-
-
-
-
-
-
-
-
- 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) {
-
-
-
-
-
- 442 auto fv = fv_accessor.index_access().const_vector_attribute(vf);
- 443 for (int64_t j = 0; j < 3; ++j) {
-
-
-
-
-
-
- 450 "VF and FV not compatible, could not find VF[{}] = {} "
-
-
-
-
-
-
-
-
-
-
-
- 462 if (f_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
-
-
-
- 466 auto fe = fe_accessor.index_access().const_vector_attribute(i);
- 467 auto ff = ff_accessor.index_access().const_vector_attribute(i);
-
- 469 for (int64_t j = 0; j < 3; ++j) {
- 470 int neighbor_fid = ff(j);
-
-
- 473 auto ef = ef_accessor.index_access().const_scalar_attribute(fe(j));
-
-
- 476 "Even though local edge {} of face {} is "
- 477 "boundary (global eid is {}), "
-
-
-
-
-
-
-
-
-
-
- 488 if (neighbor_fid == i) {
-
- 490 "Connectivity check cannot work when mapping a "
- 491 "face to itself (face {})",
-
-
-
-
- 496 auto neighbor_ff = ff_accessor.index_access().const_vector_attribute(neighbor_fid);
-
- 498 if ((neighbor_ff.array() == i).any()) {
-
- 500 fe_accessor.index_access().const_vector_attribute(neighbor_fid);
+
+
+
+
+
+
+
+
+
+
+
+ 382 "tuple.m_local_vid={} >= 0 && tuple.m_local_eid={} >= 0 &&"
+ 383 " tuple.m_global_cid={} >= 0 &&"
+ 384 " autogen::tri_mesh::tuple_is_valid_for_ccw(tuple)={}",
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 411 if (e_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
+
+
+
+
+ 416 long ef_val = ef_accessor.index_access().const_scalar_attribute(i);
+
+ 418 auto fe_val = fe_accessor.index_access().const_vector_attribute(ef_val);
+ 419 for (int64_t j = 0; j < 3; ++j) {
+ 420 if (fe_val(j) == i) {
+
+
+
+
+
+ 426 "EF[{0}] {1} and FE:[EF[{0}]] = {2} are not "
+
+
+
+ 430 fmt::join(fe_val,
","));
+
+
+
+
+
+
+
+
+ 439 const int64_t vf = vf_accessor.index_access().const_scalar_attribute(i);
+ 440 if (v_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
+
+
+
+
+
+ 446 auto fv = fv_accessor.index_access().const_vector_attribute(vf);
+ 447 for (int64_t j = 0; j < 3; ++j) {
+
+
+
+
+
+
+ 454 "VF and FV not compatible, could not find VF[{}] = {} "
+
+
+
+
+
+
+
+
+
+
+
+ 466 if (f_flag_accessor.index_access().const_scalar_attribute(i) == 0) {
+
+
+
+ 470 auto fe = fe_accessor.index_access().const_vector_attribute(i);
+ 471 auto ff = ff_accessor.index_access().const_vector_attribute(i);
+
+ 473 for (int64_t j = 0; j < 3; ++j) {
+ 474 int neighbor_fid = ff(j);
+
+
+ 477 auto ef = ef_accessor.index_access().const_scalar_attribute(fe(j));
+
+
+ 480 "Even though local edge {} of face {} is "
+ 481 "boundary (global eid is {}), "
+
+
+
+
+
+
+
+
+
+
+ 492 if (neighbor_fid == i) {
+
+ 494 "Connectivity check cannot work when mapping a "
+ 495 "face to itself (face {})",
+
+
+
+
+ 500 auto neighbor_ff = ff_accessor.index_access().const_vector_attribute(neighbor_fid);
- 502 int edge_shared_count = 0;
- 503 for (
int local_neighbor_eid = 0; local_neighbor_eid < 3; ++local_neighbor_eid) {
-
- 505 if (neighbor_ff(local_neighbor_eid) == i) {
- 506 if (fe(j) == neighbor_fe(local_neighbor_eid)) {
-
-
-
-
- 511 if (edge_shared_count != 1) {
-
- 513 "face {} with fe={} neighbor fe[{}] = {} "
- 514 "was unable to find itself "
- 515 "uniquely (found {})",
-
-
-
- 519 fmt::join(neighbor_fe,
","),
-
-
-
-
-
- 525 "face {} with ff={} neighbor ff[{}] = {} was "
- 526 "unable to find itself",
-
-
-
- 530 fmt::join(neighbor_ff,
","));
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 549 std::vector<std::vector<TypedAttributeHandle<int64_t>>> handles(3);
+ 502 if ((neighbor_ff.array() == i).any()) {
+
+ 504 fe_accessor.index_access().const_vector_attribute(neighbor_fid);
+
+ 506 int edge_shared_count = 0;
+ 507 for (
int local_neighbor_eid = 0; local_neighbor_eid < 3; ++local_neighbor_eid) {
+
+ 509 if (neighbor_ff(local_neighbor_eid) == i) {
+ 510 if (fe(j) == neighbor_fe(local_neighbor_eid)) {
+
+
+
+
+ 515 if (edge_shared_count != 1) {
+
+ 517 "face {} with fe={} neighbor fe[{}] = {} "
+ 518 "was unable to find itself "
+ 519 "uniquely (found {})",
+
+
+
+ 523 fmt::join(neighbor_fe,
","),
+
+
+
+
+
+ 529 "face {} with ff={} neighbor ff[{}] = {} was "
+ 530 "unable to find itself",
+
+
+
+ 534 fmt::join(neighbor_ff,
","));
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+ 553 std::vector<std::vector<TypedAttributeHandle<int64_t>>> handles(3);
-
-
-
+
+
+
-
-
-
+
+
+
-
+
+
+
+
+
@@ -690,41 +694,46 @@
int64_t get_cell_hash_slow(int64_t cell_index) const
Tuple switch_face(const Tuple &tuple) const
ConstAccessor< int64_t > get_const_cell_hash_accessor() const
+Mesh & operator=(const Mesh &other)=delete
bool is_valid_slow(const Tuple &tuple) const
int64_t get_cell_hash(int64_t cell_index, const ConstAccessor< int64_t > &hash_accessor) const
-std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
-Tuple face_tuple_from_id(int64_t id) const
-bool is_boundary_vertex(const Tuple &tuple) const
+
+std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
+Tuple face_tuple_from_id(int64_t id) const
+bool is_boundary_vertex(const Tuple &tuple) const
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_ff_accessor
attribute::TypedAttributeHandle< int64_t > m_vf_handle
-int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
+TriMesh & operator=(const TriMesh &o)=delete
+int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_vf_accessor
-Tuple vertex_tuple_from_id(int64_t id) const
-Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
-static Tuple with_different_cid(const Tuple &t, int64_t cid)
-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)
-bool is_connectivity_valid() const override
+Tuple vertex_tuple_from_id(int64_t id) const
+Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
+void make_cached_accessors()
+static Tuple with_different_cid(const Tuple &t, int64_t cid)
+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)
+bool is_connectivity_valid() const override
attribute::TypedAttributeHandle< int64_t > m_ff_handle
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_fv_accessor
attribute::TypedAttributeHandle< int64_t > m_ef_handle
-Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
+Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_fe_accessor
-bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
-bool is_boundary_edge(const Tuple &tuple) const
+bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
+bool is_boundary_edge(const Tuple &tuple) const
attribute::TypedAttributeHandle< int64_t > m_fv_handle
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_ef_accessor
-Tuple edge_tuple_from_id(int64_t id) const
-bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
+Tuple edge_tuple_from_id(int64_t id) const
+bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
attribute::TypedAttributeHandle< int64_t > m_fe_handle
-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
+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
+
const int64_t auto_2d_table_complete_vertex[3][2]
const int64_t auto_2d_table_complete_edge[3][2]
bool tuple_is_valid_for_ccw(const Tuple &t)
diff --git a/_tri_mesh_8hpp_source.html b/_tri_mesh_8hpp_source.html
index 55dc77fa0b..70e4f95203 100644
--- a/_tri_mesh_8hpp_source.html
+++ b/_tri_mesh_8hpp_source.html
@@ -139,58 +139,58 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 49 Eigen::Ref<const RowVectors3l> FV,
- 50 Eigen::Ref<const RowVectors3l> FE,
- 51 Eigen::Ref<const RowVectors3l> FF,
- 52 Eigen::Ref<const VectorXl> VF,
- 53 Eigen::Ref<const VectorXl> EF);
- 54 void initialize(Eigen::Ref<const RowVectors3l> F);
-
-
-
-
-
-
-
-
- 63 #if defined(MTAO_PUBLICIZING_ID)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 50 Eigen::Ref<const RowVectors3l> FV,
+ 51 Eigen::Ref<const RowVectors3l> FE,
+ 52 Eigen::Ref<const RowVectors3l> FF,
+ 53 Eigen::Ref<const VectorXl> VF,
+ 54 Eigen::Ref<const VectorXl> EF);
+ 55 void initialize(Eigen::Ref<const RowVectors3l> F);
+
+
+
+
+
+
+
+
+ 64 #if defined(MTAO_PUBLICIZING_ID)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -223,44 +223,43 @@
Tuple switch_vertex(const Tuple &tuple) const
-std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
-Tuple next_edge(const Tuple &tuple) const
jump to the next edge by performing a switch of vertex and edge
-Tuple face_tuple_from_id(int64_t id) const
-int64_t id_face(const Tuple &tuple) const
-bool is_boundary_vertex(const Tuple &tuple) const
-int64_t top_cell_dimension() const override
+std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes() const override
Returns a vector of vectors of attribute handles.
+Tuple next_edge(const Tuple &tuple) const
jump to the next edge by performing a switch of vertex and edge
+Tuple face_tuple_from_id(int64_t id) const
+int64_t id_face(const Tuple &tuple) const
+bool is_boundary_vertex(const Tuple &tuple) const
+int64_t top_cell_dimension() const override
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_ff_accessor
attribute::TypedAttributeHandle< int64_t > m_vf_handle
TriMesh & operator=(const TriMesh &o)=delete
-int64_t id_vertex(const Tuple &tuple) const
-int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
+int64_t id_vertex(const Tuple &tuple) const
+int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
bool is_boundary(const simplex::Simplex &tuple) const
check if a simplex lies on a boundary or not
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_vf_accessor
-Tuple vertex_tuple_from_id(int64_t id) const
-Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
-int64_t id_edge(const Tuple &tuple) const
-static Tuple with_different_cid(const Tuple &t, int64_t cid)
-Tuple prev_edge(const Tuple &tuple) const
jump to the previous edge by performing a switch of edge and vertex
-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)
-bool is_connectivity_valid() const override
+Tuple vertex_tuple_from_id(int64_t id) const
+Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
+void make_cached_accessors()
+int64_t id_edge(const Tuple &tuple) const
+static Tuple with_different_cid(const Tuple &t, int64_t cid)
+Tuple prev_edge(const Tuple &tuple) const
jump to the previous edge by performing a switch of edge and vertex
+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)
+bool is_connectivity_valid() const override
attribute::TypedAttributeHandle< int64_t > m_ff_handle
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_fv_accessor
attribute::TypedAttributeHandle< int64_t > m_ef_handle
-Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
-int64_t id(const simplex::Simplex &simplex) const
-TriMesh(TriMesh &&o)=default
+Tuple switch_tuple(const Tuple &tuple, PrimitiveType type) const override
switch the orientation of the Tuple of the given dimension
+int64_t id(const simplex::Simplex &simplex) const
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_fe_accessor
-bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
-TriMesh & operator=(TriMesh &&o)=default
-bool is_boundary_edge(const Tuple &tuple) const
+bool is_ccw(const Tuple &tuple) const override
TODO this needs dimension?
+bool is_boundary_edge(const Tuple &tuple) const
attribute::TypedAttributeHandle< int64_t > m_fv_handle
std::unique_ptr< attribute::MutableAccessor< int64_t > > m_ef_accessor
TriMesh(const TriMesh &o)=delete
-Tuple edge_tuple_from_id(int64_t id) const
-bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
+Tuple edge_tuple_from_id(int64_t id) const
+bool is_valid(const Tuple &tuple, ConstAccessor< int64_t > &hash_accessor) const override
check validity of tuple including its hash
attribute::TypedAttributeHandle< int64_t > m_fe_handle
-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
+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
diff --git a/_tri_mesh_operation_executor_8cpp_source.html b/_tri_mesh_operation_executor_8cpp_source.html
index bcf7ef9f12..4852ae9b6b 100644
--- a/_tri_mesh_operation_executor_8cpp_source.html
+++ b/_tri_mesh_operation_executor_8cpp_source.html
@@ -691,7 +691,7 @@
void connect_faces_across_spine()
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
+int64_t id(const Tuple &tuple, PrimitiveType type) const override
return the global id of the Tuple of the given dimension
void add(const Simplex &simplex)
Add simplex to the collection.
diff --git a/_triangle_fan_options_8cpp_source.html b/_triangle_fan_options_8cpp_source.html
index 65b0b65b50..9d862e0cf4 100644
--- a/_triangle_fan_options_8cpp_source.html
+++ b/_triangle_fan_options_8cpp_source.html
@@ -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)
+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)
std::optional< Coordinates > coordinates
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 87bb18a6ae..4914e94aa3 100644
--- a/_update_edge_operation_multi_mesh_map_functor_8cpp_source.html
+++ b/_update_edge_operation_multi_mesh_map_functor_8cpp_source.html
@@ -1049,12 +1049,12 @@
TypedAttributeHandle< int64_t > map_to_parent_handle
static int64_t parent_global_cid(const attribute::ConstAccessor< int64_t > &child_to_parent, int64_t child_gid)
-Tuple tuple_from_global_ids(int64_t tid, int64_t fid, int64_t eid, int64_t vid) const
-int64_t id_vertex(const Tuple &tuple) const
-int64_t id_edge(const Tuple &tuple) const
+Tuple tuple_from_global_ids(int64_t tid, int64_t fid, int64_t eid, int64_t vid) const
+int64_t id_vertex(const Tuple &tuple) const
+int64_t id_edge(const Tuple &tuple) const
-int64_t id_vertex(const Tuple &tuple) const
-Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
+int64_t id_vertex(const Tuple &tuple) const
+Tuple tuple_from_global_ids(int64_t fid, int64_t eid, int64_t vid) const
A TupleAccessor that can only read from attributes.
diff --git a/classwmtk_1_1_mesh.html b/classwmtk_1_1_mesh.html
index 9e71dff732..1179bfbb87 100644
--- a/classwmtk_1_1_mesh.html
+++ b/classwmtk_1_1_mesh.html
@@ -847,7 +847,7 @@