int peano::applications::navierstokes::prototype1::runners::PrototypeRunnerForRegularGrid::runAsMaster(
		peano::applications::navierstokes::prototype1::repositories::PrototypeRepositoryForRegularGrid& repository,
		peano::geometry::Geometry& geometry,
		const peano::applications::navierstokes::prototype1::configurations::PrototypeConfigurationForRegularGrid& configuration) {
	UserInterface userInterface;
	userInterface.writeHeader();

	//fill up state
	repository.getState().setLGSMaxIterations(
			configuration.getMaximumLGSIterations());
	repository.getState().setPlotterPlotDebugInfo(true);
	repository.getState().setScenarioRe(1.0);
	repository.getState().setScenarioEta(1.0);
	repository.getState().setScenarioRho(1.0);
	repository.getState().setScenarioCharacteristicLength(1.0);
	repository.getState().setOdeTimestepnumber(0);
	//  repository.getState().setElementType(DivergenceFree);
	repository.getState().setElementType(Dlinear);
	//Instanz. FluidSimulation
	const bool useDivergenceCorrection = false;
	const double rTol = 1e-7;
	FluidSimulation fluidSim(useDivergenceCorrection, rTol, configuration.plotVTKFiles(), repository);

	//Zeitschleife (spaeter: ode instanz)
	int numberOfTimeSteps = configuration.getNumberOfTimesteps();
	double tau = 0.00001;
	double time = 0.0;
	const bool hasVariableTimeStepSize = false; //in state???
	const double elapsedCPUTimePerStep = tarch::la::PI;
	const bool shallOutputBePlotted = true; //in state???
	//  const std::string outputPath = "./"; // geht nicht in state wegen string nicht in dastgen!
	const double dummyValue = -1.0;

	fluidSim.implementSetInitialValue(hasVariableTimeStepSize, time,
			dummyValue, dummyValue);
	for (int i = 1; i <= numberOfTimeSteps; i++) {
		repository.getState().setOdeTimestepnumber(i);
		repository.getState().setOdeTime(time);
		repository.getState().setOdeTau(tau);
		fluidSim.implementBeginTimeStep();
		fluidSim.implementDerivativeAndUpdate();
		time += tau;

		std::ostringstream msg;
		msg << "./testVtk." << i << ".vtk";
		std::string timeStepNumberWithLeadingZeros = msg.str();

		fluidSim.implementEndTimeStep(hasVariableTimeStepSize,
				elapsedCPUTimePerStep, shallOutputBePlotted,
				timeStepNumberWithLeadingZeros);
	}

	userInterface.writeDatatypeStatistics<
			RegularGridFluidVertexEnhancedDivFreeEulerExplicit,
			RegularGridFluidCellEnhancedDivFreeEulerExplicit,
			RegularGridFluidStateEnhancedDivFreeEulerExplicit> ();
	repository.logIterationStatistics();
	repository.terminate();
	return 0;
}
Example #2
0
int main(int argc, char **argv){
	testCGStress(16);

	SDL sdl(SDL_INIT_EVERYTHING);
	Window win("Fluid!", 640, 480);
	//16 is the dimensions of the textures we're loading
	SimpleFluid fluidSim(16, win);
	fluidSim.initSim();
	fluidSim.runSim();

    return 0;
}