From 093d939d75601e9f1390c6e87d0764399bef7d02 Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Tue, 9 Aug 2022 12:09:17 +0200 Subject: [PATCH] [PL] Transposition of ip data in a std::vector --- ProcessLib/Utils/TransposeInPlace.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ProcessLib/Utils/TransposeInPlace.h b/ProcessLib/Utils/TransposeInPlace.h index 163ebf9713f..6b8b338ef5a 100644 --- a/ProcessLib/Utils/TransposeInPlace.h +++ b/ProcessLib/Utils/TransposeInPlace.h @@ -37,4 +37,32 @@ std::vector<double> transposeInPlace( return result; } +template <int Components> +void transposeInPlace(std::vector<double>& values) +{ + MathLib::toMatrix< + Eigen::Matrix<double, Eigen::Dynamic, Components, Eigen::RowMajor>>( + values, values.size() / Components, Components) = + MathLib::toMatrix< + Eigen::Matrix<double, Components, Eigen::Dynamic, Eigen::RowMajor>>( + values, Components, values.size() / Components) + .transpose() + .eval(); +} + +inline void transposeInPlace(std::vector<double>& values, + unsigned const num_components) +{ + MathLib::toMatrix< + Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>>( + values, values.size() / num_components, num_components) = + MathLib::toMatrix<Eigen::Matrix<double, + Eigen::Dynamic, + Eigen::Dynamic, + Eigen::RowMajor>>( + values, num_components, values.size() / num_components) + .transpose() + .eval(); +} + } // namespace ProcessLib -- GitLab