13 std::size_t bulk_property_number_of_components,
14 unsigned const integration_order)
16 DBUG(
"Create local balance assemblers.");
21 auto mesh_subset_all_nodes = std::make_unique<MeshLib::MeshSubset>(
22 boundary_mesh, boundary_mesh.
getNodes());
25 std::vector<MeshLib::MeshSubset> all_mesh_subsets;
26 std::generate_n(std::back_inserter(all_mesh_subsets),
27 bulk_property_number_of_components,
28 [&]() {
return *mesh_subset_all_nodes; });
31 auto dof_table = std::make_unique<NumLib::LocalToGlobalIndexMap const>(
34 auto const bulk_element_ids =
35 boundary_mesh.
getProperties().template getPropertyVector<std::size_t>(
38 auto const bulk_face_ids =
39 boundary_mesh.
getProperties().template getPropertyVector<std::size_t>(
51 std::vector<GlobalVector*>
const& x,
55 std::vector<std::size_t>
const& active_element_ids,
56 std::function<Eigen::Vector3d(
58 std::vector<GlobalVector*>
const&)>
const& getFlux)
60 DBUG(
"Integrate SurfaceFlux.");
64 active_element_ids, x, balance, t, bulk_mesh, getFlux);
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
bool isAxiallySymmetric() const
std::vector< Node * > const & getNodes() const
Get the nodes-vector for the mesh.
std::vector< Element * > const & getElements() const
Get the element-vector for the mesh.
unsigned getDimension() const
Returns the dimension of the mesh (determined by the maximum dimension over all elements).
Properties & getProperties()
virtual void integrate(std::size_t const element_id, std::vector< GlobalVector * > const &x, MeshLib::PropertyVector< double > &specific_flux, double const t, MeshLib::Mesh const &bulk_mesh, std::function< Eigen::Vector3d(std::size_t const, MathLib::Point3d const &, double const, std::vector< GlobalVector * > const &)>)=0
void integrate(std::vector< GlobalVector * > const &x, MeshLib::PropertyVector< double > &balance, double const t, MeshLib::Mesh const &bulk_mesh, std::vector< std::size_t > const &active_element_ids, std::function< Eigen::Vector3d(std::size_t const, MathLib::Point3d const &, double const, std::vector< GlobalVector * > const &)> const &getFlux)
SurfaceFlux(MeshLib::Mesh &boundary_mesh, std::size_t bulk_property_number_of_components, unsigned const integration_order)
std::vector< std::unique_ptr< SurfaceFluxLocalAssemblerInterface > > _local_assemblers
constexpr std::string_view getBulkIDString(MeshItemType mesh_item_type)
@ BY_LOCATION
Ordering data by spatial location.
void createLocalAssemblers(std::vector< MeshLib::Element * > const &mesh_elements, NumLib::LocalToGlobalIndexMap const &dof_table, std::vector< std::unique_ptr< LocalAssemblerInterface > > &local_assemblers, ProviderOrOrder const &provider_or_order, ExtraCtorArgs &&... extra_ctor_args)
static void executeSelectedMemberOnDereferenced(Method method, Container const &container, std::vector< std::size_t > const &active_container_ids, Args &&... args)