Exemplo n.º 1
0
triplets=zip(sounding['temp'],sounding['dwpt'],sounding['pres'])
xcoord_T=[]
xcoord_Td=[]
for a_temp,a_dew,a_pres in triplets:
    xcoord_T.append(convertTempToSkew(a_temp,a_pres,skew))
    xcoord_Td.append(convertTempToSkew(a_dew,a_pres,skew))


# In[8]:

get_ipython().magic('matplotlib inline')
skew=30
plt.close('all')
fig,ax =plt.subplots(1,1,figsize=(8,8))
corners=[-15,35]
ax,skew = makeSkewWet(ax,corners=corners,skew=skew)
ax.plot(xcoord_T,sounding['pres'],color='k',label='temp')
ax.plot(xcoord_Td,sounding['pres'],color='g',label='dew')
[line.set(linewidth=3) for line in ax.lines[-2:]]
out=ax.set(title=title)


# In[9]:

from a405thermo.thermlib import find_Tmoist,find_thetaep,find_rsat,find_Tv
#
# find thetae of the surface air
#
sfc_press,sfc_temp,sfc_td =[sounding[key][0] for key in ['pres','temp','dwpt']]
sfc_press,sfc_temp,sfc_td = sfc_press*100.,sfc_temp+c.Tc,sfc_td+c.Tc
sfc_rvap = find_rsat(sfc_temp,sfc_press)
Exemplo n.º 2
0
  #calculate the temperature and dewpoint sounding
  #assuming linear profiles
  slope = (Ttop - Tbot) / (Ptop - Pbot)
  press = np.arange(Pbot, Ptop - 10, -10)
  Temp = (Tbot + slope * (press - Pbot))
  slope = (Tdewtop - Tdewbot) / (Ptop - Pbot)
  Tdew = (Tdewbot + slope * (press - Pbot))

  #
  #figure 1: plot the T,Tdew profile only
  #
  
  plt.close('all')

  fig, ax = plt.subplots(1, 1, figsize=(10, 10))
  ax, skew = makeSkewWet(ax,corners=[5,25])

  #zoom the axis to focus on layer
  skewLimits = convertTempToSkew([5, 25], 1.e3, skew)
  ax.axis([skewLimits[0], skewLimits[1], 1000, 600])
  xplot1 = convertTempToSkew(Temp, press, skew)
  #plot() returns a list of handles for each line plotted
  Thandle, = ax.plot(xplot1, press, 'k-', linewidth=2.5,label='Temp (deg C)')
  xplot2 = convertTempToSkew(Tdew, press, skew)
  TdHandle, = ax.plot(xplot2, press, 'b--', linewidth=2.5,label='Dewpoint (deg C)')
  ax.set_title('convectively unstable sounding: base at 900 hPa')
  ax.legend(numpoints=1,loc='best')
  fig.savefig('initial_sound.png')
  fig.savefig('initial_sound.pdf')

  #
Exemplo n.º 3
0
A_thetae=find_thetaet(A_Td,A_rv,A_temp,A_press)
print('tropical surface thetae: {} K'.format(A_thetae))
A_temp,A_rv,A_rl = tinvert_thetae(A_thetae,A_rv,A_press)
fields=['id','temp','rv','rl','press']
A_dict = dict(zip(fields,('A',A_temp,A_rv,A_rl,A_press)))
A_tup = calc_enthalpy(A_dict)
print(format_tup(A_tup))


# ### B. Lift to 400 hPa and remove 80% of the liquied water

# In[201]:

plt.close('all')
fig,ax = plt.subplots(1,1,figsize=[10,8])
ax,skew = makeSkewWet(ax,corners=[-15,35])

lcl_temp, lcl_press = find_lcl(A_Td,A_tup.temp,A_tup.press)
xplot=convertTempToSkew(A_tup.temp - c.Tc,A_tup.press*pa2hPa,skew)
bot=ax.plot(xplot, A_tup.press*pa2hPa-10., 'ko', markersize=14, markerfacecolor='k')
ax.text(xplot,A_tup.press*pa2hPa-20.,'A',fontsize=30)
pressrange=np.arange(1000,395.,-10.)
trop_adiabat=[]
for press in pressrange:
    temp,rv,rl = tinvert_thetae(A_thetae,A_tup.rt,press*1.e2)
    xtemp = convertTempToSkew(temp - c.Tc,press,skew)
    trop_adiabat.append(xtemp)
ax.plot(trop_adiabat,pressrange,'r-',lw=10)
B_press=400.e2  #Pa
temp,rv,rl = tinvert_thetae(thetae_trop,A_tup.rt,B_press)
rl = 0.2*rl  #rain out 80% of liquid
Exemplo n.º 4
0
thetaC=find_theta(tempC,pressC)
thetaB=thetaC
tempB=tempA
term1=(thetaB/tempB)**(c.cpd/c.Rd)
term1=1./term1
pressB=term1*1.e5
tempD=tempC
thetaD=thetaA
term1=(thetaD/tempD)**(c.cpd/c.Rd)
term1=1./term1
pressD=term1*1.e5

plt.close('all')
fig,ax = plt.subplots(1,1)
corners =  [5,30]
ax, skew = makeSkewWet(ax,corners=corners)

xtempA=convertTempToSkew(tempA - c.Tc,pressA*0.01,skew)
xtempB=convertTempToSkew(tempB - c.Tc,pressB*0.01,skew)
xtempC=convertTempToSkew(tempC - c.Tc,pressC*0.01,skew)
xtempD=convertTempToSkew(tempD - c.Tc,pressD*0.01,skew)

ax.text(xtempA,pressA*0.01,'A', fontweight='bold',fontsize= 22, color='b')
ax.text(xtempB,pressB*0.01,'B', fontweight='bold',fontsize= 22,color='b')
ax.text(xtempC,pressC*0.01,'C', fontweight='bold',fontsize= 22,color='b')
ax.text(xtempD,pressD*0.01,'D', fontweight='bold',fontsize= 22, color='b')

xmin = convertTempToSkew(corners[0],pressA*0.01,skew)
xmax = convertTempToSkew(corners[1],pressA*0.01,skew)
ax.axis([xmin, xmax, 1000, 600])
ax.set_title('forward carnot cycle')
Exemplo n.º 5
0
def k2c(temp): return (temp - c.Tc)
print('here2: {} deg C'.format(n(k2c(300))))


# ### back to midterm question 2:  make the tephigram -- with LCLs as black dots

# In[2]:

get_ipython().magic('matplotlib inline')
pa2hPa=1.e-2
from importlib import reload
import a405skewT.makeSkewII
reload(a405skewT.makeSkewII)
from a405skewT.makeSkewII import makeSkewWet
fig, ax = plt.subplots(1, 1, figsize=(12, 8))
ax, skew = makeSkewWet(ax,corners=[10,30])
ax.set(ylim=[1000,700])
from a405thermo.thermlib import find_Tmoist,find_rsat,find_Td,tinvert_thetae,convertTempToSkew,              find_lcl
import a405thermo.thermlib as tl
#
# set the lcl for 900 hPa to 860 hPa and thetae to 338 K
#
press=860.e2
thetae_900=338.  #K
Temp_860=find_Tmoist(thetae_900,press)
rv_860=find_rsat(Temp_860,press)
rv_900 = rv_860  #vapor is conserved
Tdew_860=Temp_860
print("temp,Tdew,rv at LCL press:  {} hPa {} C {} C {} kg/kg"      .format(n(press*1.e-2),e(k2c(Temp_860)),e(k2c(Tdew_860)),e(rv_900)))
#
# now descend adiabatically to 900 hPa