From e403e11eeae3d37b34220582ce5f611e35edc603 Mon Sep 17 00:00:00 2001 From: Florian Zill <florian.zill@ufz.de> Date: Thu, 15 Aug 2019 17:03:37 +0200 Subject: [PATCH] [ML/SM] extended interface to get bulk modulus allows to fetch the bulk modulus inside a process without specifying a material model. Solid Materials without own implementation will cause an OGS_FATAL. --- MaterialLib/SolidModels/Ehlers.h | 6 ++++++ MaterialLib/SolidModels/LinearElasticIsotropic.h | 8 ++++++++ MaterialLib/SolidModels/Lubby2.h | 6 ++++++ MaterialLib/SolidModels/MechanicsBase.h | 7 +++++++ 4 files changed, 27 insertions(+) diff --git a/MaterialLib/SolidModels/Ehlers.h b/MaterialLib/SolidModels/Ehlers.h index 6e808c634c3..801c5b14927 100644 --- a/MaterialLib/SolidModels/Ehlers.h +++ b/MaterialLib/SolidModels/Ehlers.h @@ -330,6 +330,12 @@ public: return MaterialProperties(t, x, _mp); } + double getBulkModulus(double const t, + ParameterLib::SpatialPosition const& x) const override + { + return _mp.K(t, x)[0]; + } + DamageProperties evaluatedDamageProperties( double const t, ParameterLib::SpatialPosition const& x) const { diff --git a/MaterialLib/SolidModels/LinearElasticIsotropic.h b/MaterialLib/SolidModels/LinearElasticIsotropic.h index d0034a22a97..a1c03ec5cbb 100644 --- a/MaterialLib/SolidModels/LinearElasticIsotropic.h +++ b/MaterialLib/SolidModels/LinearElasticIsotropic.h @@ -104,6 +104,14 @@ public: MaterialProperties getMaterialProperties() const { return _mp; } + double getBulkModulus(double const t, + ParameterLib::SpatialPosition const& x) const override + { + return _mp.bulk_modulus(t, x); + } + + + protected: MaterialProperties _mp; }; diff --git a/MaterialLib/SolidModels/Lubby2.h b/MaterialLib/SolidModels/Lubby2.h index 9c88c65cc3a..b9823818d6b 100644 --- a/MaterialLib/SolidModels/Lubby2.h +++ b/MaterialLib/SolidModels/Lubby2.h @@ -155,6 +155,12 @@ public: new MaterialStateVariables}; } + double getBulkModulus(double const t, + ParameterLib::SpatialPosition const& x) const override + { + return _mp.KM0(t, x)[0]; + } + public: static int const KelvinVectorSize = MathLib::KelvinVector::KelvinVectorDimensions<DisplacementDim>::value; diff --git a/MaterialLib/SolidModels/MechanicsBase.h b/MaterialLib/SolidModels/MechanicsBase.h index d83b79681be..abfddd31c64 100644 --- a/MaterialLib/SolidModels/MechanicsBase.h +++ b/MaterialLib/SolidModels/MechanicsBase.h @@ -148,6 +148,13 @@ struct MechanicsBase return ConstitutiveModel::Invalid; } + virtual double getBulkModulus(double const /*t*/, + ParameterLib::SpatialPosition const& /*x*/) const + { + OGS_FATAL( + "getBulkModulus is not yet implemented for this Solid Material."); + } + /// Get temperature related coefficient for the global assembly if there is /// one. virtual double getTemperatureRelatedCoefficient( -- GitLab