diff --git a/src/orange/orangeinp/detail/CsgUnitBuilder.cc b/src/orange/orangeinp/detail/CsgUnitBuilder.cc index 0532c842f9..0e6dbbd79c 100644 --- a/src/orange/orangeinp/detail/CsgUnitBuilder.cc +++ b/src/orange/orangeinp/detail/CsgUnitBuilder.cc @@ -10,6 +10,7 @@ #include "corecel/io/Logger.hh" #include "corecel/io/StreamableVariant.hh" #include "orange/transform/TransformIO.hh" +#include "orange/transform/TransformSimplifier.hh" namespace celeritas { @@ -49,6 +50,16 @@ BoundingZone const& CsgUnitBuilder::bounds(NodeId nid) const return iter->second.bounds; } +//---------------------------------------------------------------------------// +/*! + * Insert transform with simplification and deduplication. + */ +TransformId CsgUnitBuilder::insert_transform(VariantTransform const& vt) +{ + auto simplified = std::visit(TransformSimplifier(tol_), vt); + return this->insert_transform_(std::move(simplified)); +} + //---------------------------------------------------------------------------// /*! * Set a bounding zone and transform for a node. diff --git a/src/orange/orangeinp/detail/CsgUnitBuilder.hh b/src/orange/orangeinp/detail/CsgUnitBuilder.hh index e60eb6c548..427395d101 100644 --- a/src/orange/orangeinp/detail/CsgUnitBuilder.hh +++ b/src/orange/orangeinp/detail/CsgUnitBuilder.hh @@ -79,7 +79,7 @@ class CsgUnitBuilder inline NodeInsertion insert_csg(Args&&... args); // Insert a transform - inline TransformId insert_transform(VariantTransform&& vt); + TransformId insert_transform(VariantTransform const& vt); // Insert node metadata inline void insert_md(NodeId node, Metadata&& md); @@ -173,15 +173,6 @@ auto CsgUnitBuilder::insert_csg(Args&&... args) -> NodeInsertion return result; } -//---------------------------------------------------------------------------// -/*! - * Insert transform with deduplication. - */ -TransformId CsgUnitBuilder::insert_transform(VariantTransform&& vt) -{ - return this->insert_transform_(std::move(vt)); -} - //---------------------------------------------------------------------------// /*! * Insert node metadata. diff --git a/test/orange/orangeinp/Transformed.test.cc b/test/orange/orangeinp/Transformed.test.cc index 6ca5600b9d..246a5e049a 100644 --- a/test/orange/orangeinp/Transformed.test.cc +++ b/test/orange/orangeinp/Transformed.test.cc @@ -159,12 +159,7 @@ TEST_F(TransformedTest, inverse) this->build_volume(Transformed{ transformed, Transformation{make_rotation(Axis::x, Turn{0.25}), {0, 0, -2}}}); - static char const* const expected_log_messages[] = { - "While re-inserting region for node 7: existing transform {} " - "differs from new transform {{{1,0,0},{0,1,0},{0,0,1}}, {0,0,0}}"}; - EXPECT_VEC_EQ(expected_log_messages, scoped_log_.messages()); - static char const* const expected_log_levels[] = {"warning"}; - EXPECT_VEC_EQ(expected_log_levels, scoped_log_.levels()); + EXPECT_TRUE(scoped_log_.empty()) << scoped_log_; } static char const* const expected_surface_strings[] = { @@ -218,7 +213,7 @@ TEST_F(TransformedTest, deduplicated_inverse) = {"Sphere: r=2", "Sphere: r=1"}; static char const* const expected_volume_strings[] = {"-0", "-1"}; static char const* const expected_trans_strings[] - = {"3: t=0 -> {}", "5: t=2 -> {{{1,0,0},{0,1,0},{0,0,1}}, {0,0,0}}"}; + = {"3: t=0 -> {}", "5: t=0"}; static int const expected_volume_nodes[] = {3, 5}; auto const& u = this->unit();