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