From f66c38dca101b012044ea36d9e9ac47605cb1b70 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de> Date: Mon, 30 Jan 2023 17:15:18 +0100 Subject: [PATCH] ditto for DWBAComputation --- Sim/Computation/DWBAComputation.cpp | 32 ++++++++++--------------- Sim/Computation/DWBAComputation.h | 8 ++----- Sim/Simulation/OffspecSimulation.cpp | 5 ++-- Sim/Simulation/ScatteringSimulation.cpp | 5 ++-- 4 files changed, 18 insertions(+), 32 deletions(-) diff --git a/Sim/Computation/DWBAComputation.cpp b/Sim/Computation/DWBAComputation.cpp index 99d7ffe3a96..23020a04a39 100644 --- a/Sim/Computation/DWBAComputation.cpp +++ b/Sim/Computation/DWBAComputation.cpp @@ -24,12 +24,8 @@ #include "Sim/Contrib/RoughMultiLayerContribution.h" DWBAComputation::DWBAComputation(const ReSample& re_sample, const SimulationOptions& options, - ProgressHandler& progress, - std::vector<DiffuseElement>::iterator begin_it, - std::vector<DiffuseElement>::iterator end_it) + ProgressHandler& progress) : IComputation(re_sample, options, progress) - , m_begin_it(begin_it) - , m_end_it(end_it) { } @@ -40,24 +36,20 @@ DWBAComputation::~DWBAComputation() = default; // For roughness: (scattering cross-section of area S)/S // For specular peak: |R|^2 * sin(alpha_i) / solid_angle // This allows them to be added and normalized together to the beam afterwards -void DWBAComputation::runProtected() +void DWBAComputation::run(DiffuseElement& ele) { - for (auto it = m_begin_it; it != m_end_it; ++it) { - DiffuseElement& ele = *it; + const Fluxes fluxes_in = m_re_sample.fluxesIn(ele.getKi()); + const Fluxes fluxes_out = m_re_sample.fluxesOut(ele.meanKf()); + ele.setFluxes(&fluxes_in, &fluxes_out); - const Fluxes fluxes_in = m_re_sample.fluxesIn(ele.getKi()); - const Fluxes fluxes_out = m_re_sample.fluxesOut(ele.meanKf()); - ele.setFluxes(&fluxes_in, &fluxes_out); + for (const ReLayout* relayout : m_re_sample.relayouts()) + compute::dwbaContribution(*relayout, ele); - for (const ReLayout* relayout : m_re_sample.relayouts()) - compute::dwbaContribution(*relayout, ele); + if (m_re_sample.hasRoughness()) + compute::roughMultiLayerContribution(m_re_sample, ele); - if (m_re_sample.hasRoughness()) - compute::roughMultiLayerContribution(m_re_sample, ele); + if (m_options.includeSpecular()) + compute::gisasSpecularContribution(ele); - if (m_options.includeSpecular()) - compute::gisasSpecularContribution(ele); - - stepProgress(); - } + stepProgress(); } diff --git a/Sim/Computation/DWBAComputation.h b/Sim/Computation/DWBAComputation.h index 48fd859af57..91a39df47b3 100644 --- a/Sim/Computation/DWBAComputation.h +++ b/Sim/Computation/DWBAComputation.h @@ -37,14 +37,10 @@ class SimulationOptions; class DWBAComputation : public IComputation { public: DWBAComputation(const ReSample& re_sample, const SimulationOptions& options, - ProgressHandler& progress, std::vector<DiffuseElement>::iterator begin_it, - std::vector<DiffuseElement>::iterator end_it); + ProgressHandler& progress); ~DWBAComputation() override; - void runProtected() override; - -private: - std::vector<DiffuseElement>::iterator m_begin_it, m_end_it; + void run(DiffuseElement& ele); }; #endif // BORNAGAIN_SIM_COMPUTATION_DWBACOMPUTATION_H diff --git a/Sim/Simulation/OffspecSimulation.cpp b/Sim/Simulation/OffspecSimulation.cpp index 4cea6eb8552..a0e71f93410 100644 --- a/Sim/Simulation/OffspecSimulation.cpp +++ b/Sim/Simulation/OffspecSimulation.cpp @@ -147,9 +147,8 @@ void OffspecSimulation::initDistributionHandler() void OffspecSimulation::runComputation(const ReSample& re_sample, size_t iElement) { - const auto& begin = m_eles.begin() + static_cast<long>(iElement); - DWBAComputation(re_sample, options(), progress(), begin, begin + static_cast<long>(1)) - .runProtected(); + DiffuseElement& ele = *(m_eles.begin() + static_cast<long>(iElement)); + DWBAComputation(re_sample, options(), progress()).run(ele); } void OffspecSimulation::normalize(size_t start, size_t n_elements) diff --git a/Sim/Simulation/ScatteringSimulation.cpp b/Sim/Simulation/ScatteringSimulation.cpp index 8840cfd2b29..c899bd2128a 100644 --- a/Sim/Simulation/ScatteringSimulation.cpp +++ b/Sim/Simulation/ScatteringSimulation.cpp @@ -120,9 +120,8 @@ void ScatteringSimulation::initElementVector() void ScatteringSimulation::runComputation(const ReSample& re_sample, size_t iElement) { - const auto& begin = m_eles.begin() + static_cast<long>(iElement); - DWBAComputation(re_sample, options(), progress(), begin, begin + static_cast<long>(1)) - .runProtected(); + DiffuseElement& ele = *(m_eles.begin() + static_cast<long>(iElement)); + DWBAComputation(re_sample, options(), progress()).run(ele); } void ScatteringSimulation::normalize(size_t start, size_t n_elements) -- GitLab