OGS
SolidModels/CreateLinearElasticIsotropic.h
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#pragma once
5
7
9
10namespace MaterialLib
11{
12namespace Solids
13{
14template <int DisplacementDim>
15std::unique_ptr<LinearElasticIsotropic<DisplacementDim>>
17 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
18 BaseLib::ConfigTree const& config, const bool skip_type_checking)
19{
20 if (!skip_type_checking)
21 {
23 config.checkConfigParameter("type", "LinearElasticIsotropic");
24 DBUG("Create LinearElasticIsotropic material");
25 }
26
27 // Youngs modulus
28 auto& youngs_modulus = ParameterLib::findParameter<double>(
30 config, "youngs_modulus", parameters, 1);
31
32 DBUG("Use '{:s}' as youngs_modulus parameter.", youngs_modulus.name);
33
34 // Poissons ratio
35 auto& poissons_ratio = ParameterLib::findParameter<double>(
37 config, "poissons_ratio", parameters, 1);
38
39 DBUG("Use '{:s}' as poissons_ratio parameter.", poissons_ratio.name);
40
42 youngs_modulus, poissons_ratio};
43
44 return std::make_unique<LinearElasticIsotropic<DisplacementDim>>(mp);
45}
46
47} // namespace Solids
48} // 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< LinearElasticIsotropic< DisplacementDim > > createLinearElasticIsotropic(std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, 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)