|
1 | 1 | import xarray as xr |
2 | 2 | import numpy as np |
3 | | -import sys |
| 3 | +# import sys |
4 | 4 |
|
5 | 5 | file_clm5 = "/p/project1/cjibg36/jibg3674/eCLM_static-file-generator/surfdata_EUR-11_hist_78pfts_CMIP6_simyr2005_c251022.nc" |
6 | 6 | file_glc2000 = "/p/project1/cjibg36/jibg3674/TSMP_EUR-11/static.resource/08_LandCover/GLC2000_PFT_urban.nc" |
|
14 | 14 | # print(open_clm5["PCT_CLAY"].dims, open_clm["PCT_CLAY"].dims) |
15 | 15 | # print(open_clm5["PCT_CLAY"].shape, open_clm["PCT_CLAY"].shape) |
16 | 16 |
|
17 | | -open_clm5['PCT_CLAY'][:] = open_clm['PCT_CLAY'].values |
18 | | -open_clm5['PCT_SAND'][:] = open_clm['PCT_SAND'].values |
19 | | -open_clm5['ORGANIC'][:] = open_clm['ORGANIC'].values |
| 17 | +open_clm5["PCT_CLAY"][:] = open_clm["PCT_CLAY"].values |
| 18 | +open_clm5["PCT_SAND"][:] = open_clm["PCT_SAND"].values |
| 19 | +open_clm5["ORGANIC"][:] = open_clm["ORGANIC"].values |
20 | 20 |
|
21 | 21 | open_clm5["PCT_WETLAND"][:] = 0 |
22 | | -open_clm5['PCT_URBAN'][2,:,:] = open_glc2000['PCT_PFT'][19,:,:].values |
23 | | -open_clm5['PCT_URBAN'][1,:,:] = 0 |
24 | | -open_clm5['PCT_GLACIER'][:,:] = open_glc2000['PCT_PFT'][18,:,:].values |
25 | | -open_clm5['PCT_LAKE'][:,:] = open_glc2000['PCT_PFT'][17,:,:].values |
| 22 | +open_clm5["PCT_URBAN"][2, :, :] = open_glc2000["PCT_PFT"][19, :, :].values |
| 23 | +open_clm5["PCT_URBAN"][1, :, :] = 0 |
| 24 | +open_clm5["PCT_GLACIER"][:, :] = open_glc2000["PCT_PFT"][18, :, :].values |
| 25 | +open_clm5["PCT_LAKE"][:, :] = open_glc2000["PCT_PFT"][17, :, :].values |
26 | 26 |
|
27 | 27 | open_clm5["PCT_CROP"][:, :] = open_glc2000["PCT_PFT"][15, :, :].values |
28 | | -open_clm5["PCT_NATVEG"][:, :] = np.sum(open_glc2000["PCT_PFT"][0:15, :, :].values, axis=0) |
| 28 | +open_clm5["PCT_NATVEG"][:, :] = np.sum( |
| 29 | + open_glc2000["PCT_PFT"][0:15, :, :].values, axis=0 |
| 30 | +) |
29 | 31 | open_clm5["PCT_NAT_PFT"][0:15, :, :] = open_glc2000["PCT_PFT"][0:15, :, :].values |
30 | 32 |
|
31 | | -sum_patch = ( |
| 33 | +sum_gridcell = ( |
32 | 34 | open_clm5["PCT_NATVEG"].values |
33 | 35 | + open_clm5["PCT_CROP"].values |
34 | 36 | + np.sum(open_clm5["PCT_URBAN"].values, axis=0) |
35 | 37 | + open_clm5["PCT_LAKE"].values |
36 | | - + open_clm5["PCT_GLACIER"].values) |
37 | | -print("Min sum_patch:", np.nanmin(sum_patch)) |
38 | | -print("Max sum_patch:", np.nanmax(sum_patch)) |
| 38 | + + open_clm5["PCT_GLACIER"].values |
| 39 | +) |
| 40 | +print("Min sum_gridcell:", np.nanmin(sum_gridcell)) |
| 41 | +print("Max sum_gridcell:", np.nanmax(sum_gridcell)) |
39 | 42 |
|
40 | 43 | # Compute scaling factor, with safety margin |
41 | | -scale = np.where(sum_patch > 0, 100 / sum_patch, 1.0) |
| 44 | +scale = np.where(sum_gridcell > 0, 100 / sum_gridcell, 1.0) |
42 | 45 | for v in ["PCT_NATVEG", "PCT_CROP", "PCT_LAKE", "PCT_GLACIER", "PCT_URBAN"]: |
43 | 46 | open_clm5[v].values *= scale |
44 | | -print("New sum_patch (min, max):", np.nanmin(sum_patch * scale), np.nanmax(sum_patch * scale)) |
| 47 | +print( |
| 48 | + "New sum_gridcell (min, max):", |
| 49 | + np.nanmin(sum_gridcell * scale), |
| 50 | + np.nanmax(sum_gridcell * scale), |
| 51 | +) |
45 | 52 |
|
46 | 53 |
|
47 | 54 | pctspec = ( |
48 | | - open_clm5["PCT_LAKE"].values + |
49 | | - open_clm5["PCT_WETLAND"].values + |
50 | | - open_clm5["PCT_GLACIER"].values + |
51 | | - np.sum(open_clm5["PCT_URBAN"].values, axis=0) |
| 55 | + open_clm5["PCT_LAKE"].values |
| 56 | + + open_clm5["PCT_WETLAND"].values |
| 57 | + + open_clm5["PCT_GLACIER"].values |
| 58 | + + np.sum(open_clm5["PCT_URBAN"].values, axis=0) |
52 | 59 | ) |
53 | 60 | print("Max pctspec:", np.nanmax(pctspec)) |
54 | 61 |
|
55 | | -natpft = open_clm5["PCT_NAT_PFT"].values |
| 62 | +natpft = open_clm5["PCT_NAT_PFT"].values |
56 | 63 | sum_natpft = np.sum(natpft, axis=0) |
57 | | -sum_crop = np.sum(open_clm5["PCT_CFT"].values, axis=0) |
| 64 | +sum_crop = np.sum(open_clm5["PCT_CFT"].values, axis=0) |
58 | 65 | print("Min sum_natpft:", np.nanmin(sum_natpft)) |
59 | 66 | print("Max sum_natpft:", np.nanmax(sum_natpft)) |
60 | 67 | print("Min sum_crop:", np.nanmin(sum_crop)) |
|
67 | 74 | mask_zero = sum_natpft == 0 |
68 | 75 | open_clm5["PCT_NAT_PFT"].values[0, mask_zero] = 100.0 |
69 | 76 |
|
70 | | -print("New sum_natpft (min, max):", |
71 | | - np.nanmin(np.sum(open_clm5["PCT_NAT_PFT"].values, axis=0)), |
72 | | - np.nanmax(np.sum(open_clm5["PCT_NAT_PFT"].values, axis=0))) |
| 77 | +print( |
| 78 | + "New sum_natpft (min, max):", |
| 79 | + np.nanmin(np.sum(open_clm5["PCT_NAT_PFT"].values, axis=0)), |
| 80 | + np.nanmax(np.sum(open_clm5["PCT_NAT_PFT"].values, axis=0)), |
| 81 | +) |
73 | 82 |
|
74 | 83 | open_clm5.to_netcdf(file_dest) |
75 | 84 | print(f"Saved modified surfdata to:\n{file_dest}") |
76 | 85 |
|
77 | 86 | open_clm5.close() |
78 | 87 | open_glc2000.close() |
79 | 88 | open_clm.close() |
80 | | - |
|
0 commit comments