From 32d3b64ddc3ffcd1ea19661a5b8bd6fb3e67853c Mon Sep 17 00:00:00 2001
From: lkugler <lukas.kugler@gmail.com>
Date: Wed, 28 Apr 2021 10:55:39 +0200
Subject: [PATCH] .

---
 scripts/assim_synth_obs.py                   |  5 ++--
 scripts/obsseq_to_netcdf.py                  | 27 ++++++++++++++++++++
 scripts/update_wrfinput_from_filteroutput.py |  4 +--
 3 files changed, 32 insertions(+), 4 deletions(-)
 create mode 100644 scripts/obsseq_to_netcdf.py

diff --git a/scripts/assim_synth_obs.py b/scripts/assim_synth_obs.py
index 6b626d1..57e519d 100755
--- a/scripts/assim_synth_obs.py
+++ b/scripts/assim_synth_obs.py
@@ -303,14 +303,15 @@ if __name__ == "__main__":
             Hx_prior = obs_operator_ensemble(istage)  # files are already linked to DART directory
             
             obscfg['err_std'] = calc_obserr_WV73(Hx_nat, Hx_prior)
-        else:
-            obscfg['err_std'] = np.ones(n_obs) * obscfg['err_std']  # fixed stderr
 
         # create obs template file, now with correct errors
         osq.create_obsseq_in(time, obscfg, archive_obs_coords=archive_stage+'/obs_coords.pkl')
         prepare_nature_dart(time)  # link WRF files to DART directory
         run_perfect_model_obs()  # actually create observations that are used to assimilate
 
+        #for iens in range(1,41):
+        #    os.system('ncks -A -v Times '+cluster.dartrundir+'/wrfout_d01 '+cluster.dartrundir+'/advance_temp'+str(iens)+'/wrfout_d01')
+
         assimilate()
         dir_obsseq = cluster.archivedir()+'/obs_seq_final/assim_stage'+str(istage)
         archive_diagnostics(dir_obsseq, time)
diff --git a/scripts/obsseq_to_netcdf.py b/scripts/obsseq_to_netcdf.py
new file mode 100644
index 0000000..1e4f074
--- /dev/null
+++ b/scripts/obsseq_to_netcdf.py
@@ -0,0 +1,27 @@
+import os, sys, glob
+
+def listdir_dirs(path):
+    return [a for a in os.listdir(path) if os.path.isdir(os.path.join(path, a))]
+
+#sys.path.append('')
+from config.cfg import exp, cluster
+import run_obs_diag as rod
+
+#sys.path.append('/home/fs71386/lkugler/DART-WRF/scripts')
+#from obs import read_dartobs as rdo
+
+if __name__ == '__main__':
+
+    datadir = cluster.archive_base
+    ddir = datadir+exp.expname+'/obs_seq_final/'
+
+    for dir_name in listdir_dirs(ddir):
+        files = sorted(glob.glob(ddir+'/'+dir_name+'/*.final'))  
+        #rod.run_obsdiag(files, f_out=ddir+'/obsdiag_'+dir_name+'.nc') 
+        rod.run_obs_seq_to_netcdf(files, f_out=ddir+'/obs_epoch-'+dir_name+'.nc') 
+
+    ddir = datadir+exp.expname+'/obs_seq_final_1min/'
+
+    for dir_name in listdir_dirs(ddir):
+        files = sorted(glob.glob(ddir+'/'+dir_name+'/*.final'))
+        rod.run_obs_seq_to_netcdf(files, f_out=ddir+'/obs_epoch-'+dir_name+'.nc') 
diff --git a/scripts/update_wrfinput_from_filteroutput.py b/scripts/update_wrfinput_from_filteroutput.py
index 0d7329c..671124b 100755
--- a/scripts/update_wrfinput_from_filteroutput.py
+++ b/scripts/update_wrfinput_from_filteroutput.py
@@ -27,11 +27,11 @@ for iens in range(1, exp.n_ens+1):
     wrf_ic = cluster.wrf_rundir(iens) + '/wrfinput_d01'
 
     # cycles variables from wrfout (prior state)
-    print('copy prior', prior_wrf, 'to wrfinput', wrf_ic)
+    print('cycle some variables (copy from last init) => copy prior', prior_wrf, 'to wrfinput', wrf_ic)
     # os.system(cluster.ncks+' -A -v '+cycles+' '+prior_wrf+' '+wrf_ic)
     copy(prior_wrf, wrf_ic)
 
-    print('updating', updates, 'in', wrf_ic, 'from', filter_out)
+    print('update assimilated variables => overwrite', updates, 'in', wrf_ic, 'from', filter_out)
     os.system(cluster.ncks+' -A -v '+updates+' '+filter_out+' '+wrf_ic)
 
     print('writing T into THM of wrfinput')  # assumes T = THM (dry potential temperature as prognostic variable)
-- 
GitLab