From a724b08b1ba0f35b9b51f72eafa6113073b252cb Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <github@naumov.de>
Date: Sat, 15 Jun 2019 13:15:16 +0200
Subject: [PATCH] [MatL] Solids; Drop some unused MaterialStateVars.

If there are no additional members in the MaterialStateVariables,
the default implementation from MechanicsBase is sufficient.

Needed to update the integrateStress return value type.
---
 .../SolidModels/LinearElasticIsotropic.cpp    | 15 ++++++-------
 .../SolidModels/LinearElasticIsotropic.h      | 14 +++++--------
 .../SolidModels/LinearElasticOrthotropic.cpp  | 21 ++++++++-----------
 .../SolidModels/LinearElasticOrthotropic.h    | 14 +++++--------
 4 files changed, 25 insertions(+), 39 deletions(-)

diff --git a/MaterialLib/SolidModels/LinearElasticIsotropic.cpp b/MaterialLib/SolidModels/LinearElasticIsotropic.cpp
index 03c08c56f16..306a439d6eb 100644
--- a/MaterialLib/SolidModels/LinearElasticIsotropic.cpp
+++ b/MaterialLib/SolidModels/LinearElasticIsotropic.cpp
@@ -15,16 +15,16 @@ namespace Solids
 {
 template <int DisplacementDim>
 boost::optional<
-    std::tuple<typename LinearElasticIsotropic<DisplacementDim>::KelvinVector,
+    std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector,
                std::unique_ptr<typename MechanicsBase<
                    DisplacementDim>::MaterialStateVariables>,
-               typename LinearElasticIsotropic<DisplacementDim>::KelvinMatrix>>
+               typename MechanicsBase<DisplacementDim>::KelvinMatrix>>
 LinearElasticIsotropic<DisplacementDim>::integrateStress(
     double const t, ParameterLib::SpatialPosition const& x, double const /*dt*/,
     KelvinVector const& eps_prev, KelvinVector const& eps,
     KelvinVector const& sigma_prev,
-    typename MechanicsBase<DisplacementDim>::MaterialStateVariables const&
-        material_state_variables,
+    typename MechanicsBase<DisplacementDim>::
+        MaterialStateVariables const& /*material_state_variables*/,
     double const T) const
 {
     KelvinMatrix C = getElasticTensor(t, x, T);
@@ -33,11 +33,8 @@ LinearElasticIsotropic<DisplacementDim>::integrateStress(
 
     return {std::make_tuple(
         sigma,
-        std::unique_ptr<
-            typename MechanicsBase<DisplacementDim>::MaterialStateVariables>{
-            new MaterialStateVariables{
-                static_cast<MaterialStateVariables const&>(
-                    material_state_variables)}},
+        std::make_unique<
+            typename MechanicsBase<DisplacementDim>::MaterialStateVariables>(),
         C)};
 }
 
diff --git a/MaterialLib/SolidModels/LinearElasticIsotropic.h b/MaterialLib/SolidModels/LinearElasticIsotropic.h
index f554bb1af78..d0034a22a97 100644
--- a/MaterialLib/SolidModels/LinearElasticIsotropic.h
+++ b/MaterialLib/SolidModels/LinearElasticIsotropic.h
@@ -59,11 +59,6 @@ public:
         P const& _poissons_ratio;
     };
 
-    struct MaterialStateVariables
-        : public MechanicsBase<DisplacementDim>::MaterialStateVariables
-    {
-    };
-
 public:
     static int const KelvinVectorSize =
         MathLib::KelvinVector::KelvinVectorDimensions<DisplacementDim>::value;
@@ -90,10 +85,11 @@ public:
         return eps.dot(sigma) / 2;
     }
 
-    boost::optional<std::tuple<KelvinVector,
-                               std::unique_ptr<typename MechanicsBase<
-                                   DisplacementDim>::MaterialStateVariables>,
-                               KelvinMatrix>>
+    boost::optional<
+        std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector,
+                   std::unique_ptr<typename MechanicsBase<
+                       DisplacementDim>::MaterialStateVariables>,
+                   typename MechanicsBase<DisplacementDim>::KelvinMatrix>>
     integrateStress(
         double const t, ParameterLib::SpatialPosition const& x,
         double const /*dt*/, KelvinVector const& eps_prev,
diff --git a/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp b/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp
index d41bf03e1f2..d4b0dd3076e 100644
--- a/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp
+++ b/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp
@@ -17,17 +17,17 @@ namespace MaterialLib
 namespace Solids
 {
 template <int DisplacementDim>
-boost::optional<std::tuple<
-    typename LinearElasticOrthotropic<DisplacementDim>::KelvinVector,
-    std::unique_ptr<
-        typename MechanicsBase<DisplacementDim>::MaterialStateVariables>,
-    typename LinearElasticOrthotropic<DisplacementDim>::KelvinMatrix>>
+boost::optional<
+    std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector,
+               std::unique_ptr<typename MechanicsBase<
+                   DisplacementDim>::MaterialStateVariables>,
+               typename MechanicsBase<DisplacementDim>::KelvinMatrix>>
 LinearElasticOrthotropic<DisplacementDim>::integrateStress(
     double const t, ParameterLib::SpatialPosition const& x, double const /*dt*/,
     KelvinVector const& eps_prev, KelvinVector const& eps,
     KelvinVector const& sigma_prev,
-    typename MechanicsBase<DisplacementDim>::MaterialStateVariables const&
-        material_state_variables,
+    typename MechanicsBase<DisplacementDim>::
+        MaterialStateVariables const& /* material_state_variables */,
     double const T) const
 {
     KelvinMatrix C = getElasticTensor(t, x, T);
@@ -36,11 +36,8 @@ LinearElasticOrthotropic<DisplacementDim>::integrateStress(
 
     return {std::make_tuple(
         sigma,
-        std::unique_ptr<
-            typename MechanicsBase<DisplacementDim>::MaterialStateVariables>{
-            new MaterialStateVariables{
-                static_cast<MaterialStateVariables const&>(
-                    material_state_variables)}},
+        std::make_unique<
+            typename MechanicsBase<DisplacementDim>::MaterialStateVariables>(),
         C)};
 }
 
diff --git a/MaterialLib/SolidModels/LinearElasticOrthotropic.h b/MaterialLib/SolidModels/LinearElasticOrthotropic.h
index 2888048ffde..524ce694f4b 100644
--- a/MaterialLib/SolidModels/LinearElasticOrthotropic.h
+++ b/MaterialLib/SolidModels/LinearElasticOrthotropic.h
@@ -123,11 +123,6 @@ public:
         P const& poissons_ratios;  // Stored as nu_12, nu_23, nu_13
     };
 
-    struct MaterialStateVariables
-        : public MechanicsBase<DisplacementDim>::MaterialStateVariables
-    {
-    };
-
 public:
     static int const KelvinVectorSize =
         MathLib::KelvinVector::KelvinVectorDimensions<DisplacementDim>::value;
@@ -158,10 +153,11 @@ public:
         return eps.dot(sigma) / 2;
     }
 
-    boost::optional<std::tuple<KelvinVector,
-                               std::unique_ptr<typename MechanicsBase<
-                                   DisplacementDim>::MaterialStateVariables>,
-                               KelvinMatrix>>
+    boost::optional<
+        std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector,
+                   std::unique_ptr<typename MechanicsBase<
+                       DisplacementDim>::MaterialStateVariables>,
+                   typename MechanicsBase<DisplacementDim>::KelvinMatrix>>
     integrateStress(
         double const t, ParameterLib::SpatialPosition const& x,
         double const /*dt*/, KelvinVector const& eps_prev,
-- 
GitLab