Changeset 654 in lmdz_wrf
- Timestamp:
- Oct 15, 2015, 11:00:04 AM (10 years ago)
- Location:
- trunk/tools
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/tools/diagnostics.py ¶
r649 r654 12 12 import re 13 13 import nc_var_tools as ncvar 14 import datetime as dt 14 import datetime as dtime 15 15 16 16 main = 'diagnostics.py' 17 17 errormsg = 'ERROR -- error -- ERROR -- error' 18 18 warnmsg = 'WARNING -- warning -- WARNING -- warning' 19 20 # Constants 21 grav = 9.81 19 22 20 23 # Gneral information … … 797 800 availdiags = ['ACRAINTOT', 'accum', 'clt', 'cllmh', 'deaccum', 'LMDZrh', 'mslp', \ 798 801 'OMEGAw', 'RAINTOT', \ 799 'rvors', 'td', 'turbulence', 'WRFrvors', 'wds', 'wss'] 802 'rvors', 'td', 'turbulence', 'WRFgeop', 'WRFp', 'WRFrvors', 'wds', 'wss', \ 803 'WRFheight'] 800 804 801 805 methods = ['accum', 'deaccum'] … … 806 810 'WRFp', 'WRFtd', \ 807 811 'WRFpos', 'WRFprc', 'WRFprls', 'WRFrh', 'LMDZrh', 'LMDZrhs', 'WRFrhs', 'WRFrvors', \ 808 'WRFt', 'WRFtime', 'WRFwds', 'WRFwss' ]812 'WRFt', 'WRFtime', 'WRFwds', 'WRFwss', 'WRFheight'] 809 813 810 814 ofile = 'diagnostics.nc' … … 846 850 847 851 # Looking for specific variables that might be use in more than one diagnostic 852 WRFgeop_compute = False 848 853 WRFp_compute = False 849 854 WRFt_compute = False … … 852 857 WRFdens_compute = False 853 858 WRFpos_compute = False 859 WRFtime_compute = False 854 860 855 861 for idiag in range(Ndiags): 856 862 if diags[idiag].split('|')[1].find('@') == -1: 857 863 depvars = diags[idiag].split('|')[1] 864 if depvars == 'WRFgeop':WRFgeop_compute = True 858 865 if depvars == 'WRFp': WRFp_compute = True 859 866 if depvars == 'WRFt': WRFt_compute = True … … 862 869 if depvars == 'WRFdens': WRFdens_compute = True 863 870 if depvars == 'WRFpos': WRFpos_compute = True 864 871 if depvars == 'WRFtime': WRFtime_compute = True 865 872 else: 866 873 depvars = diags[idiag].split('|')[1].split('@') 874 if ncvar.searchInlist(depvars, 'WRFgeop'): WRFgeop_compute = True 867 875 if ncvar.searchInlist(depvars, 'WRFp'): WRFp_compute = True 868 876 if ncvar.searchInlist(depvars, 'WRFt'): WRFt_compute = True … … 871 879 if ncvar.searchInlist(depvars, 'WRFdens'): WRFdens_compute = True 872 880 if ncvar.searchInlist(depvars, 'WRFpos'): WRFpos_compute = True 881 if ncvar.searchInlist(depvars, 'WRFtime'): WRFtime_compute = True 882 883 if WRFgeop_compute: 884 print ' ' + main + ': Retrieving geopotential value from WRF as PH + PHB' 885 dimv = ncobj.variables['PH'].shape 886 WRFgeop = ncobj.variables['PH'][:] + ncobj.variables['PHB'][:] 873 887 874 888 if WRFp_compute: … … 904 918 print ' ' + main + ': computing air density from WRF as ((MU + MUB) * ' + \ 905 919 'DNW)/g ...' 906 grav = 9.81907 920 908 921 # Just we need in in absolute values: Size of the central grid cell … … 955 968 for it in range(1,dt): 956 969 WRFpos[it,:,:] = WRFpos[0,:,:] 970 971 if WRFtime_compute: 972 print ' ' + main + ': computing time from WRF as CFtime(Times) ...' 973 974 refdate='19491201000000' 975 tunitsval='minutes' 976 977 timeobj = ncobj.variables['Times'] 978 timewrfv = timeobj[:] 979 980 yrref=refdate[0:4] 981 monref=refdate[4:6] 982 dayref=refdate[6:8] 983 horref=refdate[8:10] 984 minref=refdate[10:12] 985 secref=refdate[12:14] 986 987 refdateS = yrref + '-' + monref + '-' + dayref + ' ' + horref + ':' + minref + \ 988 ':' + secref 989 990 dt = timeobj.shape[0] 991 WRFtime = np.zeros((dt), dtype=np.float) 992 993 for it in range(dt): 994 wrfdates = ncvar.datetimeStr_conversion(timewrfv[it,:],'WRFdatetime', 'matYmdHMS') 995 WRFtime[it] = ncvar.realdatetime1_CFcompilant(wrfdates, refdate, tunitsval) 996 997 tunits = tunitsval + ' since ' + refdateS 998 957 999 958 1000 ### ## # … … 1143 1185 if depvars[2] != 'WRFtime': 1144 1186 var2 = ncobj.variables[depvars[2]] 1187 else: 1188 var2 = np.arange(var0.shape[0], dtype=int) 1145 1189 1146 1190 var = var0[:] + var1[:] … … 1152 1196 1153 1197 # Transforming to a flux 1154 if var2.shape[0] > 0:1198 if var2.shape[0] > 1: 1155 1199 if depvars[2] != 'WRFtime': 1156 1200 dtimeunits = var2.getncattr('units') … … 1167 1211 tmf1 = tmf1 + time1[ic] 1168 1212 tmf2 = tmf2 + time2[ic] 1169 dtdate1 = dt .datetime.strptime(tmf1,"%Y-%m-%d_%H:%M:%S")1170 dtdate2 = dt .datetime.strptime(tmf2,"%Y-%m-%d_%H:%M:%S")1213 dtdate1 = dtime.datetime.strptime(tmf1,"%Y-%m-%d_%H:%M:%S") 1214 dtdate2 = dtime.datetime.strptime(tmf2,"%Y-%m-%d_%H:%M:%S") 1171 1215 diffdate12 = dtdate2 - dtdate1 1172 1216 dtime = diffdate12.total_seconds() … … 1280 1324 ncvar.insert_variable(ncobj, 'bils', diagout, dnames, dvnames, newnc) 1281 1325 1326 # WRFgeop geopotential from WRF as PH + PHB 1327 elif diag == 'WRFgeop': 1328 1329 diagout = WRFgeop 1330 1331 ncvar.insert_variable(ncobj, 'zg', diagout, dnames, dvnames, newnc) 1332 1282 1333 # WRFp pressure from WRF as P + PB 1283 1334 elif diag == 'WRFp': … … 1341 1392 1342 1393 ncvar.insert_variable(ncobj, 'rvors', diagout, dnamesvar, dvnamesvar, newnc) 1394 1395 1396 # WRFtime (u10, v10, WRFpos) 1397 elif diag == 'WRFtime': 1398 1399 diagout = WRFtime 1400 1401 dnamesvar = ['Time'] 1402 dvnamesvar = ['Times'] 1403 1404 ncvar.insert_variable(ncobj, 'time', diagout, dnamesvar, dvnamesvar, newnc) 1343 1405 1344 1406 # wss (u10, v10) … … 1359 1421 1360 1422 ncvar.insert_variable(ncobj, 'wss', diagout, dnamesvar, dvnamesvar, newnc) 1423 1424 # WRFheight height from WRF geopotential as WRFGeop/g 1425 elif diag == 'WRFheight': 1426 1427 diagout = WRFgeop/grav 1428 1429 ncvar.insert_variable(ncobj, 'zhgt', diagout, dnames, dvnames, newnc) 1361 1430 1362 1431 else: -
TabularUnified trunk/tools/variables_values.dat ¶
r646 r654 484 484 z, z, z, 0., 100., z, -, Greens 485 485 Z, z, z, 0., 100., z, -, Greens 486 zhgt, zhgt, height, 0., 50000., altitude|from|surface, m, rainbow 486 487 zg, zg, geopotential_height, 0., 80000., geopotential|height, m2s-2, rainbow 487 488 WRFght, zg, geopotential_height, 0., 80000., geopotential|height, m2s-2, rainbow
Note: See TracChangeset
for help on using the changeset viewer.