hydrobricks
Loading...
Searching...
No Matches
Splitter.h
1#ifndef HYDROBRICKS_SPLITTER_H
2#define HYDROBRICKS_SPLITTER_H
3
4#include "Flux.h"
5#include "Forcing.h"
6#include "Includes.h"
7#include "SettingsModel.h"
8
9class HydroUnit;
10
11class Splitter : public wxObject {
12 public:
13 explicit Splitter();
14
21 static Splitter* Factory(const SplitterSettings& splitterSettings);
22
28 virtual bool IsOk() = 0;
29
35 virtual void SetParameters(const SplitterSettings& splitterSettings) = 0;
36
44 float* GetParameterValuePointer(const SplitterSettings& splitterSettings, const string& name);
45
51 virtual void AttachForcing(Forcing*) {
52 throw ShouldNotHappen();
53 }
54
60 void AttachFluxIn(Flux* flux) {
61 wxASSERT(flux);
62 _inputs.push_back(flux);
63 }
64
70 void AttachFluxOut(Flux* flux) {
71 wxASSERT(flux);
72 _outputs.push_back(flux);
73 }
74
80 virtual double* GetValuePointer(const string& name) = 0;
81
85 virtual void Compute() = 0;
86
92 string GetName() {
93 return _name;
94 }
95
101 void SetName(const string& name) {
102 _name = name;
103 }
104
105 protected:
106 string _name;
107 vector<Flux*> _inputs;
108 vector<Flux*> _outputs;
109};
110
111#endif // HYDROBRICKS_SPLITTER_H
Definition Flux.h:8
Definition Forcing.h:7
Definition HydroUnit.h:14
Definition Includes.h:115
Definition Splitter.h:11
virtual void AttachForcing(Forcing *)
Definition Splitter.h:51
void AttachFluxOut(Flux *flux)
Definition Splitter.h:70
virtual double * GetValuePointer(const string &name)=0
string GetName()
Definition Splitter.h:92
virtual void Compute()=0
virtual void SetParameters(const SplitterSettings &splitterSettings)=0
void AttachFluxIn(Flux *flux)
Definition Splitter.h:60
void SetName(const string &name)
Definition Splitter.h:101
static Splitter * Factory(const SplitterSettings &splitterSettings)
Definition Splitter.cpp:10
float * GetParameterValuePointer(const SplitterSettings &splitterSettings, const string &name)
Definition Splitter.cpp:26
virtual bool IsOk()=0
Definition SettingsModel.h:36