def vertdata(ncbase,jobid,z,var,latbounds):
    lat = np.array(ncbase.variables['latitude'],dtype=np.float64)[:]
    lon = np.array(ncbase.variables['longitude'],dtype=np.float64)[:]
    hgt = np.array(ncbase.variables['level_height'],dtype=np.float64)[:]
    mon1 = np.array(ncbase.variables['time'],dtype=np.float64)
    mon1 = mon1[jobs.spinup(jobid)[0]:jobs.spinup(jobid)[1]]
    mon = mon1[:]
    high = np.where(hgt>=z[1]*1E3)[0][0]+1
    low = np.where(hgt>=z[0]*1E3)[0][0]
    south = np.where(lat==latbounds[0])[0][0]
    north = np.where(lat==latbounds[1])[0][0]+1
#    attributes=variables_attributes.attributes(var)
    # Convert unit
    unit1=units.diagnostic(var)
    if unit1=='':
        unit1 = data.unit
    conversion = convert_unit.convert(unit1,var)
    # DATA
    data = ncbase.variables[var][jobs.spinup(jobid)[0]:jobs.spinup(jobid)[1]]    
    data = data[:]*conversion
    # Vertical profile
    years=[]
    for y in range(0,len(data)/12):
        years.append(np.mean(np.mean(np.mean(data[y*12:(y+1)*12,low:high,south:north,:], axis=3, dtype=np.float64), axis=2, dtype=np.float64), axis=0, dtype=np.float64))
    data1 = np.mean(years, axis=0, dtype=np.float64)
    sd = np.std(years, axis=0, dtype=np.float64)
    # Standard deviation
    sdbelow = data1[:]-sd[:]
    sdabove = data1[:]+sd[:]
    return data1,sdbelow,sdabove
Exemple #2
0
def dimensions(ncbase,jobid):
    lat = np.array(ncbase.variables['latitude'],dtype=np.float64)[:]
    lon = np.array(ncbase.variables['longitude'],dtype=np.float64)[:]
    hgt = np.array(ncbase.variables['level_height'],dtype=np.float64)[:]
    mon = np.array(ncbase.variables['time'],dtype=np.float64)\
           [jobs.spinup(jobid)[0]:jobs.spinup(jobid)[1]]
    return lat,lon,hgt,mon
Exemple #3
0
def mapdata(ncbase,jobid,z,var):
# ncbase = time,model_level_number,latitude,longitude
    lat = np.array(ncbase.variables['latitude'],dtype=np.float64)[:]
    lon = np.array(ncbase.variables['longitude'],dtype=np.float64)[:]
    hgt = np.array(ncbase.variables['level_height'],dtype=np.float64)[:]
    mon = np.array(ncbase.variables['time'],dtype=np.float64)\
                  [jobs.spinup(jobid)[0]:jobs.spinup(jobid)[1]]
    high = np.where(hgt>=z[1]*1E3)[0][0]+1
    low = np.where(hgt>=z[0]*1E3)[0][0]
    # Airmass
    file1 = '/scratch/ih280/um/'+jobid+'/pm_'+jobid+'_oh.nc'
    ncbase1 = ncdf.Dataset(file1,'r')
    airmass = np.array(ncbase1.variables['field643'], dtype=np.float64)[:]
    # Convert unit
    unit1=units.diagnostic(var)
    conversion = convert_unit.convert2(unit1,var,airmass)
    # DATA
    data = ncbase.variables[var][jobs.spinup(jobid)[0]:jobs.spinup(jobid)[1]]
    if np.shape(conversion)>(1,):
        conversion = np.resize(conversion,(len(data), 60, 73, 96))
    data = data[:]*conversion
    # Map
    years=[]
    for y in range(0,len(data)/12):
        years.append(np.mean(np.mean(data[y*12:(y+1)*12,low:high,:,:], axis=1, dtype=np.float64), axis=0, dtype=np.float64))
    data1 = np.mean(years, axis=0, dtype=np.float64)
    sd = np.std(years, axis=0, dtype=np.float64)
    sdbelow = data1[:]-sd[:]
    sdabove = data1[:]+sd[:]
    return data1,sdbelow,sdabove
Exemple #4
0
def dimensions(ncbase, jobid):
    lat = np.array(ncbase.variables['latitude'], dtype=np.float64)[:]
    lon = np.array(ncbase.variables['longitude'], dtype=np.float64)[:]
    hgt = np.array(ncbase.variables['level_height'], dtype=np.float64)[:]
    mon = np.array(ncbase.variables['time'],dtype=np.float64)\
           [jobs.spinup(jobid)[0]:jobs.spinup(jobid)[1]]
    return lat, lon, hgt, mon
Exemple #5
0
def season(ncbase, jobid, var):
    data = ncbase.variables[var][jobs.spinup(jobid)[0]:jobs.spinup(jobid)[1]]
    for y in range(0, len(data) / 12 - 1):
        mam = np.mean(data[2 + y * 12:5 + y * 12], axis=0)
        jja = np.mean(data[5 + y * 12:8 + y * 12], axis=0)
        son = np.mean(data[8 + y * 12:12 + y * 12], axis=0)
        d = np.mean(data[12 + y * 12:13 + y * 12], axis=0)
        jf = np.mean(data[0 + y * 12:2 + y * 12], axis=0)
        djf = np.mean([d, jf], axis=0)
    return djf, mam, jja, son
def season(ncbase,jobid, var):
    data = ncbase.variables[var][jobs.spinup(jobid)[0]:jobs.spinup(jobid)[1]]
    for y in range(0,len(data)/12-1):
       mam = np.mean(data[2+y*12:5+y*12],axis=0)
       jja = np.mean(data[5+y*12:8+y*12],axis=0)
       son = np.mean(data[8+y*12:12+y*12],axis=0)
       d   = np.mean(data[12+y*12:13+y*12],axis=0)
       jf  = np.mean(data[0+y*12:2+y*12],axis=0)
       djf = np.mean([d,jf],axis=0)
    return djf,mam,jja,son
Exemple #7
0
def vertdata(ncbase, jobid, z, var, latbounds):
    lat = np.array(ncbase.variables['latitude'], dtype=np.float64)[:]
    lon = np.array(ncbase.variables['longitude'], dtype=np.float64)[:]
    hgt = np.array(ncbase.variables['level_height'], dtype=np.float64)[:]
    mon1 = np.array(ncbase.variables['time'], dtype=np.float64)
    mon1 = mon1[jobs.spinup(jobid)[0]:jobs.spinup(jobid)[1]]
    mon = mon1[:]
    high = np.where(hgt >= z[1] * 1E3)[0][0] + 1
    low = np.where(hgt >= z[0] * 1E3)[0][0]
    south = np.where(lat == latbounds[0])[0][0]
    north = np.where(lat == latbounds[1])[0][0] + 1
    #    attributes=variables_attributes.attributes(var)
    # Convert unit
    unit1 = units.diagnostic(var)
    if unit1 == '':
        unit1 = data.unit
    conversion = convert_unit.convert(unit1, var)
    # DATA
    data = ncbase.variables[var][jobs.spinup(jobid)[0]:jobs.spinup(jobid)[1]]
    data = data[:] * conversion
    # Vertical profile
    years = []
    for y in range(0, len(data) / 12):
        years.append(
            np.mean(np.mean(np.mean(data[y * 12:(y + 1) * 12, low:high,
                                         south:north, :],
                                    axis=3,
                                    dtype=np.float64),
                            axis=2,
                            dtype=np.float64),
                    axis=0,
                    dtype=np.float64))
    data1 = np.mean(years, axis=0, dtype=np.float64)
    sd = np.std(years, axis=0, dtype=np.float64)
    # Standard deviation
    sdbelow = data1[:] - sd[:]
    sdabove = data1[:] + sd[:]
    return data1, sdbelow, sdabove