diff --git a/Documentation/ProjectFile/properties/property/Exponential/c_Exponential.md b/Documentation/ProjectFile/properties/property/Exponential/c_Exponential.md index 2dbadd9b5ac3ae18cf87496605621ed37f24594f..4a437f4d947bf3c012ee5cba7d32a33363878a51 100644 --- a/Documentation/ProjectFile/properties/property/Exponential/c_Exponential.md +++ b/Documentation/ProjectFile/properties/property/Exponential/c_Exponential.md @@ -1,5 +1,5 @@ Definition of a exponential property: -\f$y(x) = y_{\textrm{ref}} \exp(m (x - x_{\textrm{ref}}))\f$ +\f$y(x) = y_{\textrm{offset}} + y_{\textrm{ref}} \exp(m (x - x_{\textrm{ref}}))\f$ where - \f$y_{\textrm{ref}}\f$ is a reference value, for instance reference viscosity - \f$m\f$ is a factor influencing the exponent of the exponential relationship diff --git a/Documentation/ProjectFile/properties/property/Exponential/t_offset.md b/Documentation/ProjectFile/properties/property/Exponential/t_offset.md new file mode 100644 index 0000000000000000000000000000000000000000..644bedda47604f56c79ed12ab590f0bac00bfc3b --- /dev/null +++ b/Documentation/ProjectFile/properties/property/Exponential/t_offset.md @@ -0,0 +1 @@ +\copydoc MaterialPropertyLib::Exponential::offset_ diff --git a/MaterialLib/MPL/Properties/CreateExponential.cpp b/MaterialLib/MPL/Properties/CreateExponential.cpp index 0db1a08f836f732b9aeb8596ccb370d132cc0105..24ef28fd45ef21e5dde23ef3a47dcc32253ee94b 100644 --- a/MaterialLib/MPL/Properties/CreateExponential.cpp +++ b/MaterialLib/MPL/Properties/CreateExponential.cpp @@ -44,6 +44,10 @@ std::unique_ptr<Exponential> createExponential( //! \ogs_file_param{properties__property__Exponential__exponent__factor} exponent_data_config.getConfigParameter<double>("factor"); + auto const offset = + //! \ogs_file_param{properties__property__Exponential__offset} + config.getConfigParameter<double>("offset"); + MaterialPropertyLib::Variable exp_data_type = MaterialPropertyLib::convertStringToVariable(variable_name); @@ -51,6 +55,6 @@ std::unique_ptr<Exponential> createExponential( exp_data_type, reference_condition, factor}; return std::make_unique<MaterialPropertyLib::Exponential>( - std::move(property_name), reference_value, exp_data); + std::move(property_name), offset, reference_value, exp_data); } } // namespace MaterialPropertyLib diff --git a/MaterialLib/MPL/Properties/Exponential.cpp b/MaterialLib/MPL/Properties/Exponential.cpp index dc9d0d50a950585487516f6bb4e2d4da7fd7c76d..982135398b7cccea5e6d1cb5bc21136b618989e9 100644 --- a/MaterialLib/MPL/Properties/Exponential.cpp +++ b/MaterialLib/MPL/Properties/Exponential.cpp @@ -16,9 +16,10 @@ namespace MaterialPropertyLib { Exponential::Exponential(std::string name, + double const offset, PropertyDataType const& property_reference_value, ExponentData const& v) - : exponent_data_(v) + : exponent_data_(v), offset_(offset) { name_ = std::move(name); auto const f = std::get<double>(exponent_data_.factor); @@ -35,7 +36,7 @@ PropertyDataType Exponential::value( auto const v = std::get<double>(variable_array[static_cast<int>(exponent_data_.type)]); - return std::get<double>(value_) * std::exp(f * v); + return offset_ + std::get<double>(value_) * std::exp(f * v); } PropertyDataType Exponential::dValue( diff --git a/MaterialLib/MPL/Properties/Exponential.h b/MaterialLib/MPL/Properties/Exponential.h index f63fa41131aaac3b49b37221d6b824b6d22f5f68..6c8148b7cfaec443dcf5aea36278051a0da5a914 100644 --- a/MaterialLib/MPL/Properties/Exponential.h +++ b/MaterialLib/MPL/Properties/Exponential.h @@ -22,7 +22,7 @@ struct ExponentData }; /// The exponential property class. This property calculates the exponential -/// relationship \f$ \alpha(\beta) = +/// relationship \f$ \alpha(\beta) = \alpha_{\mathrm{offset}} + /// \alpha_{\mathrm{ref}} \cdot \exp (-s (\beta - \beta_{\mathrm{ref}})\f$. /// The current implementation accepts only the double datatype defined in /// PropertyDataType. @@ -33,6 +33,7 @@ public: /// the PropertyDataType definition and sets the protected attribute value_ /// of the base class Property to that value. Exponential(std::string name, + double const offset, PropertyDataType const& property_reference_value, ExponentData const& v); /// This method computes the value of a property \f$\alpha\f$ depending @@ -57,5 +58,6 @@ public: private: ExponentData const exponent_data_; + double const offset_; //< additive offset in units of the property. }; } // namespace MaterialPropertyLib