16template <
typename ShapeMatricesType>
20 typename ShapeMatricesType::ShapeMatrices::ShapeType
const N_,
21 typename ShapeMatricesType::GlobalDimVectorType
const n_,
22 double const integration_weight_)
27 typename ShapeMatricesType::ShapeMatrices::ShapeType
const N;
28 typename ShapeMatricesType::GlobalDimVectorType
const n;
43template <
typename ShapeFunctionDisplacement,
int GlobalDim>
55 std::size_t
const local_matrix_size,
57 bool const is_axially_symmetric,
59 std::vector<Eigen::Vector3d>
const& element_normals)
66 unsigned const n_integration_points =
69 _ip_data.reserve(n_integration_points);
71 auto const shape_matrices_u =
76 for (
unsigned ip = 0; ip < n_integration_points; ip++)
78 double const integration_weight =
80 shape_matrices_u[ip].integralMeasure *
81 shape_matrices_u[ip].detJ;
83 _ip_data.emplace_back(shape_matrices_u[ip].N,
84 element_normals[e.
getID()].head<GlobalDim>(),
91 double const t, std::vector<GlobalVector*>
const& ,
97 unsigned const n_integration_points =
103 for (
unsigned ip = 0; ip < n_integration_points; ip++)
105 auto const& w =
_ip_data[ip].integration_weight;
109 typename ShapeMatricesType::template MatrixType<GlobalDim,
111 N_u = ShapeMatricesType::template MatrixType<
114 for (
int i = 0; i < GlobalDim; ++i)
121 _local_rhs.noalias() -= n.transpose() * N_u * pressure.dot(N) * w;
133 ShapeFunctionDisplacement::NPOINTS * GlobalDim;
136 Eigen::aligned_allocator<IntegrationPointData<ShapeMatricesType>>>
139 typename ShapeMatricesType::template VectorType<displacement_size>
MathLib::EigenMatrix GlobalMatrix
MathLib::EigenVector GlobalVector
EigenFixedShapeMatrixPolicy< ShapeFunction, GlobalDim > ShapeMatrixPolicyType
void add(IndexType rowId, double v)
add entry
std::size_t getID() const
Returns the ID of the element.
virtual ~NormalTractionBoundaryConditionLocalAssemblerInterface()=default
virtual void assemble(std::size_t const id, NumLib::LocalToGlobalIndexMap const &dof_table_boundary, double const t, std::vector< GlobalVector * > const &, GlobalMatrix *, GlobalVector &b, GlobalMatrix *)=0
typename ShapeMatricesType::GlobalDimVectorType GlobalDimVectorType
NumLib::GenericIntegrationMethod const & _integration_method
static const int displacement_size
NormalTractionBoundaryConditionLocalAssembler(MeshLib::Element const &e, std::size_t const local_matrix_size, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, ParameterLib::Parameter< double > const &pressure, std::vector< Eigen::Vector3d > const &element_normals)
ShapeMatricesType::template VectorType< displacement_size > _local_rhs
ShapeMatrixPolicyType< ShapeFunctionDisplacement, GlobalDim > ShapeMatricesType
void assemble(std::size_t const id, NumLib::LocalToGlobalIndexMap const &dof_table_boundary, double const t, std::vector< GlobalVector * > const &, GlobalMatrix *, GlobalVector &local_rhs, GlobalMatrix *) override
ParameterLib::Parameter< double > const & _pressure
std::vector< IntegrationPointData< ShapeMatricesType >, Eigen::aligned_allocator< IntegrationPointData< ShapeMatricesType > > > _ip_data
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
MeshLib::Element const & _element
typename ShapeMatricesType::NodalVectorType NodalVectorType
std::vector< GlobalIndexType > getIndices(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table)
std::vector< typename ShapeMatricesType::ShapeMatrices, Eigen::aligned_allocator< typename ShapeMatricesType::ShapeMatrices > > initShapeMatrices(MeshLib::Element const &e, bool const is_axially_symmetric, IntegrationMethod const &integration_method)
VectorType< GlobalDim > GlobalDimVectorType
VectorType< ShapeFunction::NPOINTS > NodalVectorType
IntegrationPointData(typename ShapeMatricesType::ShapeMatrices::ShapeType const N_, typename ShapeMatricesType::GlobalDimVectorType const n_, double const integration_weight_)
double const integration_weight
ShapeMatricesType::GlobalDimVectorType const n
ShapeMatricesType::ShapeMatrices::ShapeType const N