19template <
typename ShapeFunction,
typename LowerOrderShapeFunction,
24 using LocAsmImpl = ProcessLib::BoundaryConditionAndSourceTerm::Python::
26 LowerOrderShapeFunction, GlobalDim>;
27 using Traits =
typename LocAsmImpl::Traits;
34 bool is_axially_symmetric,
36 :
impl_{e, integration_method, is_axially_symmetric, data}
40 void assemble(std::size_t
const boundary_element_id,
42 double const t, std::vector<GlobalVector*>
const& xs,
46 impl_.assemble(boundary_element_id, dof_table_boundary, t,
47 *xs[process_id], b, Jac);
53 int const comp)
const override
55 if constexpr (ShapeFunction::ORDER < 2 ||
56 LowerOrderShapeFunction::ORDER > 1)
58 return std::numeric_limits<double>::quiet_NaN();
64 auto const nodal_values_base_node =
68 impl_.bc_or_st_data.bc_or_st_mesh.getID(),
69 dof_table_boundary, x, var, comp);
71 return N * nodal_values_base_node;
77 unsigned const local_node_id)
const
79 using HigherOrderMeshElement =
typename ShapeFunction::MeshElement;
81 assert(local_node_id <
impl_.element.getNumberOfNodes());
84 HigherOrderMeshElement>::coordinates[local_node_id]}};
86 bool const is_axially_symmetric =
false;
88 LowerOrderShapeFunction,
89 typename Traits::LowerOrderShapeMatrixPolicy, GlobalDim,
92 return shape_matrices.front().N;
Global vector based on Eigen vector.
double interpolate(unsigned const local_node_id, NumLib::LocalToGlobalIndexMap const &dof_table_boundary, GlobalVector const &x, int const var, int const comp) const override
ProcessLib::BoundaryConditionAndSourceTerm::Python:: BcAndStLocalAssemblerImpl< PythonBcData, ShapeFunction, LowerOrderShapeFunction, GlobalDim > LocAsmImpl
Traits::LowerOrderShapeMatrix computeLowerOrderShapeMatrix(unsigned const local_node_id) const
typename LocAsmImpl::Traits Traits
void assemble(std::size_t const boundary_element_id, NumLib::LocalToGlobalIndexMap const &dof_table_boundary, double const t, std::vector< GlobalVector * > const &xs, int const process_id, GlobalMatrix *, GlobalVector &b, GlobalMatrix *const Jac) override
PythonBoundaryConditionLocalAssembler(MeshLib::Element const &e, std::size_t const, NumLib::GenericIntegrationMethod const &integration_method, bool is_axially_symmetric, PythonBcData const &data)
std::vector< typename ShapeMatricesType::ShapeMatrices, Eigen::aligned_allocator< typename ShapeMatricesType::ShapeMatrices > > computeShapeMatrices(MeshLib::Element const &e, bool const is_axially_symmetric, PointContainer const &points)
Eigen::VectorXd collectDofsToMatrixOnBaseNodesSingleComponent(MeshLib::Element const &element, std::size_t const mesh_id, NumLib::LocalToGlobalIndexMap const &dof_table, GlobalVector const &x, int const variable, int const component)