BenjMy / pycathy_wrapper

A Python wrapper for CATHY (Catchment Hydrology) - [Camporese et al., 2010]
https://benjmy.github.io/pycathy_wrapper/
Boost Software License 1.0
7 stars 1 forks source link

Implement normalisation for multiple correlated parameters #27

Open BenjMy opened 3 months ago

BenjMy commented 3 months ago

Improvement suggestion for DA

See Botto et al. 2018: "The parameters of the van Genuchten retention curves α,n, and θr are perturbed taking into account their mutual correlation according to Carsel and Parrish (1988), who described their statistics and transformed them into normally distributed variables via the Johnson system (Johnson, 1970)."

How?

During the parameter perturbation using perturbate, add an entry norm_type to the scenario dictionary

'scenario': 
                        {'norm_type': [None,None,None],
                         'per_name':['ic', 'ZROOT','PCREF'],
                         'per_nom':[IC_NOM,UNBIASED_ZROOT_NOM,UNBIASED_PCREF_NOM],
                         'per_mean':[IC_NOM,UNBIASED_ZROOT_NOM,UNBIASED_PCREF_NOM],
                         'per_sigma': [IC_SIGMA,ZROOT_SIGMA,PCREF_SIGMA],
                         'per_bounds': [None,{'min':0,'max':0.5},{'min':-100,'max':-0.5}],
                         'sampling_type': ['normal']*3,
                         'transf_type':[None,None,None],
                         'ref_scenario': 'model_uni_root_ArchiePert0_f1_noise5', 
                         'listUpdateParm': ['St. var.', 'ZROOT','PCREF']
                         },
from pyCATHY.DA.cathy_DA import DA
from pyCATHY.DA import perturbate, normalise

# We create a DA object
# -------------------------------
simu = DA(dirName=path2prj, prj_name=prj_name_DA)

...

# Parameters pertubation
# -------------------------------
list_pert = perturbate.perturbate(simu, scenario, nens)

# run DA simulation
# -------------------------------
simu.run_DA_sequential()