32 PythonBoundaryConditionPythonSideInterface>
40 std::vector<double>
const& prim_vars_data)
const
42 auto [flag, flux, dFlux] =
52 return {flag, flux, std::move(dFlux)};
62 unsigned const integration_order,
63 bool const flush_stdout,
64 unsigned const bulk_mesh_dimension,
71 void applyNaturalBC(
const double t, std::vector<GlobalVector*>
const& x,
95 int const comp)
const;
110 std::vector<std::unique_ptr<PythonBoundaryConditionLocalAssemblerInterface>>
124 int const component_id,
unsigned const integration_order,
125 unsigned const shapefunction_order,
126 std::vector<std::reference_wrapper<ProcessVariable>>
const&
127 all_process_variables_for_this_process);
GlobalMatrix::IndexType GlobalIndexType
Global vector based on Eigen vector.
bool isOverriddenNatural() const
virtual std::tuple< bool, double, std::vector< double > > getFlux(double, std::array< double, 3 >, std::vector< double > const &) const
A boundary condition whose values are computed by a Python script.
std::unique_ptr< NumLib::LocalToGlobalIndexMap > _dof_table_boundary
Local dof table for the boundary mesh.
double interpolateToHigherOrderNode(GlobalVector const &x, int const var, int const comp, MeshLib::Node const &boundary_node) const
PythonBcData _bc_data
Auxiliary data used by the local assemblers.
void applyNaturalBC(const double t, std::vector< GlobalVector * > const &x, int const process_id, GlobalMatrix *K, GlobalVector &b, GlobalMatrix *Jac) override
std::vector< std::unique_ptr< PythonBoundaryConditionLocalAssemblerInterface > > _local_assemblers
Local assemblers for all elements of the boundary mesh.
void getEssentialBCValues(const double t, const GlobalVector &x, NumLib::IndexValueVector< GlobalIndexType > &bc_values) const override
Writes the values of essential BCs to bc_values.
GlobalIndexType getDofIdx(std::size_t const boundary_node_id) const
void collectPrimaryVariables(std::vector< double > &primary_variables, MeshLib::Node const &boundary_node, GlobalVector const &x) const
PythonBoundaryCondition(PythonBcData &&bc_data, unsigned const integration_order, bool const flush_stdout, unsigned const bulk_mesh_dimension, NumLib::LocalToGlobalIndexMap const &dof_table_bulk)
std::unique_ptr< PythonBoundaryCondition > createPythonBoundaryCondition(BaseLib::ConfigTree const &config, MeshLib::Mesh const &boundary_mesh, NumLib::LocalToGlobalIndexMap const &dof_table_bulk, MeshLib::Mesh const &bulk_mesh, int const variable_id, int const component_id, unsigned const integration_order, unsigned const shapefunction_order, std::vector< std::reference_wrapper< ProcessVariable > > const &all_process_variables_for_this_process)
Creates a new PythonBoundaryCondition object.
PythonBoundaryConditionPythonSideInterface const *const bc_or_st_object
ProcessLib::BoundaryConditionAndSourceTerm::Python::FlagAndFluxAndDFlux getFlagAndFluxAndDFlux(double const t, std::array< double, 3 > const coords, std::vector< double > const &prim_vars_data) const