Skip to content
Snippets Groups Projects
Commit 06b4d739 authored by Ganeva, Marina's avatar Ganeva, Marina
Browse files

Function GetDifference is implemented.

parent 7066fa8c
No related branches found
No related tags found
No related merge requests found
Showing
with 83 additions and 178 deletions
......@@ -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
......
......@@ -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;
}
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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);
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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 << " " <<
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment