From fec6d581f08a947897569b3fcce99c870c86ef32 Mon Sep 17 00:00:00 2001
From: Timon Habenicht <t.habenicht@tu-bs.de>
Date: Wed, 21 Nov 2018 10:59:21 +0100
Subject: [PATCH] changes PhiAndNuTest

---
 .../Tests/PhiAndNuTest/PhiAndNuTest.cpp       | 131 ++++++++----------
 .../Tests/PhiAndNuTest/PhiAndNuTest.h         |  56 ++++----
 .../VxFFTCalculator/VxFFTCalculator.cpp       |  18 ---
 .../VxFFTCalculator/VxFFTCalculator.h         |  16 ---
 .../VxFFTCalculator/package.include           |   0
 .../VzFFTCalculator/VzFFTCalculator.cpp       |  18 ---
 .../VzFFTCalculator/VzFFTCalculator.h         |  16 ---
 .../VzFFTCalculator/package.include           |   0
 8 files changed, 86 insertions(+), 169 deletions(-)
 delete mode 100644 targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/VxFFTCalculator.cpp
 delete mode 100644 targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/VxFFTCalculator.h
 delete mode 100644 targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/package.include
 delete mode 100644 targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/VzFFTCalculator.cpp
 delete mode 100644 targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/VzFFTCalculator.h
 delete mode 100644 targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/package.include

diff --git a/targets/tests/NumericalTests/Tests/PhiAndNuTest/PhiAndNuTest.cpp b/targets/tests/NumericalTests/Tests/PhiAndNuTest/PhiAndNuTest.cpp
index 47ccf82f2..731ee1563 100644
--- a/targets/tests/NumericalTests/Tests/PhiAndNuTest/PhiAndNuTest.cpp
+++ b/targets/tests/NumericalTests/Tests/PhiAndNuTest/PhiAndNuTest.cpp
@@ -1,117 +1,94 @@
 #include "PhiAndNuTest.h"
 
 #include "Utilities/TestCout/TestCoutImp.h"
-#include "PhiAndNuTest.h"
+#include "Utilities/Results/SimulationResults/SimulationResults.h"
+#include "Utilities\Calculator\FFTCalculator\FFTCalculator.h"
+#include "Utilities\TestSimulation\TestSimulation.h"
+#include "Utilities\SimulationInfo\SimulationInfo.h"
 
-std::shared_ptr<PhiAndNuTest> PhiAndNuTest::getNewInstance(std::string aTestName, double minOrderOfAccuracy, std::shared_ptr<TestCout> testOut)
+std::shared_ptr<PhiAndNuTest> PhiAndNuTest::getNewInstance(std::string dataToCalculate, double minOrderOfAccuracy, double viscosity)
 {
-	return std::shared_ptr<PhiAndNuTest>(new PhiAndNuTest(aTestName, minOrderOfAccuracy, testOut));
+	return std::shared_ptr<PhiAndNuTest>(new PhiAndNuTest(dataToCalculate, minOrderOfAccuracy, viscosity));
 }
 
 void PhiAndNuTest::evaluate()
 {
-	orderOfAccuracyNuDiff = calcOrderOfAccuracy(nuDiff);
+	for (int i = 0; i < simResults.size(); i++) {
+		lx.push_back(simResults.at(i)->getNumberOfXNodes());
+		calculator->setSimulationResults(simResults.at(i));
+		if (dataToCalculate == "Vx")
+			calculator->setVectorToCalc(simResults.at(i)->getVx());
+		if (dataToCalculate == "Vz")
+			calculator->setVectorToCalc(simResults.at(i)->getVz());
+		calculator->calc();
+		phiDiff.push_back(calculator->getPhiDiff());
+		nuDiff.push_back(calculator->getNuDiff());
+	}
 	orderOfAccuracyPhiDiff = calcOrderOfAccuracy(phiDiff);
-
-	nuDiffTestPassed = checkTestPassed(orderOfAccuracyNuDiff);
+	orderOfAccuracyNuDiff = calcOrderOfAccuracy(nuDiff);
 	phiDiffTestPassed = checkTestPassed(orderOfAccuracyPhiDiff);
-	
-	if (orderOfAccuracyNuDiff.size() > 0 && orderOfAccuracyPhiDiff.size() > 0)
-		makeLastTestOutput();
+	nuDiffTestPassed = checkTestPassed(orderOfAccuracyNuDiff);
+
+	makeOutput();
 }
 
-void PhiAndNuTest::makeFinalOutput()
+void PhiAndNuTest::update()
 {
-	for (int i = 1; i < lx.size(); i++) {
-		testOut->makeTestOutput(nuDiffTestPassed.at(i - 1), testName, lx.at(i - 1), lx.at(i), "NuDiff", "NuDiff", "OrderOfAccuracy", nuDiff.at(i - 1), nuDiff.at(i), orderOfAccuracyNuDiff.at(i - 1));
-		testOut->makeTestOutput(phiDiffTestPassed.at(i - 1), testName, lx.at(i - 1), lx.at(i), "PhiDiff", "PhiDiff", "OrderOfAccuracy", phiDiff.at(i - 1), phiDiff.at(i), orderOfAccuracyPhiDiff.at(i - 1));
-	}
+	TestImp::update();
 }
 
-int PhiAndNuTest::getNumberOfPassedTests()
-{	
-	return (calcNumberOfPassedTests(nuDiffTestPassed) + calcNumberOfPassedTests(phiDiffTestPassed));
+void PhiAndNuTest::addSimulation(std::shared_ptr<TestSimulation> sim, std::shared_ptr< SimulationInfo> simInfo)
+{
+	TestImp::addSimulation(sim, simInfo);
 }
 
-int PhiAndNuTest::getNumberOfTests()
+std::vector<bool> PhiAndNuTest::getPassedTests()
 {
-	return (orderOfAccuracyNuDiff.size()+ orderOfAccuracyPhiDiff.size());
+	std::vector< bool> passed;
+	passed.push_back(phiDiffTestPassed);
+	passed.push_back(nuDiffTestPassed);
+	return passed;
 }
 
-void PhiAndNuTest::add(double phiDiff, double nuDiff, double lx)
+std::string PhiAndNuTest::getSimulationName()
 {
-	this->nuDiff.push_back(nuDiff);
-	this->phiDiff.push_back(phiDiff);
-	this->lx.push_back(lx);
+	return simulationName;
 }
 
-std::string PhiAndNuTest::getOutput()
+void PhiAndNuTest::makeOutput()
 {
-	std::ostringstream oss;
-	oss << "#################################################" << std::endl;
-	oss << "#" << std::setfill(' ') << std::right << std::setw(24 + testName.length() / 2) << testName << std::setw(24 - testName.length() / 2) << "#" << std::endl;
-	oss << "#################################################" << std::endl;
+	testOut->makeTestOutput(nuDiffTestPassed, simInfos.at(0), simInfos.at(1), "NuDiff", "NuDiff", "OrderOfAccuracy", nuDiff.at(0), nuDiff.at(1), orderOfAccuracyNuDiff);
+	testOut->makeTestOutput(nuDiffTestPassed, simInfos.at(0), simInfos.at(1), "PhiDiff", "PhiDiff", "OrderOfAccuracy", phiDiff.at(0), phiDiff.at(1), orderOfAccuracyPhiDiff);
+}
 
-	oss << "L" << "\t" << std::setfill(' ') << std::left << std::setw(15) << "NuDiff" << "Order of Accuracy" << std::endl;
-	oss << lx.at(0) << "\t" << nuDiff.at(0) << std::endl;
-	for (int i = 0; i < nuDiff.size() - 1; i++) {
-		oss << std::setfill(' ') << std::setw(23) << " " << orderOfAccuracyNuDiff.at(i) << std::endl;
-		oss << lx.at(i + 1) << "\t" << nuDiff.at(i + 1) << std::endl;
-	}
-	oss << std::endl;
 
-	oss << "L" << "\t" << std::setfill(' ') << std::left << std::setw(15) << "PhiDiff" << "Order of Accuracy" << std::endl;
-	oss << lx.at(0) << "\t" << phiDiff.at(0) << std::endl;
-	for (int i = 0; i < phiDiff.size() - 1; i++) {
-		oss << std::setfill(' ') << std::setw(23) << " " << orderOfAccuracyPhiDiff.at(i) << std::endl;
-		oss << lx.at(i + 1) << "\t" << phiDiff.at(i + 1) << std::endl;
-	}
-	oss << std::endl;
+std::string PhiAndNuTest::getLogFileOutput()
+{
+	std::ostringstream oss;
+	oss << std::setfill(' ') << std::left << std::setw(4) << lx.at(0) << std::setw(45) << nuDiff.at(0) << phiDiff.at(0) << std::endl;
+	oss << std::setfill(' ') << std::left << std::setw(19) << " " << std::setw(45) << orderOfAccuracyNuDiff << orderOfAccuracyPhiDiff << std::endl;
+	oss << std::setfill(' ') << std::left << std::setw(4) << lx.at(1) << std::setw(45) << nuDiff.at(1) << phiDiff.at(1) << std::endl;
 
 	return oss.str();
 }
 
-PhiAndNuTest::PhiAndNuTest(std::string aTestName, double minOrderOfAccuracy, std::shared_ptr<TestCout> testOut) : testName(aTestName), minOrderOfAccuracy(minOrderOfAccuracy), testOut(testOut)
+PhiAndNuTest::PhiAndNuTest(std::string dataToCalculate, double minOrderOfAccuracy, double viscosity) : TestImp(), simulationName(simulationName), minOrderOfAccuracy(minOrderOfAccuracy), viscosity(viscosity), dataToCalculate(dataToCalculate)
 {
+	lx.resize(0);
 	phiDiff.resize(0);
 	nuDiff.resize(0);
-	lx.resize(0);
-	orderOfAccuracyPhiDiff.resize(0);
-	orderOfAccuracyNuDiff.resize(0);
-	nuDiffTestPassed.resize(0);
-	phiDiffTestPassed.resize(0);
+	calculator = FFTCalculator::getNewInstance(viscosity);
+	testOut = TestCoutImp::getNewInstance();
 }
 
-void PhiAndNuTest::makeLastTestOutput()
+double PhiAndNuTest::calcOrderOfAccuracy(std::vector<double> data)
 {
-	testOut->makeTestOutput(nuDiffTestPassed.back(), testName, lx.at(lx.size() - 2), lx.back(), "NuDiff", "NuDiff", "OrderOfAccuracy", nuDiff.at(nuDiff.size() - 2), nuDiff.back(), orderOfAccuracyNuDiff.back());
-	testOut->makeTestOutput(phiDiffTestPassed.back(), testName, lx.at(lx.size() - 2), lx.back(), "PhiDiff", "PhiDiff", "OrderOfAccuracy", phiDiff.at(phiDiff.size() - 2), phiDiff.back(), orderOfAccuracyPhiDiff.back());
-}
-
-std::vector<double> PhiAndNuTest::calcOrderOfAccuracy(std::vector<double> data)
-{
-	std::vector<double> result;
-	for (int i = 1; i < lx.size(); i++) {
-		double ooa = log(data.at(i - 1) / data.at(i)) / log(lx.at(i) / lx.at(i - 1));
-		result.push_back(ooa);
-	}
-	return result;
-}
-
-std::vector<bool> PhiAndNuTest::checkTestPassed(std::vector<double> orderOfAccuracy)
-{
-	std::vector<bool> result;
-	for (int i = 0; i < orderOfAccuracy.size(); i++) 
-		result.push_back(orderOfAccuracy.at(i) > minOrderOfAccuracy);
-	return result;
+	double ooa = log(data.at(0) / data.at(1)) / log(lx.at(1) / lx.at(0));
+	
+	return ooa;
 }
 
-int PhiAndNuTest::calcNumberOfPassedTests(std::vector<bool> orderOfAccuracy)
+bool PhiAndNuTest::checkTestPassed(double orderOfAccuracy)
 {
-	int passed = 0;
-	for (int i = 0; i < orderOfAccuracy.size(); i++) {
-		if (orderOfAccuracy.at(i))
-			passed++;
-	}
-	return passed;
-}
+	return orderOfAccuracy > minOrderOfAccuracy;
+}
\ No newline at end of file
diff --git a/targets/tests/NumericalTests/Tests/PhiAndNuTest/PhiAndNuTest.h b/targets/tests/NumericalTests/Tests/PhiAndNuTest/PhiAndNuTest.h
index 445f8d2d9..6ccb5da7f 100644
--- a/targets/tests/NumericalTests/Tests/PhiAndNuTest/PhiAndNuTest.h
+++ b/targets/tests/NumericalTests/Tests/PhiAndNuTest/PhiAndNuTest.h
@@ -1,45 +1,53 @@
-#ifndef PHI_AND_NU_TEST_RESULTS_H
-#define PHI_AND_NU_TEST_RESULTS_H
+#ifndef PHI_AND_NU_TEST_H
+#define PHI_AND_NU_TEST_H
 
-#include "Utilities/TestResults/TestResults.h"
-#include "Utilities/LogFileInformation/LogFileInformation.h"
+#include "Utilities\Test\TestImp.h"
 
 #include <memory>
 #include <vector>
 #include <iostream>
 
 class TestCout;
+class FFTCalculator;
 
-class PhiAndNuTest : public TestResults, public LogFileInformation
+class PhiAndNuTest : public TestImp 
 {
 public:
-	static std::shared_ptr<PhiAndNuTest> getNewInstance(std::string aTestName, double minOrderOfAccuracy, std::shared_ptr<TestCout> testOut);
+	static std::shared_ptr<PhiAndNuTest> getNewInstance(std::string dataToCalculate, double minOrderOfAccuracy, double viscosity);
+	
+	void update();
+	void addSimulation(std::shared_ptr< TestSimulation> sim, std::shared_ptr< SimulationInfo> simInfo);
 	void evaluate();
-	void makeFinalOutput();
-	int getNumberOfPassedTests();
-	int getNumberOfTests();
+	
+	std::vector< bool> getPassedTests();
+	std::string getSimulationName();
 
-	void add(double phiDiff, double nuDiff, double lx);
-	std::string getOutput();
+	void makeOutput();
+	std::string getLogFileOutput();
 
 private:
-	PhiAndNuTest(std::string aTestName, double minOrderOfAccuracy, std::shared_ptr<TestCout> testOut);
-	void makeLastTestOutput();
-	std::vector<double> calcOrderOfAccuracy(std::vector<double> data);
-	std::vector<bool> checkTestPassed(std::vector<double> orderOfAccuracy);
-	int calcNumberOfPassedTests(std::vector< bool> orderOfAccuracy);
+	PhiAndNuTest(std::string dataToCalculate, double minOrderOfAccuracy, double viscosity);
+	double calcOrderOfAccuracy(std::vector<double> data);
+	bool checkTestPassed(double orderOfAccuracy);
+	
 
+	std::shared_ptr< FFTCalculator> calculator;
+	std::shared_ptr< TestCout> testOut;
+	std::vector<double> lx;
 	std::vector<double> phiDiff;
 	std::vector<double> nuDiff;
-	std::vector<double> lx;
-	std::vector<double> orderOfAccuracyPhiDiff;
-	std::vector<double> orderOfAccuracyNuDiff;
-	std::vector<bool> phiDiffTestPassed;
-	std::vector<bool> nuDiffTestPassed;
-		
+	double orderOfAccuracyPhiDiff;
+	double orderOfAccuracyNuDiff;
 	double minOrderOfAccuracy;
-	std::string testName;
+	double viscosity;
+
+	bool phiDiffTestPassed;
+	bool nuDiffTestPassed;
+	
+	std::string simulationName;
+	std::string dataToCalculate;
+	std::string kernelName;
+	std::string simulationParameter;
 
-	std::shared_ptr<TestCout> testOut;
 };
 #endif
diff --git a/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/VxFFTCalculator.cpp b/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/VxFFTCalculator.cpp
deleted file mode 100644
index 9a6636860..000000000
--- a/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/VxFFTCalculator.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-#include "VxFFTCalculator.h"
-
-#include "Utilities/SimulationResults/SimulationResults.h"
-
-std::shared_ptr<VxFFTCalculator> VxFFTCalculator::getNewInstance(double viscosity, std::shared_ptr<PhiAndNuTest> testResults)
-{
-	return std::shared_ptr<VxFFTCalculator>(new VxFFTCalculator(viscosity, testResults));
-}
-
-void VxFFTCalculator::setVectorToCalc()
-{
-	data = simResults->getVx();
-}
-
-VxFFTCalculator::VxFFTCalculator(double viscosity, std::shared_ptr<PhiAndNuTest> testResults) : FFTCalculator(viscosity, testResults)
-{
-	
-}
\ No newline at end of file
diff --git a/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/VxFFTCalculator.h b/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/VxFFTCalculator.h
deleted file mode 100644
index 0ebf89fcb..000000000
--- a/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/VxFFTCalculator.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef VXFFTCALCULATOR_H
-#define VXFFTCALCULATOR_H
-
-#include "../FFTCalculator.h"
-
-class VxFFTCalculator : public FFTCalculator
-{
-public:
-	static std::shared_ptr<VxFFTCalculator> getNewInstance(double viscosity, std::shared_ptr<PhiAndNuTest> testResults);
-
-protected:
-	void setVectorToCalc();
-private:
-	VxFFTCalculator(double viscosity, std::shared_ptr<PhiAndNuTest> testResults);
-};
-#endif 
\ No newline at end of file
diff --git a/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/package.include b/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VxFFTCalculator/package.include
deleted file mode 100644
index e69de29bb..000000000
diff --git a/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/VzFFTCalculator.cpp b/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/VzFFTCalculator.cpp
deleted file mode 100644
index b39d7af3f..000000000
--- a/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/VzFFTCalculator.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-#include "VzFFTCalculator.h"
-
-#include "Utilities/SimulationResults/SimulationResults.h"
-
-
-std::shared_ptr<VzFFTCalculator> VzFFTCalculator::getNewInstance(double viscosity, std::shared_ptr<PhiAndNuTest> testResults)
-{
-	return std::shared_ptr<VzFFTCalculator>(new VzFFTCalculator(viscosity, testResults));
-}
-
-void VzFFTCalculator::setVectorToCalc()
-{
-	data = simResults->getVz();
-}
-
-VzFFTCalculator::VzFFTCalculator(double viscosity, std::shared_ptr<PhiAndNuTest> testResults) : FFTCalculator(viscosity, testResults)
-{
-}
diff --git a/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/VzFFTCalculator.h b/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/VzFFTCalculator.h
deleted file mode 100644
index e0a3a9b45..000000000
--- a/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/VzFFTCalculator.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef VZFFTCALCULATOR_H
-#define VZFFTCALCULATOR_H
-
-#include "../FFTCalculator.h"
-
-class VzFFTCalculator : public FFTCalculator
-{
-public:
-	static std::shared_ptr<VzFFTCalculator> getNewInstance(double viscosity, std::shared_ptr<PhiAndNuTest> testResults);
-
-protected:
-	void setVectorToCalc();
-private:
-	VzFFTCalculator(double viscosity, std::shared_ptr<PhiAndNuTest> testResults);
-};
-#endif 
\ No newline at end of file
diff --git a/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/package.include b/targets/tests/NumericalTests/Utilities/Calculator/FFTCalculator/VzFFTCalculator/package.include
deleted file mode 100644
index e69de29bb..000000000
-- 
GitLab