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