Changeset 1999 in lmdz_wrf


Ignore:
Timestamp:
Aug 1, 2018, 4:46:58 PM (7 years ago)
Author:
lfita
Message:

Fixing:

  • NONchecking variables to be removed
  • Adding sounding-point input in 3D diagnostics
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/diagnostics.py

    r1980 r1999  
    830830        diagout, diagoutd, diagoutvd = diag.compute_td(var0,var1,var2,dnamesvar,dvnamesvar)
    831831
     832        # Removing the nonChecking variable-dimensions from the initial list
     833        varsadd = []
     834        for nonvd in NONchkvardims:
     835            if gen.searchInlist(dvnames,nonvd): diagoutvd.remove(nonvd)
     836            varsadd.append(nonvd)
     837
    832838        ncvar.insert_variable(ncobj, 'tdas', diagout, diagoutd, diagoutvd, newnc)
    833839
     
    843849        diagout, diagoutd, diagoutvd = diag.compute_wds(var0,var1,dnamesvar,dvnamesvar)
    844850
     851        # Removing the nonChecking variable-dimensions from the initial list
     852        varsadd = []
     853        for nonvd in NONchkvardims:
     854            if gen.searchInlist(dvnames,nonvd): diagoutvd.remove(nonvd)
     855            varsadd.append(nonvd)
     856
    845857        ncvar.insert_variable(ncobj, 'wds', diagout, diagoutd, diagoutvd, newnc)
    846858
     
    855867
    856868        diagout, diagoutd, diagoutvd = diag.compute_wss(var0,var1,dnamesvar,dvnamesvar)
     869
     870        # Removing the nonChecking variable-dimensions from the initial list
     871        varsadd = []
     872        for nonvd in NONchkvardims:
     873            if gen.searchInlist(dvnames,nonvd): diagoutvd.remove(nonvd)
     874            varsadd.append(nonvd)
    857875
    858876        ncvar.insert_variable(ncobj, 'wss', diagout, diagoutd, diagoutvd, newnc)
     
    11211139           
    11221140        diagout = var0 + var1
    1123 
    1124         ncvar.insert_variable(ncobj, 'pres', diagout, dnames, dvnames, newnc)
     1141        diagoutd = list(ncobj.variables[depvars[0]].dimensions)
     1142        diagoutvd = ncvar.var_dim_dimv(dnamesvar,dnames,dvnames)
     1143
     1144        # Removing the nonChecking variable-dimensions from the initial list
     1145        varsadd = []
     1146        for nonvd in NONchkvardims:
     1147            if gen.searchInlist(dvnames,nonvd): diagoutvd.remove(nonvd)
     1148            varsadd.append(nonvd)
     1149
     1150        ncvar.insert_variable(ncobj, 'pres', diagout, diagoutd, diagoutvd, newnc)
    11251151
    11261152# WRFpos
     
    12621288
    12631289        # un-staggering variables
    1264         unstgdims = [var0.shape[0], var0.shape[1], var0.shape[2], var0.shape[3]-1]
     1290        if len(var0.shape) == 4:
     1291            unstgdims = [var0.shape[0], var0.shape[1], var0.shape[2], var0.shape[3]-1]
     1292        elif len(var0.shape) == 3:
     1293            # Asuming sunding point (dimt, dimz, dimstgx)
     1294            unstgdims = [var0.shape[0], var0.shape[1]]
     1295
    12651296        ua = np.zeros(tuple(unstgdims), dtype=np.float)
    12661297        unstgvar0 = np.zeros(tuple(unstgdims), dtype=np.float)
    12671298        unstgvar1 = np.zeros(tuple(unstgdims), dtype=np.float)
    1268         unstgvar0 = 0.5*(var0[:,:,:,0:var0.shape[3]-1] + var0[:,:,:,1:var0.shape[3]])
    1269         unstgvar1 = 0.5*(var1[:,:,0:var1.shape[2]-1,:] + var1[:,:,1:var1.shape[2],:])
    1270 
    1271         for iz in range(var0.shape[1]):
    1272             ua[:,iz,:,:] = unstgvar0[:,iz,:,:]*var3 - unstgvar1[:,iz,:,:]*var2
    1273 
    1274         dnamesvar = ['Time','bottom_top','south_north','west_east']
     1299
     1300        if len(var0.shape) == 4:
     1301            unstgvar0 = 0.5*(var0[:,:,:,0:var0.shape[3]-1] + var0[:,:,:,1:var0.shape[3]])
     1302            unstgvar1 = 0.5*(var1[:,:,0:var1.shape[2]-1,:] + var1[:,:,1:var1.shape[2],:])
     1303
     1304            for iz in range(var0.shape[1]):
     1305                ua[:,iz,:,:] = unstgvar0[:,iz,:,:]*var3 - unstgvar1[:,iz,:,:]*var2
     1306
     1307            dnamesvar = ['Time','bottom_top','south_north','west_east']
     1308
     1309        elif len(var0.shape) == 3:
     1310            unstgvar0 = 0.5*(var0[:,:,0] + var0[:,:,1])
     1311            unstgvar1 = 0.5*(var1[:,:,0] + var1[:,:,1])
     1312            for iz in range(var0.shape[1]):
     1313                ua[:,iz] = unstgvar0[:,iz]*var3 - unstgvar1[:,iz]*var2
     1314
     1315            dnamesvar = ['Time','bottom_top']
     1316
    12751317        dvnamesvar = ncvar.var_dim_dimv(dnamesvar,dnames,dvnames)
    12761318
     
    12921334
    12931335        # un-staggering variables
    1294         unstgdims = [var0.shape[0], var0.shape[1], var0.shape[2], var0.shape[3]-1]
     1336        if len(var0.shape) == 4:
     1337            unstgdims = [var0.shape[0], var0.shape[1], var0.shape[2], var0.shape[3]-1]
     1338        elif len(var0.shape) == 3:
     1339            # Asuming sunding point (dimt, dimz, dimstgx)
     1340            unstgdims = [var0.shape[0], var0.shape[1]]
     1341
    12951342        va = np.zeros(tuple(unstgdims), dtype=np.float)
    12961343        unstgvar0 = np.zeros(tuple(unstgdims), dtype=np.float)
    12971344        unstgvar1 = np.zeros(tuple(unstgdims), dtype=np.float)
    1298         unstgvar0 = 0.5*(var0[:,:,:,0:var0.shape[3]-1] + var0[:,:,:,1:var0.shape[3]])
    1299         unstgvar1 = 0.5*(var1[:,:,0:var1.shape[2]-1,:] + var1[:,:,1:var1.shape[2],:])
    1300         for iz in range(var0.shape[1]):
    1301             va[:,iz,:,:] = unstgvar0[:,iz,:,:]*var2 + unstgvar1[:,iz,:,:]*var3
    1302 
    1303         dnamesvar = ['Time','bottom_top','south_north','west_east']
     1345
     1346        if len(var0.shape) == 4:
     1347            unstgvar0 = 0.5*(var0[:,:,:,0:var0.shape[3]-1] + var0[:,:,:,1:var0.shape[3]])
     1348            unstgvar1 = 0.5*(var1[:,:,0:var1.shape[2]-1,:] + var1[:,:,1:var1.shape[2],:])
     1349
     1350            for iz in range(var0.shape[1]):
     1351                va[:,iz,:,:] = unstgvar0[:,iz,:,:]*var2 + unstgvar1[:,iz,:,:]*var3
     1352
     1353            dnamesvar = ['Time','bottom_top','south_north','west_east']
     1354
     1355        elif len(var0.shape) == 3:
     1356            unstgvar0 = 0.5*(var0[:,:,0] + var0[:,:,1])
     1357            unstgvar1 = 0.5*(var1[:,:,0] + var1[:,:,1])
     1358            for iz in range(var0.shape[1]):
     1359                va[:,iz] = unstgvar0[:,iz]*var2 + unstgvar1[:,iz]*var3
     1360
     1361            dnamesvar = ['Time','bottom_top']
     1362
    13041363        dvnamesvar = ncvar.var_dim_dimv(dnamesvar,dnames,dvnames)
    13051364
     
    13211380
    13221381        # un-staggering variables
    1323         unstgdims = [var0.shape[0], var0.shape[1], var0.shape[2], var0.shape[3]-1]
     1382        if len(var0.shape) == 4:
     1383            unstgdims = [var0.shape[0], var0.shape[1], var0.shape[2], var0.shape[3]-1]
     1384        elif len(var0.shape) == 3:
     1385            # Asuming sunding point (dimt, dimz, dimstgx)
     1386            unstgdims = [var0.shape[0], var0.shape[1]]
     1387
    13241388        ua = np.zeros(tuple(unstgdims), dtype=np.float)
    13251389        va = np.zeros(tuple(unstgdims), dtype=np.float)
    13261390        unstgvar0 = np.zeros(tuple(unstgdims), dtype=np.float)
    13271391        unstgvar1 = np.zeros(tuple(unstgdims), dtype=np.float)
    1328         unstgvar0 = 0.5*(var0[:,:,:,0:var0.shape[3]-1] + var0[:,:,:,1:var0.shape[3]])
    1329         unstgvar1 = 0.5*(var1[:,:,0:var1.shape[2]-1,:] + var1[:,:,1:var1.shape[2],:])
    1330 
    1331         for iz in range(var0.shape[1]):
    1332             ua[:,iz,:,:] = unstgvar0[:,iz,:,:]*var3 - unstgvar1[:,iz,:,:]*var2
    1333             va[:,iz,:,:] = unstgvar0[:,iz,:,:]*var2 + unstgvar1[:,iz,:,:]*var3
    1334 
    1335         dnamesvar = ['Time','bottom_top','south_north','west_east']
     1392
     1393        if len(var0.shape) == 4:
     1394            unstgvar0 = 0.5*(var0[:,:,:,0:var0.shape[3]-1] + var0[:,:,:,1:var0.shape[3]])
     1395            unstgvar1 = 0.5*(var1[:,:,0:var1.shape[2]-1,:] + var1[:,:,1:var1.shape[2],:])
     1396
     1397            for iz in range(var0.shape[1]):
     1398                ua[:,iz,:,:] = unstgvar0[:,iz,:,:]*var3 - unstgvar1[:,iz,:,:]*var2
     1399                va[:,iz,:,:] = unstgvar0[:,iz,:,:]*var2 + unstgvar1[:,iz,:,:]*var3
     1400
     1401            dnamesvar = ['Time','bottom_top','south_north','west_east']
     1402
     1403        elif len(var0.shape) == 3:
     1404            unstgvar0 = 0.5*(var0[:,:,0] + var0[:,:,1])
     1405            unstgvar1 = 0.5*(var1[:,:,0] + var1[:,:,1])
     1406            for iz in range(var0.shape[1]):
     1407                ua[:,iz] = unstgvar0[:,iz]*var3 - unstgvar1[:,iz]*var2
     1408                va[:,iz] = unstgvar0[:,iz]*var2 + unstgvar1[:,iz]*var3
     1409
     1410            dnamesvar = ['Time','bottom_top']
     1411
    13361412        dvnamesvar = ncvar.var_dim_dimv(dnamesvar,dnames,dvnames)
    13371413
     
    13601436    elif diagn == 'ws':
    13611437           
    1362         var0 = ncobj.variables[depvars[0]][:]
    1363         var1 = ncobj.variables[depvars[1]][:]
    13641438        # un-staggering variables
    1365         unstgdims = [var0.shape[0], var0.shape[1], var0.shape[2], var0.shape[3]-1]
     1439        if len(var0.shape) == 4:
     1440            unstgdims = [var0.shape[0], var0.shape[1], var0.shape[2], var0.shape[3]-1]
     1441        elif len(var0.shape) == 3:
     1442            # Asuming sunding point (dimt, dimz, dimstgx)
     1443            unstgdims = [var0.shape[0], var0.shape[1]]
     1444
     1445        ua = np.zeros(tuple(unstgdims), dtype=np.float)
    13661446        va = np.zeros(tuple(unstgdims), dtype=np.float)
    13671447        unstgvar0 = np.zeros(tuple(unstgdims), dtype=np.float)
    13681448        unstgvar1 = np.zeros(tuple(unstgdims), dtype=np.float)
    1369         unstgvar0 = 0.5*(var0[:,:,:,0:var0.shape[3]-1] + var0[:,:,:,1:var0.shape[3]])
    1370         unstgvar1 = 0.5*(var1[:,:,0:var1.shape[2]-1,:] + var1[:,:,1:var1.shape[2],:])
    1371 
    1372         dnamesvar = ['Time','bottom_top','south_north','west_east']
     1449
     1450        if len(var0.shape) == 4:
     1451            unstgvar0 = 0.5*(var0[:,:,:,0:var0.shape[3]-1] + var0[:,:,:,1:var0.shape[3]])
     1452            unstgvar1 = 0.5*(var1[:,:,0:var1.shape[2]-1,:] + var1[:,:,1:var1.shape[2],:])
     1453
     1454            for iz in range(var0.shape[1]):
     1455                ua[:,iz,:,:] = unstgvar0[:,iz,:,:]*var3 - unstgvar1[:,iz,:,:]*var2
     1456                va[:,iz,:,:] = unstgvar0[:,iz,:,:]*var2 + unstgvar1[:,iz,:,:]*var3
     1457
     1458            dnamesvar = ['Time','bottom_top','south_north','west_east']
     1459
     1460        elif len(var0.shape) == 3:
     1461            unstgvar0 = 0.5*(var0[:,:,0] + var0[:,:,1])
     1462            unstgvar1 = 0.5*(var1[:,:,0] + var1[:,:,1])
     1463            for iz in range(var0.shape[1]):
     1464                ua[:,iz] = unstgvar0[:,iz]*var3 - unstgvar1[:,iz]*var2
     1465                va[:,iz] = unstgvar0[:,iz]*var2 + unstgvar1[:,iz]*var3
     1466
     1467            dnamesvar = ['Time','bottom_top']
     1468
    13731469        diagout = np.sqrt(unstgvar0*unstgvar0 + unstgvar1*unstgvar1)
    13741470
Note: See TracChangeset for help on using the changeset viewer.