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

adds VirtualFluidSimulation

parent d2a78798
No related branches found
No related tags found
No related merge requests found
......@@ -3,22 +3,10 @@
#include "VirtualFluids_GPU/LBM/LB.h"
#include <string>
#include <memory>
class Parameter;
class GridProvider;
class DataWriter;
class Calculator;
class TestResults;
class VirtualFluidSimulation
{
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<Calculator> getCalculator() = 0;
virtual void run() = 0;
private:
};
......
#include "VirtualFluidSimulationImp.h"
#include "VirtualFluids_GPU/Parameter/Parameter.h"
#include "VirtualFluids_GPU\Output\FileWriter.h"
#include "VirtualFluids_GPU/LBM/Simulation.h"
#include "Utilities\GridReaderforTesting\GridReaderforTesting.h"
#include "Utilities/SimulationResults/SimulationResults.h"
#include "Utilities\DataWriter\Y2dSliceToResults\Y2dSliceToResults.h"
#include "Utilities\InitialCondition\InitialCondition.h"
#include "Utilities\Calculator\Calculator.h"
#include "Utilities\KernelConfiguration\KernelConfiguration.h"
#include "Utilities\TestSimulation\TestSimulation.h"
#include <sstream>
std::shared_ptr<Parameter> VirtualFluidSimulationImp::getParameter()
void VirtualFluidSimulationImp::run()
{
return para;
}
testSim->makeSimulationHeadOutput();
testSim->setStartTime();
std::shared_ptr<GridProvider> VirtualFluidSimulationImp::getGrid()
{
return grid;
}
Simulation sim;
sim.init(para, grid, dataWriter);
sim.run();
sim.free();
std::shared_ptr<DataWriter> VirtualFluidSimulationImp::getDataWriter()
{
return writeToVector;
}
std::shared_ptr<Calculator> VirtualFluidSimulationImp::getCalculator()
{
return calculator;
testSim->setEndTime();
}
std::shared_ptr<VirtualFluidSimulationImp> VirtualFluidSimulationImp::getNewInstance()
......@@ -36,7 +29,7 @@ std::shared_ptr<VirtualFluidSimulationImp> VirtualFluidSimulationImp::getNewInst
return std::shared_ptr<VirtualFluidSimulationImp>(new VirtualFluidSimulationImp());
}
void VirtualFluidSimulationImp::initParameter(real viscosity, std::string aGridPath, std::string filePath, int numberOfGridLevels, unsigned int endTime, unsigned int timeStepLength, std::vector<int> devices, real velocity)
void VirtualFluidSimulationImp::initParameter(std::shared_ptr< KernelConfiguration> kernelConfig, real viscosity, std::string aGridPath, std::string filePath, int numberOfGridLevels, unsigned int endTime, unsigned int timeStepLength, std::vector<int> devices, real velocity)
{
para = Parameter::make();
......@@ -116,6 +109,11 @@ void VirtualFluidSimulationImp::initParameter(real viscosity, std::string aGridP
para->setDistZ(dist);
para->setNeedInterface(std::vector<bool>{true, true, true, true, true, true});
para->setMainKernel(kernelConfig->getMainKernel());
para->setMultiKernelOn(kernelConfig->getMultiKernelOn());
para->setMultiKernelLevel(kernelConfig->getMultiKernelLevel());
para->setMultiKernelName(kernelConfig->getMultiKernelName());
}
void VirtualFluidSimulationImp::initInitialConditions(std::shared_ptr<InitialCondition> initialCondition)
......@@ -129,26 +127,12 @@ void VirtualFluidSimulationImp::initGridProvider()
grid = std::shared_ptr<GridProvider>(new GridReaderforTesting(para, initialCondition));
}
void VirtualFluidSimulationImp::initCalculator(std::shared_ptr<Calculator> calc)
{
this->calculator = calc;
}
void VirtualFluidSimulationImp::setTestResults(std::shared_ptr<TestResults> testResults)
{
this->testResults = testResults;
}
void VirtualFluidSimulationImp::initDataWriter(unsigned int ySliceForCalculation, unsigned int startTimeCalculation, unsigned int endTime, unsigned int timeStepLength, bool writeFiles, unsigned int startTimeDataWriter)
void VirtualFluidSimulationImp::setDataWriter(std::shared_ptr<DataWriter> dataWriter)
{
fileWriter = std::shared_ptr<FileWriter>(new FileWriter());
writeToVector = std::shared_ptr<ToVectorWriter>(new Y2dSliceToResults(simResults, ySliceForCalculation, startTimeCalculation, endTime, timeStepLength, writeFiles, fileWriter, startTimeDataWriter));
this->dataWriter = dataWriter;
}
void VirtualFluidSimulationImp::initSimulationResults(unsigned int lx, unsigned int lz, unsigned int timeStepLength)
void VirtualFluidSimulationImp::setTestSimulation(std::shared_ptr<TestSimulation> testSim)
{
simResults = SimulationResults::getNewInstance(lx, lz, timeStepLength);
calculator->setSimulationResults(simResults);
this->testSim = testSim;
}
......@@ -7,43 +7,33 @@
#include <memory>
class InitialCondition;
class FileWriter;
class ToVectorWriter;
class SimulationParameter;
class Calculator;
class TestResults;
class SimulationResults;
class DataWriter;
class Parameter;
class GridProvider;
class KernelConfiguration;
class TestSimulation;
class VirtualFluidSimulationImp : public VirtualFluidSimulation
{
public:
void run();
static std::shared_ptr< VirtualFluidSimulationImp> getNewInstance();
void initParameter(real viscosity, std::string gridPath, std::string filePath, int numberOfGridLevels, unsigned int endTime, unsigned int timeStepLength, std::vector<int> devices, real velocity);
void initParameter(std::shared_ptr< KernelConfiguration> kernelConfig, real viscosity, std::string gridPath, std::string filePath, int numberOfGridLevels, unsigned int endTime, unsigned int timeStepLength, std::vector<int> devices, real velocity);
void initInitialConditions(std::shared_ptr< InitialCondition> initialCondition);
void initGridProvider();
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< Calculator> getCalculator();
void setDataWriter(std::shared_ptr< DataWriter> dataWriter);
void setTestSimulation(std::shared_ptr< TestSimulation> testSim);
protected:
VirtualFluidSimulationImp() {};
private:
std::shared_ptr< SimulationParameter> simPara;
std::shared_ptr< Parameter> para;
std::shared_ptr< InitialCondition> initialCondition;
std::shared_ptr< GridProvider> grid;
std::shared_ptr< SimulationResults> simResults;
std::shared_ptr< ToVectorWriter> writeToVector;
std::shared_ptr< FileWriter> fileWriter;
std::shared_ptr< Calculator> calculator;
std::shared_ptr< TestResults> testResults;
std::shared_ptr<TestSimulation> testSim;
std::shared_ptr<DataWriter> dataWriter;
};
#endif
\ No newline at end of file
......@@ -5,11 +5,11 @@
#include <vector>
class VirtualFluidSimulation;
class SimulationParameter;
class TestSimulation;
class VirtualFluidSimulationFactory
{
public:
virtual std::vector< std::shared_ptr< VirtualFluidSimulation> > makeVirtualFluidSimulations(std::vector< std::shared_ptr< SimulationParameter> > simPara) = 0;
virtual std::vector< std::shared_ptr< VirtualFluidSimulation> > makeVirtualFluidSimulations(std::vector< std::shared_ptr< TestSimulation> > testSim) = 0;
};
#endif
#include "VirtualFluidSimulationFactoryImp.h"
#include "Utilities\TestSimulation\TestSimulation.h"
#include "Utilities\SimulationParameter\SimulationParameter.h"
#include "Utilities\VirtualFluidSimulation\VirtualFluidSimulationImp.h"
......@@ -13,21 +14,20 @@ VirtualFluidSimulationFactoryImp::VirtualFluidSimulationFactoryImp()
}
std::vector<std::shared_ptr<VirtualFluidSimulation>> VirtualFluidSimulationFactoryImp::makeVirtualFluidSimulations(std::vector< std::shared_ptr< SimulationParameter> > simPara)
std::vector<std::shared_ptr<VirtualFluidSimulation>> VirtualFluidSimulationFactoryImp::makeVirtualFluidSimulations(std::vector< std::shared_ptr< TestSimulation> > testSim)
{
std::vector< std::shared_ptr<VirtualFluidSimulation> > vfSimulations;
std::vector< std::shared_ptr< VirtualFluidSimulation>> vfSimulations;
for (int i = 0; i < simPara.size(); i++) {
for (int i = 0; i < testSim.size(); i++) {
std::shared_ptr< SimulationParameter> simPara = testSim.at(i)->getSimulationParameter();
std::shared_ptr< VirtualFluidSimulationImp> vfSim = VirtualFluidSimulationImp::getNewInstance();
vfSim->initParameter(simPara.at(i)->getViscosity(), simPara.at(i)->getGridPath(), simPara.at(i)->getFilePath(), simPara.at(i)->getNumberOfGridLevels(), simPara.at(i)->getEndTime(), simPara.at(i)->getTimeStepLength(), simPara.at(i)->getDevices(), simPara.at(i)->getMaxVelocity());
vfSim->initInitialConditions(simPara.at(i)->getInitialCondition());
vfSim->initParameter(simPara->getKernelConfiguration() ,simPara->getViscosity(), simPara->getGridPath(), simPara->getFilePath(), simPara->getNumberOfGridLevels(), simPara->getEndTime(), simPara->getTimeStepLength(), simPara->getDevices(), simPara->getMaxVelocity());
vfSim->initInitialConditions(simPara->getInitialCondition());
vfSim->initGridProvider();
vfSim->initCalculator(simPara.at(i)->getCalculator());
vfSim->initSimulationResults(simPara.at(i)->getLx(), simPara.at(i)->getLz(), simPara.at(i)->getTimeStepLength());
vfSim->setTestResults(simPara.at(i)->getTestResults());
vfSim->initDataWriter(simPara.at(i)->getYSliceForCalculation(), simPara.at(i)->getStartTimeCalculation(), simPara.at(i)->getEndTime(), simPara.at(i)->getTimeStepLength(), simPara.at(i)->getWriteFiles(), simPara.at(i)->getStartTimeDataWriter());
vfSimulations.push_back(vfSim);
vfSim->setDataWriter(testSim.at(i)->getDataWriter());
vfSim->setTestSimulation(testSim.at(i));
vfSimulations.push_back(vfSim);
}
return vfSimulations;
......
......@@ -3,17 +3,18 @@
#include "VirtualFluidSimulationFactory.h"
class SimulationParameter;
class VirtualFluidSimulationFactoryImp: public VirtualFluidSimulationFactory
{
public:
static std::shared_ptr< VirtualFluidSimulationFactory> getNewInstance();
std::vector< std::shared_ptr< VirtualFluidSimulation> > makeVirtualFluidSimulations(std::vector< std::shared_ptr< SimulationParameter> > simPara);
std::vector< std::shared_ptr< VirtualFluidSimulation> > makeVirtualFluidSimulations(std::vector< std::shared_ptr< TestSimulation> > testSim);
protected:
VirtualFluidSimulationFactoryImp();
private:
std::vector< std::shared_ptr< SimulationParameter> > simPara;
};
#endif
\ No newline at end of file
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