diff --git a/scripts/assim_synth_obs.py b/scripts/assim_synth_obs.py index 6b626d1957ad62c852e4a23d84515750f8ef5d67..57e519dbf06480a68428dd948f8ff98bfd2b7119 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 0000000000000000000000000000000000000000..1e4f07450c07b1b250752da6ee25763e7edff470 --- /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 0d7329c53663ce4b978cc7821024d4ab9936a8b3..671124b024df58e7ff87d132dbc7e308938dea12 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)