Skip to content
Snippets Groups Projects
Commit 010fcff7 authored by Timon Habenicht's avatar Timon Habenicht
Browse files

adds TestResults and FFTCalculator to TestingHULC

parent e7edb065
No related branches found
No related tags found
No related merge requests found
Showing
with 166 additions and 55 deletions
......@@ -9,7 +9,8 @@
class Parameter;
class GridProvider;
class DataWriter;
class Results;
class Calculator;
class TestResults;
class TestCondition
{
......@@ -17,7 +18,8 @@ public:
virtual std::shared_ptr<Parameter> getParameter() = 0;
virtual std::shared_ptr<GridProvider> getGrid() = 0;
virtual std::shared_ptr<DataWriter> getDataWriter() = 0;
virtual std::shared_ptr<Results> getSimulationResults() = 0;
virtual std::shared_ptr<TestResults> getTestResults() = 0;
virtual std::shared_ptr<Calculator> getCalculator() = 0;
private:
};
......
......@@ -7,6 +7,7 @@
#include "Utilities\Results\Results.h"
#include "Utilities\DataWriter\Y2dSliceToResults\Y2dSliceToResults.h"
#include "Utilities\InitialCondition\InitialCondition.h"
#include "Utilities\Calculator\Calculator.h"
#include <sstream>
......@@ -25,9 +26,14 @@ std::shared_ptr<DataWriter> TestConditionImp::getDataWriter()
return writeToVector;
}
std::shared_ptr<Results> TestConditionImp::getSimulationResults()
std::shared_ptr<TestResults> TestConditionImp::getTestResults()
{
return simResults;
return testResults;
}
std::shared_ptr<Calculator> TestConditionImp::getCalculator()
{
return calculator;
}
......@@ -132,14 +138,26 @@ void TestConditionImp::initGridProvider()
grid = std::shared_ptr<GridProvider>(new GridReaderforTesting(para, initialCondition));
}
void TestConditionImp::initResults(unsigned int lx, unsigned int lz, unsigned int timeStepLength)
void TestConditionImp::initCalculator(std::shared_ptr<Calculator> calc)
{
this->calculator = calc;
}
void TestConditionImp::setTestResults(std::shared_ptr<TestResults> testResults)
{
simResults = std::shared_ptr<Results>(new Results(lx,lz,timeStepLength));
this->testResults = testResults;
}
void TestConditionImp::initDataWriter(unsigned int ySliceForCalculation, unsigned int startTimeCalculation, unsigned int endTime, unsigned int timeStepLength, bool writeFiles, unsigned int startTimeDataWriter)
{
fileWriter = std::shared_ptr<FileWriter>(new FileWriter());
writeToVector = std::shared_ptr<ToVectorWriter>(new Y2dSliceToResults(simResults, ySliceForCalculation, startTimeCalculation, endTime, timeStepLength, writeFiles, fileWriter, startTimeDataWriter));
}
void TestConditionImp::initSimulationResults(unsigned int lx, unsigned int lz, unsigned int timeStepLength)
{
simResults = Results::getNewInstance(lx, lz, timeStepLength);
calculator->setSimulationResults(simResults);
}
......@@ -10,6 +10,9 @@ class InitialCondition;
class FileWriter;
class ToVectorWriter;
class TestParameter;
class Calculator;
class TestResults;
class Results;
class TestConditionImp: public TestCondition
{
......@@ -18,13 +21,17 @@ public:
void initParameter(real viscosity, std::string gridPath, std::string filePath, int numberOfGridLevels, unsigned int endTime, unsigned int timeStepLength);
void initInitialConditions(std::shared_ptr<InitialCondition> initialCondition);
void initGridProvider();
void initResults(unsigned int lx, unsigned int lz, unsigned int timeStepLength);
void initCalculator(std::shared_ptr<Calculator> calc);
void initDataWriter(unsigned int ySliceForCalculation, unsigned int startTimeCalculation, unsigned int endTime, unsigned int timeStepLength, bool writeFiles, unsigned int startTimeDataWriter);
void initSimulationResults(unsigned int lx, unsigned int lz, unsigned int timeStepLength);
void setTestResults(std::shared_ptr<TestResults> testResults);
std::shared_ptr<Parameter> getParameter();
std::shared_ptr<GridProvider> getGrid();
std::shared_ptr<DataWriter> getDataWriter();
std::shared_ptr<Results> getSimulationResults();
std::shared_ptr<TestResults> getTestResults();
std::shared_ptr<Calculator> getCalculator();
protected:
TestConditionImp() {};
......@@ -37,6 +44,8 @@ private:
std::shared_ptr<Results> simResults;
std::shared_ptr<ToVectorWriter> writeToVector;
std::shared_ptr<FileWriter> fileWriter;
std::shared_ptr<Calculator> calculator;
std::shared_ptr<TestResults> testResults;
};
#endif
\ No newline at end of file
......@@ -21,7 +21,9 @@ std::vector<std::shared_ptr<TestCondition>> TestConditionFactoryImp::makeTestCon
testCondit->initParameter(testPara.at(i)->getViscosity(), testPara.at(i)->getGridPath(), testPara.at(i)->getFilePath(), testPara.at(i)->getNumberOfGridLevels(), testPara.at(i)->getEndTime(), testPara.at(i)->getTimeStepLength());
testCondit->initInitialConditions(testPara.at(i)->getInitialCondition());
testCondit->initGridProvider();
testCondit->initResults(testPara.at(i)->getLx(), testPara.at(i)->getLz(), testPara.at(i)->getTimeStepLength());
testCondit->initCalculator(testPara.at(i)->getCalculator());
testCondit->initSimulationResults(testPara.at(i)->getLx(), testPara.at(i)->getLz(), testPara.at(i)->getTimeStepLength());
testCondit->setTestResults(testPara.at(i)->getTestResults());
testCondit->initDataWriter(testPara.at(i)->getYSliceForCalculation(), testPara.at(i)->getStartTimeCalculation(), testPara.at(i)->getEndTime(), testPara.at(i)->getTimeStepLength(), testPara.at(i)->getWriteFiles(), testPara.at(i)->getStartTimeDataWriter());
testConditions.push_back(testCondit);
}
......
#include "ShearWaveTestParameter.h"
#include "Utilities\InitialCondition\ShearWave\InitialConditionShearWave.h"
#include "Utilities\Calculator\FFTCalculator\VzFFTCalculator\VzFFTCalculator.h"
#include "Utilities/TestResults/PhiAndNuTestResults.h"
#include "Utilities/Results/Results.h"
#include <sstream>
std::shared_ptr<TestParameter> ShearWaveTestParameter::getNewInstance(real u0, real v0, real viscosity, unsigned int lx, unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, unsigned int startStepCalculation, unsigned int ySliceForCalculation, std::string gridPath, bool writeFiles, unsigned int startStepFileWriter, std::string filePath)
std::shared_ptr<TestParameter> ShearWaveTestParameter::getNewInstance(
real u0, real v0,
real viscosity, unsigned int lx,
unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
unsigned int startStepCalculation, unsigned int ySliceForCalculation,
std::string gridPath,
bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
std::shared_ptr<PhiAndNuTestResults> testResults)
{
return std::shared_ptr<TestParameter>(new ShearWaveTestParameter(u0, v0,
viscosity, lx,
numberOfTimeSteps, basisTimeStepLength,
startStepCalculation, ySliceForCalculation,
gridPath,
writeFiles, startStepFileWriter, filePath));
writeFiles, startStepFileWriter, filePath,
testResults));
}
ShearWaveTestParameter::ShearWaveTestParameter(real u0, real v0, real viscosity, unsigned int lx, unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, unsigned int startStepCalculation, unsigned int ySliceForCalculation, std::string gridPath, bool writeFiles, unsigned int startStepFileWriter, std::string filePath)
:TestParameterImp(viscosity, lx, numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, gridPath, writeFiles, startStepFileWriter), u0(u0), v0(v0)
ShearWaveTestParameter::ShearWaveTestParameter(
real u0, real v0,
real viscosity, unsigned int lx,
unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
unsigned int startStepCalculation, unsigned int ySliceForCalculation,
std::string gridPath,
bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
std::shared_ptr<PhiAndNuTestResults> testResults)
:TestParameterImp(viscosity, lx,
numberOfTimeSteps, basisTimeStepLength,
startStepCalculation, ySliceForCalculation,
gridPath,
writeFiles, startStepFileWriter, testResults),
u0(u0), v0(v0)
{
std::ostringstream oss;
oss << filePath + "/ShearWave/grid" << lx;
this->filePath = oss.str();
initialCondition = std::shared_ptr<InitialConditionShearWave>(new InitialConditionShearWave((double)lx, (double)lz, (double)l0, u0, v0, rho0));
}
std::shared_ptr<InitialCondition> ShearWaveTestParameter::getInitialCondition()
{
return initialCondition;
calculator = VzFFTCalculator::getNewInstance(viscosity, testResults);
}
......@@ -3,6 +3,8 @@
#include "../TestParameterImp.h"
class PhiAndNuTestResults;
class ShearWaveTestParameter : public TestParameterImp
{
public:
......@@ -11,7 +13,8 @@ public:
unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
unsigned int startStepCalculation, unsigned int ySliceForCalculation,
std::string gridPath,
bool writeFiles, unsigned int startStepFileWriter, std::string filePath);
bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
std::shared_ptr<PhiAndNuTestResults> testResults);
protected:
ShearWaveTestParameter() {};
......@@ -20,13 +23,10 @@ protected:
unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
unsigned int startStepCalculation, unsigned int ySliceForCalculation,
std::string gridPath,
bool writeFiles, unsigned int startStepFileWriter, std::string filePath);
std::shared_ptr<InitialCondition> getInitialCondition();
bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
std::shared_ptr<PhiAndNuTestResults> testResults);
private:
std::shared_ptr<InitialCondition> initialCondition;
real u0, v0;
};
......
#include "TaylorGreenTestParameter.h"
#include "Utilities\InitialCondition\TaylorGreenVortex\InitialconditionTaylorGreenVortex.h"
#include "Utilities/InitialCondition\TaylorGreenVortex\InitialconditionTaylorGreenVortex.h"
#include "Utilities/Calculator\FFTCalculator\VxFFTCalculator\VxFFTCalculator.h"
#include "Utilities/TestResults/PhiAndNuTestResults.h"
#include "Utilities/Results/Results.h"
#include <sstream>
std::shared_ptr<TestParameter> TaylorGreenTestParameter::getNewInstance(real u0, real amplitude, real viscosity, unsigned int lx, unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, unsigned int startStepCalculation, unsigned int ySliceForCalculation, std::string gridPath, bool writeFiles, unsigned int startStepFileWriter, std::string filePath)
std::shared_ptr<TestParameter> TaylorGreenTestParameter::getNewInstance(
real u0, real amplitude,
real viscosity, unsigned int lx,
unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
unsigned int startStepCalculation, unsigned int ySliceForCalculation,
std::string gridPath,
bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
std::shared_ptr<PhiAndNuTestResults> testResults)
{
return std::shared_ptr<TestParameter>(new TaylorGreenTestParameter(u0, amplitude,
viscosity, lx,
numberOfTimeSteps, basisTimeStepLength,
startStepCalculation, ySliceForCalculation,
gridPath,
writeFiles, startStepFileWriter, filePath));
return std::shared_ptr<TestParameter>(
new TaylorGreenTestParameter(
u0, amplitude,
viscosity, lx,
numberOfTimeSteps, basisTimeStepLength,
startStepCalculation, ySliceForCalculation,
gridPath,
writeFiles, startStepFileWriter, filePath, testResults));
}
TaylorGreenTestParameter::TaylorGreenTestParameter(real u0, real amplitude, real viscosity, unsigned int lx, unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, unsigned int startStepCalculation, unsigned int ySliceForCalculation, std::string gridPath, bool writeFiles, unsigned int startStepFileWriter, std::string filePath)
:TestParameterImp(viscosity, lx, numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, gridPath, writeFiles, startStepFileWriter), u0(u0), amplitude(amplitude)
TaylorGreenTestParameter::TaylorGreenTestParameter(
real u0, real amplitude,
real viscosity, unsigned int lx,
unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
unsigned int startStepCalculation, unsigned int ySliceForCalculation,
std::string gridPath,
bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
std::shared_ptr<PhiAndNuTestResults> testResults)
:TestParameterImp(viscosity, lx,
numberOfTimeSteps, basisTimeStepLength,
startStepCalculation, ySliceForCalculation,
gridPath,
writeFiles, startStepFileWriter, testResults),
u0(u0), amplitude(amplitude)
{
std::ostringstream oss;
oss << filePath + "/TaylorGreenVortex/grid" << lx;
this->filePath = oss.str();
initialCondition = std::shared_ptr<InitialConditionTaylorGreen>(new InitialConditionTaylorGreen((double)lx, (double)lz, (double)l0, u0, amplitude, rho0));
}
std::shared_ptr<InitialCondition> TaylorGreenTestParameter::getInitialCondition()
{
return initialCondition;
simResults = Results::getNewInstance(lx, lz, timeStepLength);
calculator = VxFFTCalculator::getNewInstance(viscosity, testResults);
}
......@@ -6,6 +6,8 @@
#include <string>
#include <memory>
class PhiAndNuTestResults;
class TaylorGreenTestParameter : public TestParameterImp
{
public:
......@@ -14,7 +16,8 @@ public:
unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
unsigned int startStepCalculation, unsigned int ySliceForCalculation,
std::string gridPath,
bool writeFiles, unsigned int startStepFileWriter, std::string filePath);
bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
std::shared_ptr<PhiAndNuTestResults> testResults);
protected:
TaylorGreenTestParameter(real u0, real amplitude,
......@@ -22,13 +25,10 @@ protected:
unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
unsigned int startStepCalculation, unsigned int ySliceForCalculation,
std::string gridPath,
bool writeFiles, unsigned int startStepFileWriter, std::string filePath);
std::shared_ptr<InitialCondition> getInitialCondition();
bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
std::shared_ptr<PhiAndNuTestResults> testResults);
private:
std::shared_ptr<InitialCondition> initialCondition;
real u0, amplitude;
};
......
......@@ -5,11 +5,13 @@
#include <string>
class InitialCondition;
class Calculator;
class TestResults;
class Results;
class TestParameter
{
public:
virtual std::shared_ptr<InitialCondition> getInitialCondition() = 0;
virtual double getViscosity() = 0;
virtual std::string getGridPath() = 0;
virtual std::string getFilePath() = 0;
......@@ -22,9 +24,12 @@ public:
virtual unsigned int getStartTimeCalculation() = 0;
virtual bool getWriteFiles() = 0;
virtual unsigned int getStartTimeDataWriter() = 0;
virtual std::shared_ptr<InitialCondition> getInitialCondition() = 0;
virtual std::shared_ptr<Calculator> getCalculator() = 0;
virtual std::shared_ptr<TestResults> getTestResults() = 0;
private:
};
#endif // !TESTPARAMETER_H
#endif
#include "TestParameterImp.h"
TestParameterImp::TestParameterImp(real viscosity, unsigned int lx, unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, unsigned int startStepCalculation, unsigned int ySliceForCalculation, std::string gridPath, bool writeFiles, unsigned int startStepFileWriter)
: viscosity(viscosity), lx(lx), numberOfTimeSteps(numberOfTimeSteps), basisTimeStepLength(basisTimeStepLength), startStepCalculation(startStepCalculation), ySliceForCalculation(ySliceForCalculation), gridPath(gridPath), writeFiles(writeFiles), startStepFileWriter(startStepFileWriter)
#include "Utilities/TestResults/TestResults.h"
TestParameterImp::TestParameterImp(
real viscosity, unsigned int lx,
unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
unsigned int startStepCalculation, unsigned int ySliceForCalculation,
std::string gridPath,
bool writeFiles, unsigned int startStepFileWriter,
std::shared_ptr<TestResults> testResults)
:viscosity(viscosity), lx(lx),
numberOfTimeSteps(numberOfTimeSteps), basisTimeStepLength(basisTimeStepLength),
startStepCalculation(startStepCalculation), ySliceForCalculation(ySliceForCalculation),
gridPath(gridPath),
writeFiles(writeFiles), startStepFileWriter(startStepFileWriter),
testResults(testResults)
{
maxLevel = 0;
numberOfGridLevels = 1;
......@@ -77,4 +89,17 @@ unsigned int TestParameterImp::getStartTimeDataWriter()
return startTimeDataWriter;
}
std::shared_ptr<InitialCondition> TestParameterImp::getInitialCondition()
{
return initialCondition;
}
std::shared_ptr<Calculator> TestParameterImp::getCalculator()
{
return calculator;
}
std::shared_ptr<TestResults> TestParameterImp::getTestResults()
{
return testResults;
}
......@@ -8,8 +8,6 @@
class TestParameterImp: public TestParameter
{
public:
virtual std::shared_ptr<InitialCondition> getInitialCondition() = 0;
double getViscosity();
std::string getGridPath();
std::string getFilePath();
......@@ -22,6 +20,9 @@ public:
unsigned int getStartTimeCalculation();
bool getWriteFiles();
unsigned int getStartTimeDataWriter();
std::shared_ptr<InitialCondition> getInitialCondition();
std::shared_ptr<Calculator> getCalculator();
std::shared_ptr<TestResults> getTestResults();
protected:
TestParameterImp() {};
......@@ -29,7 +30,8 @@ protected:
unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
unsigned int startStepCalculation, unsigned int ySliceForCalculation,
std::string gridPath,
bool writeFiles, unsigned int startStepFileWriter);
bool writeFiles, unsigned int startStepFileWriter,
std::shared_ptr<TestResults> testResults);
std::string filePath;
real viscosity;
......@@ -46,6 +48,10 @@ protected:
unsigned int startTimeCalculation, startTimeDataWriter;
unsigned int endTime;
std::shared_ptr<InitialCondition> initialCondition;
std::shared_ptr<Calculator> calculator;
std::shared_ptr<Results> simResults;
std::shared_ptr<TestResults> testResults;
};
#endif // !TESTPARAMETERIMP_H
......@@ -10,6 +10,7 @@
#include "Utilities\TestInformation\TestInformationImp.h"
#include "Utilities\TestParameter\TaylorGreenTestParameter\TaylorGreenTestParameter.h"
#include "Utilities\TestParameter\ShearWaveTestParameter\ShearWaveTestParameter.h"
#include "Utilities\TestResults\PhiAndNuTestResults.h"
void Reader::calcNumberOfEqualTests()
{
......@@ -124,15 +125,17 @@ std::shared_ptr<TestInformation> Reader::makeTestInformation()
std::vector<std::shared_ptr<TestParameter>> Reader::makeTestParameter()
{
std::vector<std::shared_ptr<TestParameter>> testParameter;
std::shared_ptr<PhiAndNuTestResults> tgvTestResults = PhiAndNuTestResults::getNewInstance("TaylorGreenVortex");
std::shared_ptr<PhiAndNuTestResults> swTestResults = PhiAndNuTestResults::getNewInstance("ShearWave");
for (int i = 0; i < tgv.size(); i++) {
if (tgv.at(i)) {
testParameter.push_back(TaylorGreenTestParameter::getNewInstance(u0TGV, amplitudeTGV, viscosity, l.at(i), numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, grids.at(i), writeFiles, startStepFileWriter, filePath));
testParameter.push_back(TaylorGreenTestParameter::getNewInstance(u0TGV, amplitudeTGV, viscosity, l.at(i), numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, grids.at(i), writeFiles, startStepFileWriter, filePath, tgvTestResults));
}
}
for (int i = 0; i < sw.size(); i++) {
if (sw.at(i)) {
testParameter.push_back(ShearWaveTestParameter::getNewInstance(u0SW, v0SW, viscosity, l.at(i), numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, grids.at(i), writeFiles, startStepFileWriter, filePath));
testParameter.push_back(ShearWaveTestParameter::getNewInstance(u0SW, v0SW, viscosity, l.at(i), numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, grids.at(i), writeFiles, startStepFileWriter, filePath, swTestResults));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment