OGS
NormalTractionBoundaryCondition.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 <Eigen/Dense>
7
8#include "BoundaryCondition.h"
11
12namespace ProcessLib
13{
15{
17
25template <int GlobalDim, template <typename /* shp fct */, int /* global dim */>
26 class LocalAssemblerImplementation>
28{
29public:
34 unsigned const integration_order, unsigned const shapefunction_order,
35 MeshLib::Mesh const& bulk_mesh,
36 NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
37 int const variable_id, MeshLib::Mesh const& bc_mesh,
38 ParameterLib::Parameter<double> const& pressure);
39
42 void applyNaturalBC(const double t, std::vector<GlobalVector*> const& x,
43 int const process_id, GlobalMatrix* K, GlobalVector& b,
44 GlobalMatrix* Jac) override;
45
46private:
48
51 std::vector<MeshLib::Node*> _nodes_subset;
52
53 std::unique_ptr<MeshLib::MeshSubset const> _mesh_subset_all_nodes;
54
57 std::unique_ptr<NumLib::LocalToGlobalIndexMap> _dof_table_boundary;
58
60 unsigned const _integration_order;
61
63 std::vector<
64 std::unique_ptr<NormalTractionBoundaryConditionLocalAssemblerInterface>>
66
68
70 std::vector<Eigen::Vector3d> _element_normals;
71};
72
74 BaseLib::ConfigTree const& config);
75
76template <int GlobalDim>
80 std::string const& parameter_name, MeshLib::Mesh const& bc_mesh,
81 NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
82 unsigned const integration_order, unsigned const shapefunction_order,
83 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
84 parameters);
85
86} // namespace NormalTractionBoundaryCondition
87} // namespace ProcessLib
88
MathLib::EigenMatrix GlobalMatrix
MathLib::EigenVector GlobalVector
void applyNaturalBC(const double t, std::vector< GlobalVector * > const &x, int const process_id, GlobalMatrix *K, GlobalVector &b, GlobalMatrix *Jac) override
std::vector< Eigen::Vector3d > _element_normals
Normal vectors for each element in the boundary condition mesh.
unsigned const _integration_order
Integration order for integration over the lower-dimensional elements.
NormalTractionBoundaryCondition(unsigned const integration_order, unsigned const shapefunction_order, MeshLib::Mesh const &bulk_mesh, NumLib::LocalToGlobalIndexMap const &dof_table_bulk, int const variable_id, MeshLib::Mesh const &bc_mesh, ParameterLib::Parameter< double > const &pressure)
std::vector< std::unique_ptr< NormalTractionBoundaryConditionLocalAssemblerInterface > > _local_assemblers
Local assemblers for each element of number of _elements.
std::unique_ptr< NormalTractionBoundaryCondition< GlobalDim, NormalTractionBoundaryConditionLocalAssembler > > createNormalTractionBoundaryCondition(std::string const &parameter_name, MeshLib::Mesh const &bc_mesh, MeshLib::Mesh const &bulk_mesh, NumLib::LocalToGlobalIndexMap const &dof_table, int const variable_id, unsigned const integration_order, unsigned const shapefunction_order, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters)
std::string parseNormalTractionBoundaryCondition(BaseLib::ConfigTree const &config)