From 734d47d022b6582ba09b2cf139517de7550198e3 Mon Sep 17 00:00:00 2001
From: Timon Habenicht <t.habenicht@tu-bs.de>
Date: Wed, 20 Feb 2019 12:31:12 +0100
Subject: [PATCH] refactoring data structure in order of accuracy

---
 .../NyTest/LogFileData/NyLogFileDataImp.cpp   |  2 +-
 .../NyTest/LogFileData/NyLogFileDataImp.h     |  2 +-
 .../Utilities/LogFileReader/LogFileReader.cpp | 74 +++++++++++++------
 3 files changed, 55 insertions(+), 23 deletions(-)

diff --git a/targets/tests/NumericalTestPostProcessing/Tests/NyTest/LogFileData/NyLogFileDataImp.cpp b/targets/tests/NumericalTestPostProcessing/Tests/NyTest/LogFileData/NyLogFileDataImp.cpp
index 4b63ddfc7..4f7be6d1c 100644
--- a/targets/tests/NumericalTestPostProcessing/Tests/NyTest/LogFileData/NyLogFileDataImp.cpp
+++ b/targets/tests/NumericalTestPostProcessing/Tests/NyTest/LogFileData/NyLogFileDataImp.cpp
@@ -55,7 +55,7 @@ void NyLogFileDataImp::setEndTimeStepCalculation(int endTimeStepCalculation)
 	this->endTimeStepCalculation = endTimeStepCalculation;
 }
 
-void NyLogFileDataImp::setDataToCalcPhiAndNu(std::string dataToCalc)
+void NyLogFileDataImp::setDataToCalc(std::string dataToCalc)
 {
 	this->dataToCalc = dataToCalc;
 }
diff --git a/targets/tests/NumericalTestPostProcessing/Tests/NyTest/LogFileData/NyLogFileDataImp.h b/targets/tests/NumericalTestPostProcessing/Tests/NyTest/LogFileData/NyLogFileDataImp.h
index 789077718..ece73a134 100644
--- a/targets/tests/NumericalTestPostProcessing/Tests/NyTest/LogFileData/NyLogFileDataImp.h
+++ b/targets/tests/NumericalTestPostProcessing/Tests/NyTest/LogFileData/NyLogFileDataImp.h
@@ -21,7 +21,7 @@ public:
 	void setBasicGridLengths(std::vector<double> basicGridLengths);
 	void setStartTimeStepCalculation(int startTimeStepCalculation);
 	void setEndTimeStepCalculation(int endTimeStepCalculation);
-	void setDataToCalcPhiAndNu(std::string dataToCalcPhiAndNu);
+	void setDataToCalc(std::string dataToCalcPhiAndNu);
 	void setNy(std::vector<double> ny);
 	void setNyDiff(std::vector<double> nyDiff);
 	void setOrderOfAccuracy(std::vector<std::vector<double> > orderOfAccuracy);
diff --git a/targets/tests/NumericalTestPostProcessing/Utilities/LogFileReader/LogFileReader.cpp b/targets/tests/NumericalTestPostProcessing/Utilities/LogFileReader/LogFileReader.cpp
index 576cec549..f1dc47d8d 100644
--- a/targets/tests/NumericalTestPostProcessing/Utilities/LogFileReader/LogFileReader.cpp
+++ b/targets/tests/NumericalTestPostProcessing/Utilities/LogFileReader/LogFileReader.cpp
@@ -158,6 +158,9 @@ std::shared_ptr<LogFileData> LogFileReader::readLogFileToLogFileData(std::string
 	logFileData->setL2NormTestBetweenKernelRun(StringUtil::toBool(input->getValue("L2NormTestBetweenKernel")));
 
 	if (logFileData->getPhiTestRun()) {
+		std::vector<std::string> failPhi = StringUtil::toStringVector(input->getValue("FailTests_Phi_PhiTest"));
+		std::vector<std::string> failOOA = StringUtil::toStringVector(input->getValue("FailTests_OOA_PhiTest"));
+
 		std::vector<std::string> dataToCalc = StringUtil::toStringVector(input->getValue("DataToCalc_PhiTest"));
 		std::vector<std::shared_ptr<PhiLogFileData> > aPhiLogGroup;
 		for (int i = 0; i < dataToCalc.size(); i++) {
@@ -170,24 +173,47 @@ std::shared_ptr<LogFileData> LogFileReader::readLogFileToLogFileData(std::string
 			std::vector<double> phiDiff;
 			std::vector<std::vector<double> > orderOfAccuracy;
 			for (int j = 0; j < logFileData->getBasicGridLengths().size(); j++) {
-				std::ostringstream phiDiffString;
-				phiDiffString << "PhiDiff_" << logFileData->getBasicGridLengths().at(j) << "_" << dataToCalc.at(i);
-				phiDiff.push_back(StringUtil::toDouble(input->getValue(phiDiffString.str())));
+				std::ostringstream phiBasicString, phiString, phiDiffString;
+				phiBasicString << logFileData->getBasicGridLengths().at(j) << "_" << dataToCalc.at(i);
+				bool failData = false;
+				for (int k = 0; k < failPhi.size(); k++) {
+					if (phiBasicString.str() == failPhi.at(k))
+						failData = true;
+				}
+				if (!failData) {
+					phiDiffString << "PhiDiff_" << logFileData->getBasicGridLengths().at(j) << "_" << dataToCalc.at(i);
+					phiDiff.push_back(StringUtil::toDouble(input->getValue(phiDiffString.str())));
+				}
+
 
-				std::vector<double> aOrderOfAccuracyGroup;
 				for (int k = j + 1; k < logFileData->getBasicGridLengths().size(); k++) {
-					std::ostringstream phiDiff;
-					phiDiff << "OrderOfAccuracy_PhiDiff_" << logFileData->getBasicGridLengths().at(j) << "_" << logFileData->getBasicGridLengths().at(k) << "_" << dataToCalc.at(i);
-					aOrderOfAccuracyGroup.push_back(StringUtil::toDouble(input->getValue(phiDiff.str())));
+					std::vector<double> aOrderOfAccuracyGroup;
+					std::ostringstream phiDiffOOA, phiDiffBasicOOA;
+					phiDiffBasicOOA << logFileData->getBasicGridLengths().at(j) << "_" << logFileData->getBasicGridLengths().at(k) << "_" << dataToCalc.at(i);
+					bool failData = false;
+					for (int k = 0; k < failOOA.size(); k++) {
+						if (phiDiffBasicOOA.str() == failOOA.at(k))
+							failData = true;
+					}
+					if (!failData) {
+						phiDiffOOA << "OrderOfAccuracy_PhiDiff_" << phiDiffBasicOOA.str();
+						aOrderOfAccuracyGroup.push_back(logFileData->getBasicGridLengths().at(j));
+						aOrderOfAccuracyGroup.push_back(logFileData->getBasicGridLengths().at(k));
+						aOrderOfAccuracyGroup.push_back(StringUtil::toDouble(input->getValue(phiDiffOOA.str())));
+					}
+					if (aOrderOfAccuracyGroup.size() > 0)
+						orderOfAccuracy.push_back(aOrderOfAccuracyGroup);
+
 				}
-				if(aOrderOfAccuracyGroup.size() > 0)
-					orderOfAccuracy.push_back(aOrderOfAccuracyGroup);
+
+
 			}
-			if(phiDiff.size() > 0)
+			if (phiDiff.size() > 0) {
 				phiLog->setPhiDiff(phiDiff);
-			if(orderOfAccuracy.size() > 0)
+			}
+			if (orderOfAccuracy.size() > 0)
 				phiLog->setOrderOfAccuracy(orderOfAccuracy);
-			if(phiDiff.size() > 0 || orderOfAccuracy.size() > 0)
+			if (phiDiff.size() > 0 || orderOfAccuracy.size() > 0)
 				aPhiLogGroup.push_back(phiLog);
 		}
 		if (aPhiLogGroup.size() > 0)
@@ -196,6 +222,7 @@ std::shared_ptr<LogFileData> LogFileReader::readLogFileToLogFileData(std::string
 			logFileData->setPhiTestRun(false);
 	}
 
+
 	if (logFileData->getNyTestRun()) {
 		std::vector<std::string> failNy = StringUtil::toStringVector(input->getValue("FailTests_Ny_NyTest"));
 		std::vector<std::string> failOOA = StringUtil::toStringVector(input->getValue("FailTests_OOA_NyTest"));
@@ -205,7 +232,7 @@ std::shared_ptr<LogFileData> LogFileReader::readLogFileToLogFileData(std::string
 		for (int i = 0; i < dataToCalc.size(); i++) {
 			std::shared_ptr<NyLogFileDataImp> nyLog = NyLogFileDataImp::getNewInstance();
 			nyLog->setBasicGridLengths(logFileData->getBasicGridLengths());
-			nyLog->setDataToCalcPhiAndNu(dataToCalc.at(i));
+			nyLog->setDataToCalc(dataToCalc.at(i));
 			nyLog->setStartTimeStepCalculation(StringUtil::toInt(input->getValue("StartTimeStepCalculation_NyTest")));
 			nyLog->setEndTimeStepCalculation(StringUtil::toInt(input->getValue("EndTimeStepCalculation_NyTest")));
 
@@ -226,22 +253,27 @@ std::shared_ptr<LogFileData> LogFileReader::readLogFileToLogFileData(std::string
 					nyDiff.push_back(StringUtil::toDouble(input->getValue(nyDiffString.str())));
 				}			
 
-				std::vector<double> aOrderOfAccuracyGroup;
+				
 				for (int k = j + 1; k < logFileData->getBasicGridLengths().size(); k++) {
-					std::ostringstream nyDiff, nyDiffBasic;
-					nyDiffBasic << logFileData->getBasicGridLengths().at(j) << "_" << logFileData->getBasicGridLengths().at(k) << "_" << dataToCalc.at(i);
+					std::vector<double> aOrderOfAccuracyGroup;
+					std::ostringstream nyDiffOOA, nyDiffBasicOOA;
+					nyDiffBasicOOA << logFileData->getBasicGridLengths().at(j) << "_" << logFileData->getBasicGridLengths().at(k) << "_" << dataToCalc.at(i);
 					bool failData = false;
 					for (int k = 0; k < failOOA.size(); k++) {
-						if (nyDiffBasic.str() == failOOA.at(k))
+						if (nyDiffBasicOOA.str() == failOOA.at(k))
 							failData = true;
 					}
 					if (!failData) {
-						nyDiff << "OrderOfAccuracy_NyDiff_" << nyDiffBasic.str();
-						aOrderOfAccuracyGroup.push_back(StringUtil::toDouble(input->getValue(nyDiff.str())));
+						nyDiffOOA << "OrderOfAccuracy_NyDiff_" << nyDiffBasicOOA.str();
+						aOrderOfAccuracyGroup.push_back(logFileData->getBasicGridLengths().at(j));
+						aOrderOfAccuracyGroup.push_back(logFileData->getBasicGridLengths().at(k));
+						aOrderOfAccuracyGroup.push_back(StringUtil::toDouble(input->getValue(nyDiffOOA.str())));
 					}
+					if (aOrderOfAccuracyGroup.size() > 0)
+						orderOfAccuracy.push_back(aOrderOfAccuracyGroup);
+						
 				}
-				if(aOrderOfAccuracyGroup.size() > 0)
-					orderOfAccuracy.push_back(aOrderOfAccuracyGroup);
+				
 
 			}
 			if (ny.size() > 0) {
-- 
GitLab