OGS
DupuitPermeability.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 "
MaterialLib/MPL/Properties/DupuitPermeability.h
"
5
6
namespace
MaterialPropertyLib
7
{
8
DupuitPermeability::DupuitPermeability
(
9
std::string
name
,
ParameterLib::Parameter<double>
const
& parameter)
10
:
parameter_
(parameter)
11
{
12
name_
= std::move(
name
);
13
}
14
15
PropertyDataType
DupuitPermeability::value
(
16
MaterialPropertyLib::VariableArray
const
& variable_array,
17
ParameterLib::SpatialPosition
const
& pos,
double
const
t,
18
double
const
/*dt*/
)
const
19
{
20
double
const
pressure = variable_array.
liquid_phase_pressure
;
21
auto
const
& permeability_values =
parameter_
(t, pos);
22
23
auto
const
& permeability_variant =
fromVector
(permeability_values);
24
PropertyDataType
dupuit_permeability = std::visit(
25
[&pressure](
auto
const
& permeability_variant) ->
PropertyDataType
26
{
27
using
T = std::decay_t<
decltype
(permeability_variant)>;
28
if
constexpr
(std::is_same_v<T, double>)
29
{
30
return
pressure * permeability_variant;
31
}
32
else
33
{
34
return
(pressure * permeability_variant).eval();
35
}
36
},
37
permeability_variant);
38
39
return
dupuit_permeability;
40
}
41
42
}
// namespace MaterialPropertyLib
DupuitPermeability.h
MaterialPropertyLib::DupuitPermeability::parameter_
ParameterLib::Parameter< double > const & parameter_
Definition
DupuitPermeability.h:27
MaterialPropertyLib::DupuitPermeability::DupuitPermeability
DupuitPermeability(std::string name, ParameterLib::Parameter< double > const ¶meter)
This constructor accepts two parameters.
Definition
DupuitPermeability.cpp:8
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_phase_pressure
double liquid_phase_pressure
Definition
VariableType.h:177
ParameterLib::SpatialPosition
Definition
SpatialPosition.h:21
MaterialPropertyLib
Definition
ChemicalSolverInterface.h:98
MaterialPropertyLib::fromVector
PropertyDataType fromVector(std::vector< double > const &values)
Definition
MaterialLib/MPL/Property.cpp:14
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
ParameterLib::Parameter
Definition
ParameterLib/Parameter.h:134
MaterialLib
MPL
Properties
DupuitPermeability.cpp
Generated by
1.14.0