Skip to content

Data assimilations functions to be used in combination with Hydrological modeling system eWaterCycle

License

Notifications You must be signed in to change notification settings

Daafip/eWaterCycle-DA

Repository files navigation

eWaterCycle-DA

Documentation Status PyPI github license badge fair-software badge

Code to run Data Assimilation with hydrological models on the eWaterCycle platform.

Installation

Install this package alongside your eWaterCycle installation

pip install ewatercycle-DA

Then DA becomes available to be used in eWaterCycle

from ewatercycle_DA import DA

docs

Documentation can be found here

Changelog

Changelog can be found in CHANGELOG.md on GitHub.

Quick Usage overiew

(maybe migrate this to docs?)

Can be used with or without assimilating, this will run 10 versions of the same model. By varying the setup_kwargs you can vary the model run itself.

Without assimilating

HBVForcing = ...

ensemble = DA.Ensemble(N=10)
ensemble.setup()

ensemble.initialize(model_name="HBV",
                   forcing=HBVForcing,
                   setup_kwargs={'parameters':'7.6,0.5,460,3.8,0.19,1.3,0.082,0.0061',
                                 'initial_storage':'0,100,0,5'}
                    )

ref_model = ensemble.ensemble_list[0].model

lst_Q = []
while ref_model.time < ref_model.end_time:
    ensemble.update(assimilate=False)
    lst_Q.append(ensemble.get_value("Q"))

For running HBV see seperate docs

With assimilating

...
ref_model = ...
#... same as above just add two more definitions
def H(Z):
    """returns discharge which is the last value on the state vector for HBV"""
    return Z[-1] 

ds_obs_dir = ...
ensemble.initialize_da_method(ensemble_method_name = "PF", 
                              hyper_parameters = {
                                               'like_sigma_weights' : 0.05,
                                               'like_sigma_state_vector' : 0.01,
                                                 },
                              state_vector_variables = "all", 
                              # the next three are keyword arguments but are needed:
                              observation_path = ds_obs_dir,
                              observed_variable_name = "Q",
                              measurement_operator = H, 
                           
                            )
lst_Q = []
while ref_model.time < ref_model.end_time:
    ensemble.update(assimilate=True)
    lst_Q.append(ensemble.get_value("Q"))

About

Data assimilations functions to be used in combination with Hydrological modeling system eWaterCycle

Resources

License

Stars

Watchers

Forks

Packages

No packages published