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