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