1#ifndef HYDROBRICKS_SETTINGS_MODEL_H
2#define HYDROBRICKS_SETTINGS_MODEL_H
4#include <yaml-cpp/yaml.h>
22 string fluxType =
"water";
23 bool isInstantaneous =
false;
24 bool isStatic =
false;
31 vector<Parameter*> parameters;
32 vector<VariableType> forcing;
33 vector<OutputSettings> outputs;
40 vector<Parameter*> parameters;
41 vector<VariableType> forcing;
42 vector<OutputSettings> outputs;
50 vector<Parameter*> parameters;
51 vector<VariableType> forcing;
52 vector<ProcessSettings> processes;
58 vector<BrickSettings> hydroUnitBricks;
59 vector<BrickSettings> subBasinBricks;
60 vecInt landCoverBricks;
61 vecInt surfaceComponentBricks;
62 vector<SplitterSettings> hydroUnitSplitters;
63 vector<SplitterSettings> subBasinSplitters;
87 void SetTimer(
const string& start,
const string& end,
int timeStep,
const string& timeStepUnit);
103 void AddSubBasinBrick(
const string& name,
const std::string& type =
"storage");
135 void AddBrickParameter(
const string& name,
float value,
const std::string& type =
"constant");
169 void AddBrickProcess(
const string& name,
const string& type,
const string& target =
"",
bool log =
false);
178 void AddProcessParameter(
const string& name,
float value,
const std::string& type =
"constant");
202 void AddProcessOutput(
const string& target,
const string& fluxType =
"water");
242 void AddSplitterParameter(
const string& name,
float value,
const std::string& type =
"constant");
323 void GenerateSnowpacks(
const string& snowMeltProcess,
bool snowIceTransformation =
false);
466 bool SetParameterValue(
const string& component,
const string& name,
float value);
474 return static_cast<int>(m_modelStructures.size());
483 wxASSERT(m_selectedStructure);
484 return static_cast<int>(m_selectedStructure->hydroUnitBricks.size());
493 wxASSERT(m_selectedStructure);
494 return static_cast<int>(m_selectedStructure->subBasinBricks.size());
503 wxASSERT(m_selectedStructure);
504 return static_cast<int>(m_selectedStructure->surfaceComponentBricks.size());
513 wxASSERT(m_selectedBrick);
514 return static_cast<int>(m_selectedBrick->processes.size());
523 wxASSERT(m_selectedStructure);
524 return static_cast<int>(m_selectedStructure->hydroUnitSplitters.size());
533 wxASSERT(m_selectedStructure);
534 return static_cast<int>(m_selectedStructure->subBasinSplitters.size());
562 wxASSERT(m_selectedStructure);
563 return m_selectedStructure->hydroUnitBricks[index];
573 wxASSERT(m_selectedStructure);
575 for (
auto& brick : m_selectedStructure->hydroUnitBricks) {
576 if (brick.name == name) {
581 throw std::runtime_error(
"Brick not found.");
591 wxASSERT(m_selectedStructure);
592 int brickIndex = m_selectedStructure->surfaceComponentBricks[index];
593 return m_selectedStructure->hydroUnitBricks[brickIndex];
602 wxASSERT(m_selectedStructure);
603 return m_selectedStructure->surfaceComponentBricks;
612 wxASSERT(m_selectedStructure);
613 return m_selectedStructure->landCoverBricks;
630 wxASSERT(m_selectedStructure);
631 return m_selectedStructure->subBasinBricks[index];
641 wxASSERT(m_selectedBrick);
642 return m_selectedBrick->processes[index];
652 wxASSERT(m_selectedStructure);
653 return m_selectedStructure->hydroUnitSplitters[index];
663 wxASSERT(m_selectedStructure);
664 return m_selectedStructure->subBasinSplitters[index];
695 wxLogVerbose(
"Logging all components.");
697 wxLogVerbose(
"Minimal logging.");
713 vector<ModelStructure> m_modelStructures;
721 bool LogAll(
const YAML::Node& settings);
Definition SettingsModel.h:66
void AddLoggingToItems(std::initializer_list< const string > items)
Definition SettingsModel.cpp:377
void AddHydroUnitBrick(const string &name, const std::string &type="storage")
Definition SettingsModel.cpp:54
vecInt GetLandCoverBricksIndices() const
Definition SettingsModel.h:611
void AddSplitterParameter(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:316
void AddSubBasinSplitter(const string &name, const string &type)
Definition SettingsModel.cpp:305
void AddSplitterForcing(const string &name)
Definition SettingsModel.cpp:345
bool SetParameterValue(const string &component, const string &name, float value)
Definition SettingsModel.cpp:730
void SetProcessOutputsAsStatic()
Definition SettingsModel.cpp:276
ProcessSettings GetProcessSettings(int index) const
Definition SettingsModel.h:640
void SetSplitterParameterValue(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:328
BrickSettings GetHydroUnitBrickSettings(const string &name) const
Definition SettingsModel.h:572
void AddBrickForcing(const string &name)
Definition SettingsModel.cpp:157
void AddHydroUnitSplitter(const string &name, const string &type)
Definition SettingsModel.cpp:294
void AddSplitterLogging(const string &itemName)
Definition SettingsModel.cpp:417
void AddProcessParameter(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:206
vecStr GetSubBasinGenericLogLabels()
Definition SettingsModel.cpp:717
void GenerateSnowpacksWithWaterRetention(const string &snowMeltProcess, const string &outflowProcess)
Definition SettingsModel.cpp:472
void SetLogAll(bool logAll=true)
Definition SettingsModel.h:693
bool BrickHasParameter(const string &name)
Definition SettingsModel.cpp:146
void SelectSubBasinSplitter(int index)
Definition SettingsModel.cpp:606
void SetTimer(const string &start, const string &end, int timeStep, const string &timeStepUnit)
Definition SettingsModel.cpp:47
int GetProcessesNb() const
Definition SettingsModel.h:512
vecStr GetSubBasinLogLabels()
Definition SettingsModel.cpp:686
void SelectProcess(int index)
Definition SettingsModel.cpp:566
void AddSplitterOutput(const string &target, const string &fluxType="water")
Definition SettingsModel.cpp:359
bool LogAll()
Definition SettingsModel.h:707
int GetHydroUnitSplittersNb() const
Definition SettingsModel.h:522
void SelectProcessWithParameter(const string &name)
Definition SettingsModel.cpp:585
void AddBrickParameter(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:117
SplitterSettings GetHydroUnitSplitterSettings(int index) const
Definition SettingsModel.h:651
bool SelectSubBasinBrickIfFound(const string &name)
Definition SettingsModel.cpp:535
bool SelectStructure(int id)
Definition SettingsModel.cpp:490
BrickSettings GetSurfaceComponentBrickSettings(int index) const
Definition SettingsModel.h:590
void SelectHydroUnitBrickByName(const string &name)
Definition SettingsModel.cpp:555
vecStr GetHydroUnitLogLabels()
Definition SettingsModel.cpp:649
SolverSettings GetSolverSettings() const
Definition SettingsModel.h:542
void AddProcessOutput(const string &target, const string &fluxType="water")
Definition SettingsModel.cpp:259
bool SelectHydroUnitSplitterIfFound(const string &name)
Definition SettingsModel.cpp:613
void AddLandCoverBrick(const string &name, const string &type)
Definition SettingsModel.cpp:94
void SetProcessOutputsAsInstantaneous()
Definition SettingsModel.cpp:268
void AddLoggingToItem(const string &itemName)
Definition SettingsModel.cpp:368
BrickSettings GetHydroUnitBrickSettings(int index) const
Definition SettingsModel.h:561
vecInt GetSurfaceComponentBricksIndices() const
Definition SettingsModel.h:601
int GetSubBasinSplittersNb() const
Definition SettingsModel.h:532
int GetSubBasinBricksNb() const
Definition SettingsModel.h:492
void AddBrickProcess(const string &name, const string &type, const string &target="", bool log=false)
Definition SettingsModel.cpp:171
void SetSolver(const string &solverName)
Definition SettingsModel.cpp:43
void SetBrickParameterValue(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:129
void GenerateSnowpacks(const string &snowMeltProcess, bool snowIceTransformation=false)
Definition SettingsModel.cpp:453
int GetHydroUnitBricksNb() const
Definition SettingsModel.h:482
BrickSettings GetSubBasinBrickSettings(int index) const
Definition SettingsModel.h:629
void AddBrickLogging(const string &itemName)
Definition SettingsModel.cpp:388
void SelectHydroUnitBrick(int index)
Definition SettingsModel.cpp:506
int GetStructuresNb() const
Definition SettingsModel.h:473
void SetProcessParameterValue(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:226
TimerSettings GetTimerSettings() const
Definition SettingsModel.h:551
bool SelectSubBasinSplitterIfFound(const string &name)
Definition SettingsModel.cpp:625
SplitterSettings GetSubBasinSplitterSettings(int index) const
Definition SettingsModel.h:662
void AddProcessLogging(const string &itemName)
Definition SettingsModel.cpp:408
void GeneratePrecipitationSplitters(bool withSnow)
Definition SettingsModel.cpp:426
void SelectSubBasinBrick(int index)
Definition SettingsModel.cpp:514
void AddSurfaceComponentBrick(const string &name, const string &type)
Definition SettingsModel.cpp:105
void AddSubBasinBrick(const string &name, const std::string &type="storage")
Definition SettingsModel.cpp:74
void SelectHydroUnitSplitter(int index)
Definition SettingsModel.cpp:599
void SetSurfaceComponentParent(const string &name)
Definition SettingsModel.cpp:112
vecStr GetLandCoverBricksNames() const
Definition SettingsModel.cpp:676
void AddProcessForcing(const string &name)
Definition SettingsModel.cpp:243
void OutputProcessToSameBrick()
Definition SettingsModel.cpp:284
int GetSurfaceComponentBricksNb() const
Definition SettingsModel.h:502
bool SelectHydroUnitBrickIfFound(const string &name)
Definition SettingsModel.cpp:522
Definition SettingsModel.h:45
Definition SettingsModel.h:55
Definition SettingsModel.h:20
Definition SettingsModel.h:27
Definition SettingsModel.h:9
Definition SettingsModel.h:36
Definition SettingsModel.h:13