1#ifndef HYDROBRICKS_PROCESSOR_H
2#define HYDROBRICKS_PROCESSOR_H
88 void EvaluateRates(axd& rates,
double timeStepInDays,
bool applyConstraints =
true);
116 void ApplyRates(
const axd& rates,
double timeStepInDays);
129 return _solvableConnectionCount;
138 return _iterableBricks;
147 return _directConnectionCount;
206 return _solvableProcesses;
216 return _solvableBrickEntries;
220 std::unique_ptr<Solver> _solver;
222 int _solvableConnectionCount;
223 int _directConnectionCount;
224 int _directRateCount;
225 vecDoublePt _stateVariableChanges;
226 vector<Brick*> _iterableBricks;
231 vector<SolvableProcess> _solvableProcesses;
232 vector<SolvableBrickEntry> _solvableBrickEntries;
234 vector<Splitter*> _directSplitters;
235 vector<DirectProcess> _directProcesses;
236 vector<DirectBrickEntry> _directBricks;
237 vector<DirectUnitEntry> _directUnits;
238 axd _changeRatesNoSolver;
239 axd _ratesBeforeSweep;
248 void ValidateFluxTopology()
const;
255 void StoreStateVariableChanges(std::span<double*> values);
261 void BuildTraversalTables();
269 void ApplyDirectChanges(
const DirectBrickEntry& brickEntry,
double timeStepInDays);
Definition ModelHydro.h:14
Definition Processor.h:13
void ConnectToElementsToSolve()
Definition Processor.cpp:62
void EvaluateRates(axd &rates, double timeStepInDays, bool applyConstraints=true)
Definition Processor.cpp:219
const vector< SolvableProcess > & GetSolvableProcesses() const
Definition Processor.h:205
int GetDirectConnectionCount() const
Definition Processor.h:146
void ApplyRates(const axd &rates, double timeStepInDays)
Definition Processor.cpp:278
void ScatterState(const axd &state)
Definition Processor.cpp:199
int GetSolvableConnectionCount() const
Definition Processor.h:128
void SetModel(ModelHydro *model)
Definition Processor.cpp:58
int GetStateVariableCount() const
Definition Processor.cpp:188
const vector< SolvableBrickEntry > & GetSolvableBrickEntries() const
Definition Processor.h:215
void GatherState(axd &state) const
Definition Processor.cpp:192
void FinalizeTimeStep()
Definition Processor.cpp:295
void ResetState()
Definition Processor.cpp:206
void Initialize(const SolverSettings &solverSettings)
Definition Processor.cpp:18
const vector< Brick * > & GetSolvableBricks() const
Definition Processor.h:137
bool ProcessTimeStep(double timeStepInDays)
Definition Processor.cpp:304
void EnforceConstraints(axd &rates, double timeStepInDays)
Definition Processor.cpp:258
void ConstrainRates(axd &rates, double timeStepInDays)
Definition Processor.cpp:244
Definition WaterContainer.h:10
Definition Processor.h:183
Definition Processor.h:172
Definition Processor.h:193
Definition Processor.h:162
Definition Processor.h:153
Definition SettingsModel.h:13