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
15 static Splitter* Factory(const SplitterSettings& splitterSettings);
16
22 virtual bool IsOk() = 0;
23
29 virtual void SetParameters(const SplitterSettings& splitterSettings) = 0;
30
31 float* GetParameterValuePointer(const SplitterSettings& splitterSettings, const string& name);
32
33 virtual void AttachForcing(Forcing*) {
34 throw ShouldNotHappen();
35 }
36
42 void AttachFluxIn(Flux* flux) {
43 wxASSERT(flux);
44 m_inputs.push_back(flux);
45 }
46
52 void AttachFluxOut(Flux* flux) {
53 wxASSERT(flux);
54 m_outputs.push_back(flux);
55 }
56
57 virtual double* GetValuePointer(const string& name) = 0;
58
59 virtual void Compute() = 0;
60
61 string GetName() {
62 return m_name;
63 }
64
65 void SetName(const string& name) {
66 m_name = name;
67 }
68
69 protected:
70 string m_name;
71 vector<Flux*> m_inputs;
72 vector<Flux*> m_outputs;
73
74 private:
75};
76
77#endif // HYDROBRICKS_SPLITTER_H
Definition Flux.h:8
Definition Forcing.h:7
Definition HydroUnit.h:13
Definition Includes.h:115
Definition Splitter.h:11
void AttachFluxOut(Flux *flux)
Definition Splitter.h:52
virtual void SetParameters(const SplitterSettings &splitterSettings)=0
void AttachFluxIn(Flux *flux)
Definition Splitter.h:42
virtual bool IsOk()=0
Definition SettingsModel.h:36