30 default: [[fallthrough]];
33 return [](
const VT& a,
const std::bitset<2>&) -> std::array<VT, 2> {
34 return std::array<VT, 2>{{a, a}};
37 return [](
const VT& a,
const std::bitset<2>&) -> std::array<VT, 2> {
38 return std::array<VT, 2>{{a / T(2), a / T(2)}};
42 return [mn](
const VT&,
const std::bitset<2>&) -> std::array<VT, 2> {
222 if (!
bool(m_split_rib_op) && !
bool(m_split_op)) {
226 if (op_datas.find(&mesh()) == op_datas.end())
return;
227 assert(&m == &mesh());
228 const std::vector<std::tuple<simplex::NavigatableSimplex, Tuple>>& tuple_pairs =
229 op_datas.at(&mesh());
233 for (
const auto& tuple_pair : tuple_pairs) {
235 const Tuple& output_tuple = std::get<1>(tuple_pair);
238 const auto& return_data_variant = data.get_variant(mesh(), input_simplex);
244 m_topo_info->input_ear_simplices(return_data_variant, input_simplex.
tuple(), pt);
246 m_topo_info->output_rib_simplices(return_data_variant, output_tuple, pt);
249 assert(old_simps.size() == new_simps.size());
251 for (
size_t s = 0; s < old_simps.size(); ++s) {
252 assign_split_ribs(acc, old_simps[s], new_simps[s]);
257 m_topo_info->input_split_simplices(return_data_variant, input_simplex.
tuple(), pt);
259 m_topo_info->output_split_simplices(return_data_variant, output_tuple, pt);
262 assert(old_simps.size() == new_simps.size());
264 for (
size_t s = 0; s < old_simps.size(); ++s) {
265 assign_split(acc, old_simps[s], new_simps[s]);
268 if (mesh().is_free()) {
271 auto pairs = m_topo_info->output_duplicated_free_simplices(return_data_variant, pt);
272 for (
const auto& [first, second] : pairs) {
273 acc.index_access().vector_attribute(second) =
274 acc.index_access().const_vector_attribute(first);
284 const std::array<Tuple, 2>& input_ears,
285 const Tuple& final_simplex)
const
287 if (!
bool(m_split_rib_op)) {
292 auto old_values = m_handle.mesh().parent_scope([&]() {
293 return std::make_tuple(
299 std::tie(a, b) = old_values;
302 const auto old_pred = this->evaluate_predicate(acc.
primitive_type(), input_ears);
304 new_value = m_split_rib_op(a, b, old_pred);