From 7a0f028c997fe698973ab402c491ca4038ff53e1 Mon Sep 17 00:00:00 2001
From: Walter Van Herck <w.van.herck@fz-juelich.de>
Date: Wed, 1 Feb 2017 16:36:04 +0100
Subject: [PATCH] Ensure that SimulationElements that are going to be added are
 always set (to zero if no calculation is done on a specific
 SimulationElement)

---
 Core/Computation/ParticleLayoutComputation.cpp | 8 +++++---
 Core/Computation/SpecularComputation.cpp       | 2 ++
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/Core/Computation/ParticleLayoutComputation.cpp b/Core/Computation/ParticleLayoutComputation.cpp
index e4d21fbd166..73590d66e31 100644
--- a/Core/Computation/ParticleLayoutComputation.cpp
+++ b/Core/Computation/ParticleLayoutComputation.cpp
@@ -50,9 +50,11 @@ bool ParticleLayoutComputation::eval(
             return false;
         double alpha_f = it->getAlphaMean();
         size_t n_layers = mp_multilayer->getNumberOfLayers();
-        if (n_layers > 1 && alpha_f < 0)  // skip transmission for multilayers (n>1)
-            continue;
-        it->setIntensity(p_strategy->evaluate(*it) * total_surface_density);
+        if (n_layers > 1 && alpha_f < 0) {
+            it->setIntensity(0.0); // zero for transmission with multilayers (n>1)
+        } else {
+            it->setIntensity(p_strategy->evaluate(*it) * total_surface_density);
+        }
         counter.stepProgress(progress);
     }
     return true;
diff --git a/Core/Computation/SpecularComputation.cpp b/Core/Computation/SpecularComputation.cpp
index 71756faf5be..59b12f1e6d3 100644
--- a/Core/Computation/SpecularComputation.cpp
+++ b/Core/Computation/SpecularComputation.cpp
@@ -42,6 +42,8 @@ bool SpecularComputation::eval(
                 continue;
             double intensity = std::norm(R)*sin_alpha_i/solid_angle;
             it->setIntensity(intensity);
+        } else {
+            it->setIntensity(0.0);
         }
     }
     return true;
-- 
GitLab