From dfacab67184a6341d0081fcc7a617def73f808da Mon Sep 17 00:00:00 2001
From: Walter Van Herck <w.van.herck@fz-juelich.de>
Date: Fri, 3 Feb 2017 17:06:34 +0100
Subject: [PATCH] Removed unnecessary copy of SimulationElement vector in
 MainComputation

---
 Core/Computation/IComputationTerm.h           |  2 +-
 Core/Computation/MainComputation.cpp          |  6 +---
 .../Computation/ParticleLayoutComputation.cpp |  9 +++---
 Core/Computation/ParticleLayoutComputation.h  |  2 +-
 .../RoughMultiLayerComputation.cpp            |  9 +++---
 Core/Computation/RoughMultiLayerComputation.h |  2 +-
 Core/Computation/SpecularComputation.cpp      |  7 ++---
 Core/Computation/SpecularComputation.h        |  2 +-
 Core/Simulation/GISASSimulation.cpp           |  2 +-
 Core/Simulation/GISASSimulation.h             |  2 +-
 Core/Simulation/OffSpecSimulation.cpp         |  2 +-
 Core/Simulation/OffSpecSimulation.h           |  2 +-
 Core/Simulation/Simulation.cpp                |  4 +--
 Core/Simulation/Simulation.h                  |  2 +-
 auto/Wrap/doxygen_core.i                      | 14 ++++-----
 auto/Wrap/libBornAgainCore.py                 | 12 ++++----
 auto/Wrap/libBornAgainCore_wrap.cpp           | 30 +++++++++----------
 17 files changed, 50 insertions(+), 59 deletions(-)

diff --git a/Core/Computation/IComputationTerm.h b/Core/Computation/IComputationTerm.h
index e3ad3594a40..c44e79ebe87 100644
--- a/Core/Computation/IComputationTerm.h
+++ b/Core/Computation/IComputationTerm.h
@@ -37,7 +37,7 @@ public:
 
     //! Calculate scattering intensity for each SimulationElement
     //! returns false if nothing needed to be calculated
-    virtual bool eval(const SimulationOptions& options,
+    virtual void eval(const SimulationOptions& options,
               ProgressHandler* progress,
               bool polarized,
               const std::vector<SimulationElement>::iterator& begin_it,
diff --git a/Core/Computation/MainComputation.cpp b/Core/Computation/MainComputation.cpp
index aa409694b14..eb763f1954b 100644
--- a/Core/Computation/MainComputation.cpp
+++ b/Core/Computation/MainComputation.cpp
@@ -82,16 +82,12 @@ void MainComputation::run()
 // This allows them to be added and normalized together to the beam afterwards
 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();
     // add all IComputationTerms:
     for (const IComputationTerm* comp: m_computation_terms) {
         if (!m_progress->alive())
             return;
-        if (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);
+        comp->eval(m_sim_options, m_progress, polarized, m_begin_it, m_end_it );
     }
 }
 
diff --git a/Core/Computation/ParticleLayoutComputation.cpp b/Core/Computation/ParticleLayoutComputation.cpp
index 194e62c1baf..9b148933891 100644
--- a/Core/Computation/ParticleLayoutComputation.cpp
+++ b/Core/Computation/ParticleLayoutComputation.cpp
@@ -33,7 +33,7 @@ ParticleLayoutComputation::ParticleLayoutComputation(const MultiLayer* p_multila
 {}
 
 //! Computes scattering intensity for given range of simulation elements.
-bool ParticleLayoutComputation::eval(
+void ParticleLayoutComputation::eval(
     const SimulationOptions& options,
     ProgressHandler* progress,
     bool polarized,
@@ -48,15 +48,14 @@ bool ParticleLayoutComputation::eval(
     DelayedProgressCounter counter(100);
     for (std::vector<SimulationElement>::iterator it = begin_it; it != end_it; ++it) {
         if (!progress->alive())
-            return false;
+            return;
         double alpha_f = it->getAlphaMean();
         size_t n_layers = mp_multilayer->getNumberOfLayers();
         if (n_layers > 1 && alpha_f < 0) {
-            it->setIntensity(0.0); // zero for transmission with multilayers (n>1)
+            continue; // zero for transmission with multilayers (n>1)
         } else {
-            it->setIntensity(p_strategy->evaluate(*it) * total_surface_density);
+            it->addIntensity(p_strategy->evaluate(*it) * total_surface_density);
         }
         counter.stepProgress(progress);
     }
-    return true;
 }
diff --git a/Core/Computation/ParticleLayoutComputation.h b/Core/Computation/ParticleLayoutComputation.h
index 9d545efc7a7..76e378b2cbf 100644
--- a/Core/Computation/ParticleLayoutComputation.h
+++ b/Core/Computation/ParticleLayoutComputation.h
@@ -33,7 +33,7 @@ public:
         const MultiLayer* p_multilayer, const IFresnelMap* p_fresnel_map,
         const ILayout* p_layout, size_t layer_index);
 
-    bool eval(const SimulationOptions& options,
+    void eval(const SimulationOptions& options,
               ProgressHandler* progress,
               bool polarized,
               const std::vector<SimulationElement>::iterator& begin_it,
diff --git a/Core/Computation/RoughMultiLayerComputation.cpp b/Core/Computation/RoughMultiLayerComputation.cpp
index b0e8c80b292..ce7e5fd5017 100644
--- a/Core/Computation/RoughMultiLayerComputation.cpp
+++ b/Core/Computation/RoughMultiLayerComputation.cpp
@@ -48,22 +48,21 @@ RoughMultiLayerComputation::RoughMultiLayerComputation(const MultiLayer *p_multi
 RoughMultiLayerComputation::~RoughMultiLayerComputation()
 {}
 
-bool RoughMultiLayerComputation::eval(
+void RoughMultiLayerComputation::eval(
     const SimulationOptions&, ProgressHandler* progress, bool,
     const std::vector<SimulationElement>::iterator& begin_it,
     const std::vector<SimulationElement>::iterator& end_it) const
 {
     if (mp_multilayer->requiresMatrixRTCoefficients()) {
-        return false;
+        return;
     }
     DelayedProgressCounter counter(100);
     for (std::vector<SimulationElement>::iterator it = begin_it; it != end_it; ++it) {
         if (!progress->alive())
-            return false;
-        it->setIntensity(evaluate(*it));
+            return;
+        it->addIntensity(evaluate(*it));
         counter.stepProgress(progress);
     }
-    return true;
 }
 
 double RoughMultiLayerComputation::evaluate(const SimulationElement& sim_element) const
diff --git a/Core/Computation/RoughMultiLayerComputation.h b/Core/Computation/RoughMultiLayerComputation.h
index 45055761950..74fda308731 100644
--- a/Core/Computation/RoughMultiLayerComputation.h
+++ b/Core/Computation/RoughMultiLayerComputation.h
@@ -34,7 +34,7 @@ public:
                                const IFresnelMap* p_fresnel_map);
     ~RoughMultiLayerComputation();
 
-    bool eval(const SimulationOptions& options,
+    void eval(const SimulationOptions& options,
               ProgressHandler* progress,
               bool polarized,
               const std::vector<SimulationElement>::iterator& begin_it,
diff --git a/Core/Computation/SpecularComputation.cpp b/Core/Computation/SpecularComputation.cpp
index 723a28ca734..10927382b01 100644
--- a/Core/Computation/SpecularComputation.cpp
+++ b/Core/Computation/SpecularComputation.cpp
@@ -24,13 +24,13 @@ SpecularComputation::SpecularComputation(const MultiLayer* p_multi_layer,
     : IComputationTerm(p_multi_layer, p_fresnel_map)
 {}
 
-bool SpecularComputation::eval(
+void SpecularComputation::eval(
     const SimulationOptions&, ProgressHandler*, bool,
     const std::vector<SimulationElement>::iterator& begin_it,
     const std::vector<SimulationElement>::iterator& end_it) const
 {
     if (mp_multilayer->requiresMatrixRTCoefficients())
-        return false;
+        return;
 
     for (auto it = begin_it; it != end_it; ++it) {
         if (it->containsSpecularWavevector()) {
@@ -43,9 +43,6 @@ bool SpecularComputation::eval(
                 continue;
             double intensity = std::norm(R)*sin_alpha_i/solid_angle;
             it->setIntensity(intensity);
-        } else {
-            it->setIntensity(0.0);
         }
     }
-    return true;
 }
diff --git a/Core/Computation/SpecularComputation.h b/Core/Computation/SpecularComputation.h
index bba8bdc8f2c..f86107b456e 100644
--- a/Core/Computation/SpecularComputation.h
+++ b/Core/Computation/SpecularComputation.h
@@ -27,7 +27,7 @@ class SpecularComputation final : public IComputationTerm
 public:
     SpecularComputation(const MultiLayer* p_multi_layer, const IFresnelMap* p_fresnel_map);
 
-    bool eval(const SimulationOptions& options,
+    void eval(const SimulationOptions& options,
               ProgressHandler* progress,
               bool polarized,
               const std::vector<SimulationElement>::iterator& begin_it,
diff --git a/Core/Simulation/GISASSimulation.cpp b/Core/Simulation/GISASSimulation.cpp
index 174a04704be..251500c2ca6 100644
--- a/Core/Simulation/GISASSimulation.cpp
+++ b/Core/Simulation/GISASSimulation.cpp
@@ -52,7 +52,7 @@ void GISASSimulation::prepareSimulation()
     Simulation::prepareSimulation();
 }
 
-int GISASSimulation::numberOfSimulationElements() const
+size_t GISASSimulation::numberOfSimulationElements() const
 {
     return getInstrument().getDetector()->numberOfSimulationElements();
 }
diff --git a/Core/Simulation/GISASSimulation.h b/Core/Simulation/GISASSimulation.h
index ca51cde535d..d42ba234737 100644
--- a/Core/Simulation/GISASSimulation.h
+++ b/Core/Simulation/GISASSimulation.h
@@ -43,7 +43,7 @@ public:
     void prepareSimulation() final;
 
     //! Gets the number of elements this simulation needs to calculate
-    int numberOfSimulationElements() const final;
+    size_t numberOfSimulationElements() const final;
 
     //! Returns clone of the detector intensity map with detector resolution applied
     OutputData<double>* getDetectorIntensity(
diff --git a/Core/Simulation/OffSpecSimulation.cpp b/Core/Simulation/OffSpecSimulation.cpp
index 282b5bcc533..832bf39edc1 100644
--- a/Core/Simulation/OffSpecSimulation.cpp
+++ b/Core/Simulation/OffSpecSimulation.cpp
@@ -55,7 +55,7 @@ void OffSpecSimulation::prepareSimulation()
     Simulation::prepareSimulation();
 }
 
-int OffSpecSimulation::numberOfSimulationElements() const
+size_t OffSpecSimulation::numberOfSimulationElements() const
 {
     checkInitialization();
     return getInstrument().getDetector()->numberOfSimulationElements()*mp_alpha_i_axis->size();
diff --git a/Core/Simulation/OffSpecSimulation.h b/Core/Simulation/OffSpecSimulation.h
index cf63576ca79..8db60398d63 100644
--- a/Core/Simulation/OffSpecSimulation.h
+++ b/Core/Simulation/OffSpecSimulation.h
@@ -39,7 +39,7 @@ public:
     void prepareSimulation() final;
 
     //! Gets the number of elements this simulation needs to calculate
-    int numberOfSimulationElements() const final;
+    size_t numberOfSimulationElements() const final;
 
     //! Returns clone of the detector intensity map
     OutputData<double>* getDetectorIntensity(
diff --git a/Core/Simulation/Simulation.cpp b/Core/Simulation/Simulation.cpp
index 63a8143d159..b2664bfe596 100644
--- a/Core/Simulation/Simulation.cpp
+++ b/Core/Simulation/Simulation.cpp
@@ -125,9 +125,9 @@ void Simulation::runSimulation()
     size_t param_combinations = m_distribution_handler.getTotalNumberOfSamples();
 
     m_progress.reset();
-    int prefac = ( mP_sample->totalNofLayouts()>0 ? 1 : 0 )
+    size_t prefactor = ( mP_sample->totalNofLayouts()>0 ? 1 : 0 )
         + ( mP_sample->hasRoughness() ? 1 : 0 );
-    m_progress.setExpectedNTicks(prefac*param_combinations*numberOfSimulationElements());
+    m_progress.setExpectedNTicks(prefactor*param_combinations*numberOfSimulationElements());
 
     // no averaging needed:
     if (param_combinations == 1) {
diff --git a/Core/Simulation/Simulation.h b/Core/Simulation/Simulation.h
index 9ff17464573..73b7ecaa6c6 100644
--- a/Core/Simulation/Simulation.h
+++ b/Core/Simulation/Simulation.h
@@ -69,7 +69,7 @@ public:
     void setSampleBuilder(const std::shared_ptr<IMultiLayerBuilder> sample_builder);
     std::shared_ptr<IMultiLayerBuilder> getSampleBuilder() const { return mP_sample_builder; }
 
-    virtual int numberOfSimulationElements() const=0;
+    virtual size_t numberOfSimulationElements() const=0;
 
     //! Clone simulated intensity map
     virtual OutputData<double>* getDetectorIntensity(
diff --git a/auto/Wrap/doxygen_core.i b/auto/Wrap/doxygen_core.i
index 6d4a76e90ab..e728bd58ce3 100644
--- a/auto/Wrap/doxygen_core.i
+++ b/auto/Wrap/doxygen_core.i
@@ -4991,7 +4991,7 @@ Calls the  INodeVisitor's visit method.
 Put into a clean state for running a simulation. 
 ";
 
-%feature("docstring")  GISASSimulation::numberOfSimulationElements "int GISASSimulation::numberOfSimulationElements() const final
+%feature("docstring")  GISASSimulation::numberOfSimulationElements "size_t GISASSimulation::numberOfSimulationElements() const final
 
 Gets the number of elements this simulation needs to calculate. 
 ";
@@ -5765,7 +5765,7 @@ C++ includes: IComputationTerm.h
 %feature("docstring")  IComputationTerm::~IComputationTerm "IComputationTerm::~IComputationTerm()
 ";
 
-%feature("docstring")  IComputationTerm::eval "virtual bool IComputationTerm::eval(const SimulationOptions &options, ProgressHandler *progress, bool polarized, const std::vector< SimulationElement >::iterator &begin_it, const std::vector< SimulationElement >::iterator &end_it) const =0
+%feature("docstring")  IComputationTerm::eval "virtual void IComputationTerm::eval(const SimulationOptions &options, ProgressHandler *progress, bool polarized, const std::vector< SimulationElement >::iterator &begin_it, const std::vector< SimulationElement >::iterator &end_it) const =0
 
 Calculate scattering intensity for each  SimulationElement returns false if nothing needed to be calculated 
 ";
@@ -9712,7 +9712,7 @@ Calls the  INodeVisitor's visit method.
 Put into a clean state for running a simulation. 
 ";
 
-%feature("docstring")  OffSpecSimulation::numberOfSimulationElements "int OffSpecSimulation::numberOfSimulationElements() const final
+%feature("docstring")  OffSpecSimulation::numberOfSimulationElements "size_t OffSpecSimulation::numberOfSimulationElements() const final
 
 Gets the number of elements this simulation needs to calculate. 
 ";
@@ -10844,7 +10844,7 @@ C++ includes: ParticleLayoutComputation.h
 %feature("docstring")  ParticleLayoutComputation::ParticleLayoutComputation "ParticleLayoutComputation::ParticleLayoutComputation(const MultiLayer *p_multilayer, const IFresnelMap *p_fresnel_map, const ILayout *p_layout, size_t layer_index)
 ";
 
-%feature("docstring")  ParticleLayoutComputation::eval "bool ParticleLayoutComputation::eval(const SimulationOptions &options, ProgressHandler *progress, bool polarized, const std::vector< SimulationElement >::iterator &begin_it, const std::vector< SimulationElement >::iterator &end_it) const override
+%feature("docstring")  ParticleLayoutComputation::eval "void ParticleLayoutComputation::eval(const SimulationOptions &options, ProgressHandler *progress, bool polarized, const std::vector< SimulationElement >::iterator &begin_it, const std::vector< SimulationElement >::iterator &end_it) const override
 
 Computes scattering intensity for given range of simulation elements. 
 ";
@@ -11587,7 +11587,7 @@ C++ includes: RoughMultiLayerComputation.h
 %feature("docstring")  RoughMultiLayerComputation::~RoughMultiLayerComputation "RoughMultiLayerComputation::~RoughMultiLayerComputation()
 ";
 
-%feature("docstring")  RoughMultiLayerComputation::eval "bool RoughMultiLayerComputation::eval(const SimulationOptions &options, ProgressHandler *progress, bool polarized, const std::vector< SimulationElement >::iterator &begin_it, const std::vector< SimulationElement >::iterator &end_it) const override
+%feature("docstring")  RoughMultiLayerComputation::eval "void RoughMultiLayerComputation::eval(const SimulationOptions &options, ProgressHandler *progress, bool polarized, const std::vector< SimulationElement >::iterator &begin_it, const std::vector< SimulationElement >::iterator &end_it) const override
 
 Calculate scattering intensity for each  SimulationElement returns false if nothing needed to be calculated 
 ";
@@ -12059,7 +12059,7 @@ The  MultiLayer object will not be owned by the  Simulation object.
 %feature("docstring")  Simulation::getSampleBuilder "std::shared_ptr<IMultiLayerBuilder> Simulation::getSampleBuilder() const 
 ";
 
-%feature("docstring")  Simulation::numberOfSimulationElements "virtual int Simulation::numberOfSimulationElements() const =0
+%feature("docstring")  Simulation::numberOfSimulationElements "virtual size_t Simulation::numberOfSimulationElements() const =0
 ";
 
 %feature("docstring")  Simulation::getDetectorIntensity "virtual OutputData<double>* Simulation::getDetectorIntensity(IDetector2D::EAxesUnits units_type=IDetector2D::DEFAULT) const =0
@@ -12435,7 +12435,7 @@ C++ includes: SpecularComputation.h
 %feature("docstring")  SpecularComputation::SpecularComputation "SpecularComputation::SpecularComputation(const MultiLayer *p_multi_layer, const IFresnelMap *p_fresnel_map)
 ";
 
-%feature("docstring")  SpecularComputation::eval "bool SpecularComputation::eval(const SimulationOptions &options, ProgressHandler *progress, bool polarized, const std::vector< SimulationElement >::iterator &begin_it, const std::vector< SimulationElement >::iterator &end_it) const override
+%feature("docstring")  SpecularComputation::eval "void SpecularComputation::eval(const SimulationOptions &options, ProgressHandler *progress, bool polarized, const std::vector< SimulationElement >::iterator &begin_it, const std::vector< SimulationElement >::iterator &end_it) const override
 
 Calculate scattering intensity for each  SimulationElement returns false if nothing needed to be calculated 
 ";
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index baa97d37283..435ef244d40 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -15789,9 +15789,9 @@ class Simulation(ICloneable, INode):
 
     def numberOfSimulationElements(self):
         """
-        numberOfSimulationElements(Simulation self) -> int
+        numberOfSimulationElements(Simulation self) -> size_t
 
-        virtual int Simulation::numberOfSimulationElements() const =0
+        virtual size_t Simulation::numberOfSimulationElements() const =0
 
         """
         return _libBornAgainCore.Simulation_numberOfSimulationElements(self)
@@ -16142,9 +16142,9 @@ class GISASSimulation(Simulation):
 
     def numberOfSimulationElements(self):
         """
-        numberOfSimulationElements(GISASSimulation self) -> int
+        numberOfSimulationElements(GISASSimulation self) -> size_t
 
-        int GISASSimulation::numberOfSimulationElements() const final
+        size_t GISASSimulation::numberOfSimulationElements() const final
 
         Gets the number of elements this simulation needs to calculate. 
 
@@ -22554,9 +22554,9 @@ class OffSpecSimulation(Simulation):
 
     def numberOfSimulationElements(self):
         """
-        numberOfSimulationElements(OffSpecSimulation self) -> int
+        numberOfSimulationElements(OffSpecSimulation self) -> size_t
 
-        int OffSpecSimulation::numberOfSimulationElements() const final
+        size_t OffSpecSimulation::numberOfSimulationElements() const final
 
         Gets the number of elements this simulation needs to calculate. 
 
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 76f0f06588f..9ff9998abca 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -73691,7 +73691,7 @@ SWIGINTERN PyObject *_wrap_Simulation_numberOfSimulationElements(PyObject *SWIGU
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  int result;
+  size_t result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:Simulation_numberOfSimulationElements",&obj0)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Simulation, 0 |  0 );
@@ -73699,8 +73699,8 @@ SWIGINTERN PyObject *_wrap_Simulation_numberOfSimulationElements(PyObject *SWIGU
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Simulation_numberOfSimulationElements" "', argument " "1"" of type '" "Simulation const *""'"); 
   }
   arg1 = reinterpret_cast< Simulation * >(argp1);
-  result = (int)((Simulation const *)arg1)->numberOfSimulationElements();
-  resultobj = SWIG_From_int(static_cast< int >(result));
+  result = ((Simulation const *)arg1)->numberOfSimulationElements();
+  resultobj = SWIG_From_size_t(static_cast< size_t >(result));
   return resultobj;
 fail:
   return NULL;
@@ -75074,7 +75074,7 @@ SWIGINTERN PyObject *_wrap_GISASSimulation_numberOfSimulationElements(PyObject *
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  int result;
+  size_t result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:GISASSimulation_numberOfSimulationElements",&obj0)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_GISASSimulation, 0 |  0 );
@@ -75082,8 +75082,8 @@ SWIGINTERN PyObject *_wrap_GISASSimulation_numberOfSimulationElements(PyObject *
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GISASSimulation_numberOfSimulationElements" "', argument " "1"" of type '" "GISASSimulation const *""'"); 
   }
   arg1 = reinterpret_cast< GISASSimulation * >(argp1);
-  result = (int)((GISASSimulation const *)arg1)->numberOfSimulationElements();
-  resultobj = SWIG_From_int(static_cast< int >(result));
+  result = ((GISASSimulation const *)arg1)->numberOfSimulationElements();
+  resultobj = SWIG_From_size_t(static_cast< size_t >(result));
   return resultobj;
 fail:
   return NULL;
@@ -94975,7 +94975,7 @@ SWIGINTERN PyObject *_wrap_OffSpecSimulation_numberOfSimulationElements(PyObject
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject * obj0 = 0 ;
-  int result;
+  size_t result;
   
   if (!PyArg_ParseTuple(args,(char *)"O:OffSpecSimulation_numberOfSimulationElements",&obj0)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_OffSpecSimulation, 0 |  0 );
@@ -94983,8 +94983,8 @@ SWIGINTERN PyObject *_wrap_OffSpecSimulation_numberOfSimulationElements(PyObject
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "OffSpecSimulation_numberOfSimulationElements" "', argument " "1"" of type '" "OffSpecSimulation const *""'"); 
   }
   arg1 = reinterpret_cast< OffSpecSimulation * >(argp1);
-  result = (int)((OffSpecSimulation const *)arg1)->numberOfSimulationElements();
-  resultobj = SWIG_From_int(static_cast< int >(result));
+  result = ((OffSpecSimulation const *)arg1)->numberOfSimulationElements();
+  resultobj = SWIG_From_size_t(static_cast< size_t >(result));
   return resultobj;
 fail:
   return NULL;
@@ -115902,9 +115902,9 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { (char *)"Simulation_numberOfSimulationElements", _wrap_Simulation_numberOfSimulationElements, METH_VARARGS, (char *)"\n"
-		"Simulation_numberOfSimulationElements(Simulation self) -> int\n"
+		"Simulation_numberOfSimulationElements(Simulation self) -> size_t\n"
 		"\n"
-		"virtual int Simulation::numberOfSimulationElements() const =0\n"
+		"virtual size_t Simulation::numberOfSimulationElements() const =0\n"
 		"\n"
 		""},
 	 { (char *)"Simulation_getDetectorIntensity", _wrap_Simulation_getDetectorIntensity, METH_VARARGS, (char *)"\n"
@@ -116103,9 +116103,9 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { (char *)"GISASSimulation_numberOfSimulationElements", _wrap_GISASSimulation_numberOfSimulationElements, METH_VARARGS, (char *)"\n"
-		"GISASSimulation_numberOfSimulationElements(GISASSimulation self) -> int\n"
+		"GISASSimulation_numberOfSimulationElements(GISASSimulation self) -> size_t\n"
 		"\n"
-		"int GISASSimulation::numberOfSimulationElements() const final\n"
+		"size_t GISASSimulation::numberOfSimulationElements() const final\n"
 		"\n"
 		"Gets the number of elements this simulation needs to calculate. \n"
 		"\n"
@@ -119690,9 +119690,9 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { (char *)"OffSpecSimulation_numberOfSimulationElements", _wrap_OffSpecSimulation_numberOfSimulationElements, METH_VARARGS, (char *)"\n"
-		"OffSpecSimulation_numberOfSimulationElements(OffSpecSimulation self) -> int\n"
+		"OffSpecSimulation_numberOfSimulationElements(OffSpecSimulation self) -> size_t\n"
 		"\n"
-		"int OffSpecSimulation::numberOfSimulationElements() const final\n"
+		"size_t OffSpecSimulation::numberOfSimulationElements() const final\n"
 		"\n"
 		"Gets the number of elements this simulation needs to calculate. \n"
 		"\n"
-- 
GitLab