diff --git a/scripts/assim_synth_obs.py b/scripts/assim_synth_obs.py index e28376c06e313770a1071ba8eef233c4345c5697..03961ac2264985b9c7ad96463bc755d459d7beea 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()