示例#1
0
 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)
示例#2
0
 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)
示例#3
0
文件: winds.py 项目: brorfred/njord
 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
示例#4
0
 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
示例#5
0
 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)
示例#6
0
    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'
示例#7
0
文件: cesm.py 项目: brorfred/njord
    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'