|
hydrobricks
|
#include <ProcessCapillaryHBV.h>
Public Member Functions | |
| ProcessCapillaryHBV (WaterContainer *container) | |
| bool | IsValid () const override |
| void | SetParameters (const ProcessSettings &processSettings) override |
| bool | NeedsTargetBrickLinking () const override |
| bool | LinksMultipleTargets () const override |
| void | AddTargetBrickWithWeights (Brick *targetBrick, const std::vector< Brick * > &weightSources) override |
Public Member Functions inherited from ProcessOutflow | |
| ProcessOutflow (WaterContainer *container) | |
| bool | IsValid () const override |
| int | GetConnectionCount () const override |
| double * | GetValuePointer (std::string_view name) override |
Public Member Functions inherited from Process | |
| Process (WaterContainer *container) | |
| virtual void | Reset () |
| virtual void | Validate () const |
| virtual void | SetHydroUnitProperties (HydroUnit *unit, Brick *brick) |
| virtual void | AttachForcing (Forcing *) |
| void | AttachFluxOut (std::unique_ptr< Flux > flux) |
| int | GetOutputFluxCount () const |
| Flux * | GetOutputFlux (size_t index) const |
| virtual bool | ToAtmosphere () const |
| virtual vecDouble | GetChangeRates () |
| virtual void | StoreInOutgoingFlux (double *rate, int index) |
| void | ApplyChange (int connectionIndex, double rate, double timeStepInDays) |
| virtual void | Finalize () |
| virtual vecDoublePt | GetStateVariables () |
| const string & | GetName () const |
| void | SetName (const string &name) |
| void | SetTimeMachine (TimeMachine *timeMachine) |
| WaterContainer * | GetWaterContainer () const |
| virtual void | SetTargetBrick (Brick *) |
| virtual bool | IsLateralProcess () const noexcept |
| bool | HasOutputFluxes () const noexcept |
| bool | HasWaterContainer () const noexcept |
Static Public Member Functions | |
| static void | RegisterProcessSettings (SettingsModel *modelSettings) |
Static Public Member Functions inherited from ProcessOutflow | |
| static void | RegisterProcessSettings (SettingsModel *modelSettings) |
Static Public Member Functions inherited from Process | |
| static std::unique_ptr< Process > | Factory (const ProcessSettings &processSettings, Brick *brick) |
| static bool | RegisterSettings (SettingsModel *modelSettings, const string &processType) |
| static bool | HasParameter (const ProcessSettings &processSettings, std::string_view name) |
| static const float * | GetParameterValuePointer (const ProcessSettings &processSettings, std::string_view name) |
Protected Member Functions | |
| vecDouble | GetRates () override |
Protected Member Functions inherited from Process | |
| double | GetSumChangeRatesOtherProcesses () const |
Protected Attributes | |
| std::vector< Brick * > | _targetBricks |
| std::vector< std::vector< const double * > > | _weights |
| const float * | _maxCapillaryFlux |
Protected Attributes inherited from Process | |
| string | _name |
| WaterContainer * | _container |
| TimeMachine * | _timeMachine {nullptr} |
| std::vector< std::unique_ptr< Flux > > | _outputs |
HBV-96 capillary transport (Lindström et al., 1997).
Lives on the (shared) upper zone and returns water to the soil moisture brick(s) (capacity FC) proportionally to the soil moisture deficit: CF = cflux × (1 − SM/FC)
With several per-class soils the flux fans out to each soil, area-weighted by the land cover(s) that feed it: the rate toward soil i is CF_i = cflux × w_i × (1 − SM_i/FC_i), w_i = Σ land-cover area fractions feeding soil i (so the total leaving the upper zone is the area-weighted sum). The upper zone is a full-unit-area brick, so the weighting is carried in the rate (the fluxes are unweighted) to keep the water balance exact. With a single soil-bearing cover (w = 1) this reduces to the original single-target flux.
With cflux = 0 (the default) the process is inactive. Requires linked target brick(s) (soil moisture) to read their filling ratio.
|
overridevirtual |
Add a target brick together with the bricks whose area fractions weight the flux toward it (used by processes that fan out to several targets).
| target | the target brick. |
| weightSources | the bricks (land covers) whose area fractions weight the flux. |
Reimplemented from Process.
|
overrideprotectedvirtual |
|
nodiscardoverridevirtual |
Check that everything is correctly defined.
Implements Process.
|
inlinenodiscardoverridevirtual |
Check if the process links several target bricks (instead of a single one).
Reimplemented from Process.
|
inlinenodiscardoverridevirtual |
Check if the process needs to link the target brick.
Reimplemented from Process.
|
static |
Register the process parameters and forcing in the settings model.
| modelSettings | The settings model to register the parameters in. |
|
overridevirtual |
Assign the parameters to the process.
| processSettings | settings of the process containing the parameters. |
Reimplemented from Process.