OGS
MaterialPropertyLib::SaturationWeightedThermalConductivity< MeantType, GlobalDimension > Class Template Referencefinal

Detailed Description

template<MeanType MeantType, int GlobalDimension>
class MaterialPropertyLib::SaturationWeightedThermalConductivity< MeantType, GlobalDimension >

Saturation dependent thermal conductivity model for soil.

The arithmetic_squareroot model is proposed by Somerton, W.~H. et al. [38], which takes the form of

\[ \lambda = \lambda_{\text{dry}} + \sqrt{S}(\lambda_{\text{wet}}- \lambda_{\text{dry}}), \]

. The arithmetic_linear model is linear in the saturation and has the form

\[ \lambda = \lambda_{\text{dry}} + S(\lambda_{\text{wet}}-\lambda_{\text{dry}}), \]

The geometric model uses the weighted geometric mean

\[ \lambda = \lambda_{\text{dry}}^{1-S} * \lambda_{\text{wet}}^S, \]

where \(\lambda_{\text{dry}}\) is the thermal conductivity of soil at the dry state, \(\lambda_{\text{wet}}\) is the thermal conductivity of soil at the fully water saturated state, and \(S\) is the water saturation.

Definition at line 46 of file SaturationWeightedThermalConductivity.h.

#include <SaturationWeightedThermalConductivity.h>

Inheritance diagram for MaterialPropertyLib::SaturationWeightedThermalConductivity< MeantType, GlobalDimension >:
[legend]
Collaboration diagram for MaterialPropertyLib::SaturationWeightedThermalConductivity< MeantType, GlobalDimension >:
[legend]

Public Member Functions

 SaturationWeightedThermalConductivity (std::string name, ParameterLib::Parameter< double > const &dry_thermal_conductivity, ParameterLib::Parameter< double > const &wet_thermal_conductivity)
void checkScale () const override
PropertyDataType value (VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
PropertyDataType dValue (VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
Public Member Functions inherited from MaterialPropertyLib::Property
virtual ~Property ()
virtual PropertyDataType initialValue (ParameterLib::SpatialPosition const &pos, double const t) const
virtual PropertyDataType value () const
virtual PropertyDataType value (VariableArray const &variable_array, VariableArray const &variable_array_prev, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const
virtual PropertyDataType dValue (VariableArray const &variable_array, VariableArray const &variable_array_prev, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const
virtual PropertyDataType d2Value (VariableArray const &variable_array, Variable const variable1, Variable const variable2, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const
 Default implementation: 2nd derivative of any constant property is zero.
virtual void setProperties (std::vector< std::unique_ptr< Phase > > const &phases)
 Default implementation:
void setScale (std::variant< Medium *, Phase *, Component * > scale)
template<typename T>
initialValue (ParameterLib::SpatialPosition const &pos, double const t) const
template<typename T>
value () const
template<typename T>
value (VariableArray const &variable_array, VariableArray const &variable_array_prev, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const
template<typename T>
value (VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const
template<typename T>
dValue (VariableArray const &variable_array, VariableArray const &variable_array_prev, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const
template<typename T>
dValue (VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const
template<typename T>
d2Value (VariableArray const &variable_array, Variable const &variable1, Variable const &variable2, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const

Private Attributes

ParameterLib::Parameter< double > const & dry_thermal_conductivity_
 Thermal conductivity of soil at the dry state.
ParameterLib::Parameter< double > const & wet_thermal_conductivity_
 Thermal conductivity of soil at the fully water saturated state.

Additional Inherited Members

Protected Attributes inherited from MaterialPropertyLib::Property
std::string name_
PropertyDataType value_
 The single value of a property.
PropertyDataType dvalue_
std::variant< Medium *, Phase *, Component * > scale_

Constructor & Destructor Documentation

◆ SaturationWeightedThermalConductivity()

template<MeanType MeanType, int GlobalDimension>
MaterialPropertyLib::SaturationWeightedThermalConductivity< MeanType, GlobalDimension >::SaturationWeightedThermalConductivity ( std::string name,
ParameterLib::Parameter< double > const & dry_thermal_conductivity,
ParameterLib::Parameter< double > const & wet_thermal_conductivity )

Definition at line 76 of file SaturationWeightedThermalConductivity.cpp.

83{
85
88
91
92 if (lambda_dry.size() != lambda_wet.size())
93 {
95 "In 'SaturationWeightedThermalConductivity' input data, the data "
96 "size of "
97 "dry_thermal_conductivity of '{:d}' is different from that of "
98 "dry_thermal_conductivity of '{:d}'.",
99 lambda_dry.size(), lambda_wet.size());
100 }
101
102 for (std::size_t i = 0; i < lambda_dry.size(); i++)
103 {
104 if (lambda_dry[i] > lambda_wet[i])
105 {
106 OGS_FATAL(
107 "In 'SaturationWeightedThermalConductivity', "
108 "dry_thermal_conductivity of '{:g}' is larger than "
109 "wet_thermal_conductivity of '{:g}'.",
111 }
112 }
113 if constexpr (MeanType == MeanType::GEOMETRIC)
114 {
115 if (lambda_dry.size() != 1 && lambda_dry.size() != GlobalDimension)
116 {
117 OGS_FATAL(
118 "The saturation weighted geometric mean"
119 "is not implemented for arbitrary anisotropic thermal "
120 "conductivities and requires to be in diagonal shape.");
121 }
122 }
123}
#define OGS_FATAL(...)
Definition Error.h:19
Saturation dependent thermal conductivity model for soil.
ParameterLib::Parameter< double > const & wet_thermal_conductivity_
Thermal conductivity of soil at the fully water saturated state.
ParameterLib::Parameter< double > const & dry_thermal_conductivity_
Thermal conductivity of soil at the dry state.

References dry_thermal_conductivity_, MaterialPropertyLib::GEOMETRIC, MaterialPropertyLib::name, MaterialPropertyLib::Property::name_, OGS_FATAL, and wet_thermal_conductivity_.

Member Function Documentation

◆ checkScale()

template<MeanType MeantType, int GlobalDimension>
void MaterialPropertyLib::SaturationWeightedThermalConductivity< MeantType, GlobalDimension >::checkScale ( ) const
inlineoverridevirtual

Reimplemented from MaterialPropertyLib::Property.

Definition at line 54 of file SaturationWeightedThermalConductivity.h.

55 {
57 {
59 "The property 'SaturationWeightedThermalConductivity' is "
60 "implemented on the 'media' scale only.");
61 }
62 }
std::variant< Medium *, Phase *, Component * > scale_

References OGS_FATAL, and MaterialPropertyLib::Property::scale_.

◆ dValue()

template<MeanType MeanType, int GlobalDimension>
PropertyDataType MaterialPropertyLib::SaturationWeightedThermalConductivity< MeanType, GlobalDimension >::dValue ( VariableArray const & variable_array,
Variable const variable,
ParameterLib::SpatialPosition const & pos,
double const t,
double const dt ) const
overridevirtual

This virtual method will compute the property derivative value based on the variables that are passed as arguments with the default implementation using empty variables array for the previous time step.

The default implementation of this method only returns the property value derivative without altering it.

Reimplemented from MaterialPropertyLib::Property.

Definition at line 156 of file SaturationWeightedThermalConductivity.cpp.

160{
162 {
163 OGS_FATAL(
164 "SaturationWeightedThermalConductivity::dValue is implemented for "
165 "derivatives with respect to liquid saturation only.");
166 }
167
168 double const S_L = variable_array.liquid_saturation;
169
171
173 if (S_L <= 0.0 || S_L > 1.0)
174 {
176 }
177 for (std::size_t i = 0; i < lambda_dry_data.size(); i++)
178 {
181 }
183}
PropertyDataType fromVector(std::vector< double > const &values)
double computeDAverage(const double, double const, double const)=delete

References MaterialPropertyLib::computeDAverage(), dry_thermal_conductivity_, MaterialPropertyLib::fromVector(), MaterialPropertyLib::liquid_saturation, MaterialPropertyLib::VariableArray::liquid_saturation, OGS_FATAL, and wet_thermal_conductivity_.

◆ value()

template<MeanType MeanType, int GlobalDimension>
PropertyDataType MaterialPropertyLib::SaturationWeightedThermalConductivity< MeanType, GlobalDimension >::value ( VariableArray const & variable_array,
ParameterLib::SpatialPosition const & pos,
double const t,
double const dt ) const
overridevirtual

This virtual method will compute the property value based on the variables that are passed as arguments with the default implementation using empty variables array for the previous time step.

Reimplemented from MaterialPropertyLib::Property.

Definition at line 127 of file SaturationWeightedThermalConductivity.cpp.

131{
132 double const S_L = variable_array.liquid_saturation;
133
134 // (S_L <= 0.0)
136
137 if (S_L >= 1.0)
138 {
140 }
141
142 else if (S_L > 0.0 && S_L <= 1.0)
143 {
144 for (std::size_t i = 0; i < lambda_data.size(); i++)
145 {
148 }
149 }
150
151 return fromVector(lambda_data);
152}
double computeAverage(const double, double const, double const)=delete

References MaterialPropertyLib::computeAverage(), dry_thermal_conductivity_, MaterialPropertyLib::fromVector(), MaterialPropertyLib::VariableArray::liquid_saturation, and wet_thermal_conductivity_.

Member Data Documentation

◆ dry_thermal_conductivity_

template<MeanType MeantType, int GlobalDimension>
ParameterLib::Parameter<double> const& MaterialPropertyLib::SaturationWeightedThermalConductivity< MeantType, GlobalDimension >::dry_thermal_conductivity_
private

Thermal conductivity of soil at the dry state.

Definition at line 77 of file SaturationWeightedThermalConductivity.h.

Referenced by SaturationWeightedThermalConductivity(), dValue(), and value().

◆ wet_thermal_conductivity_

template<MeanType MeantType, int GlobalDimension>
ParameterLib::Parameter<double> const& MaterialPropertyLib::SaturationWeightedThermalConductivity< MeantType, GlobalDimension >::wet_thermal_conductivity_
private

Thermal conductivity of soil at the fully water saturated state.

Definition at line 79 of file SaturationWeightedThermalConductivity.h.

Referenced by SaturationWeightedThermalConductivity(), dValue(), and value().


The documentation for this class was generated from the following files: