OGS
FormKelvinVector.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 "FormKelvinVector.h"
5
6#include "BaseLib/Error.h"
7
9{
10static constexpr const char error_info[] =
11 "The conversion to a Kelvin vector of correct dimensionality is ambiguous."
12 "Please use a scalar number for isotropic properties, a three element "
13 "array or a 3 x 3 matrix for anisotropic properties.";
14
15template <int GlobalDim>
17{
19 double const& value) const
20 {
23 result.template head<3>() = Eigen::Vector3d::Constant(value);
24 return result;
25 }
26
28 Eigen::Matrix<double, 2, 1> const& /*values*/) const
29 {
31 }
32
34 Eigen::Matrix<double, 3, 1> const& values) const
35 {
38 result.template head<3>() = values;
39 return result;
40 }
41
43 Eigen::Matrix<double, 2, 2> const& /*values*/) const
44 {
46 }
47
49 Eigen::Matrix<double, 3, 3> const& values) const
50 {
52 }
53
55 Eigen::Matrix<double, 4, 1> const& /*values*/) const
56 {
58 }
59
61 Eigen::Matrix<double, 6, 1> const& /*values*/) const
62 {
64 }
65
67 Eigen::MatrixXd const& /*values*/) const
68 {
70 }
71};
72
73template <int GlobalDim>
79
82
85
86} // namespace MaterialPropertyLib
#define OGS_FATAL(...)
Definition Error.h:19
MathLib::KelvinVector::KelvinVectorType< GlobalDim > formKelvinVector(MaterialPropertyLib::PropertyDataType const &values)
A function to form a Kelvin vector from strain or stress alike property like thermal expansivity for ...
template MathLib::KelvinVector::KelvinVectorType< 2 > formKelvinVector< 2 >(MaterialPropertyLib::PropertyDataType const &values)
template MathLib::KelvinVector::KelvinVectorType< 3 > formKelvinVector< 3 >(MaterialPropertyLib::PropertyDataType const &values)
static constexpr const char error_info[]
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
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType
KelvinVectorType< DisplacementDim > tensorToKelvin(Eigen::Matrix< double, 3, 3 > const &m)
MathLib::KelvinVector::KelvinVectorType< GlobalDim > operator()(Eigen::Matrix< double, 4, 1 > const &) const
MathLib::KelvinVector::KelvinVectorType< GlobalDim > operator()(double const &value) const
MathLib::KelvinVector::KelvinVectorType< GlobalDim > operator()(Eigen::Matrix< double, 2, 1 > const &) const
MathLib::KelvinVector::KelvinVectorType< GlobalDim > operator()(Eigen::Matrix< double, 3, 1 > const &values) const
MathLib::KelvinVector::KelvinVectorType< GlobalDim > operator()(Eigen::Matrix< double, 6, 1 > const &) const
MathLib::KelvinVector::KelvinVectorType< GlobalDim > operator()(Eigen::Matrix< double, 2, 2 > const &) const
MathLib::KelvinVector::KelvinVectorType< GlobalDim > operator()(Eigen::Matrix< double, 3, 3 > const &values) const
MathLib::KelvinVector::KelvinVectorType< GlobalDim > operator()(Eigen::MatrixXd const &) const