def setup_grid(self): """Define lat and lon matrices for njord""" gc = netcdf_file(self.gridfile) self.lat = gc.variables["lat"][:].copy() lon = gc.variables["lon"][:].copy() lon[lon > 360] = lon[lon > 360] - 360 self.lon, self.gr = gmtgrid.config(lon, dim=0) self.llon, self.llat = np.meshgrid(self.lon, self.lat)
def setup_grid(self): """Define lat and lon matrices for njord""" gc = netcdf_file(self.gridfile) self.lat = gc.variables['lat'][:].copy() lon = gc.variables['lon'][:].copy() lon[lon > 360] = lon[lon > 360] - 360 self.lon, self.gr = gmtgrid.config(lon, dim=0) self.llon, self.llat = np.meshgrid(self.lon, self.lat)
def __init__(self,datadir = "/projData/ncep/"): filename = "vwnd.sig995.2008.nc" try: n = pycdf.CDF(datadir + filename) except: print 'Error opening the gridfile %s' % datadir + filename raise self.lat = n.var('lat')[:] self.lon,self.gr = gmtgrid.config(n.var('lon')[:],0) self.llon,self.llat = np.meshgrid(self.lon,self.lat) self.datadir = datadir
def __init__(self, datadir="/projData/ncep/"): filename = "vwnd.sig995.2008.nc" try: n = pycdf.CDF(datadir + filename) except: print 'Error opening the gridfile %s' % datadir + filename raise self.lat = n.var('lat')[:] self.lon, self.gr = gmtgrid.config(n.var('lon')[:], 0) self.llon, self.llat = np.meshgrid(self.lon, self.lat) self.datadir = datadir
def __init__(self, datadir="/projData/NOBM/",ijarea=[], lat1=None,lat2=None,lon1=None,lon2=None): self.i1 = 0 self.i2 = 287 self.j1 = 0 self.j2 = 233 self.y1, self.y2 = (2003,2010) self.m1, self.m2 = (1,12) self.datadir = datadir self.fieldpref = {'dic':'dic','ssh':'h','npp':'pp','co2':'co2'} lon = np.linspace(0,360,self.i2+2)[:-1] self.lat = np.arange(-84,72,0.667) #np.linspace(-84,72,self.j2+2)[:-1] self.lon,self.gr = gmtgrid.config(lon,dim=0) self.llon,self.llat = np.meshgrid(self.lon,self.lat)
def __init__(self, fname='BEC.gx3.22.pi.cv2.Ar.daily.2004-02.nc', datadir='/projData/CSMBGC/Ar_daily/', t1=None, t2=None, k1=None, k2=None, i1=None, i2=None, j1=None, j2=None, ln='', dt=''): """Init the class and setup the grid. Paths are defined here.""" n = pycdf.CDF(datadir + os.path.split(fname)[1]) g = pycdf.CDF(datadir + 'grid_cell_xy.nc') self.datadir = datadir self.t1 = t1 self.t2 = t2 self.i1 = i1 self.i2 = i2 self.j1 = j1 self.j2 = j2 self.k1 = k1 self.k2 = k2 if t1 > 60: self.tw = t1 - 60 else: self.tw = t1 self.fname = os.path.split(fname)[1] self.llat = self.readfield(n, 'TLAT') self.llon, self.gr = gmtgrid.config(g.var('TLONG')[:], 0) self.llat = self.llat[i1:i2, j1:j2] self.llon = self.llon[i1:i2, j1:j2] self.dz = n.var('dz')[:] / 100 self.dzt = self.dz.copy() self.dyu = cnv(g.var('DYU')[:] / 100, self.gr)[i1:i2, j1:j2] self.dxu = cnv(g.var('DXU')[:] / 100, self.gr)[i1:i2, j1:j2] self.area = cnv(n.var('TAREA')[:] / 100 / 100, self.gr)[i1:i2, j1:j2] self.zlev = n.var('z_t')[:] / 100 self.create_tvec() def lim(val1, val2): if not val1: return val2 return val1 self.t1 = lim(t1, 0) self.t2 = lim(t2, len(self.tvec)) self.i1 = lim(i1, 0) self.i2 = lim(i2, self.llat.shape[0]) self.j1 = lim(j1, 0) self.j2 = lim(j2, self.llat.shape[1]) self.k1 = lim(k1, 0) self.k2 = lim(k2, len(self.zlev)) self.keypref = 'daily_' self.pa = { 'tvec': ('time', 120), 'o2fl': ('FG_O2', -864), 'nwndsqr': ('U10_SQR', 0.0001), 'nwnd': ('', 1), 'arfl': ('FG_Ar', 864), 'o2ss': ('O2SAT', 1), 'arss': ('ArSAT', 1), 'o2pv': ('PV_O2', 864), 'arpv': ('PV_Ar', 864), 'ncpo': ('NCP_O2', 24 * 3600), 'o2ct': ('O2', 1), 'arct': ('Ar', 1), 'mldp': ('HMXL', 1.0e-2), 'uvel': ('UVEL', 864), 'vvel': ('VVEL', 864), 'salt': ('SALT', 1000), 'temp': ('TEMP', 1), 'atpr': ('ATM_PRESS_USED', 1), 'taux': ('TAUX', 1), 'tauy': ('TAUY', 1), 'poco': ('', 1), 'spC': ('spC', 1), 'diatC': ('diatC', 1), 'diazC': ('diazC', 1), 'chlo': ('', 1), 'spChl': ('spChl', 1), 'diatChl': ('diatChl', 1), 'diazChl': ('diazChl', 1), 'o2st': ('', 1), 'arst': ('', 1), 'o2ar': ('', 1), 'dens': ('', 1), 'mldk': ('', 1), 'nn10': ('', 1), 'nrm10': ('', 1), 'wpv': ('', 1), 'ssht': ('', 1), 'icef': ('IFRAC', 1), 'wwfl': ('', 1), 'crwwfl': ('', 1) } self.km = self.dzt.shape[0] self.kr = np.arange(self.km) self.im = self.area.shape[0] self.ir = range(self.im) self.jm = self.area.shape[1] self.jr = range(self.jm) self.vol = np.zeros([self.km, self.im, self.jm]) for k in self.kr: self.vol[k, :, :] = self.area[:, :] * self.dzt[k] self.create_pardict() self.tm = self.tvec.shape[0] self.tr = np.arange(self.tm) self.params = [] self.gcm = 'csm'
def __init__(self, fname='BEC.gx3.22.pi.cv2.Ar.daily.2004-02.nc', datadir='/projData/CSMBGC/Ar_daily/', t1=None, t2=None, k1=None, k2=None, i1=None, i2=None, j1=None, j2=None, ln='', dt=''): """Init the class and setup the grid. Paths are defined here.""" n = pycdf.CDF(datadir + os.path.split(fname)[1]) g = pycdf.CDF(datadir + 'grid_cell_xy.nc') self.datadir = datadir self.t1 = t1; self.t2 = t2 self.i1 = i1; self.i2 = i2 self.j1 = j1; self.j2 = j2 self.k1 = k1; self.k2 = k2 if t1>60: self.tw = t1-60 else: self.tw = t1 self.fname = os.path.split(fname)[1] self.llat = self.readfield(n, 'TLAT') self.llon,self.gr = gmtgrid.config(g.var('TLONG')[:],0) self.llat = self.llat[i1:i2,j1:j2] self.llon = self.llon[i1:i2,j1:j2] self.dz = n.var('dz')[:] / 100 self.dzt = self.dz.copy() self.dyu = cnv(g.var('DYU')[:]/100, self.gr)[i1:i2,j1:j2] self.dxu = cnv(g.var('DXU')[:]/100, self.gr)[i1:i2,j1:j2] self.area = cnv(n.var('TAREA')[:]/100/100, self.gr)[i1:i2,j1:j2] self.zlev = n.var('z_t')[:] /100 self.create_tvec() def lim(val1,val2): if not val1: return val2 return val1 self.t1 = lim(t1,0); self.t2 = lim(t2,len(self.tvec)) self.i1 = lim(i1,0); self.i2 = lim(i2,self.llat.shape[0]) self.j1 = lim(j1,0); self.j2 = lim(j2,self.llat.shape[1]) self.k1 = lim(k1,0); self.k2 = lim(k2,len(self.zlev)) self.keypref = 'daily_' self.pa = {'tvec':('time',120), 'o2fl':('FG_O2',-864), 'nwndsqr':('U10_SQR', 0.0001), 'nwnd':('',1), 'arfl':('FG_Ar', 864), 'o2ss':('O2SAT',1), 'arss':('ArSAT',1), 'o2pv':('PV_O2',864), 'arpv':('PV_Ar',864), 'ncpo':('NCP_O2',24*3600), 'o2ct':('O2',1), 'arct':('Ar',1), 'mldp':('HMXL',1.0e-2), 'uvel':('UVEL',864), 'vvel':('VVEL',864), 'salt':('SALT',1000), 'temp':('TEMP',1), 'atpr':('ATM_PRESS_USED',1), 'taux':('TAUX',1), 'tauy':('TAUY',1), 'poco':('',1), 'spC':('spC',1), 'diatC':('diatC',1), 'diazC':('diazC',1), 'chlo': ('',1), 'spChl': ('spChl',1), 'diatChl': ('diatChl',1), 'diazChl': ('diazChl',1), 'o2st':('',1), 'arst':('',1), 'o2ar':('',1), 'dens':('',1), 'mldk':('',1), 'nn10':('',1), 'nrm10':('',1), 'wpv':('',1), 'ssht':('',1), 'icef':('IFRAC',1), 'wwfl':('',1), 'crwwfl':('',1) } self.km = self.dzt.shape[0]; self.kr = np.arange(self.km) self.im = self.area.shape[0]; self.ir = range(self.im) self.jm = self.area.shape[1]; self.jr = range(self.jm) self.vol = np.zeros([self.km, self.im, self.jm]) for k in self.kr: self.vol[k,:,:]=self.area[:,:] * self.dzt[k] self.create_pardict() self.tm = self.tvec.shape[0]; self.tr = np.arange(self.tm) self.params=[] self.gcm = 'csm'