From 9ee70adde48e34c5c6f8bbf529bf2c389ac9bea0 Mon Sep 17 00:00:00 2001
From: Timon Habenicht <t.habenicht@tu-bs.de>
Date: Mon, 4 Feb 2019 09:18:31 +0100
Subject: [PATCH] corrects logFile writing

---
 .../ShearWaveAnalyticalResults.cpp            |  2 +-
 .../NumericalTestFactoryImp.cpp               | 99 +++++++++++--------
 .../Utilities/Structs/SimulationDataStruct.h  |  1 +
 targets/tests/NumericalTests/config.txt       |  8 +-
 4 files changed, 64 insertions(+), 46 deletions(-)

diff --git a/targets/tests/NumericalTests/Simulations/ShearWave/AnalyticalResults/ShearWaveAnalyticalResults.cpp b/targets/tests/NumericalTests/Simulations/ShearWave/AnalyticalResults/ShearWaveAnalyticalResults.cpp
index bc044aea8..5b11dbf72 100644
--- a/targets/tests/NumericalTests/Simulations/ShearWave/AnalyticalResults/ShearWaveAnalyticalResults.cpp
+++ b/targets/tests/NumericalTests/Simulations/ShearWave/AnalyticalResults/ShearWaveAnalyticalResults.cpp
@@ -7,7 +7,7 @@
 
 std::shared_ptr<AnalyticalResults> ShearWaveAnalyticalResults::getNewInstance(double viscosity, std::shared_ptr<ShearWaveParameterStruct> simParaStruct)
 {
-	return std::shared_ptr<AnalyticalResults>(new ShearWaveAnalyticalResults(viscosity,simParaStruct));
+	return std::shared_ptr<AnalyticalResults>(new ShearWaveAnalyticalResults(viscosity, simParaStruct));
 }
 
 void ShearWaveAnalyticalResults::calc(std::shared_ptr<SimulationResults> simResults)
diff --git a/targets/tests/NumericalTests/Utilities/NumericalTestFactory/NumericalTestFactoryImp.cpp b/targets/tests/NumericalTests/Utilities/NumericalTestFactory/NumericalTestFactoryImp.cpp
index 91a307d26..f38d1ae98 100644
--- a/targets/tests/NumericalTests/Utilities/NumericalTestFactory/NumericalTestFactoryImp.cpp
+++ b/targets/tests/NumericalTests/Utilities/NumericalTestFactory/NumericalTestFactoryImp.cpp
@@ -96,23 +96,27 @@ void NumericalTestFactoryImp::init(std::shared_ptr<ConfigDataStruct> configFileD
 		for (int j = 0; j < configFileData->viscosity.size(); j++) {
 			for (int k = 0; k < configFileData->taylorGreenVortexUxParameter.size(); k++) {
 				std::shared_ptr<SimulationDataStruct> simDataStruct = makeTaylorGreenUxSimulationData(configFileData->kernelsToTest.at(i), configFileData->viscosity.at(j), configFileData->taylorGreenVortexUxParameter.at(k), configFileData->taylorGreenVortexUxGridInformation);
-				
-				std::shared_ptr<NumericalTestStruct> numericalTestStruct = makeNumericalTestStruct(configFileData, simDataStruct, configFileData->kernelsToTest.at(i), configFileData->viscosity.at(j), configFileData->taylorGreenVortexUxParameter.at(k)->basicTimeStepLength);
-				addNumericalTestStruct(numericalTestStruct);
+				if (simDataStruct->simGroupRun) {
+					std::shared_ptr<NumericalTestStruct> numericalTestStruct = makeNumericalTestStruct(configFileData, simDataStruct, configFileData->kernelsToTest.at(i), configFileData->viscosity.at(j), configFileData->taylorGreenVortexUxParameter.at(k)->basicTimeStepLength);
+					addNumericalTestStruct(numericalTestStruct);
+				}
 			}
 
 			for (int k = 0; k < configFileData->taylorGreenVortexUzParameter.size(); k++) {
 				std::shared_ptr<SimulationDataStruct> simDataStruct = makeTaylorGreenUzSimulationData(configFileData->kernelsToTest.at(i), configFileData->viscosity.at(j), configFileData->taylorGreenVortexUzParameter.at(k), configFileData->taylorGreenVortexUzGridInformation);
-				
-				std::shared_ptr<NumericalTestStruct> numericalTestStruct = makeNumericalTestStruct(configFileData, simDataStruct, configFileData->kernelsToTest.at(i), configFileData->viscosity.at(j), configFileData->taylorGreenVortexUzParameter.at(k)->basicTimeStepLength);
-				addNumericalTestStruct(numericalTestStruct);
+				if (simDataStruct->simGroupRun) {
+					std::shared_ptr<NumericalTestStruct> numericalTestStruct = makeNumericalTestStruct(configFileData, simDataStruct, configFileData->kernelsToTest.at(i), configFileData->viscosity.at(j), configFileData->taylorGreenVortexUzParameter.at(k)->basicTimeStepLength);
+					addNumericalTestStruct(numericalTestStruct);
+				}
 			}
 
 			for (int k = 0; k < configFileData->shearWaveParameter.size(); k++) {
 				std::shared_ptr<SimulationDataStruct> simDataStruct = makeShearWaveSimulationData(configFileData->kernelsToTest.at(i), configFileData->viscosity.at(j), configFileData->shearWaveParameter.at(k), configFileData->shearWaveGridInformation);
-				
-				std::shared_ptr<NumericalTestStruct> numericalTestStruct = makeNumericalTestStruct(configFileData, simDataStruct, configFileData->kernelsToTest.at(i), configFileData->viscosity.at(j), configFileData->shearWaveParameter.at(k)->basicTimeStepLength);
-				addNumericalTestStruct(numericalTestStruct);
+				if (simDataStruct->simGroupRun) {
+					std::shared_ptr<NumericalTestStruct> numericalTestStruct = makeNumericalTestStruct(configFileData, simDataStruct, configFileData->kernelsToTest.at(i), configFileData->viscosity.at(j), configFileData->shearWaveParameter.at(k)->basicTimeStepLength);
+					addNumericalTestStruct(numericalTestStruct);
+				}
+
 			}
 			
 		}
@@ -171,53 +175,66 @@ std::shared_ptr<SimulationDataStruct> NumericalTestFactoryImp::makeTaylorGreenUx
 {
 	std::shared_ptr<SimulationDataStruct> simDataStruct = std::shared_ptr<SimulationDataStruct>(new SimulationDataStruct);
 
-	for (int i = 0; i < gridInfoStruct.size(); i++) {
-		std::shared_ptr<TestSimulationDataStruct> aTestSimData = std::shared_ptr<TestSimulationDataStruct> (new TestSimulationDataStruct);
-		aTestSimData->simParameter = SimulationParameterTaylorGreenUx::getNewInstance(kernelName, viscosity, simParaStruct, gridInfoStruct.at(i));
-		aTestSimData->initialCondition = InitialConditionTaylorGreenUx::getNewInstance(simParaStruct, gridInfoStruct.at(i));
-		aTestSimData->simInformation = SimulationInfoTaylorGreenUx::getNewInstance(simID, kernelName, viscosity, simParaStruct, gridInfoStruct.at(i), numberOfSimulations);
-		simID++;
-		aTestSimData->analyticalResult = AnalyticalResultsTaylorGreenUx::getNewInstance(viscosity, simParaStruct);
-		simDataStruct->testSimData.push_back(aTestSimData);
+	if (gridInfoStruct.size() > 0) {
+		for (int i = 0; i < gridInfoStruct.size(); i++) {
+			std::shared_ptr<TestSimulationDataStruct> aTestSimData = std::shared_ptr<TestSimulationDataStruct>(new TestSimulationDataStruct);
+			aTestSimData->simParameter = SimulationParameterTaylorGreenUx::getNewInstance(kernelName, viscosity, simParaStruct, gridInfoStruct.at(i));
+			aTestSimData->initialCondition = InitialConditionTaylorGreenUx::getNewInstance(simParaStruct, gridInfoStruct.at(i));
+			aTestSimData->simInformation = SimulationInfoTaylorGreenUx::getNewInstance(simID, kernelName, viscosity, simParaStruct, gridInfoStruct.at(i), numberOfSimulations);
+			simID++;
+			aTestSimData->analyticalResult = AnalyticalResultsTaylorGreenUx::getNewInstance(viscosity, simParaStruct);
+			simDataStruct->testSimData.push_back(aTestSimData);
+		}
+		simDataStruct->logFileInformation = LogFileInformationTaylorGreenUx::getNewInstance(simParaStruct, gridInfoStruct);
+		simDataStruct->simGroupRun = true;
+	}
+	else {
+		simDataStruct->simGroupRun = false;
 	}
-	simDataStruct->logFileInformation = LogFileInformationTaylorGreenUx::getNewInstance(simParaStruct, gridInfoStruct);
-
 	return simDataStruct;
 }
 
 std::shared_ptr<SimulationDataStruct> NumericalTestFactoryImp::makeTaylorGreenUzSimulationData(std::string kernelName, double viscosity, std::shared_ptr<TaylorGreenVortexUzParameterStruct> simParaStruct, std::vector<std::shared_ptr<GridInformationStruct> > gridInfoStruct)
 {
 	std::shared_ptr<SimulationDataStruct> simDataStruct = std::shared_ptr<SimulationDataStruct>(new SimulationDataStruct);
-
-	for (int i = 0; i < gridInfoStruct.size(); i++) {
-		std::shared_ptr<TestSimulationDataStruct> aTestSimData = std::shared_ptr<TestSimulationDataStruct>(new TestSimulationDataStruct);
-		aTestSimData->simParameter = SimulationParameterTaylorGreenUz::getNewInstance(kernelName, viscosity, simParaStruct, gridInfoStruct.at(i));
-		aTestSimData->initialCondition = InitialConditionTaylorGreenUz::getNewInstance(simParaStruct, gridInfoStruct.at(i));
-		aTestSimData->simInformation = SimulationInfoTaylorGreenUz::getNewInstance(simID, kernelName, viscosity, simParaStruct, gridInfoStruct.at(i), numberOfSimulations);
-		simID++;
-		aTestSimData->analyticalResult = AnalyticalResultsTaylorGreenUz::getNewInstance(viscosity, simParaStruct);
-		simDataStruct->testSimData.push_back(aTestSimData);
+	if (gridInfoStruct.size() > 0) {
+		for (int i = 0; i < gridInfoStruct.size(); i++) {
+			std::shared_ptr<TestSimulationDataStruct> aTestSimData = std::shared_ptr<TestSimulationDataStruct>(new TestSimulationDataStruct);
+			aTestSimData->simParameter = SimulationParameterTaylorGreenUz::getNewInstance(kernelName, viscosity, simParaStruct, gridInfoStruct.at(i));
+			aTestSimData->initialCondition = InitialConditionTaylorGreenUz::getNewInstance(simParaStruct, gridInfoStruct.at(i));
+			aTestSimData->simInformation = SimulationInfoTaylorGreenUz::getNewInstance(simID, kernelName, viscosity, simParaStruct, gridInfoStruct.at(i), numberOfSimulations);
+			simID++;
+			aTestSimData->analyticalResult = AnalyticalResultsTaylorGreenUz::getNewInstance(viscosity, simParaStruct);
+			simDataStruct->testSimData.push_back(aTestSimData);
+		}
+		simDataStruct->logFileInformation = LogFileInformationTaylorGreenUz::getNewInstance(simParaStruct, gridInfoStruct);
+		simDataStruct->simGroupRun = true;
+	}
+	else {
+		simDataStruct->simGroupRun = false;
 	}
-	simDataStruct->logFileInformation = LogFileInformationTaylorGreenUz::getNewInstance(simParaStruct, gridInfoStruct);
-
 	return simDataStruct;
 }
 
 std::shared_ptr<SimulationDataStruct> NumericalTestFactoryImp::makeShearWaveSimulationData(std::string kernelName, double viscosity, std::shared_ptr<ShearWaveParameterStruct> simParaStruct, std::vector<std::shared_ptr<GridInformationStruct> > gridInfoStruct)
 {
 	std::shared_ptr<SimulationDataStruct> simDataStruct = std::shared_ptr<SimulationDataStruct>(new SimulationDataStruct);
-
-	for (int i = 0; i < gridInfoStruct.size(); i++) {
-		std::shared_ptr<TestSimulationDataStruct> aTestSimData = std::shared_ptr<TestSimulationDataStruct>(new TestSimulationDataStruct);
-		aTestSimData->simParameter = ShearWaveSimulationParameter::getNewInstance(kernelName, viscosity, simParaStruct, gridInfoStruct.at(i));
-		aTestSimData->initialCondition = InitialConditionShearWave::getNewInstance(simParaStruct, gridInfoStruct.at(i));
-		aTestSimData->simInformation = ShearWaveSimulationInfo::getNewInstance(simID, kernelName, viscosity, simParaStruct, gridInfoStruct.at(i), numberOfSimulations);
-		simID++;
-		aTestSimData->analyticalResult = ShearWaveAnalyticalResults::getNewInstance(viscosity, simParaStruct);
-		simDataStruct->testSimData.push_back(aTestSimData);
+	if (gridInfoStruct.size() > 0) {
+		for (int i = 0; i < gridInfoStruct.size(); i++) {
+			std::shared_ptr<TestSimulationDataStruct> aTestSimData = std::shared_ptr<TestSimulationDataStruct>(new TestSimulationDataStruct);
+			aTestSimData->simParameter = ShearWaveSimulationParameter::getNewInstance(kernelName, viscosity, simParaStruct, gridInfoStruct.at(i));
+			aTestSimData->initialCondition = InitialConditionShearWave::getNewInstance(simParaStruct, gridInfoStruct.at(i));
+			aTestSimData->simInformation = ShearWaveSimulationInfo::getNewInstance(simID, kernelName, viscosity, simParaStruct, gridInfoStruct.at(i), numberOfSimulations);
+			simID++;
+			aTestSimData->analyticalResult = ShearWaveAnalyticalResults::getNewInstance(viscosity, simParaStruct);
+			simDataStruct->testSimData.push_back(aTestSimData);
+		}
+		simDataStruct->logFileInformation = ShearWaveInformation::getNewInstance(simParaStruct, gridInfoStruct);
+		simDataStruct->simGroupRun = true;
+	}		
+	else {
+		simDataStruct->simGroupRun = false;
 	}
-	simDataStruct->logFileInformation = ShearWaveInformation::getNewInstance(simParaStruct, gridInfoStruct);
-
 	return simDataStruct;
 }
 
diff --git a/targets/tests/NumericalTests/Utilities/Structs/SimulationDataStruct.h b/targets/tests/NumericalTests/Utilities/Structs/SimulationDataStruct.h
index 75ecbb2d8..b6628b764 100644
--- a/targets/tests/NumericalTests/Utilities/Structs/SimulationDataStruct.h
+++ b/targets/tests/NumericalTests/Utilities/Structs/SimulationDataStruct.h
@@ -11,5 +11,6 @@ struct SimulationDataStruct
 	std::vector<std::shared_ptr<TestSimulationDataStruct> > testSimData;
 
 	std::shared_ptr<SimulationLogFileInformation> logFileInformation;
+	bool simGroupRun;
 };
 #endif 
\ No newline at end of file
diff --git a/targets/tests/NumericalTests/config.txt b/targets/tests/NumericalTests/config.txt
index a8d7a6770..c55f8e2ee 100644
--- a/targets/tests/NumericalTests/config.txt
+++ b/targets/tests/NumericalTests/config.txt
@@ -50,7 +50,7 @@ EndTimeStepCalculation_PhiNu=20
 ##################################################
 #			L2-Norm Test Parameter				 #
 ##################################################
-L2NormTest=false
+L2NormTest=true
 MaxL2NormDiff=2.5
 DataToCalc_L2="Vx"
 BasicTimeStep_L2=0
@@ -67,20 +67,20 @@ DataToCalc_L2NormBetweenKernels="Vx"
 ##################################################
 #			Simulation To Perform				 #
 ##################################################
-TaylorGreenVortexUx32=false
+TaylorGreenVortexUx32=true
 TaylorGreenVortexUx64=false
 TaylorGreenVortexUx128=false
 TaylorGreenVortexUx256=false
 TaylorGreenVortexUx512=false
 
-TaylorGreenVortexUz32=false
+TaylorGreenVortexUz32=true
 TaylorGreenVortexUz64=false
 TaylorGreenVortexUz128=false
 TaylorGreenVortexUz256=false
 TaylorGreenVortexUz512=false
 
 ShearWave32=true
-ShearWave64=true
+ShearWave64=false
 ShearWave128=false
 ShearWave256=false
 ShearWave512=false
-- 
GitLab