-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSolutionProcedure.cpp
65 lines (52 loc) · 2.4 KB
/
SolutionProcedure.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//
// Created by Malachi Phillips on 9/30/16.
//
#include "SolutionProcedure.h"
#include <fstream>
#include <sstream>
#include <iostream>
#include <cmath>
#include <iostream>
#include <iomanip>
//============================================================================================================
/*
* Solution Procedure - shared by all other equations
*/
//============================================================================================================
//============================================================================================================
void SolutionProcedure::start_procedure(std::string& runtime_params, std::string& template_file_name, std::string& whichPDE ){
// Universal parser
RuntimeParser* runtime = new RuntimeParser;
runtime->read_parameters_from_file(runtime_params);
std::vector<double> myArgs;
myArgs = runtime->return_args();
std::string condition;
condition = runtime->return_cond();
solutionInitialCondition_ = solutionInitialCondition_->make_initial_condition(condition, myArgs);
solutionInitialCondition_->fluidEquation_ =
solutionInitialCondition_->fluidEquation_->make_fluid_equation(whichPDE, myArgs);
solutionInitialCondition_->apply_initial_cond();
solutionInitialCondition_->enforce_boundary();
// execute procedure
procedure(template_file_name);
// end procedure
end_procedure();
}
//============================================================================================================
void SolutionProcedure::procedure(std::string& template_file_name){
// Write out initial step
solutionInitialCondition_->fluidEquation_->write_to_file(template_file_name,0);
// Apply step at every time step
for(unsigned int t = 1; t < solutionInitialCondition_->fluidEquation_->get_nt(); ++t){
// Enforce boundary prior to step, this *shouldn't* be needed, but just in case
solutionInitialCondition_->enforce_boundary();
solutionInitialCondition_->fluidEquation_->apply_step();
// Write out solutions
solutionInitialCondition_->fluidEquation_->write_to_file(template_file_name,t);
}
}
//============================================================================================================
void SolutionProcedure::end_procedure(){
// something important to finish writing the output file
std::cout << "Done." << std::endl;
}