Hybrid models
The hy2dl.modelzoo.hybrid.Hybrid wrapper class combines data-driven methods with conceptual hydrological models.
An LSTM network is used to parameterize the conceptual hydrological model. Details of the configuration arguments related to this model can be found in Hybrid model
The following illustrative example demonstrates how the model functions: Imagine you are interested in simulating daily streamflow for the year 1997. The hybrid model operates using a sequence-to-sequence (seq2seq) approach. This means the LSTM generates a parameter set for each time step, which then feeds into the conceptual hydrological model.
Due to the nature of conceptual models, a warm-up period is necessary to initialize the model states. As shown in the figure below, this warm-up period is defined as the difference between seq_length and predict_last_n. This period is solely used to initialize the states of the conceptual model and does not contribute to the loss function during training.
Conceptual models
The currently available conceptual hydrological models are:
hy2dl.modelzoo.shm.SHM: Acuña Espinoza et al. (2024) , Alvarez Chaves et al. (2026)hy2dl.modelzoo.linear_reservoir.linear_reservoir: Acuña Espinoza et al. (2024), Alvarez Chaves et al. (2026)hy2dl.modelzoo.nonsense.NonSense: Acuña Espinoza et al. (2024), Alvarez Chaves et al. (2026)hy2dl.modelzoo.hbv.HBV: Feng et al. (2022), Acuña Espinoza et al. (2025)
You also have the option to include an additional routing method (applied after the conceptual model) using a unit hydrograph based on a gamma function via hy2dl.modelzoo.uh_routing.UH_routing.
Dynamic vs. static parameterization
Using the dynamic_parameterization_conceptual_model parameter, you can define which conceptual model parameters (defined in the @property parameter_ranges of each model) are dynamic (varying at each time step) or static (remaining constant over time).
The figure below illustrates both cases. Because the LSTM naturally outputs one parameter set per time step, we approximate a static value by calculating the mean of the parameter and repeating it across all time steps.
Note: Even when using dynamic parameterization, the warm-up period always utilizes a static value.