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");
338 void AddSnowRedistribution(
const string& redistributionProcess =
"transport:snow_slide",
bool skipGlaciers =
false);
481 bool SetParameterValue(
const string& component,
const string& name,
float value);
489 return static_cast<int>(_modelStructures.size());
498 wxASSERT(_selectedStructure);
499 return static_cast<int>(_selectedStructure->hydroUnitBricks.size());
508 wxASSERT(_selectedStructure);
509 return static_cast<int>(_selectedStructure->subBasinBricks.size());
518 wxASSERT(_selectedStructure);
519 return static_cast<int>(_selectedStructure->surfaceComponentBricks.size());
528 wxASSERT(_selectedBrick);
529 return static_cast<int>(_selectedBrick->processes.size());
538 wxASSERT(_selectedStructure);
539 return static_cast<int>(_selectedStructure->hydroUnitSplitters.size());
548 wxASSERT(_selectedStructure);
549 return static_cast<int>(_selectedStructure->subBasinSplitters.size());
577 wxASSERT(_selectedStructure);
578 return _selectedStructure->hydroUnitBricks[index];
588 wxASSERT(_selectedStructure);
590 for (
auto& brick : _selectedStructure->hydroUnitBricks) {
591 if (brick.name == name) {
596 throw std::runtime_error(
"Brick not found.");
606 wxASSERT(_selectedStructure);
607 int brickIndex = _selectedStructure->surfaceComponentBricks[index];
608 return _selectedStructure->hydroUnitBricks[brickIndex];
617 wxASSERT(_selectedStructure);
618 return _selectedStructure->surfaceComponentBricks;
627 wxASSERT(_selectedStructure);
628 return _selectedStructure->landCoverBricks;
645 wxASSERT(_selectedStructure);
646 return _selectedStructure->subBasinBricks[index];
656 wxASSERT(_selectedBrick);
657 return _selectedBrick->processes[index];
667 wxASSERT(_selectedStructure);
668 return _selectedStructure->hydroUnitSplitters[index];
678 wxASSERT(_selectedStructure);
679 return _selectedStructure->subBasinSplitters[index];
710 wxLogVerbose(
"Logging all components.");
712 wxLogVerbose(
"Minimal logging.");
728 vector<ModelStructure> _modelStructures;
736 bool LogAll(
const YAML::Node& settings);
Definition SettingsModel.h:66
void AddLoggingToItems(std::initializer_list< const string > items)
Definition SettingsModel.cpp:380
void AddHydroUnitBrick(const string &name, const std::string &type="storage")
Definition SettingsModel.cpp:54
vecInt GetLandCoverBricksIndices() const
Definition SettingsModel.h:626
void AddSplitterParameter(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:319
void AddSubBasinSplitter(const string &name, const string &type)
Definition SettingsModel.cpp:308
void AddSplitterForcing(const string &name)
Definition SettingsModel.cpp:348
bool SetParameterValue(const string &component, const string &name, float value)
Definition SettingsModel.cpp:755
void SetProcessOutputsAsStatic()
Definition SettingsModel.cpp:279
ProcessSettings GetProcessSettings(int index) const
Definition SettingsModel.h:655
void SetSplitterParameterValue(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:331
BrickSettings GetHydroUnitBrickSettings(const string &name) const
Definition SettingsModel.h:587
void AddBrickForcing(const string &name)
Definition SettingsModel.cpp:157
void AddHydroUnitSplitter(const string &name, const string &type)
Definition SettingsModel.cpp:297
void AddSplitterLogging(const string &itemName)
Definition SettingsModel.cpp:420
void AddProcessParameter(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:209
vecStr GetSubBasinGenericLogLabels()
Definition SettingsModel.cpp:742
void GenerateSnowpacksWithWaterRetention(const string &snowMeltProcess, const string &outflowProcess)
Definition SettingsModel.cpp:497
void SetLogAll(bool logAll=true)
Definition SettingsModel.h:708
bool BrickHasParameter(const string &name)
Definition SettingsModel.cpp:146
void SelectSubBasinSplitter(int index)
Definition SettingsModel.cpp:631
void SetTimer(const string &start, const string &end, int timeStep, const string &timeStepUnit)
Definition SettingsModel.cpp:47
int GetProcessesNb() const
Definition SettingsModel.h:527
vecStr GetSubBasinLogLabels()
Definition SettingsModel.cpp:711
void SelectProcess(int index)
Definition SettingsModel.cpp:591
void AddSplitterOutput(const string &target, const string &fluxType="water")
Definition SettingsModel.cpp:362
bool LogAll()
Definition SettingsModel.h:722
int GetHydroUnitSplittersNb() const
Definition SettingsModel.h:537
void SelectProcessWithParameter(const string &name)
Definition SettingsModel.cpp:610
void AddBrickParameter(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:117
SplitterSettings GetHydroUnitSplitterSettings(int index) const
Definition SettingsModel.h:666
bool SelectSubBasinBrickIfFound(const string &name)
Definition SettingsModel.cpp:560
bool SelectStructure(int id)
Definition SettingsModel.cpp:515
BrickSettings GetSurfaceComponentBrickSettings(int index) const
Definition SettingsModel.h:605
void SelectHydroUnitBrickByName(const string &name)
Definition SettingsModel.cpp:580
vecStr GetHydroUnitLogLabels()
Definition SettingsModel.cpp:674
SolverSettings GetSolverSettings() const
Definition SettingsModel.h:557
void AddProcessOutput(const string &target, const string &fluxType="water")
Definition SettingsModel.cpp:262
bool SelectHydroUnitSplitterIfFound(const string &name)
Definition SettingsModel.cpp:638
void AddLandCoverBrick(const string &name, const string &type)
Definition SettingsModel.cpp:94
void SetProcessOutputsAsInstantaneous()
Definition SettingsModel.cpp:271
void AddLoggingToItem(const string &itemName)
Definition SettingsModel.cpp:371
BrickSettings GetHydroUnitBrickSettings(int index) const
Definition SettingsModel.h:576
void GenerateSnowpacks(const string &snowMeltProcess)
Definition SettingsModel.cpp:456
vecInt GetSurfaceComponentBricksIndices() const
Definition SettingsModel.h:616
void AddSnowRedistribution(const string &redistributionProcess="transport:snow_slide", bool skipGlaciers=false)
Definition SettingsModel.cpp:483
int GetSubBasinSplittersNb() const
Definition SettingsModel.h:547
int GetSubBasinBricksNb() const
Definition SettingsModel.h:507
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
int GetHydroUnitBricksNb() const
Definition SettingsModel.h:497
BrickSettings GetSubBasinBrickSettings(int index) const
Definition SettingsModel.h:644
void AddBrickLogging(const string &itemName)
Definition SettingsModel.cpp:391
void SelectHydroUnitBrick(int index)
Definition SettingsModel.cpp:531
int GetStructuresNb() const
Definition SettingsModel.h:488
void SetProcessParameterValue(const string &name, float value, const std::string &type="constant")
Definition SettingsModel.cpp:229
TimerSettings GetTimerSettings() const
Definition SettingsModel.h:566
bool SelectSubBasinSplitterIfFound(const string &name)
Definition SettingsModel.cpp:650
void AddSnowIceTransformation(const string &transformationProcess="transform:snow_ice_constant")
Definition SettingsModel.cpp:470
SplitterSettings GetSubBasinSplitterSettings(int index) const
Definition SettingsModel.h:677
void AddProcessLogging(const string &itemName)
Definition SettingsModel.cpp:411
void GeneratePrecipitationSplitters(bool withSnow)
Definition SettingsModel.cpp:429
void SelectSubBasinBrick(int index)
Definition SettingsModel.cpp:539
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:624
void SetSurfaceComponentParent(const string &name)
Definition SettingsModel.cpp:112
vecStr GetLandCoverBricksNames() const
Definition SettingsModel.cpp:701
void AddProcessForcing(const string &name)
Definition SettingsModel.cpp:246
void OutputProcessToSameBrick()
Definition SettingsModel.cpp:287
int GetSurfaceComponentBricksNb() const
Definition SettingsModel.h:517
bool SelectHydroUnitBrickIfFound(const string &name)
Definition SettingsModel.cpp:547
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