hydrobricks
Loading...
Searching...
No Matches
Processor.h
1#ifndef HYDROBRICKS_PROCESSOR_H
2#define HYDROBRICKS_PROCESSOR_H
3
4#include <memory>
5
6#include "Brick.h"
7#include "Includes.h"
8#include "Solver.h"
9
10class ModelHydro;
11
12class Processor : public wxObject {
13 public:
14 explicit Processor();
15
16 ~Processor() override;
17
23 void Initialize(const SolverSettings& solverSettings);
24
30 void SetModel(ModelHydro* model);
31
36
42 int GetStateVariableCount() const;
43
50 bool ProcessTimeStep(double timeStepInDays);
51
58 return &_stateVariableChanges;
59 }
60
66 vector<Brick*>* GetIterableBricksVectorPt() {
67 return &_iterableBricks;
68 }
69
76 return _solvableConnectionCount;
77 }
78
85 return _directConnectionCount;
86 }
87
88 protected:
89 std::unique_ptr<Solver> _solver; // owning
90 ModelHydro* _model; // non-owning reference
91 int _solvableConnectionCount;
92 int _directConnectionCount;
93 vecDoublePt _stateVariableChanges;
94 vector<Brick*> _iterableBricks; // non-owning views into HydroUnits/SubBasin
95 axd _changeRatesNoSolver;
96
97 private:
103 void StoreStateVariableChanges(vecDoublePt& values);
104
112 void ApplyDirectChanges(Brick* brick, int& ptIndex, double timeStepInDays);
113};
114
115#endif // HYDROBRICKS_PROCESSOR_H
Definition Brick.h:24
Definition ModelHydro.h:14
Definition Processor.h:12
void ConnectToElementsToSolve()
Definition Processor.cpp:31
int GetDirectConnectionCount() const
Definition Processor.h:84
int GetSolvableConnectionCount() const
Definition Processor.h:75
vector< Brick * > * GetIterableBricksVectorPt()
Definition Processor.h:66
void SetModel(ModelHydro *model)
Definition Processor.cpp:27
int GetStateVariableCount() const
Definition Processor.cpp:92
vecDoublePt * GetStateVariablesVectorPt()
Definition Processor.h:57
void Initialize(const SolverSettings &solverSettings)
Definition Processor.cpp:14
bool ProcessTimeStep(double timeStepInDays)
Definition Processor.cpp:96
Definition SettingsModel.h:11