OGS
ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation > Class Template Referencefinal

Detailed Description

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
class ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >

The normal traction boundary condition is a special type of Neumann boundary condition where the given value is applied in the direction of the element's normal vector \(\mathbf{n}\):

\[ \bar{t} := \sigma \mathbf{n} = p \mathbf{n}, \]

where \(p\) is the value on the boundary given by the parameter tag.

Definition at line 34 of file NormalTractionBoundaryCondition.h.

#include <NormalTractionBoundaryCondition.h>

Inheritance diagram for ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >:
[legend]
Collaboration diagram for ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >:
[legend]

Public Member Functions

 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)
void applyNaturalBC (const double t, std::vector< GlobalVector * > const &x, int const process_id, GlobalMatrix *K, GlobalVector &b, GlobalMatrix *Jac) override
Public Member Functions inherited from ProcessLib::BoundaryCondition
virtual void getEssentialBCValues (const double, GlobalVector const &, NumLib::IndexValueVector< GlobalIndexType > &) const
 Writes the values of essential BCs to bc_values.
virtual void preTimestep (const double, std::vector< GlobalVector * > const &, int const)
virtual void postTimestep (const double, std::vector< GlobalVector * > const &, int const)
virtual ~BoundaryCondition ()=default

Private Attributes

MeshLib::Mesh const & _bc_mesh
std::vector< MeshLib::Node * > _nodes_subset
std::unique_ptr< MeshLib::MeshSubset const > _mesh_subset_all_nodes
std::unique_ptr< NumLib::LocalToGlobalIndexMap_dof_table_boundary
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.
ParameterLib::Parameter< double > const & _pressure
std::vector< Eigen::Vector3d > _element_normals
 Normal vectors for each element in the boundary condition mesh.

Constructor & Destructor Documentation

◆ NormalTractionBoundaryCondition()

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >::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 )

Create a boundary condition process from given config, DOF-table, and a mesh subset for a given variable and its component. A local DOF-table, a subset of the given one, is constructed.

Definition at line 64 of file NormalTractionBoundaryCondition-impl.h.

74{
75 // Create component ids vector for the current variable.
76 auto const& number_of_components =
77 dof_table_bulk.getNumberOfVariableComponents(variable_id);
80
81 // BC mesh subset creation
83 DBUG("Found {:d} nodes for Natural BCs for the variable {:d}",
84 bc_nodes.size(), variable_id);
85
87
88 // Compute normal vectors for each element in the boundary condition mesh.
90 assert(bulk_element_ids != nullptr);
91 auto const& elements = _bc_mesh.getElements();
93 elements |
95 [&](const MeshLib::Element* e_ptr)
96 {
97 // Compute the corresponding bulk element for normal orientation
98 auto const* bulk_element =
99 bulk_mesh.getElement((*bulk_element_ids)[e_ptr->getID()]);
100 assert(bulk_element != nullptr);
101
103 }) |
105
106 // Create local DOF table from the BC mesh subset for the given variable and
107 // component ids.
108 _dof_table_boundary = dof_table_bulk.deriveBoundaryConstrainedMap(
110
115 _bc_mesh.isAxiallySymmetric(), _pressure, _element_normals);
116}
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:30
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.
PropertyVector< std::size_t > const * bulkElementIDs(Mesh const &mesh)
Definition Mesh.cpp:301
Eigen::Vector3d computeElementNormal(const MeshLib::Element &element, const MeshLib::Element &bulk_element)

References NormalTractionBoundaryCondition(), _bc_mesh, _dof_table_boundary, _element_normals, _integration_order, _local_assemblers, _pressure, MeshLib::bulkElementIDs(), ProcessLib::NormalTractionBoundaryCondition::computeElementNormal(), ProcessLib::BoundaryConditionAndSourceTerm::detail::createLocalAssemblers(), DBUG(), and MeshLib::Element::getID().

Referenced by NormalTractionBoundaryCondition(), and applyNaturalBC().

Member Function Documentation

◆ applyNaturalBC()

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
void ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >::applyNaturalBC ( const double t,
std::vector< GlobalVector * > const & x,
int const process_id,
GlobalMatrix * K,
GlobalVector & b,
GlobalMatrix * Jac )
overridevirtual

Member Data Documentation

◆ _bc_mesh

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
MeshLib::Mesh const& ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >::_bc_mesh
private

Definition at line 54 of file NormalTractionBoundaryCondition.h.

Referenced by NormalTractionBoundaryCondition().

◆ _dof_table_boundary

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
std::unique_ptr<NumLib::LocalToGlobalIndexMap> ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >::_dof_table_boundary
private

Local dof table, a subset of the global one restricted to the participating number of _elements of the boundary condition.

Definition at line 64 of file NormalTractionBoundaryCondition.h.

Referenced by NormalTractionBoundaryCondition(), and applyNaturalBC().

◆ _element_normals

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
std::vector<Eigen::Vector3d> ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >::_element_normals
private

Normal vectors for each element in the boundary condition mesh.

Definition at line 77 of file NormalTractionBoundaryCondition.h.

Referenced by NormalTractionBoundaryCondition().

◆ _integration_order

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
unsigned const ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >::_integration_order
private

Integration order for integration over the lower-dimensional elements.

Definition at line 67 of file NormalTractionBoundaryCondition.h.

Referenced by NormalTractionBoundaryCondition().

◆ _local_assemblers

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
std::vector< std::unique_ptr<NormalTractionBoundaryConditionLocalAssemblerInterface> > ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >::_local_assemblers
private

Local assemblers for each element of number of _elements.

Definition at line 72 of file NormalTractionBoundaryCondition.h.

Referenced by NormalTractionBoundaryCondition(), and applyNaturalBC().

◆ _mesh_subset_all_nodes

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
std::unique_ptr<MeshLib::MeshSubset const> ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >::_mesh_subset_all_nodes
private

Definition at line 60 of file NormalTractionBoundaryCondition.h.

◆ _nodes_subset

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
std::vector<MeshLib::Node*> ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >::_nodes_subset
private

Intersection of boundary nodes and bulk mesh subset for the variable_id/component_id pair.

Definition at line 58 of file NormalTractionBoundaryCondition.h.

◆ _pressure

template<int GlobalDim, template< typename, int > class LocalAssemblerImplementation>
ParameterLib::Parameter<double> const& ProcessLib::NormalTractionBoundaryCondition::NormalTractionBoundaryCondition< GlobalDim, LocalAssemblerImplementation >::_pressure
private

Definition at line 74 of file NormalTractionBoundaryCondition.h.

Referenced by NormalTractionBoundaryCondition().


The documentation for this class was generated from the following files: