12template <
typename ShapeFunction,
typename LowerOrderShapeFunction,
17 using LocAsmImpl = ProcessLib::BoundaryConditionAndSourceTerm::Python::
19 LowerOrderShapeFunction, GlobalDim>;
20 using Traits =
typename LocAsmImpl::Traits;
27 bool is_axially_symmetric,
29 :
impl_{e, integration_method, is_axially_symmetric, data}
33 void assemble(std::size_t
const boundary_element_id,
35 double const t, std::vector<GlobalVector*>
const& xs,
39 impl_.assemble(boundary_element_id, dof_table_boundary, t,
40 *xs[process_id], b, Jac);
46 int const comp)
const override
48 if constexpr (ShapeFunction::ORDER < 2 ||
49 LowerOrderShapeFunction::ORDER > 1)
51 return std::numeric_limits<double>::quiet_NaN();
57 auto const nodal_values_base_node =
61 impl_.bc_or_st_data.bc_or_st_mesh.getID(),
62 dof_table_boundary, x, var, comp);
64 return N * nodal_values_base_node;
70 unsigned const local_node_id)
const
72 using HigherOrderMeshElement =
typename ShapeFunction::MeshElement;
74 assert(local_node_id <
impl_.element.getNumberOfNodes());
77 HigherOrderMeshElement>::coordinates[local_node_id]}};
79 bool const is_axially_symmetric =
false;
81 LowerOrderShapeFunction,
82 typename Traits::LowerOrderShapeMatrixPolicy, GlobalDim,
85 return shape_matrices.front().N;
MathLib::EigenMatrix GlobalMatrix
MathLib::EigenVector GlobalVector
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)