From 06b4d739dedd218c94bd89fbe191d37bd2c47a00 Mon Sep 17 00:00:00 2001 From: Marina Ganeva <m.ganeva@fz-juelich.de> Date: Tue, 3 Dec 2013 17:29:14 +0100 Subject: [PATCH] Function GetDifference is implemented. --- Core/Tools/inc/OutputDataFunctions.h | 4 ++++ Core/Tools/src/OutputDataFunctions.cpp | 24 +++++++++++++++++++ .../TestCore/IsGISAXS01/IsGISAXS01.cpp | 14 ++++------- .../TestCore/IsGISAXS02/IsGISAXS02.cpp | 12 +++------- .../TestCore/IsGISAXS03BA/IsGISAXS03BA.cpp | 13 +++------- .../IsGISAXS03DWBA/IsGISAXS03DWBA.cpp | 13 +++------- .../IsGISAXS041DDL/IsGISAXS041DDL.cpp | 13 +++------- .../IsGISAXS042DDL/IsGISAXS042DDL.cpp | 13 +++------- .../TestCore/IsGISAXS06L1/IsGISAXS06L1.cpp | 13 +++------- .../TestCore/IsGISAXS06L2/IsGISAXS06L2.cpp | 13 +++------- .../TestCore/IsGISAXS06L3/IsGISAXS06L3.cpp | 13 +++------- .../TestCore/IsGISAXS06L4/IsGISAXS06L4.cpp | 13 +++------- .../TestCore/IsGISAXS07/IsGISAXS07.cpp | 12 +++------- .../IsGISAXS082DDL/IsGISAXS082DDL.cpp | 13 +++------- .../IsGISAXS082DDL2/IsGISAXS082DDL2.cpp | 13 +++------- .../TestCore/IsGISAXS09P/IsGISAXS09P.cpp | 13 +++------- .../TestCore/IsGISAXS09R/IsGISAXS09R.cpp | 13 +++------- .../TestCore/IsGISAXS10/IsGISAXS10.cpp | 13 +++------- .../TestCore/IsGISAXS11/IsGISAXS11.cpp | 13 +++------- .../TestCore/IsGISAXS15/IsGISAXS15.cpp | 13 +++------- .../TestCore/MesoCrystal1/MesoCrystal1.cpp | 13 +++------- .../PolarizedDWBAZeroMag.cpp | 13 +++------- 22 files changed, 89 insertions(+), 198 deletions(-) diff --git a/Core/Tools/inc/OutputDataFunctions.h b/Core/Tools/inc/OutputDataFunctions.h index 10e49696128..5ae6566de95 100644 --- a/Core/Tools/inc/OutputDataFunctions.h +++ b/Core/Tools/inc/OutputDataFunctions.h @@ -93,6 +93,10 @@ namespace OutputDataFunctions BA_CORE_API_ Mask *CreateEllipticMask( const OutputData<double>& data, double xc, double yc, double rx, double ry); + + // compare result with reference and return the difference + double GetDifference(const OutputData<double> &result, + const OutputData<double> &reference); } #endif // OUTPUTDATAFUNCTIONS_H diff --git a/Core/Tools/src/OutputDataFunctions.cpp b/Core/Tools/src/OutputDataFunctions.cpp index 18ea7e13323..83678eb9141 100644 --- a/Core/Tools/src/OutputDataFunctions.cpp +++ b/Core/Tools/src/OutputDataFunctions.cpp @@ -482,3 +482,27 @@ Mask* OutputDataFunctions::CreateEllipticMask( return OutputDataFunctions::CreateEllipticMask(data, center, radii); } +double OutputDataFunctions::GetDifference(const OutputData<double> &result, + const OutputData<double> &reference) +{ + OutputData<double> *c_result = result.clone(); + OutputData<double> *c_reference = reference.clone(); + + // Calculating average relative difference. + *c_result -= *c_reference; + *c_result /= *c_reference; + + double diff(0); + for(OutputData<double>::const_iterator it = + c_result->begin(); it!=c_result->end(); ++it) { + diff+= std::fabs(*it); + } + diff /= c_result->getAllocatedSize(); + + if (std::isnan(diff)) throw RuntimeErrorException("diff=NaN!"); + + delete c_result; + delete c_reference; + + return diff; +} diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS01/IsGISAXS01.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS01/IsGISAXS01.cpp index 25c5ee9b583..56fa5f93737 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS01/IsGISAXS01.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS01/IsGISAXS01.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,19 +41,12 @@ int FunctionalTests::IsGISAXS01::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; + std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS02/IsGISAXS02.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS02/IsGISAXS02.cpp index d8516fee326..57d8f4ce244 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS02/IsGISAXS02.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS02/IsGISAXS02.cpp @@ -6,6 +6,7 @@ #include "SampleBuilderFactory.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,18 +41,11 @@ int FunctionalTests::IsGISAXS02::analyseResults() const double threshold(2e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS03BA/IsGISAXS03BA.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS03BA/IsGISAXS03BA.cpp index 4d2479daa4e..dbf923becbf 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS03BA/IsGISAXS03BA.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS03BA/IsGISAXS03BA.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS03BA::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS03DWBA/IsGISAXS03DWBA.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS03DWBA/IsGISAXS03DWBA.cpp index 35d4cce9eed..4a019771877 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS03DWBA/IsGISAXS03DWBA.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS03DWBA/IsGISAXS03DWBA.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS03DWBA::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS041DDL/IsGISAXS041DDL.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS041DDL/IsGISAXS041DDL.cpp index a73abde9b89..b309783ce52 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS041DDL/IsGISAXS041DDL.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS041DDL/IsGISAXS041DDL.cpp @@ -6,6 +6,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> #include <gsl/gsl_errno.h> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS041DDL::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS042DDL/IsGISAXS042DDL.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS042DDL/IsGISAXS042DDL.cpp index 8e4c8689884..fe256e96147 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS042DDL/IsGISAXS042DDL.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS042DDL/IsGISAXS042DDL.cpp @@ -6,6 +6,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> #include <gsl/gsl_errno.h> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS042DDL::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS06L1/IsGISAXS06L1.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS06L1/IsGISAXS06L1.cpp index c9259141db9..622eafd9298 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS06L1/IsGISAXS06L1.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS06L1/IsGISAXS06L1.cpp @@ -15,6 +15,7 @@ #include "IsGISAXS06Builder.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -49,19 +50,11 @@ int FunctionalTests::IsGISAXS06L1::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS06L2/IsGISAXS06L2.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS06L2/IsGISAXS06L2.cpp index 6cc0d3fadae..1dadfbcae4e 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS06L2/IsGISAXS06L2.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS06L2/IsGISAXS06L2.cpp @@ -15,6 +15,7 @@ #include "IsGISAXS06Builder.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -49,19 +50,11 @@ int FunctionalTests::IsGISAXS06L2::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS06L3/IsGISAXS06L3.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS06L3/IsGISAXS06L3.cpp index 56c0ab4bf67..25edf329ae4 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS06L3/IsGISAXS06L3.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS06L3/IsGISAXS06L3.cpp @@ -15,6 +15,7 @@ #include "IsGISAXS06Builder.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -49,19 +50,11 @@ int FunctionalTests::IsGISAXS06L3::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS06L4/IsGISAXS06L4.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS06L4/IsGISAXS06L4.cpp index 72f9ab06476..cf34e6f5d41 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS06L4/IsGISAXS06L4.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS06L4/IsGISAXS06L4.cpp @@ -15,6 +15,7 @@ #include "IsGISAXS06Builder.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -69,19 +70,11 @@ int FunctionalTests::IsGISAXS06L4::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp index e540d38eeb5..46d107c925e 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS07/IsGISAXS07.cpp @@ -11,6 +11,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -42,17 +43,10 @@ int FunctionalTests::IsGISAXS07::analyseResults() const double threshold(2e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << m_name << " " << m_description << " " << (status_ok ? "[OK]" : "[FAILED]") << std::endl; return (status_ok ? 0 : 1); diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp index ddccf21bf50..83ae4af2831 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL/IsGISAXS082DDL.cpp @@ -6,6 +6,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -39,19 +40,11 @@ int FunctionalTests::IsGISAXS082DDL::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp index 52c1f778f7d..f9128facbb7 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS082DDL2/IsGISAXS082DDL2.cpp @@ -6,6 +6,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -39,19 +40,11 @@ int FunctionalTests::IsGISAXS082DDL2::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS09P/IsGISAXS09P.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS09P/IsGISAXS09P.cpp index c8ed78222fb..6c68c27a1fd 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS09P/IsGISAXS09P.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS09P/IsGISAXS09P.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS09::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS09R/IsGISAXS09R.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS09R/IsGISAXS09R.cpp index fd65882d1d9..e713372df69 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS09R/IsGISAXS09R.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS09R/IsGISAXS09R.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -40,19 +41,11 @@ int FunctionalTests::IsGISAXS09R::analyseResults() const double threshold(2e-10); // Calculating average relative difference. - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it = - m_result->begin(); it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); // Assess result. bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp index fb1e0d6f250..151a71ecf29 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS10/IsGISAXS10.cpp @@ -10,6 +10,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -44,18 +45,10 @@ int FunctionalTests::IsGISAXS10::analyseResults() const double threshold(2e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); - it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || MathFunctions::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << m_name << " " << m_description << " " << (status_ok ? "[OK]" : "[FAILED]") << std::endl; diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp index da55cac7ae2..6757e0fd36b 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS11/IsGISAXS11.cpp @@ -12,6 +12,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -47,18 +48,10 @@ int FunctionalTests::IsGISAXS11::analyseResults() const double threshold(2e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); - it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || MathFunctions::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << m_name << " " << m_description << " " << (status_ok ? "[OK]" : "[FAILED]") << std::endl; diff --git a/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp b/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp index 84fbc01a416..fbbb1008c54 100644 --- a/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp +++ b/Tests/FunctionalTests/TestCore/IsGISAXS15/IsGISAXS15.cpp @@ -13,6 +13,7 @@ #include "Utils.h" #include "MathFunctions.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" #include <iostream> #include <cmath> @@ -46,18 +47,10 @@ int FunctionalTests::IsGISAXS15::analyseResults() const double threshold(2e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); - it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || MathFunctions::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << m_name << " " << m_description << " " << (status_ok ? "[OK]" : "[FAILED]") << std::endl; diff --git a/Tests/FunctionalTests/TestCore/MesoCrystal1/MesoCrystal1.cpp b/Tests/FunctionalTests/TestCore/MesoCrystal1/MesoCrystal1.cpp index 17bdb4e26ec..052b78cfd01 100644 --- a/Tests/FunctionalTests/TestCore/MesoCrystal1/MesoCrystal1.cpp +++ b/Tests/FunctionalTests/TestCore/MesoCrystal1/MesoCrystal1.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "Types.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" using namespace FunctionalTests; @@ -45,18 +46,10 @@ int MesoCrystal1::analyseResults() const double threshold(1e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); - it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << diff --git a/Tests/FunctionalTests/TestCore/PolarizedDWBAZeroMag/PolarizedDWBAZeroMag.cpp b/Tests/FunctionalTests/TestCore/PolarizedDWBAZeroMag/PolarizedDWBAZeroMag.cpp index 722166fb6ef..f76a130a8e5 100644 --- a/Tests/FunctionalTests/TestCore/PolarizedDWBAZeroMag/PolarizedDWBAZeroMag.cpp +++ b/Tests/FunctionalTests/TestCore/PolarizedDWBAZeroMag/PolarizedDWBAZeroMag.cpp @@ -6,6 +6,7 @@ #include "Units.h" #include "Types.h" #include "SimulationRegistry.h" +#include "OutputDataFunctions.h" using namespace FunctionalTests; @@ -42,18 +43,10 @@ int PolarizedDWBAZeroMag::analyseResults() const double threshold(1e-10); // calculating average relative difference - *m_result -= *m_reference; - *m_result /= *m_reference; - - double diff(0); - for(OutputData<double>::const_iterator it=m_result->begin(); - it!=m_result->end(); ++it) { - diff+= std::fabs(*it); - } - diff /= m_result->getAllocatedSize(); + double diff = OutputDataFunctions::GetDifference(*m_result,*m_reference); bool status_ok(true); - if( diff > threshold || std::isnan(diff)) status_ok=false; + if( diff > threshold ) status_ok=false; std::cout << " diff " << diff << std::endl; std::cout << m_name << " " << m_description << " " << -- GitLab