OGS
ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim > Class Template Referencefinal

Detailed Description

template<typename ShapeFunction, typename IntegrationMethod, int GlobalDim>
class ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >

Definition at line 27 of file RobinBoundaryConditionLocalAssembler.h.

#include <RobinBoundaryConditionLocalAssembler.h>

Inheritance diagram for ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >:
[legend]
Collaboration diagram for ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >:
[legend]

Public Member Functions

 RobinBoundaryConditionLocalAssembler (MeshLib::Element const &e, std::size_t const local_matrix_size, bool is_axially_symmetric, unsigned const integration_order, RobinBoundaryConditionData const &data)
 
void assemble (std::size_t const id, NumLib::LocalToGlobalIndexMap const &dof_table_boundary, double const t, std::vector< GlobalVector * > const &, int const, GlobalMatrix &K, GlobalVector &b, GlobalMatrix *) override
 
- Public Member Functions inherited from ProcessLib::GenericNaturalBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >
 GenericNaturalBoundaryConditionLocalAssembler (MeshLib::Element const &e, bool is_axially_symmetric, unsigned const integration_order)
 
- Public Member Functions inherited from ProcessLib::GenericNaturalBoundaryConditionLocalAssemblerInterface
virtual ~GenericNaturalBoundaryConditionLocalAssemblerInterface ()=default
 

Public Attributes

 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
 

Private Types

using Base = GenericNaturalBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >
 
using ShapeMatricesType = ShapeMatrixPolicyType< ShapeFunction, GlobalDim >
 

Private Attributes

RobinBoundaryConditionData const & _data
 
Base::NodalMatrixType _local_K
 
Base::NodalVectorType _local_rhs
 

Additional Inherited Members

- Protected Types inherited from ProcessLib::GenericNaturalBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >
using ShapeMatricesType = ShapeMatrixPolicyType< ShapeFunction, GlobalDim >
 
using NodalMatrixType = typename ShapeMatricesType::NodalMatrixType
 
using NodalVectorType = typename ShapeMatricesType::NodalVectorType
 
- Protected Attributes inherited from ProcessLib::GenericNaturalBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >
IntegrationMethod const _integration_method
 
std::vector< NAndWeight, Eigen::aligned_allocator< NAndWeight > > const _ns_and_weights
 
MeshLib::Element const & _element
 

Member Typedef Documentation

◆ Base

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
using ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::Base = GenericNaturalBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim>
private

Definition at line 31 of file RobinBoundaryConditionLocalAssembler.h.

◆ ShapeMatricesType

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
using ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::ShapeMatricesType = ShapeMatrixPolicyType<ShapeFunction, GlobalDim>
private

Definition at line 33 of file RobinBoundaryConditionLocalAssembler.h.

Constructor & Destructor Documentation

◆ RobinBoundaryConditionLocalAssembler()

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::RobinBoundaryConditionLocalAssembler ( MeshLib::Element const &  e,
std::size_t const  local_matrix_size,
bool  is_axially_symmetric,
unsigned const  integration_order,
RobinBoundaryConditionData const &  data 
)
inline

Definition at line 36 of file RobinBoundaryConditionLocalAssembler.h.

41  : Base(e, is_axially_symmetric, integration_order),
42  _data(data),
43  _local_K(local_matrix_size, local_matrix_size),
44  _local_rhs(local_matrix_size)
45  {
46  }
GenericNaturalBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim > Base

Member Function Documentation

◆ assemble()

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
void ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::assemble ( std::size_t const  id,
NumLib::LocalToGlobalIndexMap const &  dof_table_boundary,
double const  t,
std::vector< GlobalVector * > const &  ,
int const  ,
GlobalMatrix K,
GlobalVector b,
GlobalMatrix  
)
inlineoverridevirtual

Implements ProcessLib::GenericNaturalBoundaryConditionLocalAssemblerInterface.

Definition at line 49 of file RobinBoundaryConditionLocalAssembler.h.

54  {
55  _local_K.setZero();
56  _local_rhs.setZero();
57 
58  unsigned const n_integration_points =
59  Base::_integration_method.getNumberOfPoints();
60 
61  typename Base::NodalVectorType const alpha =
63  .template topRows<ShapeFunction::MeshElement::n_all_nodes>();
64  typename Base::NodalVectorType const u_0 =
66  .template topRows<ShapeFunction::MeshElement::n_all_nodes>();
67 
68  for (unsigned ip = 0; ip < n_integration_points; ++ip)
69  {
70  auto const& ip_data = Base::_ns_and_weights[ip];
71  auto const& N = ip_data.N;
72  auto const& w = ip_data.weight;
73 
74  ParameterLib::SpatialPosition const position{
75  std::nullopt, Base::_element.getID(), ip,
77  NumLib::interpolateCoordinates<ShapeFunction,
79  Base::_element, N))};
80 
81  double integral_measure = 1.0;
83  {
84  integral_measure = (*_data.integral_measure)(t, position)[0];
85  }
86 
87  // flux = alpha * ( u_0 - u )
88  // adding a alpha term to the diagonal of the stiffness matrix
89  // and a alpha * u_0 term to the rhs vector
90  _local_K.diagonal().noalias() +=
91  N * alpha.dot(N) * w * integral_measure;
92  _local_rhs.noalias() +=
93  N * alpha.dot(N) * u_0.dot(N) * w * integral_measure;
94  }
95 
96  auto const indices = NumLib::getIndices(id, dof_table_boundary);
98  _local_K);
99  b.add(indices, _local_rhs);
100  }
int add(IndexType row, IndexType col, double val)
Definition: EigenMatrix.h:87
void add(IndexType rowId, double v)
add entry
Definition: EigenVector.h:80
virtual std::size_t getID() const final
Returns the ID of the element.
Definition: Element.h:82
std::vector< NAndWeight, Eigen::aligned_allocator< NAndWeight > > const _ns_and_weights
ShapeMatrixPolicyType< ShapeFunction, GlobalDim > ShapeMatricesType
MathLib::TemplatePoint< double, 3 > Point3d
std::vector< GlobalIndexType > getIndices(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table)
std::array< double, 3 > interpolateCoordinates(MeshLib::Element const &e, typename ShapeMatricesType::ShapeMatrices::ShapeType const &N)
virtual Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > getNodalValuesOnElement(MeshLib::Element const &element, double const t) const
Returns a matrix of values for all nodes of the given element.
Definition: Parameter.h:163
ParameterLib::Parameter< double > const *const integral_measure
ParameterLib::Parameter< double > const & alpha
ParameterLib::Parameter< double > const & u_0

References ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_data, ProcessLib::GenericNaturalBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_element, ProcessLib::GenericNaturalBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_integration_method, ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_local_K, ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_local_rhs, ProcessLib::GenericNaturalBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_ns_and_weights, MathLib::EigenMatrix::add(), MathLib::EigenVector::add(), MaterialPropertyLib::alpha, ProcessLib::RobinBoundaryConditionData::alpha, MeshLib::Element::getID(), NumLib::getIndices(), ParameterLib::Parameter< T >::getNodalValuesOnElement(), ProcessLib::RobinBoundaryConditionData::integral_measure, NumLib::interpolateCoordinates(), and ProcessLib::RobinBoundaryConditionData::u_0.

Member Data Documentation

◆ _data

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
RobinBoundaryConditionData const& ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_data
private

◆ _local_K

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
Base::NodalMatrixType ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_local_K
private

◆ _local_rhs

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
Base::NodalVectorType ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::_local_rhs
private

◆ EIGEN_MAKE_ALIGNED_OPERATOR_NEW

template<typename ShapeFunction , typename IntegrationMethod , int GlobalDim>
ProcessLib::RobinBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim >::EIGEN_MAKE_ALIGNED_OPERATOR_NEW

Definition at line 109 of file RobinBoundaryConditionLocalAssembler.h.


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