示例#1
0
    lat = file_ctl.variables["lat"]
    lon = file_ctl.variables["lon"]

    # read data and calculate mean/min/max
    for iv in range(0, varnms_toa.size):
        dtctl_toa=file_ctl_fssd.variables[varnms_toa[iv]][:,:,:] - \
                  file_ctl.variables[varnms_sub_toa[iv]][:,:,:]
        dtexp_toa=file_exp_fssd.variables[varnms_toa[iv]][:,:,:] - \
                  file_exp.variables[varnms_sub_toa[iv]][:,:,:]
        dtctl_sfc=file_ctl.variables[varnms_sfc[iv]][:,:,:] - \
                  file_ctl.variables[varnms_sub_sfc[iv]][:,:,:]
        dtexp_sfc=file_exp.variables[varnms_sfc[iv]][:,:,:] - \
                  file_exp.variables[varnms_sub_sfc[iv]][:,:,:]

        means_yby_ctl_toa[iy,
                          iv] = get_area_mean_min_max(dtctl_toa[0, :, :],
                                                      lat[:])[0]
        means_yby_exp_toa[iy,
                          iv] = get_area_mean_min_max(dtexp_toa[0, :, :],
                                                      lat[:])[0]
        means_yby_ctl_sfc[iy,
                          iv] = get_area_mean_min_max(dtctl_sfc[0, :, :],
                                                      lat[:])[0]
        means_yby_exp_sfc[iy,
                          iv] = get_area_mean_min_max(dtexp_sfc[0, :, :],
                                                      lat[:])[0]

# compute multi-year mean at TOA -->
means_ctl_toa = np.mean(means_yby_ctl_toa, axis=0)
means_exp_toa = np.mean(means_yby_exp_toa, axis=0)

# stadard deviation at TOA -->
    file_ctl=netcdf_dataset(fctl,"r")
    file_exp=netcdf_dataset(fexp,"r")
    
    # read lat and lon
    lat=file_ctl.variables["lat"]
    lon=file_ctl.variables["lon"]
 
    means_yby_exp_fice[iy,:]=means_yby_exp_fice[iy,:]+np.mean(file_exp.variables["ICEFRAC"][0,:,:],axis=1)   

    # read data and calculate mean/min/max
    vn="TMQ"
    dtctl_wv=file_ctl.variables[vn][0,:,:]
    dtexp_wv=file_exp.variables[vn][0,:,:] 
    means_yby_ctl_wv[iy,:]= means_yby_ctl_wv[iy,:] + np.mean(dtctl_wv[:,:],axis=1)
    means_yby_exp_wv[iy,:]= means_yby_exp_wv[iy,:] + np.mean(dtexp_wv[:,:],axis=1)
    gm_yby_ctl_wv[iy]=gm_yby_ctl_wv[iy]+get_area_mean_min_max(dtctl_wv[:,:],lat[:])[0]
    gm_yby_exp_wv[iy]=gm_yby_exp_wv[iy]+get_area_mean_min_max(dtexp_wv[:,:],lat[:])[0]

    vn="TGCLDCWP"
    dtctl_lwp=file_ctl.variables[vn][0,:,:]*1000.
    dtexp_lwp=file_exp.variables[vn][0,:,:]*1000. 
    means_yby_ctl_lwp[iy,:]= means_yby_ctl_lwp[iy,:] + np.mean(dtctl_lwp[:,:],axis=1)
    means_yby_exp_lwp[iy,:]= means_yby_exp_lwp[iy,:] + np.mean(dtexp_lwp[:,:],axis=1)
    gm_yby_ctl_lwp[iy]=gm_yby_ctl_lwp[iy]+get_area_mean_min_max(dtctl_lwp[:,:],lat[:])[0]
    gm_yby_exp_lwp[iy]=gm_yby_exp_lwp[iy]+get_area_mean_min_max(dtexp_lwp[:,:],lat[:])[0]

    vn="TS"
    dtctl_ts=file_ctl.variables[vn][0,:,:]
    dtexp_ts=file_exp.variables[vn][0,:,:] 
    means_yby_ctl_ts[iy,:]= means_yby_ctl_ts[iy,:] + np.mean(dtctl_ts[:,:],axis=1)
    means_yby_exp_ts[iy,:]= means_yby_exp_ts[iy,:] + np.mean(dtexp_ts[:,:],axis=1)
示例#3
0
    figure_name = 'fig_Arctic_VIS_albedo_CESM2'
    latbound1 = np.min(np.where(lat[:] > 55))
    latbound2 = nlat
    projection = ccrs.NorthPolarStereo(central_longitude=0)
elif pole is 'S':
    figure_name = 'fig_Antarctic_VIS_albedo_CESM2'
    latbound1 = 0
    latbound2 = np.max(np.where(lat[:] < -55)) + 1
    projection = ccrs.SouthPolarStereo(central_longitude=0)
#print(latbound2)
#exit()

#-- calculate area mean --
tmp = np.zeros((nlat, nlon))
tmp[:, :] = dtctl[0, :, :-1]
stats_ctl = get_area_mean_min_max(tmp[latbound1:latbound2, :],
                                  lat[latbound1:latbound2])
tmp[:, :] = dtexp[0, :, :-1]
stats_exp = get_area_mean_min_max(tmp[latbound1:latbound2, :],
                                  lat[latbound1:latbound2])
tmp[:, :] = dtdif[0, :, :-1]
stats_dif = get_area_mean_min_max(tmp[latbound1:latbound2, :],
                                  lat[latbound1:latbound2])
print(stats_dif)

#parameters=get_parameters(varnm,season)
#projection = ccrs.PlateCarree(central_longitude=0)

#fig = plt.figure(figsize=[7.0,11.0],dpi=150.)

fig = plt.figure(figsize=(5, 5))
plotTitle = {'fontsize': 13.}
示例#4
0
# read lat and lon
lat = file_ctl.variables["lat"]
lon = file_ctl.variables["lon"]

dtctl_fice = file_ctl.variables["ICEFRAC"][0, :, :]
means_yby_ctl_fice[:] = np.mean(dtctl_fice[:, :], axis=1)

# read data and calculate mean/min/max
for vn in varnms_vis_dn:
    dtctl_dn = file_ctl.variables[vn][0, :, :]
    dtexp_dn = file_exp.variables[vn][0, :, :]
    means_yby_ctl_dn[0, :] = means_yby_ctl_dn[0, :] + np.mean(dtctl_dn[:, :],
                                                              axis=1)
    means_yby_exp_dn[0, :] = means_yby_exp_dn[0, :] + np.mean(dtexp_dn[:, :],
                                                              axis=1)
    gm_yby_ctl_dn[0] = gm_yby_ctl_dn[0] + get_area_mean_min_max(
        dtctl_dn[:, :], lat[:])[0]
    gm_yby_exp_dn[0] = gm_yby_exp_dn[0] + get_area_mean_min_max(
        dtexp_dn[:, :], lat[:])[0]

for vn in varnms_nir_dn:
    dtctl_dn = file_ctl.variables[vn][0, :, :]
    dtexp_dn = file_exp.variables[vn][0, :, :]
    means_yby_ctl_dn[1, :] = means_yby_ctl_dn[1, :] + np.mean(dtctl_dn[:, :],
                                                              axis=1)  #[0,:]
    means_yby_exp_dn[1, :] = means_yby_exp_dn[1, :] + np.mean(dtexp_dn[:, :],
                                                              axis=1)  #[0,:]
    gm_yby_ctl_dn[1] = gm_yby_ctl_dn[1] + get_area_mean_min_max(
        dtctl_dn[:, :], lat[:])[0]
    gm_yby_exp_dn[1] = gm_yby_exp_dn[1] + get_area_mean_min_max(
        dtexp_dn[:, :], lat[:])[0]
示例#5
0
    file_ctl_diag=netcdf_dataset(fctl_diag,"r")
    file_exp_diag=netcdf_dataset(fexp_diag,"r")

    # read lat and lon
    lat=file_ctl.variables["lat"]
    lon=file_ctl.variables["lon"]
 
    means_yby_exp_fice[iy,:]=means_yby_exp_fice[iy,:]+np.mean(file_exp.variables["ICEFRAC"][0,:,:],axis=1)   

    # read data and calculate mean/min/max
    for vn in varnms_vis_dn:
        dtctl_dn=file_ctl.variables[vn][0,:,:]
        dtexp_dn=file_exp.variables[vn][0,:,:] 
        means_yby_ctl_dn[iy,0,:]= means_yby_ctl_dn[iy,0,:] + np.mean(dtctl_dn[:,:],axis=1)
        means_yby_exp_dn[iy,0,:]= means_yby_exp_dn[iy,0,:] + np.mean(dtexp_dn[:,:],axis=1)
        gm_yby_ctl_dn[0,iy]=gm_yby_ctl_dn[0,iy]+get_area_mean_min_max(dtctl_dn[:,:],lat[:])[0]
        gm_yby_exp_dn[0,iy]=gm_yby_exp_dn[0,iy]+get_area_mean_min_max(dtexp_dn[:,:],lat[:])[0]

        dtctl_dn_diag=file_ctl_diag.variables[vn][0,:,:]
        dtexp_dn_diag=file_exp_diag.variables[vn][0,:,:] 
        means_yby_ctl_dn_diag[iy,0,:]= means_yby_ctl_dn_diag[iy,0,:] + \
                                       np.mean(dtctl_dn_diag[:,:],axis=1)
        means_yby_exp_dn_diag[iy,0,:]= means_yby_exp_dn_diag[iy,0,:] + \
                                       np.mean(dtexp_dn_diag[:,:],axis=1)
        gm_yby_ctl_dn_diag[0,iy]=gm_yby_ctl_dn_diag[0,iy] + \
                                 get_area_mean_min_max(dtctl_dn_diag[:,:],lat[:])[0]
        gm_yby_exp_dn_diag[0,iy]=gm_yby_exp_dn_diag[0,iy] + \
                                 get_area_mean_min_max(dtexp_dn_diag[:,:],lat[:])[0]

    for vn in varnms_nir_dn:
        dtctl_dn=file_ctl.variables[vn][0,:,:]
示例#6
0
        else:
            icef_snw = icef_snw_tmp + icef_snw
            icef_bare = icef_bare_tmp + icef_bare
            ocnf_open = ocnf_open_tmp + ocnf_open
    icef_snw = icef_snw / 3.
    icef_bare = icef_bare / 3.
    ocnf_open = ocnf_open / 3.
    #icef_snw = np.where(lndf_ctl < 0.01, icef_snw, np.nan)
    #icef_bare = np.where(lndf_ctl < 0.01, icef_bare, np.nan)
    #ocnf_open = np.where(lndf_ctl < 0.01, ocnf_open, np.nan)

    # compute Arctic and Antarctic averages
    # 1. Arctic
    latbound1 = np.min(np.where(lat[:] > 55))
    latbound2 = lat.size
    means_NH[iss,0]=get_area_mean_min_max( \
                     ocnf_open[0,latbound1:latbound2,:],lat[latbound1:latbound2])[0]
    means_NH[iss,1]=get_area_mean_min_max( \
                     icef_snw[0,latbound1:latbound2,:],lat[latbound1:latbound2])[0]
    means_NH[iss,2]=get_area_mean_min_max( \
                     icef_bare[0,latbound1:latbound2,:],lat[latbound1:latbound2])[0]
    means_NH[iss, :] = means_NH[iss, :] / np.sum(means_NH[iss, :])

    # 2. Antarctic
    latbound1 = 0
    latbound2 = np.max(np.where(lat[:] < -55)) + 1
    means_SH[iss,0]=get_area_mean_min_max( \
                     ocnf_open[0,latbound1:latbound2,:],lat[latbound1:latbound2])[0]
    means_SH[iss,1]=get_area_mean_min_max( \
                     icef_snw[0,latbound1:latbound2,:],lat[latbound1:latbound2])[0]
    means_SH[iss,2]=get_area_mean_min_max( \
                     icef_bare[0,latbound1:latbound2,:],lat[latbound1:latbound2])[0]
    lat = file_ctl.variables["lat"]
    lon = file_ctl.variables["lon"]

    means_yby_exp_fice[iy, :] = means_yby_exp_fice[iy, :] + np.mean(
        file_exp.variables["ICEFRAC"][0, :, :], axis=1)

    # read data and calculate mean/min/max
    vn = "CLDHGH"
    dtctl_cldhgh = file_ctl.variables[vn][0, :, :] * 100.
    dtexp_cldhgh = file_exp.variables[vn][0, :, :] * 100.
    means_yby_ctl_cldhgh[iy, :] = means_yby_ctl_cldhgh[iy, :] + np.mean(
        dtctl_cldhgh[:, :], axis=1)
    means_yby_exp_cldhgh[iy, :] = means_yby_exp_cldhgh[iy, :] + np.mean(
        dtexp_cldhgh[:, :], axis=1)
    gm_yby_ctl_cldhgh[iy]=gm_yby_ctl_cldhgh[iy] + \
                          get_area_mean_min_max(dtctl_cldhgh[:,:],lat[:])[0]
    gm_yby_exp_cldhgh[iy]=gm_yby_exp_cldhgh[iy] + \
                          get_area_mean_min_max(dtexp_cldhgh[:,:],lat[:])[0]

    vn = "CLDMED"
    dtctl_cldmed = file_ctl.variables[vn][0, :, :] * 100.
    dtexp_cldmed = file_exp.variables[vn][0, :, :] * 100.
    means_yby_ctl_cldmed[iy, :] = means_yby_ctl_cldmed[iy, :] + np.mean(
        dtctl_cldmed[:, :], axis=1)
    means_yby_exp_cldmed[iy, :] = means_yby_exp_cldmed[iy, :] + np.mean(
        dtexp_cldmed[:, :], axis=1)
    gm_yby_ctl_cldmed[iy]=gm_yby_ctl_cldmed[iy] + \
                          get_area_mean_min_max(dtctl_cldmed[:,:],lat[:])[0]
    gm_yby_exp_cldmed[iy]=gm_yby_exp_cldmed[iy] + \
                          get_area_mean_min_max(dtexp_cldmed[:,:],lat[:])[0]
示例#8
0
# data path
ctl_name = "CTL"  #"CTL" #os.environ["ctl_name"]
ctl_pref = "solar_" + ctl_name + "_cesm211_ETEST-f19_g17-ens_mean_2010-2019"

fpath_ctl = "/raid00/xianwen/cesm211_solar/" + ctl_pref + "/climo/"

f1 = fpath_ctl + ctl_pref + "_climo_ANN.nc"

print(f1)

varlst=["SOLIN","FSNTOA","FSNTOAC","FLUT","FLUTC", \
        "FSDS","FSDSC","FSNS","FSNSC","FLDS","FLNS","FLNSC","LHFLX","SHFLX"]

# open data file
file_ctl = netcdf_dataset(f1, "r")

# read lat and lon
lat = file_ctl.variables["lat"]
lon = file_ctl.variables["lon"]
lat_N = np.min(np.where(lat[:] > 60.))
lat_S = np.max(np.where(lat[:] < -60.)) + 1

pole = "N"
for var in varlst:
    dtctl = file_ctl.variables[var][0, :, :]  #[time,lat,lon]
    if pole == "S":
        stat = get_area_mean_min_max(dtctl[0:lat_S, :], lat[0:lat_S])
    elif pole == "N":
        stat = get_area_mean_min_max(dtctl[lat_N:, :], lat[lat_N:])
    print(var, round(stat[0], 1))