OGS
NormalTractionBoundaryCondition.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <Eigen/Dense>
14
15#include "BoundaryCondition.h"
16#include "MeshLib/MeshSubset.h"
18
19namespace ProcessLib
20{
21namespace NormalTractionBoundaryCondition
22{
23class NormalTractionBoundaryConditionLocalAssemblerInterface;
24
32template <int GlobalDim, template <typename /* shp fct */, int /* global dim */>
33 class LocalAssemblerImplementation>
35{
36public:
41 unsigned const integration_order, unsigned const shapefunction_order,
42 MeshLib::Mesh const& bulk_mesh,
43 NumLib::LocalToGlobalIndexMap const& dof_table_bulk,
44 int const variable_id, MeshLib::Mesh const& bc_mesh,
45 ParameterLib::Parameter<double> const& pressure);
46
49 void applyNaturalBC(const double t, std::vector<GlobalVector*> const& x,
50 int const process_id, GlobalMatrix* K, GlobalVector& b,
51 GlobalMatrix* Jac) override;
52
53private:
55
58 std::vector<MeshLib::Node*> _nodes_subset;
59
60 std::unique_ptr<MeshLib::MeshSubset const> _mesh_subset_all_nodes;
61
64 std::unique_ptr<NumLib::LocalToGlobalIndexMap> _dof_table_boundary;
65
67 unsigned const _integration_order;
68
70 std::vector<
71 std::unique_ptr<NormalTractionBoundaryConditionLocalAssemblerInterface>>
73
75
77 std::vector<Eigen::Vector3d> _element_normals;
78};
79
80template <int GlobalDim>
84 BaseLib::ConfigTree const& config, MeshLib::Mesh const& bc_mesh,
85 NumLib::LocalToGlobalIndexMap const& dof_table, int const variable_id,
86 unsigned const integration_order, unsigned const shapefunction_order,
87 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const&
88 parameters);
89
90} // namespace NormalTractionBoundaryCondition
91} // namespace ProcessLib
92
Global vector based on Eigen vector.
Definition EigenVector.h:26
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.
std::vector< std::unique_ptr< NormalTractionBoundaryConditionLocalAssemblerInterface > > _local_assemblers
Local assemblers for each element of number of _elements.
std::unique_ptr< NormalTractionBoundaryCondition< GlobalDim, NormalTractionBoundaryConditionLocalAssembler > > createNormalTractionBoundaryCondition(BaseLib::ConfigTree const &config, 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)