source: trunk/LMDZ.PLUTO/util/script_figures/temp_anomaly.py @ 3831

Last change on this file since 3831 was 3823, checked in by afalco, 6 days ago

Pluto: added some python scripts for visualization.
AF

  • Property svn:executable set to *
File size: 3.8 KB
Line 
1#! /usr/bin/env python
2from    netCDF4               import    Dataset
3from    numpy                 import    *
4import  numpy                 as        np
5import  matplotlib.pyplot     as        mpl
6from matplotlib.cm import get_cmap
7import pylab
8from matplotlib import ticker
9import matplotlib.colors as colors
10from mpl_toolkits.basemap import Basemap, shiftgrid
11from FV3_utils import *
12
13############################
14step_begin = 2015
15step_end = 2015
16
17var="temperature" #variable
18tint=[30,37] #Time must be as written in the input file
19# tint=None #Time must be as written in the input file
20xarea="0,1"
21yarea="0,1"
22
23prefix="Xhistins"
24suffix="_A.nc"
25filename=f"../../{prefix}{step_begin}{suffix}"
26nc1=Dataset(filename)
27
28lat=getvar(nc1,"latitude")
29lon=getvar(nc1,"longitude")
30alt=getvar(nc1,"altitude")
31print("max alt: ",np.max(alt))
32time=getvar(nc1,"Time")
33time=getvar(nc1,"Time",tint,time) # select days
34nbday=int(time[-1]-time[0])
35
36myvar=getvar(nc1,var,tint,time)
37myvar=myvar[:,:,0,0]
38
39
40
41# read all time steps
42for step in range(step_begin+1, step_end+1):
43    filename=f"../../{prefix}{step}{suffix}"
44    nc1=Dataset(filename)
45    newvar=getvar(nc1,var,tint,time)
46    newvar=newvar[:,:,0,0]
47    myvar=np.concatenate((myvar, newvar), axis=0)
48
49    newtime=getvar(nc1,"Time")
50    new_nbday=int(newtime[-1]-newtime[0])
51    newtime+=nbday # account for previous files
52    nbday=new_nbday+nbday
53    time=np.concatenate((time, newtime), axis=0)
54
55# nb of time:
56nbtime=size(myvar[:,0])
57print(nbtime)
58
59# nb time step /day
60nbstep = int(nbtime/nbday)
61print((shape(myvar)))
62
63# nb alt
64nbalt=size(alt)
65print(nbalt)
66
67print("nbday=",nbday)
68print("nbtime=",nbtime)
69print("nbstep=",nbstep)
70print("nbalt=",nbalt)
71
72nbstep_mean=nbtime-nbstep*2
73# nbstep_mean=nbstep
74#meanvar=np.zeros((nbday,nbalt),dtype='f')
75meanvar=np.zeros((nbstep_mean,nbalt),dtype='f')
76# anovar=np.zeros((nbtime,nbalt),dtype='f')
77anovar=np.zeros((nbstep_mean,nbalt),dtype='f')
78
79# pour chaque jour : calcul moyenne diurne
80for i in range(nbstep_mean):
81    #i=i+nbstep/2
82    # meanvar[i,:]=np.mean(myvar[slice(i,i+((nbday-1)*nbstep)+1,nbstep)], axis=0)
83    meanvar[i,:]=np.mean(myvar[nbstep//2+i:nbstep+nbstep//2+i,:],axis=0)
84    # meanvar[i,:]=np.mean(myvar[nbstep//2+i:nbstep+nbstep//2+i,:],axis=0)
85#for i in range(nbday):
86#    meanvar[i,:]=np.mean(myvar[0:8,:],axis=0)
87
88# pour chaque time : calcul anomaly le dernier time est pour autre jour
89for i in range(nbstep_mean):
90    # for j in range(nbday):
91        #index=int(i/nbstep)
92        # anovar[i+nbstep*j,:]=myvar[i+nbstep*j,:]-meanvar[i,:]
93    anovar[i,:]=myvar[nbstep+i,:]-meanvar[i,:]
94
95print((meanvar[:,:]))
96print((myvar[0,:]))
97
98mpl.figure(figsize=(20, 10))
99font=26
100
101#pal=get_cmap(name="RdYlBu_r")
102# pal=get_cmap(name="Spectral_r")
103lev=np.linspace(-0.1,0.1,10)
104# lev=np.linspace(anovar.min(),anovar.max(),10)
105
106#xticks=[-90,-60,-30,0,30,60,90]
107#yticks=np.linspace(0,240,9)
108# time=np.arange(nbstep_mean)/floor(nbstep)
109time=time[nbstep:len(time)-nbstep]
110
111print((shape(time), shape(alt),shape(anovar)))
112
113CF=mpl.contourf(time,alt,np.transpose(anovar),lev,cmap="coolwarm",extend='both')
114cbar=mpl.colorbar(CF,shrink=1, format="%1.2f")
115cbar.ax.set_title("[K]",y=1.04,fontsize=font)
116for t in cbar.ax.get_yticklabels():
117      t.set_fontsize(font)
118
119#vect=lev
120#CS=mpl.contour(lat,alt,myvar,vect,colors='k',linewidths=0.5)
121#### inline=1 : values over the line
122#mpl.clabel(CS, inline=1, fontsize=20, fmt='%1.0f',inline_spacing=1)
123
124mpl.title('Temperature anomaly', fontsize=font+2)
125mpl.ylabel('Altitude (km)',labelpad=10,fontsize=font)
126mpl.xlabel('Time (Pluto days)',labelpad=10, fontsize=font)
127#mpl.xticks(xticks,fontsize=font-3)
128mpl.xticks(fontsize=font-3)
129#mpl.yticks(yticks,fontsize=font-3)
130mpl.yticks(fontsize=font-3)
131pylab.ylim([0,np.max(alt)])
132pylab.ylim([0,250])
133
134# mpl.savefig('tempanom.eps',dpi=200)
135mpl.savefig(f"tempanom_{step_begin}_{step_end}.png",dpi=200)
136mpl.show()
137
138
139
140
Note: See TracBrowser for help on using the repository browser.