From e3ed639352117f262d5ea14a2ef612d4ec6773f5 Mon Sep 17 00:00:00 2001 From: lkugler <lukas.kugler@gmail.com> Date: Tue, 14 Sep 2021 15:07:40 +0200 Subject: [PATCH] bugfix obserr generate/assimilate --- scripts/assim_synth_obs.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/scripts/assim_synth_obs.py b/scripts/assim_synth_obs.py index e28376c..03961ac 100755 --- a/scripts/assim_synth_obs.py +++ b/scripts/assim_synth_obs.py @@ -368,7 +368,10 @@ if __name__ == "__main__": ################################################ print(' 1) get the assimilation errors in a single vector ') - error_generate = [] + error_assimilate = [] + # to get the obs-error for assimilation, + # we need to get the true obs-space values for the parametrized variable + # and collect the obs-error for assimilation in a single vector/list for i, obscfg in enumerate(exp.observations): n_obs = obscfg['n_obs'] @@ -378,7 +381,7 @@ if __name__ == "__main__": parametrized = obscfg.get('sat_channel') == 6 if not parametrized: - err_this_type = np.zeros(n_obs_3d) + obscfg['error_generate'] + err_this_type = np.zeros(n_obs_3d) + obscfg['error_assimilate'] else: # error parametrization for WV73 # get observations for sat 6 @@ -391,10 +394,17 @@ if __name__ == "__main__": Hx_prior = obs_operator_ensemble(istage) # files are already linked to DART directory err_this_type = calc_obserr_WV73(Hx_nat, Hx_prior) - error_generate.extend(err_this_type) # the obs-error we assume for generating observations + error_assimilate.extend(err_this_type) # the obs-error we assume for assimilating observations ################################################ print(' 2) generate observations ') + + # the obs-error we use for generating obs is user-defined + error_generate = [] + for i, obscfg in enumerate(exp.observations): + err_this_type = np.zeros(n_obs_3d) + obscfg['error_generate'] + error_generate.extend(err_this_type) + osq.create_obsseqin_alltypes(time, exp.observations, obs_errors=error_generate, archive_obs_coords=archive_stage+'/obs_coords.pkl') @@ -407,10 +417,7 @@ if __name__ == "__main__": ################################################ print(' 3) assimilate with observation-errors for assimilation') - error_assimilate = [] - for i, obscfg in enumerate(exp.observations): - err_this_type = np.zeros(n_obs_3d) + obscfg['error_assimilate'] # the obs-error we assume for assimilation - error_assimilate.extend(err_this_type) + replace_errors_obsseqout(cluster.dartrundir+'/obs_seq.out', error_assimilate) t = time_module.time() -- GitLab