OGS
EmbeddedAnchor.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
6#include "SourceTerm.h"
7
8namespace ProcessLib
9{
10template <int GlobalDim>
11class EmbeddedAnchor final : public SourceTermBase
12{
13public:
14 explicit EmbeddedAnchor(MeshLib::Mesh const& bulk_mesh,
15 NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
16 std::size_t const source_term_mesh_id,
17 MeshLib::Mesh const& st_mesh,
18 const int variable_id);
19
21 MeshLib::Element const* const anchor_element,
22 std::array<std::size_t, 2>& nodes_per_element,
23 std::vector<Eigen::RowVectorXd>& shape_matrices,
24 std::vector<GlobalIndexType>& global_indices,
25 Eigen::Vector<double, 2 * GlobalDim>& local_x,
26 GlobalVector const& x,
28
29 void integrate(const double t, GlobalVector const& x, GlobalVector& b,
30 GlobalMatrix* jac) const override;
31
32private:
35 std::size_t const source_term_mesh_id_;
37 int const variable_id_;
38 std::array<int, GlobalDim> const component_ids_;
46};
47
48extern template class EmbeddedAnchor<2>;
49extern template class EmbeddedAnchor<3>;
50} // namespace ProcessLib
MathLib::EigenMatrix GlobalMatrix
MathLib::EigenVector GlobalVector
MeshLib::PropertyVector< double > const * maximum_anchor_stress_
void getShapeMatricesAndGlobalIndicesAndDisplacements(MeshLib::Element const *const anchor_element, std::array< std::size_t, 2 > &nodes_per_element, std::vector< Eigen::RowVectorXd > &shape_matrices, std::vector< GlobalIndexType > &global_indices, Eigen::Vector< double, 2 *GlobalDim > &local_x, GlobalVector const &x, ParameterLib::SpatialPosition &pos) const
MeshLib::Mesh const & st_mesh_
MeshLib::PropertyVector< double > const * cross_sectional_area_
MeshLib::PropertyVector< double > const * anchor_stiffness_
MeshLib::PropertyVector< double > const * residual_anchor_stress_
std::array< int, GlobalDim > const component_ids_
MeshLib::PropertyVector< std::size_t > const * bulk_element_ids_
std::size_t const source_term_mesh_id_
void integrate(const double t, GlobalVector const &x, GlobalVector &b, GlobalMatrix *jac) const override
NumLib::LocalToGlobalIndexMap const & dof_table_bulk_
MeshLib::PropertyVector< double > const * natural_coordinates_
MeshLib::Mesh const & bulk_mesh_
MeshLib::PropertyVector< double > const * initial_anchor_stress_
EmbeddedAnchor(MeshLib::Mesh const &bulk_mesh, NumLib::LocalToGlobalIndexMap const &dof_table_bulk, std::size_t const source_term_mesh_id, MeshLib::Mesh const &st_mesh, const int variable_id)