예제 #1
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
예제 #2
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
예제 #3
0
# dimensions
lat = np.array(ncbase.variables['latitude'], dtype=np.float64)[:]
hgt = np.array(ncbase.variables['level_height'], dtype=np.float64)[:]

data = ncbase.variables[var]
print data

#import numpy.ma as ma
#new_data = np.ma.masked_where(np.ma.getmask(mask), data)

# attributes
attributes = variables_attributes.attributes(var)
name = attributes[0]
formula = attributes[2]
# Convert unit
conversion = convert_unit.convert(unit, var)
data = data[:] * conversion
data = data[:] * mask[:]

#data_m     = data[:]
#np.ma.set_fill_value(data_m,0.)
#data_m[data_m.mask] = data_m.fill_value

# Zonal mean
data1 = np.mean(np.mean(\
 data[:,:,:,:]\
 , axis=3, dtype=np.float64)\
 , axis=0, dtype=np.float64)
#sd1   = np.std(np.mean(\
#	data[:,:,:,:]\
#	, axis=3, dtype=np.float64)\
예제 #4
0
# Read in files
# time,model_level_number,latitude,longitude

file1     = '/'+disk+'/ih280/um/'+jobid+'/'+jobid+stash+'.nc'
ncbase    = ncdf.Dataset(file1,'r')

data       = ncbase.variables[var]
print data

# attributes
attributes = variables_attributes.attributes(var)
varname       = attributes[0]
formula    = attributes[2]

# convert to unit
conversion = convert_unit.convert(unit,var)
data       = data[:]*conversion

#***********************************************************
# Tropospheric mask: 1 for troposphere, 0 other				
#INPUT: 
#ncfile	= file containing tropopause height
#LTROP  = 1 for troposphere (i.e. mask out stratosphere); 0 otherwise
#tmean  = 0 (no time meaning),
#	  1 (climatological monthly mean), 
#	  2 (full time mean), 
#	  in order of most to least expensive!
#         5 (no time dimension)
#nyrs	= length of run in years (if nyrs = 0: entire run)

# VN 7.3: