OGS
CreateLinearElasticTransverseIsotropic.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
5
7
8namespace MaterialLib
9{
10namespace Solids
11{
12template <int DisplacementDim>
13std::unique_ptr<LinearElasticTransverseIsotropic<DisplacementDim>>
15 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
16 std::optional<ParameterLib::CoordinateSystem> const&
17 local_coordinate_system,
18 BaseLib::ConfigTree const& config, const bool skip_type_checking)
19{
20 if (!skip_type_checking)
21 {
23 config.checkConfigParameter("type", "LinearElasticTransverseIsotropic");
24 DBUG("Create LinearElasticTransverseIsotropic material");
25 }
26
29 config, "youngs_modulus_i", parameters, 1);
30 DBUG("Use '{}' as the in-plane Young’s modulus, E_i.", E_i.name);
31
34 config, "youngs_modulus_a", parameters, 1);
35 DBUG(
36 "Use '{}' as the Young’s modulus w.r.t. the direction of anisotropy, "
37 "E_a.",
38 E_a.name);
39
40 auto const& nu_ii = ParameterLib::findParameter<double>(
42 config, "poissons_ratio_ii", parameters, 1);
43 DBUG("Use '{}' as the in-plane Poisson’s ratio, nu_ii.", nu_ii.name);
44
45 auto const& nu_ia = ParameterLib::findParameter<double>(
47 config, "poissons_ratio_ia", parameters, 1);
48 DBUG(
49 "Use '{}' as the Poisson ratio perpendicular to the plane of isotropy, "
50 "due to strain in the plane of isotropy, nu_ia.",
51 nu_ia.name);
52
53 auto const& G_ia = ParameterLib::findParameter<double>(
55 config, "shear_modulus_ia", parameters, 1);
56 DBUG(
57 "Use '{}' as the shear modulus between directions of isotropy and "
58 "anisotropy , G_ia.",
59 G_ia.name);
60
61 return std::make_unique<LinearElasticTransverseIsotropic<DisplacementDim>>(
62 E_i, E_a, nu_ii, nu_ia, G_ia, local_coordinate_system);
63}
64
65template std::unique_ptr<LinearElasticTransverseIsotropic<2>>
67 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
68 std::optional<ParameterLib::CoordinateSystem> const&
69 local_coordinate_system,
70 BaseLib::ConfigTree const& config, const bool skip_type_checking);
71
72template std::unique_ptr<LinearElasticTransverseIsotropic<3>>
74 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
75 std::optional<ParameterLib::CoordinateSystem> const&
76 local_coordinate_system,
77 BaseLib::ConfigTree const& config, const bool skip_type_checking);
78} // namespace Solids
79} // namespace MaterialLib
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:22
void checkConfigParameter(std::string const &param, std::string_view const value) const
std::unique_ptr< LinearElasticTransverseIsotropic< DisplacementDim > > createLinearElasticTransverseIsotropic(std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, BaseLib::ConfigTree const &config, const bool skip_type_checking)
OGS_NO_DANGLING Parameter< ParameterDataType > & findParameter(std::string const &parameter_name, std::vector< std::unique_ptr< ParameterBase > > const &parameters, int const num_components, MeshLib::Mesh const *const mesh=nullptr)