OGS
MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< GlobalDim > Class Template Referencefinal

Detailed Description

template<int GlobalDim>
class MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< GlobalDim >

Porosity mixing based model for effective heat conduction

This property is a medium property. The corresponding values are taken from the liquid/solid phase.

Definition at line 27 of file EffectiveThermalConductivityPorosityMixing.h.

#include <EffectiveThermalConductivityPorosityMixing.h>

Inheritance diagram for MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< GlobalDim >:
[legend]
Collaboration diagram for MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< GlobalDim >:
[legend]

Public Member Functions

 EffectiveThermalConductivityPorosityMixing (std::string name, ParameterLib::CoordinateSystem const *const local_coordinate_system)
 
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 &, double const, double const) const override
 
 EffectiveThermalConductivityPorosityMixing (std::string name, ParameterLib::CoordinateSystem const *const local_coordinate_system)
 
void checkScale () const
 
PropertyDataType value (VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const
 
PropertyDataType dValue (VariableArray const &, Variable const, ParameterLib::SpatialPosition const &, double const, double const) const
 
- 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. More...
 
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::CoordinateSystem const *const local_coordinate_system_
 

Additional Inherited Members

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

Constructor & Destructor Documentation

◆ EffectiveThermalConductivityPorosityMixing() [1/2]

template<int GlobalDim>
MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< GlobalDim >::EffectiveThermalConductivityPorosityMixing ( std::string  name,
ParameterLib::CoordinateSystem const *const  local_coordinate_system 
)

◆ EffectiveThermalConductivityPorosityMixing() [2/2]

Definition at line 23 of file EffectiveThermalConductivityPorosityMixing.cpp.

27  : local_coordinate_system_(local_coordinate_system)
28 {
29  name_ = std::move(name);
30 }

References MaterialPropertyLib::name, and MaterialPropertyLib::Property::name_.

Member Function Documentation

◆ checkScale() [1/2]

void MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< 1 >::checkScale ( ) const
virtual

Reimplemented from MaterialPropertyLib::Property.

Definition at line 33 of file EffectiveThermalConductivityPorosityMixing.cpp.

34 {
35  if (!std::holds_alternative<Medium*>(scale_))
36  {
37  OGS_FATAL(
38  "The property 'EffectiveThermalConductivityPorosityMixing' is "
39  "implemented on the 'medium' scale only.");
40  }
41 }
#define OGS_FATAL(...)
Definition: Error.h:26
std::variant< Medium *, Phase *, Component * > scale_
Definition: Property.h:287

References OGS_FATAL.

◆ checkScale() [2/2]

template<int GlobalDim>
void MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< GlobalDim >::checkScale
overridevirtual

Reimplemented from MaterialPropertyLib::Property.

Definition at line 95 of file EffectiveThermalConductivityPorosityMixing.cpp.

96 {
97  if (!std::holds_alternative<Medium*>(scale_))
98  {
99  OGS_FATAL(
100  "The property 'EffectiveThermalConductivityPorosityMixing' is "
101  "implemented on the 'medium' scale only.");
102  }
103 }

References OGS_FATAL.

◆ dValue() [1/2]

PropertyDataType MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< 1 >::dValue ( VariableArray const &  variable_array,
Variable const  variable,
ParameterLib::SpatialPosition const &  pos,
double const  t,
double const  dt 
) const
virtual

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 73 of file EffectiveThermalConductivityPorosityMixing.cpp.

76 {
77  OGS_FATAL(
78  "dValue is not implemented for "
79  "EffectiveThermalConductivityPorosityMixing");
80 }

References OGS_FATAL.

◆ dValue() [2/2]

template<int GlobalDim>
PropertyDataType MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< GlobalDim >::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 149 of file EffectiveThermalConductivityPorosityMixing.cpp.

152 {
153  OGS_FATAL(
154  "dValue is not implemented for "
155  "EffectiveThermalConductivityPorosityMixing");
156 }

References OGS_FATAL.

◆ value() [1/2]

PropertyDataType MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< 1 >::value ( VariableArray const &  variable_array,
ParameterLib::SpatialPosition const &  pos,
double const  t,
double const  dt 
) const
virtual

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 44 of file EffectiveThermalConductivityPorosityMixing.cpp.

48 {
49  auto const& medium = std::get<Medium*>(scale_);
50  auto const& liquid_phase = medium->phase("AqueousLiquid");
51  auto const& solid_phase = medium->phase("Solid");
52  auto const liquid_thermal_conductivity =
53  liquid_phase
55  .template value<double>(variable_array, pos, t, dt);
56  auto const solid_thermal_conductivity =
57  solid_phase
59  .template value<double>(variable_array, pos, t, dt);
60 
61  auto const porosity =
62  std::get<double>(variable_array[static_cast<int>(Variable::porosity)]);
63 
64  auto const S_L = std::get<double>(
65  variable_array[static_cast<int>(Variable::liquid_saturation)]);
66 
67  double const effective_thermal_conductivity =
68  (1.0 - porosity) * solid_thermal_conductivity +
69  porosity * liquid_thermal_conductivity * S_L;
70  return effective_thermal_conductivity;
71 }

References MaterialPropertyLib::liquid_saturation, MaterialPropertyLib::porosity, and MaterialPropertyLib::thermal_conductivity.

◆ value() [2/2]

template<int GlobalDim>
PropertyDataType MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< GlobalDim >::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 106 of file EffectiveThermalConductivityPorosityMixing.cpp.

110 {
111  auto const& medium = std::get<Medium*>(scale_);
112  auto const& liquid_phase = medium->phase("AqueousLiquid");
113  auto const& solid_phase = medium->phase("Solid");
114  auto const liquid_thermal_conductivity =
115  liquid_phase
117  .template value<double>(variable_array, pos, t, dt);
118  auto solid_thermal_conductivity = formEigenTensor<GlobalDim>(
119  solid_phase
121  .value(variable_array, pos, t, dt));
122 
123  auto const porosity =
124  std::get<double>(variable_array[static_cast<int>(Variable::porosity)]);
125 
126  auto const S_L = std::get<double>(
127  variable_array[static_cast<int>(Variable::liquid_saturation)]);
128 
129  // Local coordinate transformation is only applied for the case that the
130  // initial solid thermal conductivity is given with orthotropic assumption.
132  (solid_thermal_conductivity.cols() == GlobalDim))
133  {
134  Eigen::Matrix<double, GlobalDim, GlobalDim> const e =
135  local_coordinate_system_->transformation<GlobalDim>(pos);
136 
137  solid_thermal_conductivity =
138  e.transpose() * solid_thermal_conductivity * e;
139  }
140  Eigen::Matrix<double, GlobalDim, GlobalDim> const
141  effective_thermal_conductivity =
142  (1.0 - porosity) * solid_thermal_conductivity +
143  porosity * liquid_thermal_conductivity *
144  Eigen::Matrix<double, GlobalDim, GlobalDim>::Identity() * S_L;
145  return effective_thermal_conductivity;
146 }
virtual PropertyDataType value() const
Definition: Property.cpp:72
Eigen::Matrix< double, Dimension, Dimension > transformation(SpatialPosition const &pos) const

References MaterialPropertyLib::liquid_saturation, MaterialPropertyLib::porosity, and MaterialPropertyLib::thermal_conductivity.

Member Data Documentation

◆ local_coordinate_system_

template<int GlobalDim>
ParameterLib::CoordinateSystem const* const MaterialPropertyLib::EffectiveThermalConductivityPorosityMixing< GlobalDim >::local_coordinate_system_
private

Definition at line 46 of file EffectiveThermalConductivityPorosityMixing.h.


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