From f102d44d6e9acba353f98fd0e5087e7a43a9c6aa Mon Sep 17 00:00:00 2001 From: Walter Van Herck <w.van.herck@fz-juelich.de> Date: Wed, 1 Feb 2017 13:57:18 +0100 Subject: [PATCH] Refactor MainComputation: ParticleLayoutComputations are now in a simple vector (instead of vector<vector<..>>) --- Core/Computation/MainComputation.cpp | 39 ++++++++++++++-------------- Core/Computation/MainComputation.h | 2 +- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/Core/Computation/MainComputation.cpp b/Core/Computation/MainComputation.cpp index 936b774456e..714a91f33e8 100644 --- a/Core/Computation/MainComputation.cpp +++ b/Core/Computation/MainComputation.cpp @@ -46,11 +46,10 @@ MainComputation::MainComputation( msglog(Logging::DEBUG2) << "MainComputation::init()"; size_t nLayers = mP_multi_layer->getNumberOfLayers(); - m_layer_computation.resize( nLayers ); for (size_t i=0; i<nLayers; ++i) { const Layer* layer = mP_multi_layer->getLayer(i); for (size_t j=0; j<layer->getNumberOfLayouts(); ++j) - m_layer_computation[i].push_back( + m_layer_computation.push_back( new ParticleLayoutComputation(mP_multi_layer.get(), layer->getLayout(j), i)); } @@ -64,9 +63,8 @@ MainComputation::~MainComputation() { delete mp_roughness_computation; delete mp_specular_computation; - for (auto& layer_comp: m_layer_computation) - for (ParticleLayoutComputation* comp: layer_comp) - delete comp; + for (ParticleLayoutComputation* comp: m_layer_computation) + delete comp; } void MainComputation::run() @@ -99,14 +97,12 @@ void MainComputation::runProtected() std::vector<SimulationElement> layer_elements; std::copy(m_begin_it, m_end_it, std::back_inserter(layer_elements)); bool polarized = mP_multi_layer->containsMagneticMaterial(); - for (auto& layer_comp: m_layer_computation) { - for (const ParticleLayoutComputation* comp: layer_comp) { - if (!m_progress->alive()) - return; - comp->eval(m_sim_options, m_progress, polarized, - layer_elements.begin(), layer_elements.end()); - addElementsWithWeight(layer_elements.begin(), layer_elements.end(), m_begin_it, 1.0); - } + for (const ParticleLayoutComputation* comp: m_layer_computation) { + if (!m_progress->alive()) + return; + comp->eval(m_sim_options, m_progress, polarized, + layer_elements.begin(), layer_elements.end()); + addElementsWithWeight(layer_elements.begin(), layer_elements.end(), m_begin_it, 1.0); } if (!mP_multi_layer->requiresMatrixRTCoefficients() && mp_roughness_computation) { @@ -125,15 +121,16 @@ void MainComputation::runProtected() void MainComputation::collectRTCoefficientsScalar() { if (m_fresnel_info.size()!=0) return; + // run through layers and construct T,R functions for(size_t i=0; i<mP_multi_layer->getNumberOfLayers(); ++i) { msglog(Logging::DEBUG2) << "MainComputation::run() -> Layer " << i; m_fresnel_info.push_back(new ScalarSpecularInfoMap(mP_multi_layer.get(), i)); + } - // layer DWBA simulation - for(ParticleLayoutComputation* comp: m_layer_computation[i]) - comp->setSpecularInfo(&m_fresnel_info); - + // layer DWBA simulation + for (ParticleLayoutComputation* comp: m_layer_computation) { + comp->setSpecularInfo(&m_fresnel_info); } // specular simulation (R^2 at top layer) mp_specular_computation->setSpecularInfo(&m_fresnel_info); @@ -146,14 +143,16 @@ void MainComputation::collectRTCoefficientsMatrix() { if (m_fresnel_info.size()!=0) return; mP_inverted_multilayer.reset(mP_multi_layer->cloneInvertB()); + // run through layers and construct T,R functions for(size_t i=0; i<mP_multi_layer->getNumberOfLayers(); ++i) { msglog(Logging::DEBUG2) << "MainComputation::runMagnetic() -> Layer " << i; m_fresnel_info.push_back(new MatrixSpecularInfoMap(mP_multi_layer.get(), mP_inverted_multilayer.get(), i)); + } - // layer DWBA simulation - for(ParticleLayoutComputation* comp: m_layer_computation[i]) - comp->setSpecularInfo(&m_fresnel_info); + // layer DWBA simulation + for (ParticleLayoutComputation* comp: m_layer_computation) { + comp->setSpecularInfo(&m_fresnel_info); } } diff --git a/Core/Computation/MainComputation.h b/Core/Computation/MainComputation.h index 4d8fb731988..f1a0348b6a8 100644 --- a/Core/Computation/MainComputation.h +++ b/Core/Computation/MainComputation.h @@ -70,7 +70,7 @@ private: RoughMultiLayerComputation* mp_roughness_computation; SpecularComputation *mp_specular_computation; - std::vector<std::vector<ParticleLayoutComputation*>> m_layer_computation; + std::vector<ParticleLayoutComputation*> m_layer_computation; //! contains the information, necessary to calculate the Fresnel coefficients SafePointerVector<ILayerSpecularInfo> m_fresnel_info; -- GitLab