Skip to content
Snippets Groups Projects
Commit 30971004 authored by joergbuchwald's avatar joergbuchwald Committed by Dmitri Naumov
Browse files

split-up rotate tensor function

parent d1672327
No related branches found
No related tags found
No related merge requests found
...@@ -293,8 +293,7 @@ Eigen::Matrix<double, Dimension, Dimension> CoordinateSystem::rotateTensor( ...@@ -293,8 +293,7 @@ Eigen::Matrix<double, Dimension, Dimension> CoordinateSystem::rotateTensor(
auto const tensor = auto const tensor =
Eigen::Map<Eigen::Matrix<double, Dimension, Dimension> const>( Eigen::Map<Eigen::Matrix<double, Dimension, Dimension> const>(
values.data(), Dimension, Dimension); values.data(), Dimension, Dimension);
auto const R = transformation<Dimension>(pos); return rotateTensor<Dimension>(tensor, pos);
return R * tensor * R.transpose();
} }
template <int Dimension> template <int Dimension>
......
...@@ -72,6 +72,11 @@ struct CoordinateSystem final ...@@ -72,6 +72,11 @@ struct CoordinateSystem final
Eigen::Matrix<double, Dimension, Dimension> rotateTensor( Eigen::Matrix<double, Dimension, Dimension> rotateTensor(
std::vector<double> const& values, SpatialPosition const& pos) const; std::vector<double> const& values, SpatialPosition const& pos) const;
template <int Dimension, typename Derived>
Eigen::Matrix<double, Dimension, Dimension> rotateTensor(
Eigen::MatrixBase<Derived> const& tensor,
SpatialPosition const& pos) const;
template <int Dimension> template <int Dimension>
Eigen::Matrix<double, Dimension, Dimension> rotateDiagonalTensor( Eigen::Matrix<double, Dimension, Dimension> rotateDiagonalTensor(
std::vector<double> const& values, SpatialPosition const& pos) const; std::vector<double> const& values, SpatialPosition const& pos) const;
...@@ -84,6 +89,14 @@ private: ...@@ -84,6 +89,14 @@ private:
SpatialPosition const& pos) const; SpatialPosition const& pos) const;
}; };
template <int Dimension, typename Derived>
Eigen::Matrix<double, Dimension, Dimension> CoordinateSystem::rotateTensor(
Eigen::MatrixBase<Derived> const& tensor, SpatialPosition const& pos) const
{
auto const R = transformation<Dimension>(pos);
return R * tensor * R.transpose();
}
extern template Eigen::Matrix<double, 2, 2> CoordinateSystem::rotateTensor<2>( extern template Eigen::Matrix<double, 2, 2> CoordinateSystem::rotateTensor<2>(
std::vector<double> const& values, SpatialPosition const& pos) const; std::vector<double> const& values, SpatialPosition const& pos) const;
extern template Eigen::Matrix<double, 3, 3> CoordinateSystem::rotateTensor<3>( extern template Eigen::Matrix<double, 3, 3> CoordinateSystem::rotateTensor<3>(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment