diff --git a/modules/aeolus/aeolus_amv.py b/modules/aeolus/aeolus_amv.py index 392cf367a224f2b98951b0e7dee93686ddf301dd..e3bd4231efe02978d7a5101dc346dc98b0895424 100644 --- a/modules/aeolus/aeolus_amv.py +++ b/modules/aeolus/aeolus_amv.py @@ -2058,38 +2058,39 @@ def create_bestfit_file(filename, match_dct, raob_dct, gfs_at_raob_dct, bf_dct, dim_alevs = rootgrp.createDimension('max_num_raob_levels', size=max_num_alevels) dim_amvs = rootgrp.createDimension('max_num_amvs', size=max_num_amvs) dim_num_aeolus_prof = rootgrp.createDimension('num_raob_profs', size=num_aprofs) + dim_time = rootgrp.createDimension('time', size=1) - #prf_time = rootgrp.createVariable('time', 'f4', ['num_aeolus_profs']) + time = rootgrp.createVariable('time', 'f4', ['time']) + time.units = 'seconds since 1970-01-1 00:00:00' #amv_file_names = rootgrp.createVariable('amv_file_names', str, ['num_amv_files']) # ---- Profile variables --------------- - prf_lon = rootgrp.createVariable('raob_longitude', 'f4', ['num_raob_profs']) + prf_lon = rootgrp.createVariable('raob_longitude', 'f4', ['time', 'num_raob_profs']) prf_lon.units = 'degrees east' - prf_lat = rootgrp.createVariable('raob_latitude', 'f4', ['num_raob_profs']) + prf_lat = rootgrp.createVariable('raob_latitude', 'f4', ['time', 'num_raob_profs']) prf_lat.units = 'degrees north' - #prf_time.units = 'seconds since 1970-01-1 00:00:00' - prf_dir = rootgrp.createVariable('raob_dir', 'f4', ['num_raob_profs', 'max_num_raob_levels']) + prf_dir = rootgrp.createVariable('raob_dir', 'f4', ['time', 'num_raob_profs', 'max_num_raob_levels']) prf_dir.units = 'degree' - prf_spd = rootgrp.createVariable('raob_spd', 'f4', ['num_raob_profs', 'max_num_raob_levels']) + prf_spd = rootgrp.createVariable('raob_spd', 'f4', ['time', 'num_raob_profs', 'max_num_raob_levels']) prf_spd.units = 'm s-1' - prf_lvl = rootgrp.createVariable('raob_levels', 'f4', ['num_raob_profs', 'max_num_raob_levels']) + prf_lvl = rootgrp.createVariable('raob_levels', 'f4', ['time', 'num_raob_profs', 'max_num_raob_levels']) prf_lvl.units = 'millibar' # ----- Product variables ---------------- nc4_vars = [] - nc4_vars.append(rootgrp.createVariable('amv_lon', 'f4', ['num_raob_profs', 'max_num_amvs'])) - nc4_vars.append(rootgrp.createVariable('amv_lat', 'f4', ['num_raob_profs', 'max_num_amvs'])) - nc4_vars.append(rootgrp.createVariable('amv_elem', 'i4', ['num_raob_profs', 'max_num_amvs'])) - nc4_vars.append(rootgrp.createVariable('amv_line', 'i4', ['num_raob_profs', 'max_num_amvs'])) + nc4_vars.append(rootgrp.createVariable('amv_lon', 'f4', ['time', 'num_raob_profs', 'max_num_amvs'])) + nc4_vars.append(rootgrp.createVariable('amv_lat', 'f4', ['time', 'num_raob_profs', 'max_num_amvs'])) + nc4_vars.append(rootgrp.createVariable('amv_elem', 'i4', ['time', 'num_raob_profs', 'max_num_amvs'])) + nc4_vars.append(rootgrp.createVariable('amv_line', 'i4', ['time', 'num_raob_profs', 'max_num_amvs'])) var_s = rg_exmpl.variables for pidx, param in enumerate(amv_params): v = var_s[param] attr_s = v.ncattrs() if '_FillValue' in attr_s: - var = rootgrp.createVariable(param, v.dtype, ['num_raob_profs', 'max_num_amvs'], fill_value=v.getncattr('_FillValue')) + var = rootgrp.createVariable(param, v.dtype, ['time', 'num_raob_profs', 'max_num_amvs'], fill_value=v.getncattr('_FillValue')) else: - var = rootgrp.createVariable(param, v.dtype, ['num_raob_profs', 'max_num_amvs']) + var = rootgrp.createVariable(param, v.dtype, ['time', 'num_raob_profs', 'max_num_amvs']) # copy attributes from example to new output variable of the same name for attr in attr_s: if attr != '_FillValue': @@ -2098,9 +2099,15 @@ def create_bestfit_file(filename, match_dct, raob_dct, gfs_at_raob_dct, bf_dct, amv_params = ['amv_lon', 'amv_lat', 'amv_elem', 'amv_line'] + amv_params + # Bestfit variables ------------------ + var_u = rootgrp.createVariable('bf_raob_u', 'f4', ['time', 'num_raob_profs', 'max_num_amvs']) + var_v = rootgrp.createVariable('bf_raob_v', 'f4', ['time', 'num_raob_profs', 'max_num_amvs']) + var_p = rootgrp.createVariable('bf_raob_press', 'f4', ['time', 'num_raob_profs', 'max_num_amvs']) + var_flg = rootgrp.createVariable('bf_raob_flag', 'i4', ['time', 'num_raob_profs', 'max_num_amvs']) + # Write data to file --------------------- - prf_lon[:] = alons - prf_lat[:] = alats + prf_lon[0, :] = alons + prf_lat[0, :] = alats #amv_file_names[:] = amv_file_s @@ -2111,12 +2118,17 @@ def create_bestfit_file(filename, match_dct, raob_dct, gfs_at_raob_dct, bf_dct, amvs = bf_tup[0] num_amvs = amvs.shape[0] - prf_lvl[idx,0:nlevs] = raob[:, 0] - prf_dir[idx,0:nlevs] = raob[:, 2] - prf_spd[idx,0:nlevs] = raob[:, 3] + prf_lvl[0, idx,0:nlevs] = raob[:, 0] + prf_dir[0, idx,0:nlevs] = raob[:, 2] + prf_spd[0, idx,0:nlevs] = raob[:, 3] for pidx, param in enumerate(amv_params): - nc4_vars[pidx][idx, 0:num_amvs] = amvs[:, pidx] + nc4_vars[pidx][0, idx, 0:num_amvs] = amvs[:, pidx] + + bf_raob = bf_tup[1] + var_u[0, idx, 0:num_amvs] = bf_raob[:, 0] + var_v[0, idx, 0:num_amvs] = bf_raob[:, 1] + var_p[0, idx, 0:num_amvs] = bf_raob[:, 2] rg_exmpl.close() rootgrp.close()