OGS
CreateMFront.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 "CreateMFront.h"
5
6#ifndef _WIN32
7#include <dlfcn.h>
8#endif
9
10#include "CreateMFrontGeneric.h"
11#include "MFront.h"
12
13namespace MaterialLib
14{
15namespace Solids
16{
17namespace MFront
18{
19template <int DisplacementDim>
20std::unique_ptr<MechanicsBase<DisplacementDim>> createMFront(
21 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
22 std::optional<ParameterLib::CoordinateSystem> const&
23 local_coordinate_system,
24 BaseLib::ConfigTree const& config)
25{
26 auto conf = createMFrontConfig(DisplacementDim, parameters, config);
27
28 return std::make_unique<MFront<DisplacementDim>>(
29 std::move(conf.behaviour), std::move(conf.material_properties),
30 std::move(conf.state_variables_initial_properties),
31 local_coordinate_system);
32}
33} // namespace MFront
34} // namespace Solids
35} // namespace MaterialLib
36
37namespace MaterialLib
38{
39namespace Solids
40{
41namespace MFront
42{
43template std::unique_ptr<MechanicsBase<2>> createMFront<2>(
44 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
45 std::optional<ParameterLib::CoordinateSystem> const&
46 local_coordinate_system,
47 BaseLib::ConfigTree const& config);
48template std::unique_ptr<MechanicsBase<3>> createMFront<3>(
49 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
50 std::optional<ParameterLib::CoordinateSystem> const&
51 local_coordinate_system,
52 BaseLib::ConfigTree const& config);
53} // namespace MFront
54} // namespace Solids
55} // namespace MaterialLib
MFrontConfig createMFrontConfig(int const displacement_dim, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, BaseLib::ConfigTree const &config)
template std::unique_ptr< MechanicsBase< 2 > > createMFront< 2 >(std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, BaseLib::ConfigTree const &config)
std::unique_ptr< MechanicsBase< DisplacementDim > > createMFront(std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, BaseLib::ConfigTree const &config)
template std::unique_ptr< MechanicsBase< 3 > > createMFront< 3 >(std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, BaseLib::ConfigTree const &config)