Loading [MathJax]/extensions/tex2jax.js
OGS
CreateEmbeddedAnchor.cpp
Go to the documentation of this file.
1
12
13#include "BaseLib/ConfigTree.h"
14#include "BaseLib/Logging.h"
15#include "EmbeddedAnchor.h"
16#include "ParameterLib/Utils.h"
17
18namespace ProcessLib
19{
20template <int GlobalDim>
21std::unique_ptr<SourceTermBase> createEmbeddedAnchor(
22 BaseLib::ConfigTree const& config, MeshLib::Mesh const& st_mesh,
23 MeshLib::Mesh const& bulk_mesh,
24 NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
25 std::size_t const source_term_mesh_id, const int variable_id,
26 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters)
27{
28 DBUG("Constructing EmbeddedAnchor from config.");
30 config.checkConfigParameter("type", "EmbeddedAnchor");
31
32 auto const param_name =
34 config.getConfigParameter<std::string>("anchor_force_constant");
35 DBUG("Using parameter {:s} as anchor stiffness constant.", param_name);
36
37 auto& param = ParameterLib::findParameter<double>(param_name, parameters, 1,
38 &st_mesh);
39
40 for (MeshLib::Element const* const element : st_mesh.getElements())
41 {
42 if (element->getNumberOfNodes() != 2)
43 {
45 "Every anchor element needs to have precisely two nodes.");
46 }
47 }
48#ifdef USE_PETSC
50 "The EmbeddedAnchor source term has not been tested with PETSc yet.");
51#endif
52
53 return std::make_unique<EmbeddedAnchor<GlobalDim>>(
54 bulk_mesh, dof_table_bulk, source_term_mesh_id, st_mesh, variable_id,
55 param);
56}
57
58template std::unique_ptr<SourceTermBase> createEmbeddedAnchor<2>(
59 BaseLib::ConfigTree const& config, MeshLib::Mesh const& st_mesh,
60 MeshLib::Mesh const& bulk_mesh,
61 NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
62 std::size_t const source_term_mesh_id, const int variable_id,
63 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
64 parameters);
65
66template std::unique_ptr<SourceTermBase> createEmbeddedAnchor<3>(
67 BaseLib::ConfigTree const& config, MeshLib::Mesh const& st_mesh,
68 MeshLib::Mesh const& bulk_mesh,
69 NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
70 std::size_t const source_term_mesh_id, const int variable_id,
71 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
72 parameters);
73} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:26
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:30
T getConfigParameter(std::string const &param) const
void checkConfigParameter(std::string const &param, std::string_view const value) const
std::vector< Element * > const & getElements() const
Get the element-vector for the mesh.
Definition Mesh.h:111
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)
Definition Utils.h:102
template std::unique_ptr< SourceTermBase > createEmbeddedAnchor< 2 >(BaseLib::ConfigTree const &config, MeshLib::Mesh const &st_mesh, MeshLib::Mesh const &bulk_mesh, NumLib::LocalToGlobalIndexMap const &dof_table_bulk, std::size_t const source_term_mesh_id, const int variable_id, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters)
template std::unique_ptr< SourceTermBase > createEmbeddedAnchor< 3 >(BaseLib::ConfigTree const &config, MeshLib::Mesh const &st_mesh, MeshLib::Mesh const &bulk_mesh, NumLib::LocalToGlobalIndexMap const &dof_table_bulk, std::size_t const source_term_mesh_id, const int variable_id, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters)
std::unique_ptr< SourceTermBase > createEmbeddedAnchor(BaseLib::ConfigTree const &config, MeshLib::Mesh const &st_mesh, MeshLib::Mesh const &bulk_mesh, NumLib::LocalToGlobalIndexMap const &dof_table_bulk, std::size_t const source_term_mesh_id, const int variable_id, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters)