OGS
VapourDiffusionFEBEX.cpp
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
#include "
VapourDiffusionFEBEX.h
"
5
6
#include <algorithm>
7
#include <cmath>
8
9
#include "
MaterialLib/MPL/Medium.h
"
10
#include "
MaterialLib/MPL/VariableType.h
"
11
#include "
MaterialLib/PhysicalConstant.h
"
12
13
namespace
MaterialPropertyLib
14
{
15
PropertyDataType
VapourDiffusionFEBEX::value
(
16
const
VariableArray
& variable_array,
17
const
ParameterLib::SpatialPosition
&
/*pos*/
,
const
double
/*t*/
,
18
const
double
/*dt*/
)
const
19
{
20
const
double
T = variable_array.
temperature
;
21
22
return
base_diffusion_coefficient_
*
23
std::pow(T /
MaterialLib::PhysicalConstant::CelsiusZeroInKelvin
,
24
exponent_
);
25
}
26
27
PropertyDataType
VapourDiffusionFEBEX::dValue
(
28
VariableArray
const
& variable_array,
Variable
const
variable,
29
ParameterLib::SpatialPosition
const
&
/*pos*/
,
double
const
/*t*/
,
30
double
const
/*dt*/
)
const
31
{
32
const
double
T = variable_array.
temperature
;
33
34
if
(variable ==
Variable::temperature
)
35
{
36
return
exponent_
*
base_diffusion_coefficient_
*
37
std::pow(T /
MaterialLib::PhysicalConstant::CelsiusZeroInKelvin
,
38
exponent_
- 1.0) /
39
MaterialLib::PhysicalConstant::CelsiusZeroInKelvin
;
40
}
41
if
(variable ==
Variable::liquid_saturation
)
42
{
43
return
0.0;
44
}
45
46
OGS_FATAL
(
47
"VapourDiffusionFEBEX::dValue is implemented for derivatives with "
48
"respect to temperature or saturation only."
);
49
}
50
51
}
// namespace MaterialPropertyLib
OGS_FATAL
#define OGS_FATAL(...)
Definition
Error.h:19
Medium.h
PhysicalConstant.h
VapourDiffusionFEBEX.h
VariableType.h
MaterialPropertyLib::Property::value
virtual PropertyDataType value() const
Definition
MaterialLib/MPL/Property.cpp:67
MaterialPropertyLib::VapourDiffusionFEBEX::exponent_
double const exponent_
Definition
VapourDiffusionFEBEX.h:78
MaterialPropertyLib::VapourDiffusionFEBEX::base_diffusion_coefficient_
double const base_diffusion_coefficient_
Definition
VapourDiffusionFEBEX.h:77
MaterialPropertyLib::VapourDiffusionFEBEX::dValue
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
Definition
VapourDiffusionFEBEX.cpp:27
MaterialPropertyLib::VariableArray
Definition
VariableType.h:94
MaterialPropertyLib::VariableArray::temperature
double temperature
Definition
VariableType.h:187
ParameterLib::SpatialPosition
Definition
SpatialPosition.h:21
MaterialLib::PhysicalConstant::CelsiusZeroInKelvin
constexpr double CelsiusZeroInKelvin
Zero degrees Celsius in Kelvin.
Definition
PhysicalConstant.h:16
MaterialPropertyLib
Definition
ChemicalSolverInterface.h:98
MaterialPropertyLib::Variable
Variable
Definition
VariableType.h:21
MaterialPropertyLib::Variable::liquid_saturation
@ liquid_saturation
Definition
VariableType.h:34
MaterialPropertyLib::Variable::temperature
@ temperature
Definition
VariableType.h:43
MaterialPropertyLib::PropertyDataType
std::variant< double, Eigen::Matrix< double, 2, 1 >, Eigen::Matrix< double, 3, 1 >, Eigen::Matrix< double, 2, 2 >, Eigen::Matrix< double, 3, 3 >, Eigen::Matrix< double, 4, 1 >, Eigen::Matrix< double, 6, 1 >, Eigen::MatrixXd > PropertyDataType
Definition
MaterialLib/MPL/Property.h:24
MaterialLib
MPL
Properties
VapourDiffusion
VapourDiffusionFEBEX.cpp
Generated by
1.14.0