Skip to content

Commit b1dc298

Browse files
committed
cleaning up get_tuple_from_simplex_local_id to shove assertions into tests other than dimensino checking
1 parent b8f0df8 commit b1dc298

File tree

3 files changed

+63
-73
lines changed

3 files changed

+63
-73
lines changed

src/wmtk/autogen/tet_mesh/get_tuple_from_simplex_local_id.hpp

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,7 @@ inline Tuple get_tuple_from_simplex_local_vertex_id(int8_t local_id, int64_t glo
1414
assert(local_id < 4);
1515
const auto& arr = autogen::tet_mesh::auto_3d_table_complete_vertex[local_id];
1616
const auto& [lvid, leid, lfid] = arr;
17-
assert(lvid == local_id);
18-
19-
20-
if (lvid < 0 || leid < 0 || lfid < 0) {
21-
throw std::runtime_error("tuple_from_vertex_id failed");
22-
}
2317
Tuple tuple = Tuple(lvid, leid, lfid, global_id);
24-
// accessor as parameter
25-
assert(is_ccw(tuple)); // is_ccw also checks for validity
2618
return tuple;
2719
}
2820
inline Tuple get_tuple_from_simplex_local_edge_id(int8_t local_id, int64_t global_id)
@@ -31,15 +23,7 @@ inline Tuple get_tuple_from_simplex_local_edge_id(int8_t local_id, int64_t globa
3123
assert(local_id < 6);
3224
const auto& arr = autogen::tet_mesh::auto_3d_table_complete_edge[local_id];
3325
const auto& [lvid, leid, lfid] = arr;
34-
assert(leid == local_id);
35-
36-
37-
if (lvid < 0 || leid < 0 || lfid < 0) {
38-
throw std::runtime_error("tuple_from_edge_id failed");
39-
}
4026
Tuple tuple = Tuple(lvid, leid, lfid, global_id);
41-
// accessor as parameter
42-
assert(is_ccw(tuple)); // is_ccw also checks for validity
4327
return tuple;
4428
}
4529
inline Tuple get_tuple_from_simplex_local_face_id(int8_t local_id, int64_t global_id)
@@ -48,15 +32,7 @@ inline Tuple get_tuple_from_simplex_local_face_id(int8_t local_id, int64_t globa
4832
assert(local_id < 4);
4933
const auto& arr = autogen::tet_mesh::auto_3d_table_complete_face[local_id];
5034
const auto& [lvid, leid, lfid] = arr;
51-
assert(lfid == local_id);
52-
53-
54-
if (lvid < 0 || leid < 0 || lfid < 0) {
55-
throw std::runtime_error("tuple_from_face_id failed");
56-
}
5735
Tuple tuple = Tuple(lvid, leid, lfid, global_id);
58-
// accessor as parameter
59-
assert(is_ccw(tuple)); // is_ccw also checks for validity
6036
return tuple;
6137
}
6238
inline Tuple get_tuple_from_simplex_local_id(PrimitiveType pt, int8_t local_id, int64_t global_fid)
Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,39 @@
11
#pragma once
2-
#include "autogenerated_tables.hpp"
3-
#include <wmtk/Tuple.hpp>
42
#include <cassert>
3+
#include <wmtk/Tuple.hpp>
4+
#include "autogenerated_tables.hpp"
55
#if !defined(_NDEBUG)
66
#include "is_ccw.hpp"
77
#endif
88

99
namespace wmtk::autogen::tri_mesh {
10-
inline Tuple get_tuple_from_simplex_local_vertex_id(int8_t local_id, int64_t global_fid) {
11-
10+
inline Tuple get_tuple_from_simplex_local_vertex_id(int8_t local_id, int64_t global_id)
11+
{
1212
assert(local_id >= 0);
1313
assert(local_id < 3);
1414

15-
assert(autogen::tri_mesh::auto_2d_table_complete_vertex[local_id][0] == local_id);
16-
const int64_t leid = autogen::tri_mesh::auto_2d_table_complete_vertex[local_id][1];
17-
Tuple v_tuple = Tuple(local_id, leid, -1, global_fid);
18-
// accessor as parameter
19-
assert(is_ccw(v_tuple)); // is_ccw also checks for validity
20-
return v_tuple;
21-
}
22-
inline Tuple get_tuple_from_simplex_local_edge_id(int8_t local_id, int64_t global_fid) {
15+
const auto& arr = autogen::tri_mesh::auto_2d_table_complete_vertex[local_id];
16+
const auto& [lvid, leid] = arr;
17+
Tuple tuple = Tuple(lvid, leid, -1, global_id);
18+
return tuple;
19+
}
20+
inline Tuple get_tuple_from_simplex_local_edge_id(int8_t local_id, int64_t global_id)
21+
{
2322
assert(local_id >= 0);
2423
assert(local_id < 3);
25-
assert(autogen::tri_mesh::auto_2d_table_complete_edge[local_id][1] == local_id);
26-
const int64_t lvid = autogen::tri_mesh::auto_2d_table_complete_edge[local_id][0];
27-
28-
29-
Tuple e_tuple = Tuple(lvid, local_id, -1, global_fid);
30-
assert(is_ccw(e_tuple));
31-
return e_tuple;
32-
}
33-
inline Tuple get_tuple_from_simplex_local_id(PrimitiveType pt, int8_t local_id, int64_t global_fid) {
34-
switch(pt) {
35-
case PrimitiveType::Vertex: return get_tuple_from_simplex_local_vertex_id(local_id, global_fid);
36-
case PrimitiveType::Edge: return get_tuple_from_simplex_local_edge_id(local_id, global_fid);
37-
default:
38-
case PrimitiveType::Triangle:
39-
case PrimitiveType::Tetrahedron:
40-
assert(false);
41-
return {};
42-
}
24+
const auto& arr = autogen::tri_mesh::auto_2d_table_complete_edge[local_id];
25+
const auto& [lvid, leid] = arr;
26+
Tuple tuple = Tuple(lvid, leid, -1, global_id);
27+
return tuple;
28+
}
29+
inline Tuple get_tuple_from_simplex_local_id(PrimitiveType pt, int8_t local_id, int64_t global_fid)
30+
{
31+
switch (pt) {
32+
case PrimitiveType::Vertex: return get_tuple_from_simplex_local_vertex_id(local_id, global_fid);
33+
case PrimitiveType::Edge: return get_tuple_from_simplex_local_edge_id(local_id, global_fid);
34+
default:
35+
case PrimitiveType::Triangle:
36+
case PrimitiveType::Tetrahedron: assert(false); return {};
4337
}
4438
}
39+
} // namespace wmtk::autogen::tri_mesh

tests/autogen/tables.cpp

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <wmtk/autogen/tri_mesh/is_ccw.hpp>
2121
#include <wmtk/autogen/tri_mesh/local_id_table_offset.hpp>
2222
#include <wmtk/autogen/tri_mesh/local_switch_tuple.hpp>
23+
#include "../tools/DEBUG_Tuple.hpp"
2324
#include "../tools/all_valid_local_tuples.hpp"
2425

2526
using namespace wmtk;
@@ -270,54 +271,72 @@ TEST_CASE("tuple_autogen_is_ccw", "[tuple]")
270271
}
271272
TEST_CASE("tuple_autogen_from_id_is_ccw", "[tuple]")
272273
{
274+
auto run_checks = [](int ic, const Tuple& t, const Tuple& t2, int i, PrimitiveType pt) {
275+
wmtk::tests::DEBUG_Tuple dt(t);
276+
switch (ic) {
277+
case 4: REQUIRE(dt.local_fid() >= 0); REQUIRE(dt.local_fid() < 4);
278+
case 3: REQUIRE(dt.local_eid() >= 0); REQUIRE(dt.local_eid() < 6);
279+
case 2: REQUIRE(dt.local_vid() >= 0); REQUIRE(dt.local_vid() < 4);
280+
default: break;
281+
}
282+
switch (pt) {
283+
case PrimitiveType::Tetrahedron: CHECK(dt.local_fid() == i); break;
284+
case PrimitiveType::Edge: CHECK(dt.local_eid() == i); break;
285+
case PrimitiveType::Vertex: CHECK(dt.local_vid() == i); break;
286+
default: break;
287+
}
288+
289+
CHECK(t == t2);
290+
};
291+
PrimitiveType pt = PrimitiveType::Vertex;
273292
for (int i = 0; i < 2; ++i) {
274293
Tuple t = wmtk::autogen::edge_mesh::get_tuple_from_simplex_local_vertex_id(i, 0);
275-
Tuple t2 =
276-
wmtk::autogen::edge_mesh::get_tuple_from_simplex_local_id(PrimitiveType::Vertex, i, 0);
277-
CHECK(t == t2);
294+
Tuple t2 = wmtk::autogen::edge_mesh::get_tuple_from_simplex_local_id(pt, i, 0);
295+
run_checks(2, t, t2, i, pt);
296+
// not every simplex has a ccw tuple in an edge_mesh
278297
CHECK(edge_mesh::tuple_is_valid_for_ccw(t));
279-
// edge mesh does not always have a ccw tuple for every simplex
280298
CHECK(edge_mesh::is_ccw(t) == (i == 0));
281299
}
300+
pt = PrimitiveType::Vertex;
282301
for (int i = 0; i < 3; ++i) {
283302
Tuple t = wmtk::autogen::tri_mesh::get_tuple_from_simplex_local_vertex_id(i, 0);
284-
Tuple t2 =
285-
wmtk::autogen::tri_mesh::get_tuple_from_simplex_local_id(PrimitiveType::Vertex, i, 0);
286-
CHECK(t == t2);
303+
Tuple t2 = wmtk::autogen::tri_mesh::get_tuple_from_simplex_local_id(pt, i, 0);
304+
run_checks(3, t, t2, i, pt);
287305
CHECK(tri_mesh::tuple_is_valid_for_ccw(t));
288306
CHECK(tri_mesh::is_ccw(t));
289307
}
308+
pt = PrimitiveType::Edge;
290309
for (int i = 0; i < 3; ++i) {
291310
Tuple t = wmtk::autogen::tri_mesh::get_tuple_from_simplex_local_edge_id(i, 0);
292-
Tuple t2 =
293-
wmtk::autogen::tri_mesh::get_tuple_from_simplex_local_id(PrimitiveType::Edge, i, 0);
294-
CHECK(t == t2);
311+
Tuple t2 = wmtk::autogen::tri_mesh::get_tuple_from_simplex_local_id(pt, i, 0);
312+
run_checks(3, t, t2, i, pt);
295313
CHECK(tri_mesh::tuple_is_valid_for_ccw(t));
296314
CHECK(tri_mesh::is_ccw(t));
297315
}
298316

317+
pt = PrimitiveType::Vertex;
299318
for (int i = 0; i < 4; ++i) {
300319
Tuple t = wmtk::autogen::tet_mesh::get_tuple_from_simplex_local_vertex_id(i, 0);
301-
Tuple t2 =
302-
wmtk::autogen::tet_mesh::get_tuple_from_simplex_local_id(PrimitiveType::Vertex, i, 0);
303-
CHECK(t == t2);
320+
Tuple t2 = wmtk::autogen::tet_mesh::get_tuple_from_simplex_local_id(pt, i, 0);
321+
run_checks(4, t, t2, i, pt);
304322
CHECK(tet_mesh::tuple_is_valid_for_ccw(t));
305323
CHECK(tet_mesh::is_ccw(t));
306324
}
325+
pt = PrimitiveType::Edge;
307326
for (int i = 0; i < 6; ++i) {
308327
Tuple t = wmtk::autogen::tet_mesh::get_tuple_from_simplex_local_edge_id(i, 0);
309-
Tuple t2 =
310-
wmtk::autogen::tet_mesh::get_tuple_from_simplex_local_id(PrimitiveType::Edge, i, 0);
311-
CHECK(t == t2);
328+
Tuple t2 = wmtk::autogen::tet_mesh::get_tuple_from_simplex_local_id(pt, i, 0);
312329
CHECK(tet_mesh::tuple_is_valid_for_ccw(t));
330+
run_checks(4, t, t2, i, pt);
313331
CHECK(tet_mesh::is_ccw(t));
314332
}
333+
334+
pt = PrimitiveType::Triangle;
315335
for (int i = 0; i < 4; ++i) {
316336
Tuple t = wmtk::autogen::tet_mesh::get_tuple_from_simplex_local_face_id(i, 0);
317-
Tuple t2 =
318-
wmtk::autogen::tet_mesh::get_tuple_from_simplex_local_id(PrimitiveType::Triangle, i, 0);
319-
CHECK(t == t2);
337+
Tuple t2 = wmtk::autogen::tet_mesh::get_tuple_from_simplex_local_id(pt, i, 0);
320338
CHECK(tet_mesh::tuple_is_valid_for_ccw(t));
339+
run_checks(4, t, t2, i, pt);
321340
CHECK(tet_mesh::is_ccw(t));
322341
}
323342
}

0 commit comments

Comments
 (0)