diff --git a/ProcessLib/SurfaceFlux/SurfaceFlux.cpp b/ProcessLib/SurfaceFlux/SurfaceFlux.cpp index 0c98cd7de64736f63d2eafe2120b93283b0f119a..649cbe93c9183edb7de33190a405752bb6804db6 100644 --- a/ProcessLib/SurfaceFlux/SurfaceFlux.cpp +++ b/ProcessLib/SurfaceFlux/SurfaceFlux.cpp @@ -57,15 +57,16 @@ void SurfaceFlux::integrate( MeshLib::PropertyVector<double>& balance, double const t, MeshLib::Mesh const& bulk_mesh, + std::vector<bool> const& element_selector, std::function<Eigen::Vector3d(std::size_t const, MathLib::Point3d const&, double const, GlobalVector const&)> const& getFlux) { DBUG("Integrate SurfaceFlux."); - GlobalExecutor::executeMemberOnDereferenced( + GlobalExecutor::executeSelectedMemberOnDereferenced( &SurfaceFluxLocalAssemblerInterface::integrate, - _local_assemblers, x, balance, t, bulk_mesh, getFlux); + _local_assemblers, element_selector, x, balance, t, bulk_mesh, getFlux); } } // namespace ProcessLib diff --git a/ProcessLib/SurfaceFlux/SurfaceFlux.h b/ProcessLib/SurfaceFlux/SurfaceFlux.h index 5f3e360be602ea67b6fa5a449c0e034aeeb34910..39d4d86d61d22f0147958fcf78c425bd8217387a 100644 --- a/ProcessLib/SurfaceFlux/SurfaceFlux.h +++ b/ProcessLib/SurfaceFlux/SurfaceFlux.h @@ -9,6 +9,8 @@ #pragma once +#include <vector> + #include "ProcessLib/Process.h" #include "SurfaceFluxLocalAssembler.h" @@ -39,6 +41,7 @@ public: MeshLib::PropertyVector<double>& balance, double const t, MeshLib::Mesh const& bulk_mesh, + std::vector<bool> const& element_selector, std::function<Eigen::Vector3d( std::size_t const, MathLib::Point3d const&, double const, GlobalVector const&)> const& getFlux); diff --git a/ProcessLib/SurfaceFlux/SurfaceFluxData.h b/ProcessLib/SurfaceFlux/SurfaceFluxData.h index 53619dc6cc3a8a548b4d3ebb14c151d88c072b6d..3df6d6117bfdf8f116509379b4c2e0207f8c9cba 100644 --- a/ProcessLib/SurfaceFlux/SurfaceFluxData.h +++ b/ProcessLib/SurfaceFlux/SurfaceFluxData.h @@ -80,7 +80,8 @@ struct SurfaceFluxData void integrate(GlobalVector const& x, double const t, Process const& p, int const process_id, int const integration_order, - MeshLib::Mesh const& bulk_mesh) + MeshLib::Mesh const& bulk_mesh, + std::vector<bool> const& element_selector) { auto* const surfaceflux_pv = MeshLib::getOrCreateMeshProperty<double>( surface_mesh, property_vector_name, MeshLib::MeshItemType::Cell, 1); @@ -92,7 +93,7 @@ struct SurfaceFluxData integration_order); surfaceflux_process.integrate( - x, *surfaceflux_pv, t, bulk_mesh, + x, *surfaceflux_pv, t, bulk_mesh, element_selector, [&p](std::size_t const element_id, MathLib::Point3d const& pnt, double const t, GlobalVector const& x) { return p.getFlux(element_id, pnt, t, x);