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