From 53a892f4ce2f133e4d00534d33ad4329e5c0ccb2 Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <dmitri.naumov@ufz.de> Date: Thu, 5 Dec 2019 18:05:46 +0100 Subject: [PATCH] [MatL] Use std::optional in SolidModels. --- MaterialLib/SolidModels/CreepBGRa.cpp | 8 ++++---- MaterialLib/SolidModels/CreepBGRa.h | 8 ++++---- MaterialLib/SolidModels/Ehlers.cpp | 8 ++++---- MaterialLib/SolidModels/Ehlers.h | 2 +- MaterialLib/SolidModels/LinearElasticIsotropic.cpp | 9 ++++----- MaterialLib/SolidModels/LinearElasticIsotropic.h | 2 +- .../SolidModels/LinearElasticOrthotropic.cpp | 2 +- MaterialLib/SolidModels/LinearElasticOrthotropic.h | 2 +- MaterialLib/SolidModels/Lubby2.cpp | 8 ++++---- MaterialLib/SolidModels/Lubby2.h | 8 ++++---- MaterialLib/SolidModels/MFront/MFront.cpp | 14 ++++++-------- MaterialLib/SolidModels/MFront/MFront.h | 8 ++++---- MaterialLib/SolidModels/MechanicsBase.h | 6 +++--- Tests/MaterialLib/MFront.cpp | 4 ++-- 14 files changed, 43 insertions(+), 46 deletions(-) diff --git a/MaterialLib/SolidModels/CreepBGRa.cpp b/MaterialLib/SolidModels/CreepBGRa.cpp index 2443ddcfe58..0d309746ee4 100644 --- a/MaterialLib/SolidModels/CreepBGRa.cpp +++ b/MaterialLib/SolidModels/CreepBGRa.cpp @@ -29,10 +29,10 @@ double getCreepConstantCoefficient(const double A, const double n, } template <int DisplacementDim> -boost::optional<std::tuple<typename CreepBGRa<DisplacementDim>::KelvinVector, - std::unique_ptr<typename MechanicsBase< - DisplacementDim>::MaterialStateVariables>, - typename CreepBGRa<DisplacementDim>::KelvinMatrix>> +std::optional<std::tuple<typename CreepBGRa<DisplacementDim>::KelvinVector, + std::unique_ptr<typename MechanicsBase< + DisplacementDim>::MaterialStateVariables>, + typename CreepBGRa<DisplacementDim>::KelvinMatrix>> CreepBGRa<DisplacementDim>::integrateStress( double const t, ParameterLib::SpatialPosition const& x, double const dt, KelvinVector const& eps_prev, KelvinVector const& eps, diff --git a/MaterialLib/SolidModels/CreepBGRa.h b/MaterialLib/SolidModels/CreepBGRa.h index a2f5a9767af..7dcbb8b3c00 100644 --- a/MaterialLib/SolidModels/CreepBGRa.h +++ b/MaterialLib/SolidModels/CreepBGRa.h @@ -73,10 +73,10 @@ public: { } - boost::optional<std::tuple<KelvinVector, - std::unique_ptr<typename MechanicsBase< - DisplacementDim>::MaterialStateVariables>, - KelvinMatrix>> + std::optional<std::tuple<KelvinVector, + std::unique_ptr<typename MechanicsBase< + DisplacementDim>::MaterialStateVariables>, + KelvinMatrix>> integrateStress( double const t, ParameterLib::SpatialPosition const& x, double const dt, KelvinVector const& eps_prev, KelvinVector const& eps, diff --git a/MaterialLib/SolidModels/Ehlers.cpp b/MaterialLib/SolidModels/Ehlers.cpp index 89951196bc0..ca0e5873ceb 100644 --- a/MaterialLib/SolidModels/Ehlers.cpp +++ b/MaterialLib/SolidModels/Ehlers.cpp @@ -502,10 +502,10 @@ double SolidEhlers<DisplacementDim>::computeFreeEnergyDensity( } template <int DisplacementDim> -boost::optional<std::tuple<typename SolidEhlers<DisplacementDim>::KelvinVector, - std::unique_ptr<typename MechanicsBase< - DisplacementDim>::MaterialStateVariables>, - typename SolidEhlers<DisplacementDim>::KelvinMatrix>> +std::optional<std::tuple<typename SolidEhlers<DisplacementDim>::KelvinVector, + std::unique_ptr<typename MechanicsBase< + DisplacementDim>::MaterialStateVariables>, + typename SolidEhlers<DisplacementDim>::KelvinMatrix>> SolidEhlers<DisplacementDim>::integrateStress( double const t, ParameterLib::SpatialPosition const& x, double const dt, KelvinVector const& eps_prev, KelvinVector const& eps, diff --git a/MaterialLib/SolidModels/Ehlers.h b/MaterialLib/SolidModels/Ehlers.h index 801c5b14927..772cdd9addf 100644 --- a/MaterialLib/SolidModels/Ehlers.h +++ b/MaterialLib/SolidModels/Ehlers.h @@ -309,7 +309,7 @@ public: typename MechanicsBase<DisplacementDim>::MaterialStateVariables const& material_state_variables) const override; - boost::optional<std::tuple<KelvinVector, + std::optional<std::tuple<KelvinVector, std::unique_ptr<typename MechanicsBase< DisplacementDim>::MaterialStateVariables>, KelvinMatrix>> diff --git a/MaterialLib/SolidModels/LinearElasticIsotropic.cpp b/MaterialLib/SolidModels/LinearElasticIsotropic.cpp index 29c3748c0fa..56afd3e4b07 100644 --- a/MaterialLib/SolidModels/LinearElasticIsotropic.cpp +++ b/MaterialLib/SolidModels/LinearElasticIsotropic.cpp @@ -14,11 +14,10 @@ namespace MaterialLib namespace Solids { template <int DisplacementDim> -boost::optional< - std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector, - std::unique_ptr<typename MechanicsBase< - DisplacementDim>::MaterialStateVariables>, - typename MechanicsBase<DisplacementDim>::KelvinMatrix>> +std::optional<std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector, + std::unique_ptr<typename MechanicsBase< + DisplacementDim>::MaterialStateVariables>, + typename MechanicsBase<DisplacementDim>::KelvinMatrix>> LinearElasticIsotropic<DisplacementDim>::integrateStress( double const t, ParameterLib::SpatialPosition const& x, double const /*dt*/, KelvinVector const& eps_prev, KelvinVector const& eps, diff --git a/MaterialLib/SolidModels/LinearElasticIsotropic.h b/MaterialLib/SolidModels/LinearElasticIsotropic.h index adb693226de..4b12e18c78e 100644 --- a/MaterialLib/SolidModels/LinearElasticIsotropic.h +++ b/MaterialLib/SolidModels/LinearElasticIsotropic.h @@ -85,7 +85,7 @@ public: return eps.dot(sigma) / 2; } - boost::optional< + std::optional< std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector, std::unique_ptr<typename MechanicsBase< DisplacementDim>::MaterialStateVariables>, diff --git a/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp b/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp index cb3c54c4131..a44e6ae2a39 100644 --- a/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp +++ b/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp @@ -16,7 +16,7 @@ namespace MaterialLib namespace Solids { template <int DisplacementDim> -boost::optional< +std::optional< std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector, std::unique_ptr<typename MechanicsBase< DisplacementDim>::MaterialStateVariables>, diff --git a/MaterialLib/SolidModels/LinearElasticOrthotropic.h b/MaterialLib/SolidModels/LinearElasticOrthotropic.h index ec06f133362..812d10b6ebf 100644 --- a/MaterialLib/SolidModels/LinearElasticOrthotropic.h +++ b/MaterialLib/SolidModels/LinearElasticOrthotropic.h @@ -152,7 +152,7 @@ public: return eps.dot(sigma) / 2; } - boost::optional< + std::optional< std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector, std::unique_ptr<typename MechanicsBase< DisplacementDim>::MaterialStateVariables>, diff --git a/MaterialLib/SolidModels/Lubby2.cpp b/MaterialLib/SolidModels/Lubby2.cpp index 68a33b4e0c3..ffdc97bfa8b 100644 --- a/MaterialLib/SolidModels/Lubby2.cpp +++ b/MaterialLib/SolidModels/Lubby2.cpp @@ -67,10 +67,10 @@ MathLib::KelvinVector::KelvinMatrixType<DisplacementDim> tangentStiffnessA( }; template <int DisplacementDim> -boost::optional<std::tuple<typename Lubby2<DisplacementDim>::KelvinVector, - std::unique_ptr<typename MechanicsBase< - DisplacementDim>::MaterialStateVariables>, - typename Lubby2<DisplacementDim>::KelvinMatrix>> +std::optional<std::tuple<typename Lubby2<DisplacementDim>::KelvinVector, + std::unique_ptr<typename MechanicsBase< + DisplacementDim>::MaterialStateVariables>, + typename Lubby2<DisplacementDim>::KelvinMatrix>> Lubby2<DisplacementDim>::integrateStress( double const t, ParameterLib::SpatialPosition const& x, double const dt, KelvinVector const& eps_prev, KelvinVector const& eps, diff --git a/MaterialLib/SolidModels/Lubby2.h b/MaterialLib/SolidModels/Lubby2.h index c9a74fc5fb3..65cc281663e 100644 --- a/MaterialLib/SolidModels/Lubby2.h +++ b/MaterialLib/SolidModels/Lubby2.h @@ -229,10 +229,10 @@ public: eps_K.dot(sigma - eta_K * (eps_K - eps_K_prev) / dt) / 2; } - boost::optional<std::tuple<KelvinVector, - std::unique_ptr<typename MechanicsBase< - DisplacementDim>::MaterialStateVariables>, - KelvinMatrix>> + std::optional<std::tuple<KelvinVector, + std::unique_ptr<typename MechanicsBase< + DisplacementDim>::MaterialStateVariables>, + KelvinMatrix>> integrateStress( double const t, ParameterLib::SpatialPosition const& x, double const dt, KelvinVector const& eps_prev, KelvinVector const& eps, diff --git a/MaterialLib/SolidModels/MFront/MFront.cpp b/MaterialLib/SolidModels/MFront/MFront.cpp index b80e6fa879d..f74b48a5957 100644 --- a/MaterialLib/SolidModels/MFront/MFront.cpp +++ b/MaterialLib/SolidModels/MFront/MFront.cpp @@ -246,10 +246,10 @@ MFront<DisplacementDim>::createMaterialStateVariables() const } template <int DisplacementDim> -boost::optional<std::tuple<typename MFront<DisplacementDim>::KelvinVector, - std::unique_ptr<typename MechanicsBase< - DisplacementDim>::MaterialStateVariables>, - typename MFront<DisplacementDim>::KelvinMatrix>> +std::optional<std::tuple<typename MFront<DisplacementDim>::KelvinVector, + std::unique_ptr<typename MechanicsBase< + DisplacementDim>::MaterialStateVariables>, + typename MFront<DisplacementDim>::KelvinMatrix>> MFront<DisplacementDim>::integrateStress( double const t, ParameterLib::SpatialPosition const& x, @@ -335,14 +335,12 @@ MFront<DisplacementDim>::integrateStress( KelvinMatrix C = MFrontToOGS(Eigen::Map<KelvinMatrix>(behaviour_data.K.data())); - return boost::make_optional( + return std::make_optional( std::make_tuple<typename MFront<DisplacementDim>::KelvinVector, std::unique_ptr<typename MechanicsBase< DisplacementDim>::MaterialStateVariables>, typename MFront<DisplacementDim>::KelvinMatrix>( - std::move(sigma), - std::move(state), - std::move(C))); + std::move(sigma), std::move(state), std::move(C))); } template <int DisplacementDim> diff --git a/MaterialLib/SolidModels/MFront/MFront.h b/MaterialLib/SolidModels/MFront/MFront.h index d57ef00d640..d2b3a6487b4 100644 --- a/MaterialLib/SolidModels/MFront/MFront.h +++ b/MaterialLib/SolidModels/MFront/MFront.h @@ -72,10 +72,10 @@ public: typename MechanicsBase<DisplacementDim>::MaterialStateVariables> createMaterialStateVariables() const override; - boost::optional<std::tuple<KelvinVector, - std::unique_ptr<typename MechanicsBase< - DisplacementDim>::MaterialStateVariables>, - KelvinMatrix>> + std::optional<std::tuple<KelvinVector, + std::unique_ptr<typename MechanicsBase< + DisplacementDim>::MaterialStateVariables>, + KelvinMatrix>> integrateStress( double const t, ParameterLib::SpatialPosition const& x, diff --git a/MaterialLib/SolidModels/MechanicsBase.h b/MaterialLib/SolidModels/MechanicsBase.h index 61497d560c1..5a79df80b30 100644 --- a/MaterialLib/SolidModels/MechanicsBase.h +++ b/MaterialLib/SolidModels/MechanicsBase.h @@ -9,7 +9,7 @@ #pragma once -#include <boost/optional.hpp> +#include <optional> #include <functional> #include <memory> #include <tuple> @@ -77,7 +77,7 @@ struct MechanicsBase /// constitutive relation compute function. /// Returns nothing in case of errors in the computation if Newton /// iterations did not converge, for example. - boost::optional<std::tuple< + std::optional<std::tuple< KelvinVector, std::unique_ptr<MaterialStateVariables>, KelvinMatrix>> integrateStress(double const t, ParameterLib::SpatialPosition const& x, @@ -108,7 +108,7 @@ struct MechanicsBase /// wrapper function. /// Returns nothing in case of errors in the computation if Newton /// iterations did not converge, for example. - virtual boost::optional<std::tuple< + virtual std::optional<std::tuple< KelvinVector, std::unique_ptr<MaterialStateVariables>, KelvinMatrix>> integrateStress(double const t, ParameterLib::SpatialPosition const& x, diff --git a/Tests/MaterialLib/MFront.cpp b/Tests/MaterialLib/MFront.cpp index 4c92ea5b52a..e1d545af7ac 100644 --- a/Tests/MaterialLib/MFront.cpp +++ b/Tests/MaterialLib/MFront.cpp @@ -158,7 +158,7 @@ TYPED_TEST(MaterialLib_SolidModelsMFront2, IntegrateZeroDisplacement) this->t, this->x, this->dt, this->eps_prev, this->eps, this->sigma_prev, *state, this->T); - ASSERT_TRUE(solution != boost::none); + ASSERT_TRUE(solution != std::nullopt); state = std::move(std::get<1>(*solution)); ASSERT_TRUE(state != nullptr); state.reset(nullptr); @@ -174,7 +174,7 @@ TYPED_TEST(MaterialLib_SolidModelsMFront3, IntegrateZeroDisplacement) this->t, this->x, this->dt, this->eps_prev, this->eps, this->sigma_prev, *state, this->T); - ASSERT_TRUE(solution != boost::none); + ASSERT_TRUE(solution != std::nullopt); state = std::move(std::get<1>(*solution)); ASSERT_TRUE(state != nullptr); state.reset(nullptr); -- GitLab