From 4b17c2f2a8c5ce4f626b47a3df134bdcf8d37a52 Mon Sep 17 00:00:00 2001
From: Soeren Peters <peters@irmb.tu-bs.de>
Date: Thu, 14 Jan 2021 14:20:36 +0100
Subject: [PATCH] If PATH_NUMERICAL_TESTS is not set, the tests will look in
 the project root for the grids.

---
 CMake/CMakeSetCompilerFlags.cmake             |   2 +-
 .../ConfigFileReaderNT/ConfigFileReaderNT.cpp | 654 ++++++++++--------
 .../ConfigFileReaderNT/ConfigFileReaderNT.h   |  78 ++-
 3 files changed, 392 insertions(+), 342 deletions(-)

diff --git a/CMake/CMakeSetCompilerFlags.cmake b/CMake/CMakeSetCompilerFlags.cmake
index 4165eeff8..ad9311482 100644
--- a/CMake/CMakeSetCompilerFlags.cmake
+++ b/CMake/CMakeSetCompilerFlags.cmake
@@ -20,7 +20,7 @@ macro(loadMachineFile)
     SET(CMAKE_CONFIG_FILE "${VF_CMAKE_DIR}/cmake_config_files/${CAB_MACHINE}.config.cmake")
 
     IF(NOT EXISTS ${CMAKE_CONFIG_FILE})
-        status("No configuration file found for machine: ${CAB_MACHINE}.")
+        status("No configuration file found for machine: ${CAB_MACHINE}.config.cmake")
     ELSE()
         status("Load configuration file ${CAB_MACHINE}.config.cmake")
         include(${CMAKE_CONFIG_FILE})
diff --git a/apps/gpu/tests/NumericalTests/Utilities/ConfigFileReaderNT/ConfigFileReaderNT.cpp b/apps/gpu/tests/NumericalTests/Utilities/ConfigFileReaderNT/ConfigFileReaderNT.cpp
index 37a34a3c3..5ad743fa1 100644
--- a/apps/gpu/tests/NumericalTests/Utilities/ConfigFileReaderNT/ConfigFileReaderNT.cpp
+++ b/apps/gpu/tests/NumericalTests/Utilities/ConfigFileReaderNT/ConfigFileReaderNT.cpp
@@ -5,407 +5,447 @@
 
 #include "VirtualFluids_GPU/Kernel/Utilities/Mapper/KernelMapper/KernelMapper.h"
 
-#include <string>
 #include <fstream>
+#include <string>
 
 #define VAL(str) #str
 #define TOSTRING(str) VAL(str)
 
-
 std::shared_ptr<ConfigFileReader> ConfigFileReader::getNewInstance(const std::string aFilePath)
 {
-	return std::shared_ptr<ConfigFileReader>(new ConfigFileReader(aFilePath));
+    return std::shared_ptr<ConfigFileReader>(new ConfigFileReader(aFilePath));
 }
 
 ConfigFileReader::ConfigFileReader(const std::string aFilePath) : myFilePath(aFilePath)
 {
-	myKernelMapper = KernelMapper::getInstance();
+    myKernelMapper = KernelMapper::getInstance();
+
+    // If PATH_NUMERICAL_TESTS is not defined, the grid definitions for the tests needs to be placed in the project root
+    // directories.
+#ifdef PATH_NUMERICAL_TESTS
+    pathNumericalTests = TOSTRING(PATH_NUMERICAL_TESTS);
+#else
+    pathNumericalTests = "./";
+#endif
+    std::cout << pathNumericalTests << "\n";
 }
 
 void ConfigFileReader::readConfigFile()
 {
-	configData = std::shared_ptr<ConfigDataStruct>(new ConfigDataStruct);
-	std::ifstream stream = openConfigFile(myFilePath);
+    configData           = std::shared_ptr<ConfigDataStruct>(new ConfigDataStruct);
+    std::ifstream stream = openConfigFile(myFilePath);
 
-	std::shared_ptr<input::Input> input = input::Input::makeInput(stream, "config");
+    std::shared_ptr<input::Input> input = input::Input::makeInput(stream, "config");
 
-	if (!checkConfigFile(input))
-		exit(1);
+    if (!checkConfigFile(input))
+        exit(1);
 
-	configData->viscosity = StringUtil::toDoubleVector(input->getValue("Viscosity"));
-	configData->kernelsToTest = readKernelList(input);
-	configData->writeAnalyticalToVTK = StringUtil::toBool(input->getValue("WriteAnalyResultsToVTK"));
-	configData->ySliceForCalculation = StringUtil::toInt(input->getValue("ySliceForCalculation"));;
-    configData->logFilePath         = TOSTRING(PATH_NUMERICAL_TESTS) + input->getValue("FolderLogFile");
-	configData->numberOfSimulations = calcNumberOfSimulations(input);
+    configData->viscosity            = StringUtil::toDoubleVector(input->getValue("Viscosity"));
+    configData->kernelsToTest        = readKernelList(input);
+    configData->writeAnalyticalToVTK = StringUtil::toBool(input->getValue("WriteAnalyResultsToVTK"));
+    configData->ySliceForCalculation = StringUtil::toInt(input->getValue("ySliceForCalculation"));
+    ;
+    configData->logFilePath         = pathNumericalTests + input->getValue("FolderLogFile");
+    configData->numberOfSimulations = calcNumberOfSimulations(input);
 
-	std::shared_ptr<BasicSimulationParameterStruct> basicSimPara = makeBasicSimulationParameter(input);
+    std::shared_ptr<BasicSimulationParameterStruct> basicSimPara = makeBasicSimulationParameter(input);
 
-	configData->taylorGreenVortexUxParameter = makeTaylorGreenVortexUxParameter(input, basicSimPara);
-	configData->taylorGreenVortexUxGridInformation = makeGridInformation(input, "TaylorGreenVortexUx");;
+    configData->taylorGreenVortexUxParameter       = makeTaylorGreenVortexUxParameter(input, basicSimPara);
+    configData->taylorGreenVortexUxGridInformation = makeGridInformation(input, "TaylorGreenVortexUx");
+    ;
 
-	configData->taylorGreenVortexUzParameter = makeTaylorGreenVortexUzParameter(input, basicSimPara);
-	configData->taylorGreenVortexUzGridInformation = makeGridInformation(input, "TaylorGreenVortexUz");;
+    configData->taylorGreenVortexUzParameter       = makeTaylorGreenVortexUzParameter(input, basicSimPara);
+    configData->taylorGreenVortexUzGridInformation = makeGridInformation(input, "TaylorGreenVortexUz");
+    ;
 
-	configData->shearWaveParameter = makeShearWaveParameter(input, basicSimPara);
-	configData->shearWaveGridInformation = makeGridInformation(input, "ShearWave");;
+    configData->shearWaveParameter       = makeShearWaveParameter(input, basicSimPara);
+    configData->shearWaveGridInformation = makeGridInformation(input, "ShearWave");
+    ;
 
-	configData->phiTestParameter = makePhiTestParameter(input);
-	configData->nyTestParameter = makeNyTestParameter(input);
-	configData->l2NormTestParameter = makeL2NormTestParameter(input);
-	configData->l2NormTestBetweenKernelsParameter = makeL2NormTestBetweenKernelsParameter(input);
+    configData->phiTestParameter                  = makePhiTestParameter(input);
+    configData->nyTestParameter                   = makeNyTestParameter(input);
+    configData->l2NormTestParameter               = makeL2NormTestParameter(input);
+    configData->l2NormTestBetweenKernelsParameter = makeL2NormTestBetweenKernelsParameter(input);
 
-	configData->vectorWriterInfo = makeVectorWriterInformationStruct(input);
+    configData->vectorWriterInfo = makeVectorWriterInformationStruct(input);
 
-	configData->logFilePara = makeLogFilePara(input);
+    configData->logFilePara = makeLogFilePara(input);
 
-	stream.close();
+    stream.close();
 }
 
 std::ifstream ConfigFileReader::openConfigFile(const std::string aFilePath)
 {
-	std::ifstream stream;
-	stream.open(aFilePath.c_str(), std::ios::in);
-	if (stream.fail())
-		throw "can not open config file!\n";
+    std::ifstream stream;
+    stream.open(aFilePath.c_str(), std::ios::in);
+    if (stream.fail())
+        throw "can not open config file!\n";
 
-	return stream;
+    return stream;
 }
 
-std::shared_ptr<ConfigDataStruct> ConfigFileReader::getConfigData()
-{
-	return configData;
-}
+std::shared_ptr<ConfigDataStruct> ConfigFileReader::getConfigData() { return configData; }
 
 bool ConfigFileReader::checkConfigFile(std::shared_ptr<input::Input> input)
 {
-	std::vector<double> u0TGVux = StringUtil::toDoubleVector(input->getValue("ux_TGV_Ux"));
-	std::vector<double> amplitudeTGVux = StringUtil::toDoubleVector(input->getValue("Amplitude_TGV_Ux"));
-	std::vector<int> basisTimeStepLengthTGVux = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_TGV_Ux"));
-
-	std::vector<double> v0TGVuz = StringUtil::toDoubleVector(input->getValue("uz_TGV_Uz"));
-	std::vector<double> amplitudeTGVuz = StringUtil::toDoubleVector(input->getValue("Amplitude_TGV_Uz"));
-	std::vector<int> basisTimeStepLengthTGVuz = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_TGV_Uz"));
-
-	std::vector<double> v0SW = StringUtil::toDoubleVector(input->getValue("v0_SW"));
-	std::vector<double> u0SW = StringUtil::toDoubleVector(input->getValue("u0_SW"));
-	std::vector<int> basisTimeStepLengthSW = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_SW"));
-
-	if (u0TGVux.size() != amplitudeTGVux.size() || u0TGVux.size() != basisTimeStepLengthTGVux.size()) {
-		std::cout << "Length u0_TGV_U0 is unequal to Lenght Amplitude_TGV_U0 or BasisTimeStepLength_TGV_U0!" << std::endl << std::flush;
-		return false;
-	} else if (v0TGVuz.size() != amplitudeTGVuz.size() || v0TGVuz.size() != basisTimeStepLengthTGVuz.size()) {
-		std::cout << "Length v0_TGV_V0 is unequal to Lenght Amplitude_TGV_V0 or BasisTimeStepLength_TGV_V0!" << std::endl << std::flush;
-		return false;
-	} else if (u0SW.size() != v0SW.size() || u0SW.size() != basisTimeStepLengthSW.size()) {
-		std::cout << "Length u0_SW is unequal to Lenght v0_SW!" << std::endl << std::flush;
-		return false;
-	}
-	else
-	{
-		return true;
-	}
+    std::vector<double> u0TGVux               = StringUtil::toDoubleVector(input->getValue("ux_TGV_Ux"));
+    std::vector<double> amplitudeTGVux        = StringUtil::toDoubleVector(input->getValue("Amplitude_TGV_Ux"));
+    std::vector<int> basisTimeStepLengthTGVux = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_TGV_Ux"));
+
+    std::vector<double> v0TGVuz               = StringUtil::toDoubleVector(input->getValue("uz_TGV_Uz"));
+    std::vector<double> amplitudeTGVuz        = StringUtil::toDoubleVector(input->getValue("Amplitude_TGV_Uz"));
+    std::vector<int> basisTimeStepLengthTGVuz = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_TGV_Uz"));
+
+    std::vector<double> v0SW               = StringUtil::toDoubleVector(input->getValue("v0_SW"));
+    std::vector<double> u0SW               = StringUtil::toDoubleVector(input->getValue("u0_SW"));
+    std::vector<int> basisTimeStepLengthSW = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_SW"));
+
+    if (u0TGVux.size() != amplitudeTGVux.size() || u0TGVux.size() != basisTimeStepLengthTGVux.size()) {
+        std::cout << "Length u0_TGV_U0 is unequal to Lenght Amplitude_TGV_U0 or BasisTimeStepLength_TGV_U0!"
+                  << std::endl
+                  << std::flush;
+        return false;
+    } else if (v0TGVuz.size() != amplitudeTGVuz.size() || v0TGVuz.size() != basisTimeStepLengthTGVuz.size()) {
+        std::cout << "Length v0_TGV_V0 is unequal to Lenght Amplitude_TGV_V0 or BasisTimeStepLength_TGV_V0!"
+                  << std::endl
+                  << std::flush;
+        return false;
+    } else if (u0SW.size() != v0SW.size() || u0SW.size() != basisTimeStepLengthSW.size()) {
+        std::cout << "Length u0_SW is unequal to Lenght v0_SW!" << std::endl << std::flush;
+        return false;
+    } else {
+        return true;
+    }
 }
 
-std::shared_ptr<BasicSimulationParameterStruct> ConfigFileReader::makeBasicSimulationParameter(std::shared_ptr<input::Input> input)
+std::shared_ptr<BasicSimulationParameterStruct>
+ConfigFileReader::makeBasicSimulationParameter(std::shared_ptr<input::Input> input)
 {
-	std::shared_ptr<BasicSimulationParameterStruct> basicSimPara = std::shared_ptr<BasicSimulationParameterStruct>(new BasicSimulationParameterStruct);
+    std::shared_ptr<BasicSimulationParameterStruct> basicSimPara =
+        std::shared_ptr<BasicSimulationParameterStruct>(new BasicSimulationParameterStruct);
 
-	basicSimPara->numberOfTimeSteps = StringUtil::toInt(input->getValue("NumberOfTimeSteps"));
-	basicSimPara->devices = StringUtil::toUintVector(input->getValue("Devices"));
-	return basicSimPara;
+    basicSimPara->numberOfTimeSteps = StringUtil::toInt(input->getValue("NumberOfTimeSteps"));
+    basicSimPara->devices           = StringUtil::toUintVector(input->getValue("Devices"));
+    return basicSimPara;
 }
 
-
-std::vector<std::shared_ptr<TaylorGreenVortexUxParameterStruct> > ConfigFileReader::makeTaylorGreenVortexUxParameter(std::shared_ptr<input::Input> input, std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter)
+std::vector<std::shared_ptr<TaylorGreenVortexUxParameterStruct>>
+ConfigFileReader::makeTaylorGreenVortexUxParameter(std::shared_ptr<input::Input> input,
+                                                   std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter)
 {
-	std::vector<int> basisTimeStepLength = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_TGV_Ux"));
-	std::vector<double> amplitude = StringUtil::toDoubleVector(input->getValue("Amplitude_TGV_Ux"));
-	std::vector<double> u0 = StringUtil::toDoubleVector(input->getValue("ux_TGV_Ux"));
-	int l0 = StringUtil::toInt(input->getValue("l0_TGV_Ux"));
-	basicSimParameter->l0 = l0;
-
-	std::vector<std::shared_ptr<TaylorGreenVortexUxParameterStruct> > parameter;
-	for (int i = 0; i < u0.size(); i++) {
-		std::shared_ptr<TaylorGreenVortexUxParameterStruct> aParameter = std::shared_ptr<TaylorGreenVortexUxParameterStruct>(new TaylorGreenVortexUxParameterStruct);
-		aParameter->basicSimulationParameter = basicSimParameter;
-		
-		aParameter->ux = u0.at(i);
-		aParameter->amplitude = amplitude.at(i);
-		aParameter->basicTimeStepLength = basisTimeStepLength.at(i);
-		aParameter->l0 = l0;
-		aParameter->rho0 = StringUtil::toDouble(input->getValue("Rho0"));
-        aParameter->vtkFilePath         = TOSTRING(PATH_NUMERICAL_TESTS) + input->getValue("FolderForVTKFileWriting");
-		aParameter->dataToCalcTests = StringUtil::toStringVector(input->getValue("DataToCalcTests_TGV_Ux"));
-		parameter.push_back(aParameter);
-	}
-	return parameter;
+    std::vector<int> basisTimeStepLength = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_TGV_Ux"));
+    std::vector<double> amplitude        = StringUtil::toDoubleVector(input->getValue("Amplitude_TGV_Ux"));
+    std::vector<double> u0               = StringUtil::toDoubleVector(input->getValue("ux_TGV_Ux"));
+    int l0                               = StringUtil::toInt(input->getValue("l0_TGV_Ux"));
+    basicSimParameter->l0                = l0;
+
+    std::vector<std::shared_ptr<TaylorGreenVortexUxParameterStruct>> parameter;
+    for (int i = 0; i < u0.size(); i++) {
+        std::shared_ptr<TaylorGreenVortexUxParameterStruct> aParameter =
+            std::shared_ptr<TaylorGreenVortexUxParameterStruct>(new TaylorGreenVortexUxParameterStruct);
+        aParameter->basicSimulationParameter = basicSimParameter;
+
+        aParameter->ux                  = u0.at(i);
+        aParameter->amplitude           = amplitude.at(i);
+        aParameter->basicTimeStepLength = basisTimeStepLength.at(i);
+        aParameter->l0                  = l0;
+        aParameter->rho0                = StringUtil::toDouble(input->getValue("Rho0"));
+        aParameter->vtkFilePath         = pathNumericalTests + input->getValue("FolderForVTKFileWriting");
+        aParameter->dataToCalcTests     = StringUtil::toStringVector(input->getValue("DataToCalcTests_TGV_Ux"));
+        parameter.push_back(aParameter);
+    }
+    return parameter;
 }
 
-std::vector<std::shared_ptr<TaylorGreenVortexUzParameterStruct> > ConfigFileReader::makeTaylorGreenVortexUzParameter(std::shared_ptr<input::Input> input, std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter)
+std::vector<std::shared_ptr<TaylorGreenVortexUzParameterStruct>>
+ConfigFileReader::makeTaylorGreenVortexUzParameter(std::shared_ptr<input::Input> input,
+                                                   std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter)
 {
-	std::vector<int> basisTimeStepLength = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_TGV_Uz"));
-	std::vector<double> amplitude = StringUtil::toDoubleVector(input->getValue("Amplitude_TGV_Uz"));
-	std::vector<double> uz = StringUtil::toDoubleVector(input->getValue("uz_TGV_Uz"));
-	int l0 = StringUtil::toInt(input->getValue("l0_TGV_Uz"));
-	basicSimParameter->l0 = l0;
-
-	std::vector<std::shared_ptr<TaylorGreenVortexUzParameterStruct> > parameter;
-	for (int i = 0; i < uz.size(); i++) {
-		std::shared_ptr<TaylorGreenVortexUzParameterStruct> aParameter = std::shared_ptr<TaylorGreenVortexUzParameterStruct>(new TaylorGreenVortexUzParameterStruct);
-		aParameter->basicSimulationParameter = basicSimParameter;
-		aParameter->uz = uz.at(i);
-		aParameter->amplitude = amplitude.at(i);
-		aParameter->basicTimeStepLength = basisTimeStepLength.at(i);
-		aParameter->l0 = l0;
-		aParameter->rho0 = StringUtil::toDouble(input->getValue("Rho0"));
-        aParameter->vtkFilePath              = TOSTRING(PATH_NUMERICAL_TESTS) + input->getValue("FolderForVTKFileWriting");
-		aParameter->dataToCalcTests = StringUtil::toStringVector(input->getValue("DataToCalcTests_TGV_Uz"));
-		parameter.push_back(aParameter);
-	}
-	return parameter;
+    std::vector<int> basisTimeStepLength = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_TGV_Uz"));
+    std::vector<double> amplitude        = StringUtil::toDoubleVector(input->getValue("Amplitude_TGV_Uz"));
+    std::vector<double> uz               = StringUtil::toDoubleVector(input->getValue("uz_TGV_Uz"));
+    int l0                               = StringUtil::toInt(input->getValue("l0_TGV_Uz"));
+    basicSimParameter->l0                = l0;
+
+    std::vector<std::shared_ptr<TaylorGreenVortexUzParameterStruct>> parameter;
+    for (int i = 0; i < uz.size(); i++) {
+        std::shared_ptr<TaylorGreenVortexUzParameterStruct> aParameter =
+            std::shared_ptr<TaylorGreenVortexUzParameterStruct>(new TaylorGreenVortexUzParameterStruct);
+        aParameter->basicSimulationParameter = basicSimParameter;
+        aParameter->uz                       = uz.at(i);
+        aParameter->amplitude                = amplitude.at(i);
+        aParameter->basicTimeStepLength      = basisTimeStepLength.at(i);
+        aParameter->l0                       = l0;
+        aParameter->rho0                     = StringUtil::toDouble(input->getValue("Rho0"));
+        aParameter->vtkFilePath              = pathNumericalTests + input->getValue("FolderForVTKFileWriting");
+        aParameter->dataToCalcTests          = StringUtil::toStringVector(input->getValue("DataToCalcTests_TGV_Uz"));
+        parameter.push_back(aParameter);
+    }
+    return parameter;
 }
-std::vector<std::shared_ptr<ShearWaveParameterStruct> > ConfigFileReader::makeShearWaveParameter(std::shared_ptr<input::Input> input, std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter)
+std::vector<std::shared_ptr<ShearWaveParameterStruct>>
+ConfigFileReader::makeShearWaveParameter(std::shared_ptr<input::Input> input,
+                                         std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter)
 {
-	std::vector<int> basisTimeStepLength = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_SW"));
-	std::vector<double> uz = StringUtil::toDoubleVector(input->getValue("v0_SW"));
-	std::vector<double> ux = StringUtil::toDoubleVector(input->getValue("u0_SW"));
-	int l0 = StringUtil::toInt(input->getValue("l0_SW"));
-	basicSimParameter->l0 = l0;
-
-	std::vector<std::shared_ptr<ShearWaveParameterStruct> > parameter;
-	for (int i = 0; i < uz.size(); i++) {
-		std::shared_ptr<ShearWaveParameterStruct> aParameter = std::shared_ptr<ShearWaveParameterStruct>(new ShearWaveParameterStruct);
-		aParameter->basicSimulationParameter = basicSimParameter;
-		aParameter->uz = uz.at(i);
-		aParameter->ux = ux.at(i);
-		aParameter->basicTimeStepLength = basisTimeStepLength.at(i);
-		aParameter->l0 = l0;
-		aParameter->rho0 = StringUtil::toDouble(input->getValue("Rho0"));
-        aParameter->vtkFilePath     = TOSTRING(PATH_NUMERICAL_TESTS) + input->getValue("FolderForVTKFileWriting");
-		aParameter->dataToCalcTests = StringUtil::toStringVector(input->getValue("DataToCalcTests_SW"));
-		parameter.push_back(aParameter);
-	}
-	return parameter;
+    std::vector<int> basisTimeStepLength = StringUtil::toIntVector(input->getValue("BasisTimeStepLength_SW"));
+    std::vector<double> uz               = StringUtil::toDoubleVector(input->getValue("v0_SW"));
+    std::vector<double> ux               = StringUtil::toDoubleVector(input->getValue("u0_SW"));
+    int l0                               = StringUtil::toInt(input->getValue("l0_SW"));
+    basicSimParameter->l0                = l0;
+
+    std::vector<std::shared_ptr<ShearWaveParameterStruct>> parameter;
+    for (int i = 0; i < uz.size(); i++) {
+        std::shared_ptr<ShearWaveParameterStruct> aParameter =
+            std::shared_ptr<ShearWaveParameterStruct>(new ShearWaveParameterStruct);
+        aParameter->basicSimulationParameter = basicSimParameter;
+        aParameter->uz                       = uz.at(i);
+        aParameter->ux                       = ux.at(i);
+        aParameter->basicTimeStepLength      = basisTimeStepLength.at(i);
+        aParameter->l0                       = l0;
+        aParameter->rho0                     = StringUtil::toDouble(input->getValue("Rho0"));
+        aParameter->vtkFilePath              = pathNumericalTests + input->getValue("FolderForVTKFileWriting");
+        aParameter->dataToCalcTests          = StringUtil::toStringVector(input->getValue("DataToCalcTests_SW"));
+        parameter.push_back(aParameter);
+    }
+    return parameter;
 }
 
 std::shared_ptr<NyTestParameterStruct> ConfigFileReader::makeNyTestParameter(std::shared_ptr<input::Input> input)
 {
-	std::shared_ptr<BasicTestParameterStruct> basicTestParameter = std::shared_ptr<BasicTestParameterStruct>(new BasicTestParameterStruct);
-	basicTestParameter->runTest = StringUtil::toBool(input->getValue("NyTest"));
-	basicTestParameter->ySliceForCalculation = StringUtil::toInt(input->getValue("ySliceForCalculation"));
-
-	std::shared_ptr<NyTestParameterStruct> testParameter = std::shared_ptr<NyTestParameterStruct>(new NyTestParameterStruct);
-	testParameter->basicTestParameter = basicTestParameter;
-	testParameter->endTimeStepCalculation = StringUtil::toInt(input->getValue("EndTimeStepCalculation_Ny"));
-	testParameter->minOrderOfAccuracy = StringUtil::toDouble(input->getValue("MinOrderOfAccuracy_Ny"));
-	testParameter->startTimeStepCalculation = StringUtil::toInt(input->getValue("StartTimeStepCalculation_Ny"));
-
-	return testParameter;
+    std::shared_ptr<BasicTestParameterStruct> basicTestParameter =
+        std::shared_ptr<BasicTestParameterStruct>(new BasicTestParameterStruct);
+    basicTestParameter->runTest              = StringUtil::toBool(input->getValue("NyTest"));
+    basicTestParameter->ySliceForCalculation = StringUtil::toInt(input->getValue("ySliceForCalculation"));
+
+    std::shared_ptr<NyTestParameterStruct> testParameter =
+        std::shared_ptr<NyTestParameterStruct>(new NyTestParameterStruct);
+    testParameter->basicTestParameter       = basicTestParameter;
+    testParameter->endTimeStepCalculation   = StringUtil::toInt(input->getValue("EndTimeStepCalculation_Ny"));
+    testParameter->minOrderOfAccuracy       = StringUtil::toDouble(input->getValue("MinOrderOfAccuracy_Ny"));
+    testParameter->startTimeStepCalculation = StringUtil::toInt(input->getValue("StartTimeStepCalculation_Ny"));
+
+    return testParameter;
 }
 
 std::shared_ptr<PhiTestParameterStruct> ConfigFileReader::makePhiTestParameter(std::shared_ptr<input::Input> input)
 {
-	std::shared_ptr<BasicTestParameterStruct> basicTestParameter = std::shared_ptr<BasicTestParameterStruct>(new BasicTestParameterStruct);
-	basicTestParameter->runTest = StringUtil::toBool(input->getValue("PhiTest"));
-	basicTestParameter->ySliceForCalculation = StringUtil::toInt(input->getValue("ySliceForCalculation"));
-
-	std::shared_ptr<PhiTestParameterStruct> testParameter = std::shared_ptr<PhiTestParameterStruct>(new PhiTestParameterStruct);
-	testParameter->basicTestParameter = basicTestParameter;
-	testParameter->endTimeStepCalculation = StringUtil::toInt(input->getValue("EndTimeStepCalculation_Phi"));
-	testParameter->minOrderOfAccuracy = StringUtil::toDouble(input->getValue("MinOrderOfAccuracy_Phi"));
-	testParameter->startTimeStepCalculation = StringUtil::toInt(input->getValue("StartTimeStepCalculation_Phi"));
-
-	return testParameter;
+    std::shared_ptr<BasicTestParameterStruct> basicTestParameter =
+        std::shared_ptr<BasicTestParameterStruct>(new BasicTestParameterStruct);
+    basicTestParameter->runTest              = StringUtil::toBool(input->getValue("PhiTest"));
+    basicTestParameter->ySliceForCalculation = StringUtil::toInt(input->getValue("ySliceForCalculation"));
+
+    std::shared_ptr<PhiTestParameterStruct> testParameter =
+        std::shared_ptr<PhiTestParameterStruct>(new PhiTestParameterStruct);
+    testParameter->basicTestParameter       = basicTestParameter;
+    testParameter->endTimeStepCalculation   = StringUtil::toInt(input->getValue("EndTimeStepCalculation_Phi"));
+    testParameter->minOrderOfAccuracy       = StringUtil::toDouble(input->getValue("MinOrderOfAccuracy_Phi"));
+    testParameter->startTimeStepCalculation = StringUtil::toInt(input->getValue("StartTimeStepCalculation_Phi"));
+
+    return testParameter;
 }
 
-std::shared_ptr<L2NormTestParameterStruct> ConfigFileReader::makeL2NormTestParameter(std::shared_ptr<input::Input> input)
+std::shared_ptr<L2NormTestParameterStruct>
+ConfigFileReader::makeL2NormTestParameter(std::shared_ptr<input::Input> input)
 {
-	std::shared_ptr<BasicTestParameterStruct> basicTestParameter = std::shared_ptr<BasicTestParameterStruct>(new BasicTestParameterStruct);
-	basicTestParameter->runTest = StringUtil::toBool(input->getValue("L2NormTest"));
-	basicTestParameter->ySliceForCalculation = StringUtil::toInt(input->getValue("ySliceForCalculation"));
-
-	std::shared_ptr<L2NormTestParameterStruct> testParameter = std::shared_ptr<L2NormTestParameterStruct>(new L2NormTestParameterStruct);
-	testParameter->basicTestParameter = basicTestParameter;
-	testParameter->basicTimeStep = StringUtil::toInt(input->getValue("BasicTimeStep_L2"));
-	testParameter->divergentTimeStep = StringUtil::toInt(input->getValue("DivergentTimeStep_L2"));
-	testParameter->normalizeData = StringUtil::toStringVector(input->getValue("NormalizeData_L2Norm"));
-	testParameter->maxDiff = StringUtil::toDoubleVector(input->getValue("MaxL2NormDiff"));
-
-	return testParameter;
+    std::shared_ptr<BasicTestParameterStruct> basicTestParameter =
+        std::shared_ptr<BasicTestParameterStruct>(new BasicTestParameterStruct);
+    basicTestParameter->runTest              = StringUtil::toBool(input->getValue("L2NormTest"));
+    basicTestParameter->ySliceForCalculation = StringUtil::toInt(input->getValue("ySliceForCalculation"));
+
+    std::shared_ptr<L2NormTestParameterStruct> testParameter =
+        std::shared_ptr<L2NormTestParameterStruct>(new L2NormTestParameterStruct);
+    testParameter->basicTestParameter = basicTestParameter;
+    testParameter->basicTimeStep      = StringUtil::toInt(input->getValue("BasicTimeStep_L2"));
+    testParameter->divergentTimeStep  = StringUtil::toInt(input->getValue("DivergentTimeStep_L2"));
+    testParameter->normalizeData      = StringUtil::toStringVector(input->getValue("NormalizeData_L2Norm"));
+    testParameter->maxDiff            = StringUtil::toDoubleVector(input->getValue("MaxL2NormDiff"));
+
+    return testParameter;
 }
 
-std::shared_ptr<L2NormTestBetweenKernelsParameterStruct> ConfigFileReader::makeL2NormTestBetweenKernelsParameter(std::shared_ptr<input::Input> input)
+std::shared_ptr<L2NormTestBetweenKernelsParameterStruct>
+ConfigFileReader::makeL2NormTestBetweenKernelsParameter(std::shared_ptr<input::Input> input)
 {
-	std::shared_ptr<BasicTestParameterStruct> basicTestParameter = std::shared_ptr<BasicTestParameterStruct>(new BasicTestParameterStruct);
-	basicTestParameter->runTest = StringUtil::toBool(input->getValue("L2NormBetweenKernelsTest"));
-	basicTestParameter->ySliceForCalculation = StringUtil::toInt(input->getValue("ySliceForCalculation"));
-
-	std::shared_ptr<L2NormTestBetweenKernelsParameterStruct> testParameter = std::shared_ptr<L2NormTestBetweenKernelsParameterStruct>(new L2NormTestBetweenKernelsParameterStruct);
-	testParameter->basicTestParameter = basicTestParameter;
-	testParameter->basicKernel = myKernelMapper->getEnum(input->getValue("BasicKernel_L2NormBetweenKernels"));
-	testParameter->kernelsToTest = readKernelList(input);
-	testParameter->timeSteps = StringUtil::toIntVector(input->getValue("Timesteps_L2NormBetweenKernels"));
-	testParameter->normalizeData = StringUtil::toStringVector(input->getValue("NormalizeData_L2Norm"));
-
-	bool correct = false;
-	for (int i = 0; i < testParameter->normalizeData.size(); i++)
-		if (testParameter->normalizeData.at(i) == "Amplitude" || testParameter->normalizeData.at(i) == "BasicData")
-			correct = true;
-	
-
-	if (!correct) {
-		std::cout << "invalid input in ConfigFile." << std::endl << "possible data for NormalizeWith Parameter in L2-Norm Test Between Kernels Parameter:" << std::endl << "Amplitude, BasicData" << std::endl << std::endl;
-		exit(1);
-	}
-
-	return testParameter;
+    std::shared_ptr<BasicTestParameterStruct> basicTestParameter =
+        std::shared_ptr<BasicTestParameterStruct>(new BasicTestParameterStruct);
+    basicTestParameter->runTest              = StringUtil::toBool(input->getValue("L2NormBetweenKernelsTest"));
+    basicTestParameter->ySliceForCalculation = StringUtil::toInt(input->getValue("ySliceForCalculation"));
+
+    std::shared_ptr<L2NormTestBetweenKernelsParameterStruct> testParameter =
+        std::shared_ptr<L2NormTestBetweenKernelsParameterStruct>(new L2NormTestBetweenKernelsParameterStruct);
+    testParameter->basicTestParameter = basicTestParameter;
+    testParameter->basicKernel        = myKernelMapper->getEnum(input->getValue("BasicKernel_L2NormBetweenKernels"));
+    testParameter->kernelsToTest      = readKernelList(input);
+    testParameter->timeSteps          = StringUtil::toIntVector(input->getValue("Timesteps_L2NormBetweenKernels"));
+    testParameter->normalizeData      = StringUtil::toStringVector(input->getValue("NormalizeData_L2Norm"));
+
+    bool correct = false;
+    for (int i = 0; i < testParameter->normalizeData.size(); i++)
+        if (testParameter->normalizeData.at(i) == "Amplitude" || testParameter->normalizeData.at(i) == "BasicData")
+            correct = true;
+
+    if (!correct) {
+        std::cout << "invalid input in ConfigFile." << std::endl
+                  << "possible data for NormalizeWith Parameter in L2-Norm Test Between Kernels Parameter:" << std::endl
+                  << "Amplitude, BasicData" << std::endl
+                  << std::endl;
+        exit(1);
+    }
+
+    return testParameter;
 }
 
-std::vector<std::shared_ptr<GridInformationStruct> > ConfigFileReader::makeGridInformation(std::shared_ptr<input::Input> input, std::string simName)
+std::vector<std::shared_ptr<GridInformationStruct>>
+ConfigFileReader::makeGridInformation(std::shared_ptr<input::Input> input, std::string simName)
 {
-	int number = 32;
-	std::vector<std::string> valueNames;
-	std::vector<std::string> gridPaths;
-	for (int i = 1; i <= 5; i++) {
-		std::string aValueName = simName;
-		aValueName += std::to_string(number);
-		valueNames.push_back(aValueName);
-		std::string aGridpath = "GridPath";
-		aGridpath += std::to_string(number);
-		gridPaths.push_back(aGridpath);
-		number *= 2;
-	}
-	
-	std::vector<double> lx;
-	std::vector<double> lz;
-	std::vector<std::string> gridPath;
-
-	double nextNumber = 32.0;
-
-	for (int i = 0; i < valueNames.size(); i++) {
-		if (StringUtil::toBool(input->getValue(valueNames.at(i)))) {
-			lx.push_back(nextNumber);
-			lz.push_back(nextNumber * 3.0 / 2.0);
-            gridPath.push_back(TOSTRING(PATH_NUMERICAL_TESTS) + input->getValue(gridPaths.at(i)));
-			nextNumber *= 2;
-		}
-	}
-
-	std::vector<std::shared_ptr<GridInformationStruct> > gridInformation;
-	for (int i = 0; i < lx.size(); i++) {
-		std::shared_ptr<GridInformationStruct> aGridInformation = std::shared_ptr<GridInformationStruct> (new GridInformationStruct);
-		aGridInformation->numberOfGridLevels = StringUtil::toInt(input->getValue("NumberOfGridLevels"));
-		aGridInformation->maxLevel = aGridInformation->numberOfGridLevels - 1;
-		aGridInformation->gridPath = gridPath.at(i);
-		aGridInformation->lx = lx.at(i);
-		aGridInformation->lz = lz.at(i);
-		gridInformation.push_back(aGridInformation);
-	}
-	return gridInformation;
+    int number = 32;
+    std::vector<std::string> valueNames;
+    std::vector<std::string> gridPaths;
+    for (int i = 1; i <= 5; i++) {
+        std::string aValueName = simName;
+        aValueName += std::to_string(number);
+        valueNames.push_back(aValueName);
+        std::string aGridpath = "GridPath";
+        aGridpath += std::to_string(number);
+        gridPaths.push_back(aGridpath);
+        number *= 2;
+    }
+
+    std::vector<double> lx;
+    std::vector<double> lz;
+    std::vector<std::string> gridPath;
+
+    double nextNumber = 32.0;
+
+    for (int i = 0; i < valueNames.size(); i++) {
+        if (StringUtil::toBool(input->getValue(valueNames.at(i)))) {
+            lx.push_back(nextNumber);
+            lz.push_back(nextNumber * 3.0 / 2.0);
+            gridPath.push_back(pathNumericalTests + input->getValue(gridPaths.at(i)));
+            nextNumber *= 2;
+        }
+    }
+
+    std::vector<std::shared_ptr<GridInformationStruct>> gridInformation;
+    for (int i = 0; i < lx.size(); i++) {
+        std::shared_ptr<GridInformationStruct> aGridInformation =
+            std::shared_ptr<GridInformationStruct>(new GridInformationStruct);
+        aGridInformation->numberOfGridLevels = StringUtil::toInt(input->getValue("NumberOfGridLevels"));
+        aGridInformation->maxLevel           = aGridInformation->numberOfGridLevels - 1;
+        aGridInformation->gridPath           = gridPath.at(i);
+        aGridInformation->lx                 = lx.at(i);
+        aGridInformation->lz                 = lz.at(i);
+        gridInformation.push_back(aGridInformation);
+    }
+    return gridInformation;
 }
 
-std::shared_ptr<VectorWriterInformationStruct> ConfigFileReader::makeVectorWriterInformationStruct(std::shared_ptr<input::Input> input)
+std::shared_ptr<VectorWriterInformationStruct>
+ConfigFileReader::makeVectorWriterInformationStruct(std::shared_ptr<input::Input> input)
 {
-	std::shared_ptr<VectorWriterInformationStruct> vectorWriter = std::shared_ptr<VectorWriterInformationStruct>(new VectorWriterInformationStruct);
-	vectorWriter->startTimeVectorWriter = calcStartStepForToVectorWriter(input);
-	vectorWriter->startTimeVTKDataWriter = StringUtil::toInt(input->getValue("StartStepFileWriter"));
-	vectorWriter->writeVTKFiles = StringUtil::toBool(input->getValue("WriteVTKFiles"));
+    std::shared_ptr<VectorWriterInformationStruct> vectorWriter =
+        std::shared_ptr<VectorWriterInformationStruct>(new VectorWriterInformationStruct);
+    vectorWriter->startTimeVectorWriter  = calcStartStepForToVectorWriter(input);
+    vectorWriter->startTimeVTKDataWriter = StringUtil::toInt(input->getValue("StartStepFileWriter"));
+    vectorWriter->writeVTKFiles          = StringUtil::toBool(input->getValue("WriteVTKFiles"));
 
-	return vectorWriter;
+    return vectorWriter;
 }
 
 std::shared_ptr<LogFileParameterStruct> ConfigFileReader::makeLogFilePara(std::shared_ptr<input::Input> input)
 {
-	std::shared_ptr<LogFileParameterStruct> logFilePara = std::shared_ptr<LogFileParameterStruct>(new LogFileParameterStruct);
-	logFilePara->devices = StringUtil::toIntVector(input->getValue("Devices"));
-	logFilePara->numberOfTimeSteps = StringUtil::toInt(input->getValue("NumberOfTimeSteps"));
-	logFilePara->writeAnalyticalToVTK = StringUtil::toBool(input->getValue("WriteAnalyResultsToVTK"));
+    std::shared_ptr<LogFileParameterStruct> logFilePara =
+        std::shared_ptr<LogFileParameterStruct>(new LogFileParameterStruct);
+    logFilePara->devices              = StringUtil::toIntVector(input->getValue("Devices"));
+    logFilePara->numberOfTimeSteps    = StringUtil::toInt(input->getValue("NumberOfTimeSteps"));
+    logFilePara->writeAnalyticalToVTK = StringUtil::toBool(input->getValue("WriteAnalyResultsToVTK"));
 
-	return logFilePara;
+    return logFilePara;
 }
 
 std::vector<KernelType> ConfigFileReader::readKernelList(std::shared_ptr<input::Input> input)
 {
-	if (StringUtil::toBool(input->getValue("L2NormBetweenKernelsTest"))) {
-		std::vector<std::string> kernelList = StringUtil::toStringVector(input->getValue("KernelsToTest"));
-		std::string beginnKernel = input->getValue("BasicKernel_L2NormBetweenKernels");
-		bool basicKernelInKernelList = false;
-		for (int i = 0; i < kernelList.size(); i++) {
-			if (kernelList.at(i) == beginnKernel)
-				basicKernelInKernelList = true;
-		}
-		if (!basicKernelInKernelList)
-			kernelList.push_back(beginnKernel);
-
-		std::vector<std::string> kernelNames = kernelList;
-
-		while (kernelNames.at(0) != beginnKernel) {
-			kernelNames.push_back(kernelNames.at(0));
-			std::vector<std::string>::iterator it = kernelNames.begin();
-			kernelNames.erase(it);
-		}
-		std::vector<KernelType> kernels;
-		for (int i = 0; i < kernelNames.size(); i++)
-			kernels.push_back(myKernelMapper->getEnum(kernelNames.at(i)));
-		return kernels;
-	}else {
-		std::vector<std::string> kernelList = StringUtil::toStringVector(input->getValue("KernelsToTest"));
-		std::vector<KernelType> kernels;
-		for (int i = 0; i < kernelList.size(); i++)
-			kernels.push_back(myKernelMapper->getEnum(kernelList.at(i)));
-
-		return kernels;
-	}	
+    if (StringUtil::toBool(input->getValue("L2NormBetweenKernelsTest"))) {
+        std::vector<std::string> kernelList = StringUtil::toStringVector(input->getValue("KernelsToTest"));
+        std::string beginnKernel            = input->getValue("BasicKernel_L2NormBetweenKernels");
+        bool basicKernelInKernelList        = false;
+        for (int i = 0; i < kernelList.size(); i++) {
+            if (kernelList.at(i) == beginnKernel)
+                basicKernelInKernelList = true;
+        }
+        if (!basicKernelInKernelList)
+            kernelList.push_back(beginnKernel);
+
+        std::vector<std::string> kernelNames = kernelList;
+
+        while (kernelNames.at(0) != beginnKernel) {
+            kernelNames.push_back(kernelNames.at(0));
+            std::vector<std::string>::iterator it = kernelNames.begin();
+            kernelNames.erase(it);
+        }
+        std::vector<KernelType> kernels;
+        for (int i = 0; i < kernelNames.size(); i++)
+            kernels.push_back(myKernelMapper->getEnum(kernelNames.at(i)));
+        return kernels;
+    } else {
+        std::vector<std::string> kernelList = StringUtil::toStringVector(input->getValue("KernelsToTest"));
+        std::vector<KernelType> kernels;
+        for (int i = 0; i < kernelList.size(); i++)
+            kernels.push_back(myKernelMapper->getEnum(kernelList.at(i)));
+
+        return kernels;
+    }
 }
 
 unsigned int ConfigFileReader::calcStartStepForToVectorWriter(std::shared_ptr<input::Input> input)
 {
-	std::vector<unsigned int> startStepsTests;
-	startStepsTests.push_back(StringUtil::toInt(input->getValue("BasicTimeStep_L2")));
-	startStepsTests.push_back(StringUtil::toInt(input->getValue("StartTimeStepCalculation_Ny")));
-	startStepsTests.push_back(StringUtil::toInt(input->getValue("StartTimeStepCalculation_Phi")));
-	std::sort(startStepsTests.begin(), startStepsTests.end());
+    std::vector<unsigned int> startStepsTests;
+    startStepsTests.push_back(StringUtil::toInt(input->getValue("BasicTimeStep_L2")));
+    startStepsTests.push_back(StringUtil::toInt(input->getValue("StartTimeStepCalculation_Ny")));
+    startStepsTests.push_back(StringUtil::toInt(input->getValue("StartTimeStepCalculation_Phi")));
+    std::sort(startStepsTests.begin(), startStepsTests.end());
 
-	return startStepsTests.at(0);
+    return startStepsTests.at(0);
 }
 
 int ConfigFileReader::calcNumberOfSimulations(std::shared_ptr<input::Input> input)
 {
-	int counter = 0;
+    int counter = 0;
 
-	int tgvCounterU0 = calcNumberOfSimulationGroup(input, "TaylorGreenVortexUx");
-	tgvCounterU0 *= StringUtil::toDoubleVector(input->getValue("ux_TGV_Ux")).size();
-	counter += tgvCounterU0;
+    int tgvCounterU0 = calcNumberOfSimulationGroup(input, "TaylorGreenVortexUx");
+    tgvCounterU0 *= StringUtil::toDoubleVector(input->getValue("ux_TGV_Ux")).size();
+    counter += tgvCounterU0;
 
-	int tgvCounterV0 = calcNumberOfSimulationGroup(input, "TaylorGreenVortexUz");;
-	tgvCounterV0 *= StringUtil::toDoubleVector(input->getValue("uz_TGV_Uz")).size();
-	counter += tgvCounterV0;
+    int tgvCounterV0 = calcNumberOfSimulationGroup(input, "TaylorGreenVortexUz");
+    ;
+    tgvCounterV0 *= StringUtil::toDoubleVector(input->getValue("uz_TGV_Uz")).size();
+    counter += tgvCounterV0;
 
-	int swCounter = calcNumberOfSimulationGroup(input, "ShearWave");;
-	swCounter *= StringUtil::toDoubleVector(input->getValue("u0_SW")).size();
-	counter += swCounter;
+    int swCounter = calcNumberOfSimulationGroup(input, "ShearWave");
+    ;
+    swCounter *= StringUtil::toDoubleVector(input->getValue("u0_SW")).size();
+    counter += swCounter;
 
-	counter *= StringUtil::toDoubleVector(input->getValue("Viscosity")).size();
-	counter *= configData->kernelsToTest.size();
+    counter *= StringUtil::toDoubleVector(input->getValue("Viscosity")).size();
+    counter *= configData->kernelsToTest.size();
 
-	return counter;
+    return counter;
 }
 
 int ConfigFileReader::calcNumberOfSimulationGroup(std::shared_ptr<input::Input> input, std::string simName)
 {
-	int counter = 0;
-	int number = 32;
-	std::vector<std::string> valueNames;
-	for (int i = 1; i <= 5; i++) {
-		std::string aValueName = simName;
-		aValueName += std::to_string(number);
-		valueNames.push_back(aValueName);
-		number *= 2;
-	}
-	for (int i = 0; i < valueNames.size(); i++) {
-		if (StringUtil::toBool(input->getValue(valueNames.at(i))))
-			counter++;
-	}
-	return counter;
+    int counter = 0;
+    int number  = 32;
+    std::vector<std::string> valueNames;
+    for (int i = 1; i <= 5; i++) {
+        std::string aValueName = simName;
+        aValueName += std::to_string(number);
+        valueNames.push_back(aValueName);
+        number *= 2;
+    }
+    for (int i = 0; i < valueNames.size(); i++) {
+        if (StringUtil::toBool(input->getValue(valueNames.at(i))))
+            counter++;
+    }
+    return counter;
 }
\ No newline at end of file
diff --git a/apps/gpu/tests/NumericalTests/Utilities/ConfigFileReaderNT/ConfigFileReaderNT.h b/apps/gpu/tests/NumericalTests/Utilities/ConfigFileReaderNT/ConfigFileReaderNT.h
index 50794d4ad..64ae87ca0 100644
--- a/apps/gpu/tests/NumericalTests/Utilities/ConfigFileReaderNT/ConfigFileReaderNT.h
+++ b/apps/gpu/tests/NumericalTests/Utilities/ConfigFileReaderNT/ConfigFileReaderNT.h
@@ -15,40 +15,50 @@ class KernelMapper;
 class ConfigFileReader
 {
 public:
-	static std::shared_ptr<ConfigFileReader> getNewInstance(const std::string aFilePath);
-	std::shared_ptr<ConfigDataStruct> getConfigData();
-	void readConfigFile();
-	
+    static std::shared_ptr<ConfigFileReader> getNewInstance(const std::string aFilePath);
+    std::shared_ptr<ConfigDataStruct> getConfigData();
+    void readConfigFile();
+
 private:
-	ConfigFileReader() {};
-	ConfigFileReader(const std::string aFilePath);
-	
-	std::ifstream openConfigFile(const std::string aFilePath);
-	bool checkConfigFile(std::shared_ptr<input::Input> input);
-	std::vector<KernelType> readKernelList(std::shared_ptr<input::Input> input);
-
-	int calcNumberOfSimulations(std::shared_ptr<input::Input> input);
-	int calcNumberOfSimulationGroup(std::shared_ptr<input::Input> input, std::string simName);
-	unsigned int calcStartStepForToVectorWriter(std::shared_ptr<input::Input> input);
-
-	std::vector<std::shared_ptr<TaylorGreenVortexUxParameterStruct> > makeTaylorGreenVortexUxParameter(std::shared_ptr<input::Input> input, std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter);
-	std::vector<std::shared_ptr<TaylorGreenVortexUzParameterStruct> > makeTaylorGreenVortexUzParameter(std::shared_ptr<input::Input> input, std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter);
-	std::vector<std::shared_ptr<ShearWaveParameterStruct> > makeShearWaveParameter(std::shared_ptr<input::Input> input, std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter);
-
-	std::shared_ptr<NyTestParameterStruct> makeNyTestParameter(std::shared_ptr<input::Input> input);
-	std::shared_ptr<PhiTestParameterStruct> makePhiTestParameter(std::shared_ptr<input::Input> input);
-	std::shared_ptr<L2NormTestParameterStruct> makeL2NormTestParameter(std::shared_ptr<input::Input> input);
-	std::shared_ptr<L2NormTestBetweenKernelsParameterStruct> makeL2NormTestBetweenKernelsParameter(std::shared_ptr<input::Input> input);
-
-	std::shared_ptr<BasicSimulationParameterStruct> makeBasicSimulationParameter(std::shared_ptr<input::Input> input);
-	std::vector<std::shared_ptr<GridInformationStruct> > makeGridInformation(std::shared_ptr<input::Input> input, std::string simName);
-
-	std::shared_ptr<VectorWriterInformationStruct> makeVectorWriterInformationStruct(std::shared_ptr<input::Input> input);
-	std::shared_ptr<LogFileParameterStruct> makeLogFilePara(std::shared_ptr<input::Input> input);
-	
-
-	const std::string myFilePath;
-	std::shared_ptr<ConfigDataStruct> configData;
-	std::shared_ptr<KernelMapper> myKernelMapper;
+    ConfigFileReader(){};
+    ConfigFileReader(const std::string aFilePath);
+
+    std::ifstream openConfigFile(const std::string aFilePath);
+    bool checkConfigFile(std::shared_ptr<input::Input> input);
+    std::vector<KernelType> readKernelList(std::shared_ptr<input::Input> input);
+
+    int calcNumberOfSimulations(std::shared_ptr<input::Input> input);
+    int calcNumberOfSimulationGroup(std::shared_ptr<input::Input> input, std::string simName);
+    unsigned int calcStartStepForToVectorWriter(std::shared_ptr<input::Input> input);
+
+    std::vector<std::shared_ptr<TaylorGreenVortexUxParameterStruct>>
+    makeTaylorGreenVortexUxParameter(std::shared_ptr<input::Input> input,
+                                     std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter);
+    std::vector<std::shared_ptr<TaylorGreenVortexUzParameterStruct>>
+    makeTaylorGreenVortexUzParameter(std::shared_ptr<input::Input> input,
+                                     std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter);
+    std::vector<std::shared_ptr<ShearWaveParameterStruct>>
+    makeShearWaveParameter(std::shared_ptr<input::Input> input,
+                           std::shared_ptr<BasicSimulationParameterStruct> basicSimParameter);
+
+    std::shared_ptr<NyTestParameterStruct> makeNyTestParameter(std::shared_ptr<input::Input> input);
+    std::shared_ptr<PhiTestParameterStruct> makePhiTestParameter(std::shared_ptr<input::Input> input);
+    std::shared_ptr<L2NormTestParameterStruct> makeL2NormTestParameter(std::shared_ptr<input::Input> input);
+    std::shared_ptr<L2NormTestBetweenKernelsParameterStruct>
+    makeL2NormTestBetweenKernelsParameter(std::shared_ptr<input::Input> input);
+
+    std::shared_ptr<BasicSimulationParameterStruct> makeBasicSimulationParameter(std::shared_ptr<input::Input> input);
+    std::vector<std::shared_ptr<GridInformationStruct>> makeGridInformation(std::shared_ptr<input::Input> input,
+                                                                            std::string simName);
+
+    std::shared_ptr<VectorWriterInformationStruct>
+    makeVectorWriterInformationStruct(std::shared_ptr<input::Input> input);
+    std::shared_ptr<LogFileParameterStruct> makeLogFilePara(std::shared_ptr<input::Input> input);
+
+    std::string pathNumericalTests;
+
+    const std::string myFilePath;
+    std::shared_ptr<ConfigDataStruct> configData;
+    std::shared_ptr<KernelMapper> myKernelMapper;
 };
 #endif
\ No newline at end of file
-- 
GitLab