24struct man<std::vector<M>>
27 using Scalar = ::smooth::Scalar<M>;
29 template<
typename NewScalar>
32 static constexpr int Dof = -1;
39 return std::accumulate(
40 m.begin(), m.end(), 0u, [](
auto s,
const auto & item) { return s + traits::man<M>::dof(item); });
47 const Eigen::Index mdof = ::smooth::Dof<M> != -1 ? ::smooth::Dof<M> : 1;
48 const auto size =
static_cast<std::size_t
>(
dof / mdof);
53 template<
typename NewScalar>
56 const auto transformer = [](
const M & mi) ->
58 const auto casted_view = m | std::views::transform(transformer);
59 return std::vector(std::ranges::begin(casted_view), std::ranges::end(casted_view));
62 template<
typename Derived>
66 m_plus_a.reserve(m.size());
67 for (Eigen::Index dof_cntr = 0;
const auto & mi : m) {
77 Eigen::Index dof_cnts = 0;
79 dof_cnts =
static_cast<Eigen::Index
>(
traits::man<M>::Dof *
static_cast<Eigen::Index
>(m1.size()));
81 for (
auto i = 0u; i != m1.size(); ++i) { dof_cnts += ::smooth::dof<M>(m1[i]); }
84 Eigen::VectorX<Scalar> ret(dof_cnts);
86 for (Eigen::Index idx = 0;
const auto & [m1i, m2i] : utils::zip(m1, m2)) {
87 const auto & size_i = ::smooth::dof<M>(m1i);