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