OGS
ThermoOsmoticCoefficient.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include "BaseLib/Error.h"
10
11namespace ProcessLib
12{
54template <int GlobalDim>
55Eigen::Matrix<double, GlobalDim, GlobalDim> getThermoOsmoticCoefficient(
56 MaterialPropertyLib::Medium const& medium,
57 MaterialPropertyLib::VariableArray const& variable_array,
59 double const t,
60 double const dt,
61 Eigen::Matrix<double, GlobalDim, GlobalDim> const& intrinsic_permeability,
62 double const liquid_dynamic_viscosity)
63{
64 if (medium.hasProperty(
66 {
67 if (liquid_dynamic_viscosity <= 0.)
68 {
70 "Liquid dynamic viscosity must be > 0 when using "
71 "thermal_osmosis_permeability, but is {:g} in {:s}.",
72 liquid_dynamic_viscosity, medium.description());
73 }
74
75 auto const epsilon_T = medium
77 thermal_osmosis_permeability)
78 .value<double>(variable_array, pos, t, dt);
79 return epsilon_T * intrinsic_permeability / liquid_dynamic_viscosity;
80 }
81
82 if (medium.hasProperty(
84 {
86 medium
88 thermal_osmosis_coefficient)
89 .value(variable_array, pos, t, dt));
90 }
91
92 // Neither thermal_osmosis_permeability nor thermal_osmosis_coefficient is
93 // defined.
94 return Eigen::Matrix<double, GlobalDim, GlobalDim>::Zero();
95}
96} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:10
Property const & property(PropertyType const &p) const
Definition Medium.cpp:49
bool hasProperty(PropertyType const &p) const
Definition Medium.cpp:65
std::string description() const
Short description of the medium.
Definition Medium.cpp:75
virtual PropertyDataType value() const
constexpr Eigen::Matrix< double, GlobalDim, GlobalDim > formEigenTensor(MaterialPropertyLib::PropertyDataType const &values)
Eigen::Matrix< double, GlobalDim, GlobalDim > getThermoOsmoticCoefficient(MaterialPropertyLib::Medium const &medium, MaterialPropertyLib::VariableArray const &variable_array, ParameterLib::SpatialPosition const &pos, double const t, double const dt, Eigen::Matrix< double, GlobalDim, GlobalDim > const &intrinsic_permeability, double const liquid_dynamic_viscosity)