hydrobricks
Loading...
Searching...
No Matches
Solver.h
1#ifndef HYDROBRICKS_SOLVER_H
2#define HYDROBRICKS_SOLVER_H
3
4#include "Includes.h"
5#include "SettingsModel.h"
6
7class Processor;
8
9class Solver : public wxObject {
10 public:
11 explicit Solver();
12
13 ~Solver() override = default;
14
21 virtual bool Solve(double timeStepInDays) = 0;
22
29 static Solver* Factory(const SolverSettings& solverSettings);
30
36 void Connect(Processor* processor) {
37 wxASSERT(processor);
38 _processor = processor;
39 }
40
45
46 protected:
47 Processor* _processor;
48 axxd _stateVariableChanges;
49 axxd _changeRates;
50 int _nIterations;
51 double _timeStepInDays;
52
58 void SaveStateVariables(int col);
59
66 void ComputeChangeRates(int col, bool applyConstraints = true);
67
73 void ApplyConstraintsFor(int col);
74
79
84 void SetStateVariablesToIteration(int col);
85
91 void SetStateVariablesToAvgOf(int col1, int col2);
92
98 void ApplyProcesses(int col) const;
99
105 void ApplyProcesses(const axd& changeRates) const;
106
110 void Finalize() const;
111
112 private:
113};
114
115#endif // HYDROBRICKS_SOLVER_H
Definition Processor.h:12
Definition Solver.h:9
void SaveStateVariables(int col)
Definition Solver.cpp:55
void ComputeChangeRates(int col, bool applyConstraints=true)
Definition Solver.cpp:64
void Connect(Processor *processor)
Definition Solver.h:36
void ApplyConstraintsFor(int col)
Definition Solver.cpp:95
void SetStateVariablesToAvgOf(int col1, int col2)
Definition Solver.cpp:129
virtual bool Solve(double timeStepInDays)=0
void Finalize() const
Definition Solver.cpp:174
void InitializeContainers()
Definition Solver.cpp:48
void ApplyProcesses(int col) const
Definition Solver.cpp:138
static Solver * Factory(const SolverSettings &solverSettings)
Definition Solver.cpp:30
void ResetStateVariableChanges()
Definition Solver.cpp:113
void SetStateVariablesToIteration(int col)
Definition Solver.cpp:120
Definition SettingsModel.h:11