From a1c4a044a1da44ea9655632caa63b2a130af86b7 Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Fri, 29 Sep 2023 16:05:06 +0200
Subject: [PATCH] Move Voigt notation helper code to a new file

---
 dune/microstructure/prestrainedMaterial.hh |  2 --
 dune/microstructure/voigthelper.hh         | 22 +++++++++++++++++-----
 2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/dune/microstructure/prestrainedMaterial.hh b/dune/microstructure/prestrainedMaterial.hh
index 8651815a..e2dcfc70 100644
--- a/dune/microstructure/prestrainedMaterial.hh
+++ b/dune/microstructure/prestrainedMaterial.hh
@@ -98,8 +98,6 @@ public:
   using MatrixFunc  = std::function< MatrixRT(const MatrixRT&) >;
   using MatrixPhase = std::function< MatrixRT(const int&) >;
 
-  // using VoigtMatrix = FieldMatrix< double, 6, 6>;
-
 protected:
 
   const GridView& gridView_;
diff --git a/dune/microstructure/voigthelper.hh b/dune/microstructure/voigthelper.hh
index db0bf17c..cf5063a6 100644
--- a/dune/microstructure/voigthelper.hh
+++ b/dune/microstructure/voigthelper.hh
@@ -17,27 +17,39 @@ using VoigtMatrix = Dune::FieldMatrix<T,dim*(dim+1)/2,dim*(dim+1)/2>;
 
 
 template<typename T>
-static VoigtVector<T,3> strainToVoigt(const Dune::FieldMatrix<T,3,3>& G)
+VoigtVector<T,3> matrixToVoigt(const Dune::FieldMatrix<T,3,3>& matrix)
 {
-  return {G[0][0], G[1][1], G[2][2], 2.0*G[1][2], 2.0*G[0][2], 2.0*G[0][1]};
+  return {matrix[0][0], matrix[1][1], matrix[2][2], 2.0*matrix[1][2], 2.0*matrix[0][2], 2.0*matrix[0][1]};
 }
 
 template<typename T>
-static Dune::FieldMatrix<T,3,3> voigtToStrain(const VoigtVector<T,3>& v)
+Dune::FieldMatrix<T,3,3> voigtToMatrix(const VoigtVector<T,3>& v)
 {
   return {{v[0], v[5]/2.0, v[4]/2.0}, {v[5]/2.0, v[1], v[3]/2.0}, {v[4]/2.0, v[3]/2.0, v[2]}};
 }
 
 template<typename T>
-static VoigtVector<T,3> stressToVoigt(const Dune::FieldMatrix<T,3,3>& G)
+VoigtVector<T,3> strainToVoigt(const Dune::FieldMatrix<T,3,3>& G)
+{
+  return {G[0][0], G[1][1], G[2][2], 2.0*G[1][2], 2.0*G[0][2], 2.0*G[0][1]};
+}
+
+template<typename T>
+VoigtVector<T,3> stressToVoigt(const Dune::FieldMatrix<T,3,3>& G)
 {
   return {G[0][0], G[1][1], G[2][2], G[1][2], G[0][2], G[0][1]};
 }
 
 template<typename T>
-static Dune::FieldMatrix<T,3,3> voigtToStress(const VoigtVector<T,3>& v)
+Dune::FieldMatrix<T,3,3> voigtToStress(const VoigtVector<T,3>& v)
 {
   return {{v[0], v[5], v[4]}, {v[5], v[1], v[3]}, {v[4], v[3], v[2]}};
 }
 
+template<typename T>
+Dune::FieldMatrix<T,3,3> voigtToStrain(const Dune::FieldVector<T,6>& v)
+{
+  return {{v[0], v[5]/2.0, v[4]/2.0}, {v[5]/2.0, v[1], v[3]/2.0}, {v[4]/2.0, v[3]/2.0, v[2]}};
+}
+
 #endif   // DUNE_MICROSTRUCTURE_VOIGTHELPER_HH
-- 
GitLab