mirror of
https://git.gfz-potsdam.de/naaice/tug.git
synced 2025-12-13 09:28:23 +01:00
implemeted simulation.cpp with run()
This commit is contained in:
parent
da65be3cca
commit
b93dc46aed
@ -1,8 +1,8 @@
|
||||
#include "Boundary.hpp"
|
||||
|
||||
enum APPROACH {
|
||||
FTCS,
|
||||
BTCS
|
||||
FTCS_APPROACH,
|
||||
BTCS_APPROACH
|
||||
};
|
||||
|
||||
enum CSV_OUTPUT {
|
||||
@ -21,14 +21,14 @@ class Simulation {
|
||||
* @param bc
|
||||
* @param aproach
|
||||
*/
|
||||
Simulation(Grid grid, Boundary bc, APPROACH aproach);
|
||||
Simulation(Grid &grid, Boundary &bc, APPROACH approach);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param csv_output
|
||||
*/
|
||||
void outputCSV(CSV_OUTPUT csv_output);
|
||||
void setOutputCSV(CSV_OUTPUT csv_output);
|
||||
|
||||
/**
|
||||
* @brief Set the Timestep object
|
||||
@ -41,7 +41,7 @@ class Simulation {
|
||||
* @brief Get the Timestep object
|
||||
*
|
||||
*/
|
||||
void getTimestep();
|
||||
auto getTimestep();
|
||||
|
||||
/**
|
||||
* @brief Set the Iterations object
|
||||
@ -70,6 +70,7 @@ class Simulation {
|
||||
int iterations;
|
||||
CSV_OUTPUT csv_output;
|
||||
|
||||
Grid grid;
|
||||
Boundary bc;
|
||||
APPROACH approach;
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
using namespace std;
|
||||
|
||||
Boundary::Boundary(Grid &grid, BC_TYPE type) : grid(grid) {
|
||||
//probably to DEBUG assignment grid
|
||||
this->type = type;
|
||||
|
||||
if (type == BC_TYPE_CONSTANT) {
|
||||
|
||||
@ -0,0 +1,5 @@
|
||||
#include <tug/Boundary.hpp>
|
||||
|
||||
auto FTCS(Grid &grid, Boundary &bc, double timestep) {
|
||||
|
||||
}
|
||||
@ -0,0 +1,55 @@
|
||||
#include <stdexcept>
|
||||
#include <tug/Simulation.hpp>
|
||||
|
||||
#include "FTCS.cpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
Simulation::Simulation(Grid &grid, Boundary &bc, APPROACH approach) : grid(grid), bc(bc) {
|
||||
//probably to DEBUG assignment of grid and bc
|
||||
this->grid = grid;
|
||||
this->approach = approach;
|
||||
|
||||
//TODO calculate max time step
|
||||
this->timestep = 0.01;
|
||||
this->iterations = 1000;
|
||||
this->csv_output = CSV_OUTPUT_OFF;
|
||||
}
|
||||
|
||||
void Simulation::setOutputCSV(CSV_OUTPUT csv_output) {
|
||||
if (csv_output < CSV_OUTPUT_OFF && csv_output > CSV_OUTPUT_VERBOSE) {
|
||||
throw invalid_argument("Invalid CSV output option given!");
|
||||
}
|
||||
|
||||
this->csv_output = csv_output;
|
||||
}
|
||||
|
||||
void Simulation::setTimestep(double timestep) {
|
||||
//TODO check timestep in FTCS for max value
|
||||
this->timestep = timestep;
|
||||
}
|
||||
|
||||
auto Simulation::getTimestep() {
|
||||
return this->timestep;
|
||||
}
|
||||
|
||||
void Simulation::setIterations(int iterations) {
|
||||
this->iterations = iterations;
|
||||
}
|
||||
|
||||
auto Simulation::getIterations() {
|
||||
return this->iterations;
|
||||
}
|
||||
|
||||
auto Simulation::run() {
|
||||
if (approach == FTCS_APPROACH) {
|
||||
for (int i = 0; i < iterations; i++) {
|
||||
FTCS(grid, bc, timestep);
|
||||
}
|
||||
} else if (approach == BTCS_APPROACH) {
|
||||
for (int i = 0; i < iterations; i++) {
|
||||
//TODO
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user