From c88a9156da9984f92ca8658e68b1090f8bcb502e Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Wed, 5 Dec 2018 15:53:52 +0100 Subject: [PATCH] [SurfaceFlux] enabled element deactivation --- ProcessLib/SurfaceFlux/SurfaceFlux.cpp | 5 +++-- ProcessLib/SurfaceFlux/SurfaceFlux.h | 3 +++ ProcessLib/SurfaceFlux/SurfaceFluxData.h | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ProcessLib/SurfaceFlux/SurfaceFlux.cpp b/ProcessLib/SurfaceFlux/SurfaceFlux.cpp index 0c98cd7de64..649cbe93c91 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 5f3e360be60..39d4d86d61d 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 53619dc6cc3..3df6d6117bf 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); -- GitLab