eWaterCycle的数据同化实现
项目描述
eWaterCycle-DA
在eWaterCycle平台上运行水文模型数据同化的代码。
安装
将此软件包与您的eWaterCycle安装一起安装
pip install ewatercycle-DA
然后DA将在eWaterCycle中可用
from ewatercycle_DA import DA
文档
文档可以在此处找到
变更日志
变更日志可以在GitHub上的CHANGELOG.md中找到。
快速使用概述
(可能迁移到文档?)
可以用于或不用于同化,这将运行同一模型的10个版本。通过更改setup_kwargs,您可以更改模型运行本身。
不进行同化
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"))
有关运行HBV的说明,请参阅单独的文档
进行同化
...
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"))