Skip to content
Snippets Groups Projects
various_modelisation_plot.py 11.4 KiB
Newer Older
from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
from pylab import *

file1 = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/grid_T_saison.nc'
file2 = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/grid_U_saison.nc'
file3 = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/grid_V_saison.nc'
file4 = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/MYWRF3D_regrid-saison.nc'

trop1 = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/sst_tropflux_1d_2000-regrid-saison.nc'
trop2 = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/taux_tropflux_1d_2000-regrid-saison.nc'
trop3 = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/tauy_tropflux_1d_2000-regrid-saison.nc'
trop4 = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/swr_tropflux_1d_2000-regrid-saison.nc'
trop5 = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/lwr_tropflux_1d_2000-regrid-saison.nc'

pluie1 = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/precip-2000-regrid-saison.nc'

meshmask = 
'/ccc/scratch/cont005/legos/nivertfl/TEST_VALIDATION_TROPFLUX/MOYENNE-SAISON/mesh_mask.nc'

mask = Dataset(file1, mode='r')
masku = Dataset(file2, mode='r')
maskv = Dataset(file3, mode='r')
wrf = Dataset(file4, mode='r')
pluie = Dataset(pluie1, mode='r')
meshmask1 = Dataset(meshmask, mode='r')

tropsst= Dataset(trop1, mode='r')
troptaux= Dataset(trop2, mode='r')
troptauy= Dataset(trop3, mode='r')
tropswr= Dataset(trop4, mode='r')
troplwr= Dataset(trop5, mode='r')

lat = mask.variables['nav_lat'][:]
lon = mask.variables['nav_lon'][:]
lat1 = mask.variables['nav_lat'][:,0]

meshmask2 = meshmask1.variables['tmask'][:,0,:,:]

mask1 = mask.variables['votemper'][:,0,:,:]
mask11 = tropsst.variables['sst'][:,:,:]

vari2 = mask.variables['qsr'][:,:,:]
vari22 = tropswr.variables['swr'][:,:,:]

vari31 = wrf.variables['RAIN'][:,:,:]
vari3 = vari31[:,:,:] * 40 * 24
vari33 = pluie.variables['precipitation'][:,:,:]

vari4 = masku.variables['utau'][:,:,:]
vari44 = troptaux.variables['taux'][:,:,:]

vari51 = wrf.variables['GLW'][:,:,:]
vari5 = vari51[:,:,:] * meshmask2[:,:,:]
vari555 = troplwr.variables['lwr'][:,:,:]
mask112 = mask11[:,:,:] + 273.15
vari55 = vari555[:,:,:] + 
5.67e-8*(mask112[:,:,:])*(mask112[:,:,:])*(mask112[:,:,:])*(mask112[:,:,:])


vari6 = maskv.variables['vtau'][:,:,:]
vari6[vari6 == 0] = np.NaN
vari66 = troptauy.variables['tauy'][:,:,:]

list1 = ['JFM' , 'AMJ' , 'JAS' , 'OND']



'''Difference modele'''
for x in range(0,4):
    print "We're on time %d" % (x)
    plt.clf()
    result1 = mask1[x,:,:] - mask11[x,:,:]
    result2 = vari2[x,:,:] - vari22[x,:,:]
    result3 = vari3[x,:,:] - vari33[x,:,:]
    result4 = vari4[x,:,:] - vari44[x,:,:]
    result5 = vari5[x,:,:] - vari55[x,:,:]
    result6 = vari6[x,:,:] - vari66[x,:,:]
    fig, cs = plt.subplots(3, 2, figsize=(9, 6))
    fig.subplots_adjust(left=0.125, bottom=0.1, right=0.9, top=0.9, 
wspace=0.3, hspace=0.3)
    im1 = cs[0, 0].contourf(lon,lat,result1, np.linspace(-2.5,2.5,21), 
extend='both', cmap=cm.RdBu_r)
    cs[0, 0].set_title('Difference VOTEMPER MODELE - OBS  Saison ' + 
list1[x],fontsize=10)
    fig.colorbar(im1, ax=cs[0, 0], orientation='horizontal')
    im2 = cs[0, 1].contourf(lon,lat,result2, np.linspace(-100,100,21), 
extend='both', cmap=cm.RdBu_r)
    cs[0, 1].set_title('Difference QSR MODELE - OBS  Saison ' + 
list1[x],fontsize=10)
    fig.colorbar(im2, ax=cs[0, 1], orientation='horizontal')
    im3 = cs[1, 0].contourf(lon,lat,result3, np.linspace(-16,16,21), 
extend='both', cmap=cm.RdBu_r)
    cs[1, 0].set_title('Difference PRECIP MODELE - OBS  Saison ' + 
list1[x],fontsize=10)
    fig.colorbar(im3, ax=cs[1, 0], orientation='horizontal')
    im4 = cs[1, 1].contourf(lon,lat,result4, np.linspace(-0.1,0.1,21), 
extend='both', cmap=cm.RdBu_r)
    cs[1, 1].set_title('Difference U TAU MODELE - OBS  Saison ' + 
list1[x],fontsize=10)
    fig.colorbar(im4, ax=cs[1, 1], orientation='horizontal', format='%.0e')
    im5 = cs[2, 0].contourf(lon,lat,result5, np.linspace(-50,50,21), 
extend='both', cmap=cm.RdBu_r)
    cs[2, 0].set_title('Difference LW MODELE - OBS  Saison ' + 
list1[x],fontsize=10)
    fig.colorbar(im5, ax=cs[2, 0], orientation='horizontal')
    im6 = cs[2, 1].contourf(lon,lat,result6, np.linspace(-0.1,0.1,21), 
extend='both', cmap=cm.RdBu_r)
    cs[2, 1].set_title('Difference V TAU MODELE - OBS  Saison ' + 
list1[x],fontsize=10)
    fig.colorbar(im6, ax=cs[2, 1], orientation='horizontal')
    plt.savefig('all_var_diff_saison_' + list1[x] + '.png')

'''plot modele'''
for x in range(0,4):
    print "We're on time %d" % (x)
    plt.clf()
    result1 = mask1[x,:,:]
    result2 = vari2[x,:,:]
    result3 = vari3[x,:,:]
    result4 = vari4[x,:,:]
    result5 = vari5[x,:,:]
    result6 = vari6[x,:,:]
    fig, cs = plt.subplots(3, 2, figsize=(9, 6))
    fig.subplots_adjust(left=0.125, bottom=0.1, right=0.9, top=0.9, 
wspace=0.3, hspace=0.3)
    im1 = cs[0, 0].contourf(lon,lat,result1, np.linspace(20,30,21), 
extend='both', cmap=cm.jet)
    cs[0, 0].set_title('VOTEMPER MODELE Saison ' + list1[x],fontsize=10)
    fig.colorbar(im1, ax=cs[0, 0], orientation='horizontal')
    im2 = cs[0, 1].contourf(lon,lat,result2, np.linspace(100,380,15), 
extend='both', cmap=cm.jet)
    cs[0, 1].set_title('QSR MODELE Saison ' + list1[x],fontsize=10)
    fig.colorbar(im2, ax=cs[0, 1], orientation='horizontal')
    im3 = cs[1, 0].contourf(lon,lat,result3, np.linspace(0,20,21), 
extend='both', cmap=cm.jet)
    cs[1, 0].set_title('PRECIP MODELE Saison ' + list1[x],fontsize=10)
    fig.colorbar(im3, ax=cs[1, 0], orientation='horizontal')
    im4 = cs[1, 1].contourf(lon,lat,result4, 
np.linspace(-0.13,0.05,21), extend='both', cmap=cm.jet)
    cs[1, 1].set_title('U TAU MODELE Saison ' + list1[x],fontsize=10)
    fig.colorbar(im4, ax=cs[1, 1], orientation='horizontal', format='%.0e')
    im5 = cs[2, 0].contourf(lon,lat,result5, np.linspace(300,460,21), 
extend='both', cmap=cm.jet)
    cs[2, 0].set_title('GLW MODELE Saison ' + list1[x],fontsize=10)
    fig.colorbar(im5, ax=cs[2, 0], orientation='horizontal')
    im6 = cs[2, 1].contourf(lon,lat,result6, 
np.linspace(-0.15,0.13,21), extend='both', cmap=cm.jet)
    cs[2, 1].set_title('V TAU MODELE Saison ' + list1[x],fontsize=10)
    fig.colorbar(im6, ax=cs[2, 1], orientation='horizontal')
    plt.savefig('all_var_modele_saison_' + list1[x] + '.png')

'''plot obs Trop et TRMM'''
for x in range(0,4):
    print "We're on time %d" % (x)
    plt.clf()
    result1 = mask11[x,:,:]
    result2 = vari22[x,:,:]
    result3 = vari33[x,:,:]
    result4 = vari44[x,:,:]
    result5 = vari55[x,:,:]
    result6 = vari66[x,:,:]
    fig, cs = plt.subplots(3, 2, figsize=(9, 6))
    fig.subplots_adjust(left=0.125, bottom=0.1, right=0.9, top=0.9, 
wspace=0.3, hspace=0.3)
    im1 = cs[0, 0].contourf(lon,lat,result1, np.linspace(20,30,21), 
extend='both', cmap=cm.jet)
    cs[0, 0].set_title('VOTEMPER OBS  Saison ' + list1[x],fontsize=10)
    fig.colorbar(im1, ax=cs[0, 0], orientation='horizontal')
    im2 = cs[0, 1].contourf(lon,lat,result2, np.linspace(100,380,15), 
extend='both', cmap=cm.jet)
    cs[0, 1].set_title('QSR OBS  Saison ' + list1[x],fontsize=10)
    fig.colorbar(im2, ax=cs[0, 1], orientation='horizontal')
    im3 = cs[1, 0].contourf(lon,lat,result3, np.linspace(0,20,21), 
extend='both', cmap=cm.jet)
    cs[1, 0].set_title('PRECIP OBS  Saison ' + list1[x],fontsize=10)
    fig.colorbar(im3, ax=cs[1, 0], orientation='horizontal')
    im4 = cs[1, 1].contourf(lon,lat,result4, 
np.linspace(-0.13,0.05,21), extend='both', cmap=cm.jet)
    cs[1, 1].set_title('U TAU OBS  Saison ' + list1[x],fontsize=10)
    fig.colorbar(im4, ax=cs[1, 1], orientation='horizontal', format='%.0e')
    im5 = cs[2, 0].contourf(lon,lat,result5, np.linspace(300,460,21), 
extend='both', cmap=cm.jet)
    cs[2, 0].set_title('LW OBS  Saison ' + list1[x],fontsize=10)
    fig.colorbar(im5, ax=cs[2, 0], orientation='horizontal')
    im6 = cs[2, 1].contourf(lon,lat,result6, 
np.linspace(-0.15,0.13,21), extend='both', cmap=cm.jet)
    cs[2, 1].set_title('V TAU OBS  Saison ' + list1[x],fontsize=10)
    fig.colorbar(im6, ax=cs[2, 1], orientation='horizontal')
    plt.savefig('all_var_obs_saison_' + list1[x] + '.png')


zbla=np.zeros(shape=(165,1))
zbla2=np.zeros(shape=(165,1))
zbla3=np.zeros(shape=(165,1))
zbla4=np.zeros(shape=(165,1))
zbla5=np.zeros(shape=(165,1))
zbla6=np.zeros(shape=(165,1))
zbla7=np.zeros(shape=(165,1))
zbla8=np.zeros(shape=(165,1))
zbla9=np.zeros(shape=(165,1))
zbla10=np.zeros(shape=(165,1))
zbla11=np.zeros(shape=(165,1))
zbla12=np.zeros(shape=(165,1))

mask1[mask1 == 0] = np.NaN
vari2[vari2 == 0] = np.NaN
vari4[vari4 == 0] = np.NaN
vari5[vari5 == 0] = np.NaN

'''Coupe zonale'''
for y in range(0,4):
    print "We're on time %d" % (y)
    for x in range(0,165):
        result1= np.nanmean(mask1[y,x,80:160])
        result2= np.nanmean(mask11[y,x,80:160])
        zbla[x,:]=result1
        zbla2[x,:]=result2

    for z in range(0,165):
        result3= np.nanmean(vari2[y,z,80:160])
        result4= np.nanmean(vari22[y,z,80:160])
        zbla3[z,:]=result3
        zbla4[z,:]=result4

    for ii in range(0,165):
        result5= np.nanmean(vari3[y,ii,80:160])
        result6= np.nanmean(vari33[y,ii,80:160])
        zbla5[ii,:]=result5
        zbla6[ii,:]=result6

    for jj in range(0,165):
        result7= np.nanmean(vari4[y,jj,80:160])
        result8= np.nanmean(vari44[y,jj,80:160])
        zbla7[jj,:]=result7
        zbla8[jj,:]=result8

    for zz in range(0,165):
        result9= np.nanmean(vari5[y,zz,80:160])
        result10= np.nanmean(vari55[y,zz,80:160])
        zbla9[zz,:]=result9
        zbla10[zz,:]=result10

    for hh in range(0,165):
        result11= np.nanmean(vari6[y,hh,80:160])
        result12= np.nanmean(vari66[y,hh,80:160])
        zbla11[hh,:]=result11
        zbla12[hh,:]=result12

    fig, cs = plt.subplots(3, 2, figsize=(9, 6))
    fig.subplots_adjust(left=0.125, bottom=0.1, right=0.9, top=0.9, 
wspace=0.3, hspace=0.3)
    im1 = cs[0, 0].plot(lat1,zbla)
    im1 = cs[0, 0].plot(lat1,zbla2)
    cs[0, 0].set_title('Comparaison SST MODELE et OBS  Saison ' + 
list1[y],fontsize=10)
    cs[0, 0].set_ylim([18,30])
    cs[0, 0].set_xlim([-20,20])
    im2 = cs[0, 1].plot(lat1,zbla3)
    im2 = cs[0, 1].plot(lat1,zbla4)
    cs[0, 1].set_title('Comparaison QSR MODELE et OBS  Saison ' + 
list1[y],fontsize=10)
    cs[0, 1].set_ylim([100,380])
    cs[0, 1].set_xlim([-20,20])
    im3 = cs[1, 0].plot(lat1,zbla5)
    im3 = cs[1, 0].plot(lat1,zbla6)
    cs[1, 0].set_title('Comparaison PRECIP MODELE et OBS  Saison ' + 
list1[y],fontsize=10)
    cs[1, 0].set_ylim([0, 20])
    cs[1, 0].set_xlim([-20,20])
    im4 = cs[1, 1].plot(lat1,zbla7)
    im4 = cs[1, 1].plot(lat1,zbla8)
    cs[1, 1].set_title('Comparaison U TAU MODELE et OBS  Saison ' + 
list1[y],fontsize=10)
    cs[1, 1].set_ylim([-0.13,0.05])
    cs[1, 1].set_xlim([-20,20])
    im5 = cs[2, 0].plot(lat1,zbla9)
    im5 = cs[2, 0].plot(lat1,zbla10)
    cs[2, 0].set_title('Comparaison LW MODELE et OBS  Saison ' + 
list1[y],fontsize=10)
    cs[2, 0].set_ylim([300,430])
    cs[2, 0].set_xlim([-20,20])
    im6 = cs[2, 1].plot(lat1,zbla11)
    im6 = cs[2, 1].plot(lat1,zbla12)
    cs[2, 1].set_title('Comparaison V TAU MODELE et OBS  Saison ' + 
list1[y],fontsize=10)
    cs[2, 1].set_ylim([-0.15,0.13])
    cs[2, 1].set_xlim([-20,20])
    plt.savefig('coupe_zonale_saison_' + list1[y] + '.png')