# so trim so we only have # toplim=len(press) - np.searchsorted(press[::-1],2.e4) press=press[:toplim] # # find temps along that adiabat # adia_temps= np.array([find_Tmoist(sfc_thetae,the_press) for the_press in press]) adia_rvaps = find_rsat(adia_temps,press) adia_rls = sfc_rvap - adia_rvaps env_temps = (sounding['temp'].values + c.Tc)[:toplim] env_Td = (sounding['dwpt'].values + c.Tc)[:toplim] height = sounding['hght'].values[:toplim] pairs = zip(env_Td,press) env_rvaps= np.array([find_rsat(td,the_press) for td,the_press in pairs]) env_Tv = find_Tv(env_temps,env_rvaps) adia_Tv = find_Tv(adia_temps,adia_rvaps,adia_rls) xcoord_thetae=[] press_hPa = press*1.e-2 for a_temp,a_press in zip(adia_temps - c.Tc,press_hPa): out=convertTempToSkew(a_temp,a_press,skew) xcoord_thetae.append(out) ax.plot(xcoord_thetae,press_hPa,color='r',label='rsat',linewidth=3.) ax.set(ylim=[1000.,200.]) display(fig) # In[10]: def find_buoy(adia_Tv,env_Tv): buoy=c.g0*(adia_Tv - env_Tv)/env_Tv
# so trim so we only have # toplim=len(press) - np.searchsorted(press[::-1],1.5e4) clipped_press=press[:toplim] # # find temps along that adiabat # adia_temps= np.array([find_Tmoist(sfc_thetae,the_press) for the_press in clipped_press]) adia_rvaps = find_rsat(adia_temps,clipped_press) adia_rls = sfc_rvap - adia_rvaps env_temps = (sounding['temp'].values + c.Tc)[:toplim] env_Td = (sounding['dwpt'].values + c.Tc)[:toplim] height = sounding['hght'].values[:toplim] pairs = zip(env_Td,clipped_press) env_rvaps= np.array([find_rsat(td,the_press) for td,the_press in pairs]) env_Tv = find_Tv(env_temps,env_rvaps) adia_Tv = find_Tv(adia_temps,adia_rvaps,adia_rls) xcoord_thetae=[] clipped_press_hPa = clipped_press*1.e-2 for a_temp,a_press in zip(adia_temps - c.Tc,clipped_press_hPa): out=convertTempToSkew(a_temp,a_press,skew) xcoord_thetae.append(out) ax.plot(xcoord_thetae,clipped_press_hPa,color='r',label='rsat',linewidth=3.) ax.set(ylim=[1000.,200.]) display(fig) # In[7]: plt.close('all') from a405thermo.thermlib import tinvert_thetae