예제 #1
0
SSSnemo_JAS = nmp.zeros((nj,ni))
SSSnemo_JAS[:,:] = nmp.mean(SSSnemo[6:9,:,:], axis=0)

# Can release some memory!
del Snemo, Sobs, SSSnemo









if l_do_monthly_3d or l_3df_are_annual:
    jk100  = bt.find_index_from_value(100.  , vdepth) ; print 'jk100  = ', jk100,  '=> ', vdepth[jk100]
    jk1000 = bt.find_index_from_value(1000. , vdepth) ; print 'jk1000 = ', jk1000, '=> ', vdepth[jk1000]
    jk3000 = bt.find_index_from_value(3000. , vdepth) ; print 'jk3000 = ', jk3000, '=> ', vdepth[jk3000]
    tdj = [ jk100,   jk1000, jk3000  ]
    tdd_true = [ str(int(round(vdepth[jk100])))+'m' , str(int(round(vdepth[jk1000])))+'m' , str(int(round(vdepth[jk3000])))+'m' ]
    tdd      = [ '100m', '1000m', '3000m' ]
    print '\n', tdd_true[:], '\n'

# Creating 1D long. and lat.:
vlon = nmp.zeros(ni) ; vlon[:] = xlon[0,:]
ji_lat0 = nmp.argmax(xlat[nj-1,:])
vlat = nmp.zeros(nj) ; vlat[:] = xlat[:,ji_lat0]



예제 #2
0
#JAS:
Tnemo_JAS = nmp.zeros((nk, nj, ni))
Tnemo_JAS[:, :, :] = nmp.mean(Tnemo[6:9, :, :, :], axis=0)
Snemo_JAS = nmp.zeros((nk, nj, ni))
Snemo_JAS[:, :, :] = nmp.mean(Snemo[6:9, :, :, :], axis=0)
SSTnemo_JAS = nmp.zeros((nj, ni))
SSTnemo_JAS[:, :] = nmp.mean(SSTnemo[6:9, :, :], axis=0)

Tclim_JAS = nmp.zeros((nk, nj, ni))
Tclim_JAS[:, :, :] = nmp.mean(Tclim[6:9, :, :, :], axis=0)
Sclim_JAS = nmp.zeros((nk, nj, ni))
Sclim_JAS[:, :, :] = nmp.mean(Sclim[6:9, :, :, :], axis=0)
SSTclim_JAS = nmp.zeros((nj, ni))
SSTclim_JAS[:, :] = nmp.mean(SSTclim[6:9, :, :], axis=0)

jk100 = bt.find_index_from_value(100., vdepth)
print 'jk100  = ', jk100, '=> ', vdepth[jk100]
jk1000 = bt.find_index_from_value(1000., vdepth)
print 'jk1000 = ', jk1000, '=> ', vdepth[jk1000]
jk3000 = bt.find_index_from_value(3000., vdepth)
print 'jk3000 = ', jk3000, '=> ', vdepth[jk3000]

tdj = [jk100, jk1000, jk3000]

tdd_true = [
    str(int(round(vdepth[jk100]))) + 'm',
    str(int(round(vdepth[jk1000]))) + 'm',
    str(int(round(vdepth[jk3000]))) + 'm'
]
tdd = ['100m', '1000m', '3000m']
예제 #3
0
파일: moc.py 프로젝트: brodeau/barakuda
#  Getting NEMO mean monthly climatology of MLD coverage:
cf_nemo_moc  = vdic['DIAG_D']+'/clim/aclim_'+CONFRUN+'_'+cy1+'-'+cy2+'_MOC.nc4'


bt.chck4f(cf_nemo_moc)
id_nemo = Dataset(cf_nemo_moc)
vz = id_nemo.variables['depthw'][:]
amoc   = id_nemo.variables[cv_moc][0,:,:]
id_nemo.close()

[ nk, nj ] = amoc.shape ; print ' Shape of AMOC :', nk, nj, '\n'


# Building a latitude vector:
vlat = nmp.zeros(nj)
ji_lat_mid_atlantic = bt.find_index_from_value( -28., xlon[0,:] )
vlat[:] = xlat[:,ji_lat_mid_atlantic]


# Building the vertical mask:
msk_vert = nmp.zeros((nk,nj))
msk_vert[:,:] = nmp.sum(Xmask[:,:,:],axis=2)
idxm = nmp.where(msk_vert[:,:] > 0.);
msk_vert[idxm] = 1.


bp.plot("amoc_lat_depth")(vlat[:], -vz[:], amoc[:,:], msk_vert[:,:], -3., 20., 1., \
                          cfig_type=fig_type, lkcont=True, cpal='amoc', ymin=0., ymax=70.,
                          cfignm='AMOC_annual_'+CONFRUN, cbunit='Sv',
                          cxunit=r'Latitude ($^{\circ}$N)', zmin = 5000., zmax = 0., l_zlog=False,
                          czunit='Depth (m)', ctitle='AMOC, '+CONFRUN+' ('+cy1+'-'+cy2+')',
예제 #4
0
id_mask = Dataset(cf_mask)
mask = id_mask.variables['tmask'][0, :, :, :]
xlon = id_mask.variables['nav_lon'][:, :]
xlat = id_mask.variables['nav_lat'][:, :]
id_mask.close()

[nk, nj, ni] = nmp.shape(mask)

# Getting basin mask:
cf_basin_mask = BM_FILE
bt.chck4f(cf_basin_mask)
id_bm = Dataset(cf_basin_mask)
Xmask_atl = id_bm.variables['tmaskatl'][:, :, :]
id_bm.close()

ji_lat_mid_atlantic = bt.find_index_from_value(-28., xlon[0, :])

# Creating 1D long. and lat.:
vlon = nmp.zeros(ni)
vlon.shape = [ni]
vlon[:] = xlon[0, :]
vlat = nmp.zeros(nj)
vlat.shape = [nj]
vlat[:] = xlat[:, ji_lat_mid_atlantic]

# Getting first and last year of NEMO clim from "last_clim" files:
ccf1 = DIAG_DIR + '/' + CONFRUN1 + '/last_clim'
bt.chck4f(ccf1)
ccf2 = DIAG_DIR + '/' + CONFRUN2 + '/last_clim'
bt.chck4f(ccf2)
f = open(ccf1, 'r')
예제 #5
0
xlon   = id_mask.variables['nav_lon'][:,:] ; xlat   = id_mask.variables['nav_lat'][:,:]
id_mask.close()


[ nk, nj, ni ] = nmp.shape(mask)


# Getting basin mask:
cf_basin_mask = BM_FILE
bt.chck4f(cf_basin_mask)
id_bm = Dataset(cf_basin_mask)
Xmask_atl = id_bm.variables['tmaskatl'][:,:,:]
id_bm.close()


ji_lat_mid_atlantic = bt.find_index_from_value( -28., xlon[0,:] )

# Creating 1D long. and lat.:
vlon = nmp.zeros(ni) ;  vlon.shape = [ ni ] ; vlon[:] = xlon[0,:]
vlat = nmp.zeros(nj) ;  vlat.shape = [ nj ] ; vlat[:] = xlat[:,ji_lat_mid_atlantic]


# Getting first and last year of NEMO clim from "last_clim" files:
ccf1 = DIAG_DIR+'/'+CONFRUN1+'/last_clim' ; bt.chck4f(ccf1)
ccf2 = DIAG_DIR+'/'+CONFRUN2+'/last_clim' ; bt.chck4f(ccf2)
f = open(ccf1, 'r'); cread_lines = f.readlines() ; f.close()
cy1_1, cy2_1 = cread_lines[0].split("-") ; cy2_1, ca = cy2_1.split("\n")
f = open(ccf2, 'r'); cread_lines = f.readlines() ; f.close()
cy1_2, cy2_2 = cread_lines[0].split("-") ; cy2_2, ca = cy2_2.split("\n")
#print cy1_1, cy2_1, cy1_2, cy2_2
예제 #6
0
Tnemo_JAS[:,:,:] = nmp.mean(Tnemo[6:9,:,:,:], axis=0)
Snemo_JAS = nmp.zeros(nk*nj*ni) ; Snemo_JAS.shape = [nk,nj,ni]
Snemo_JAS[:,:,:] = nmp.mean(Snemo[6:9,:,:,:], axis=0)
SSTnemo_JAS = nmp.zeros(nj*ni) ; SSTnemo_JAS.shape = [nj,ni]
SSTnemo_JAS[:,:] = nmp.mean(SSTnemo[6:9,:,:], axis=0)

Tclim_JAS = nmp.zeros(nk*nj*ni) ; Tclim_JAS.shape = [nk,nj,ni]
Tclim_JAS[:,:,:] = nmp.mean(Tclim[6:9,:,:,:], axis=0)
Sclim_JAS = nmp.zeros(nk*nj*ni) ; Sclim_JAS.shape = [nk,nj,ni]
Sclim_JAS[:,:,:] = nmp.mean(Sclim[6:9,:,:,:], axis=0)
SSTclim_JAS = nmp.zeros(nj*ni) ; SSTclim_JAS.shape = [nj,ni]
SSTclim_JAS[:,:] = nmp.mean(SSTclim[6:9,:,:], axis=0)



jk100  = bt.find_index_from_value(100.  , vdepth) ; print 'jk100  = ', jk100,  '=> ', vdepth[jk100]
jk1000 = bt.find_index_from_value(1000. , vdepth) ; print 'jk1000 = ', jk1000, '=> ', vdepth[jk1000]
jk3000 = bt.find_index_from_value(3000. , vdepth) ; print 'jk3000 = ', jk3000, '=> ', vdepth[jk3000]

tdj = [ jk100,   jk1000, jk3000  ]

tdd_true = [ str(int(round(vdepth[jk100])))+'m' , str(int(round(vdepth[jk1000])))+'m' , str(int(round(vdepth[jk3000])))+'m' ]
tdd      = [ '100m', '1000m', '3000m' ]

print '\n', tdd_true[:], '\n'




if 'ORCA2' in ORCA:
    ji_lat0 = 132
예제 #7
0
if vdic['ANNUAL_3D'] == '1y':
    cf_T_in = replace(cf_T_in, vdic['TSTAMP'], vdic['ANNUAL_3D'])
    print '  ==> USING '+vdic['ANNUAL_3D']+' file !!! =>', cf_T_in

print '      ==> variable '+cvar

# DATA:
id_in = Dataset(cf_T_in)
vdepth = id_in.variables['olevel'][:]
Xd_m = id_in.variables[cvar][:,:,:,:]
id_in.close()

print '      ==> variable '+cvar+' read !'

j100m  = bt.find_index_from_value(100.  , vdepth) ; print 'j100m  = ', j100m,  '=> ', vdepth[j100m]
j1000m = bt.find_index_from_value(1000. , vdepth) ; print 'j1000m = ', j1000m, '=> ', vdepth[j1000m]

( nt, nk0, nj0, ni0 ) = Xd_m.shape

if nt != 12 and nt != 1 : print 'ERROR: '+cnexec+' => only treating monthly or annual data so far...'; sys.exit(0)

if ( nk0, nj0, ni0 ) != ( nk, nj, ni ):
    print 'ERROR: '+cnexec+' => Field and metrics do not agree in size!'
    print '     ==> nk0, nj0, ni0 / nk, nj, ni = ', nk0, nj0, ni0, '/', nk, nj, ni
    sys.exit(0)

vtime = nmp.zeros(nt)
for jt in range(nt): vtime[jt] = float(jyear) + (float(jt)+0.5)*1./float(nt)
print ' * Calendar: ', vtime[:]
예제 #8
0
파일: mean.py 프로젝트: brodeau/barakuda
    for ib in range(nb_boxes):

        cbox = cname_b[ib] ; print '    *** treating '+cvar+' for '+cbox+', ('+bo.clgnm_mld_boxes[ib]+')'

        i1 = 0 ; j1 = 0 ; i2 = ni-1 ; j2 = nj-1

        rx1 = bo.r_lon_p1_mld[ib] ; rx2 = bo.r_lon_p2_mld[ib] ; ry1 = bo.r_lat_p1_mld[ib] ; ry2 = bo.r_lat_p2_mld[ib]

        # Need to itterate because ORCA grid disytorded in the North...
        vold = [ -999, -999, -999, -999 ] ;  itt = 0
        while [ i1, i2, j1, j2 ] != vold and itt < 10 :
            itt = itt+1
            #print ' .... itt =', itt
            vold = [ i1, i2, j1, j2 ]
            #print 'seraching for rx1, rx2, ry1, ry2 = ', rx1, rx2, ry1, ry2
            if rx1 > -900.: i1 = bt.find_index_from_value( rx1, rlon[j1,:] )
            if rx2 > -900.: i2 = bt.find_index_from_value( rx2, rlon[j2,:] )
            if ry1 > -900.: j1 = bt.find_index_from_value( ry1, rlat[:,i1] )
            if ry2 > -900.: j2 = bt.find_index_from_value( ry2, rlat[:,i2] )
            #print '   => i1, i2, j1, j2 =>', i1, i2, j1, j2, '\n'



        mask2d[:,:] = 0.
        mask2d[j1:j2,i1:i2] = mask[0,0,j1:j2,i1:i2]

        Vts = bo.mean_2d(MLD_m, mask2d[:,:], Xe1t[0,:,:], Xe2t[0,:,:])

        # NETCDF:
        cf_out   = vdic['DIAG_D']+'/mean_'+cvar+'_'+CONFRUN+'_'+cbox+'.nc' ;  cv1 = cvar
예제 #9
0
if vdic['ANNUAL_3D'] == '1y':
    cf_T_in = replace(cf_T_in, vdic['TSTAMP'], vdic['ANNUAL_3D'])
    print '  ==> USING ' + vdic['ANNUAL_3D'] + ' file !!! =>', cf_T_in

print '      ==> variable ' + cvar

# DATA:
id_in = Dataset(cf_T_in)
vdepth = id_in.variables['deptht'][:]
Xd_m = id_in.variables[cvar][:, :, :, :]
id_in.close()

print '      ==> variable ' + cvar + ' read !'

j100m = bt.find_index_from_value(100., vdepth)
print 'j100m  = ', j100m, '=> ', vdepth[j100m]
j1000m = bt.find_index_from_value(1000., vdepth)
print 'j1000m = ', j1000m, '=> ', vdepth[j1000m]

(nt, nk0, nj0, ni0) = Xd_m.shape

if nt != 12 and nt != 1:
    print 'ERROR: ' + cnexec + ' => only treating monthly or annual data so far...'
    sys.exit(0)

if (nk0, nj0, ni0) != (nk, nj, ni):
    print 'ERROR: ' + cnexec + ' => Field and metrics do not agree in size!'
    print '     ==> nk0, nj0, ni0 / nk, nj, ni = ', nk0, nj0, ni0, '/', nk, nj, ni
    sys.exit(0)
예제 #10
0
        j2 = nj - 1

        rx1 = bo.r_lon_p1_mld[ib]
        rx2 = bo.r_lon_p2_mld[ib]
        ry1 = bo.r_lat_p1_mld[ib]
        ry2 = bo.r_lat_p2_mld[ib]

        # Need to itterate because ORCA grid disytorded in the North...
        vold = [-999, -999, -999, -999]
        itt = 0
        while [i1, i2, j1, j2] != vold and itt < 10:
            itt = itt + 1
            #print ' .... itt =', itt
            vold = [i1, i2, j1, j2]
            #print 'seraching for rx1, rx2, ry1, ry2 = ', rx1, rx2, ry1, ry2
            if rx1 > -900.: i1 = bt.find_index_from_value(rx1, rlon[j1, :])
            if rx2 > -900.: i2 = bt.find_index_from_value(rx2, rlon[j2, :])
            if ry1 > -900.: j1 = bt.find_index_from_value(ry1, rlat[:, i1])
            if ry2 > -900.: j2 = bt.find_index_from_value(ry2, rlat[:, i2])
            #print '   => i1, i2, j1, j2 =>', i1, i2, j1, j2, '\n'

        mask2d[:, :] = 0.
        mask2d[j1:j2, i1:i2] = mask[0, 0, j1:j2, i1:i2]

        Vts = bo.mean_2d(MLD_m, mask2d[:, :], Xe1t[0, :, :], Xe2t[0, :, :])

        # NETCDF:
        cf_out = vdic[
            'DIAG_D'] + '/mean_' + cvar + '_' + CONFRUN + '_' + cbox + '.nc'
        cv1 = cvar