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