OGS
LinearSaturationSwellingStress.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 "
LinearSaturationSwellingStress.h
"
5
6
#include "
MaterialLib/MPL/Medium.h
"
7
#include "
MaterialLib/MPL/VariableType.h
"
8
9
namespace
MaterialPropertyLib
10
{
11
LinearSaturationSwellingStress::LinearSaturationSwellingStress
(
12
std::string
name
,
double
const
coefficient,
13
double
const
reference_saturation)
14
:
coefficient_
(coefficient),
reference_saturation_
(reference_saturation)
15
{
16
name_
= std::move(
name
);
17
}
18
19
PropertyDataType
LinearSaturationSwellingStress::value
(
20
const
VariableArray
&
/*variable_array*/
,
21
const
ParameterLib::SpatialPosition
&
/*pos*/
,
const
double
/*t*/
,
22
const
double
/*dt*/
)
const
23
{
24
OGS_FATAL
(
25
"LinearSaturationSwellingStress value call requires previous time step "
26
"values."
);
27
}
28
29
PropertyDataType
LinearSaturationSwellingStress::value
(
30
const
VariableArray
& variable_array,
31
const
VariableArray
& variable_array_prev,
32
const
ParameterLib::SpatialPosition
&
/*pos*/
,
const
double
/*t*/
,
33
const
double
/*dt*/
)
const
34
{
35
// Sl <= S_max is guaranteed by the saturation property or
36
// the saturation calculation.
37
const
double
Sl = variable_array.
liquid_saturation
;
38
39
if
(Sl <
reference_saturation_
)
40
{
41
return
0.0;
42
}
43
44
const
double
Sl_prev = variable_array_prev.
liquid_saturation
;
45
46
return
coefficient_
* (Sl - Sl_prev);
47
}
48
49
PropertyDataType
LinearSaturationSwellingStress::dValue
(
50
VariableArray
const
& variable_array,
Variable
const
variable,
51
ParameterLib::SpatialPosition
const
&
/*pos*/
,
double
const
/*t*/
,
52
double
const
/*dt*/
)
const
53
{
54
if
(variable !=
Variable::liquid_saturation
)
55
{
56
OGS_FATAL
(
57
"LinearSaturationSwellingStress::dValue is implemented for "
58
"derivatives with respect to liquid saturation only."
);
59
}
60
61
// Sl <= S_max is guaranteed by the saturation property or
62
// the saturation calculation.
63
const
double
Sl = variable_array.
liquid_saturation
;
64
65
return
Sl <
reference_saturation_
? 0.0 :
coefficient_
;
66
}
67
68
}
// namespace MaterialPropertyLib
OGS_FATAL
#define OGS_FATAL(...)
Definition
Error.h:19
LinearSaturationSwellingStress.h
Medium.h
VariableType.h
MaterialPropertyLib::LinearSaturationSwellingStress::LinearSaturationSwellingStress
LinearSaturationSwellingStress(std::string name, double const coefficient, double const reference_saturation)
Definition
LinearSaturationSwellingStress.cpp:11
MaterialPropertyLib::LinearSaturationSwellingStress::coefficient_
double const coefficient_
Definition
LinearSaturationSwellingStress.h:102
MaterialPropertyLib::LinearSaturationSwellingStress::dValue
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
Definition
LinearSaturationSwellingStress.cpp:49
MaterialPropertyLib::LinearSaturationSwellingStress::reference_saturation_
double const reference_saturation_
Definition
LinearSaturationSwellingStress.h:106
MaterialPropertyLib::Property::value
virtual PropertyDataType value() const
Definition
MaterialLib/MPL/Property.cpp:67
MaterialPropertyLib::Property::name_
std::string name_
Definition
MaterialLib/MPL/Property.h:283
MaterialPropertyLib::VariableArray
Definition
VariableType.h:94
MaterialPropertyLib::VariableArray::liquid_saturation
double liquid_saturation
Definition
VariableType.h:178
ParameterLib::SpatialPosition
Definition
SpatialPosition.h:21
MaterialPropertyLib
Definition
ChemicalSolverInterface.h:98
MaterialPropertyLib::Variable
Variable
Definition
VariableType.h:21
MaterialPropertyLib::Variable::liquid_saturation
@ liquid_saturation
Definition
VariableType.h:34
MaterialPropertyLib::name
@ name
Definition
PropertyType.h:57
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
SwellingStress
LinearSaturationSwellingStress.cpp
Generated by
1.14.0