Adding water vapor feedback to the grey model of the atmosphere
Contents
Adding water vapor feedback to the grey model of the atmosphere#
Acknowledgments: This notebook borrows material from lecture notes of Geoff Vallis (university of Exeter) and Simona Bordoni (University of Trento)#
You will recall from atmospheric physics that in the \(n\) layer black body atmosphere we showed that the relationship between the surface temperature and the effective emitting temperature was
Thus as \(n\rightarrow \infty\) then \(T_s \rightarrow \infty\). For a grey body atmosphere, instead, there is a finite solution. We can approximate this term in the energy balance equation by writing OLR term for the multilevel grey body model as :
When \(\tau=0\) this reduces to the simple energy balance model with a transparent atmosphere, \(T_s\) then increases with \(\tau\) as expected from an increasing greenhouse effect, and then as \(\tau \rightarrow \infty\) the equations blows up and there is no solution for \(T_s\)!
We will specify the optical depth as a temperature-dependent function that represents the increase of water vapor specific humidity with temperature added to a constant value that represents the effects of clouds and other greenhouse gases:
\begin{equation} \tau = \tau_{co2}+\tau_{wv}=1.12 + 0.14 \exp \big [ - \frac{L_v}{R_v} \big( \frac{1}{T} - \frac{1}{288} \big ) \big ] \end{equation}
\(\tau(T)\) includes a part that is constant (greenhouse gases and clouds) and a variable part that is proportional to water vapor pressure. Remember that \(R_v = 461.5\) J kg\(^{-1}\) K\(^{-1}\) and \(L_v = 2.5 \times 10^6\) J kg\(^{-1}\).
# packages needed in the notebook
import matplotlib.pyplot as plt
import numpy as np
# define constants
Lv=2.5e6
Rv=461.5
sigma=5.67e-8
tauco2=1.12
We now define the functions for the optical depth:
def tauwv(T,fac=0.14):
"""optical depth as function of surface temperature DUE to WATER VAPOR"""
return fac*np.exp(-Lv*(1/T-1/288)/Rv)
def tau(T,fac=0.14):
return tauco2+tauwv(T,fac=fac)
# vector of surface temperatures
Ts=np.arange(260,320,5)
print(Ts)
print(tau(Ts))
[260 265 270 275 280 285 290 295 300 305 310 315]
[1.13846747 1.14736118 1.15995205 1.17753935 1.20179613 1.23485246
1.27939138 1.33875843 1.41708549 1.51942952 1.65192673 1.82196248]
Now let’s make a plot of Tau as a function of the surface temperature
# plot Tau
fig,ax=plt.subplots(figsize=(4,3))
ax.plot(Ts,tau(Ts))
ax.set_xlabel("$T_s$ (K)")
ax.set_ylabel("Optical Depth ($\\tau$)")
Text(0, 0.5, 'Optical Depth ($\\tau$)')
What do you notice about the shape of the curve?
The optical depth is a highly non linear function and increasing rapidly with surface temperature, why is this?
# surface albedo with ice feedback included, turned off by default
def alfa(T,lconst=True):
if lconst:
albedo=0.33
else:
albedo=0.45-0.25*np.tanh((T-272)/23)
return albedo
def cdTdt(S,T):
"""define the energy balance equation in a function"""
vtau=tau(T)
return S*(1-alfa(T))/4 - (1/(1+tau(T)/2))*sigma*np.power(T,4)
# define the solar constant array
S0=np.arange(1000,2000,10)
Ts=np.arange(200,400,5)
T2d=np.tile(Ts,(len(S0),1)).transpose()
S2d=np.tile(S0,(len(Ts),1))
# contour plot
fig,ax=plt.subplots(figsize=(6,4))
X=ax.contour(S2d,T2d,cdTdt(S2d,T2d),levels=np.arange(-400,400,25))
ax.clabel(X,fontsize=10)
ax.set_xlabel("S0 (Wm$^{-2}$)")
ax.set_ylabel("T (K)")
S0today=1370.
ax.vlines(S0today,200,400,linestyles="dotted")
<matplotlib.collections.LineCollection at 0x10b154e20>
Exercises and Questions to consider:#
Take today’s climate \(S_0\), what is the equilibrium temperature?
Let’s perturb \(S_0\) to 1400 W m \(^{-2}\), what happens to the temperature?
At what value of the solar constant does the system become unstable?
What is the physics of this instability?
Congratulations, you have discovered what is known as the runaway greenhouse effect, first coined by Ingersoll (82). We will discuss the physics of this in class.
Exercises on the climate feedback#
Without looking at the next section, attempt to derive the water vapor climate feedback factor \(\lambda_{wv}\) in this model for present day \(S_0\).
Is the feedback positive or negative, and do you understand why?
The feedback seems to be weaker than the value derived from GCMs. To what do you need to change the factor 0.14 to in order to get a feedback of 2.0 W m\(^{-2}\) K\(^{-1}\)? How would that revised value change the equilibrium climate for today’s solar forcing?
Feedback factor#
We recall that the climate feedback factor is the partial derivative of the TOA fluxes with respect to the surface temperature, changing only the parameter in question, in this case water vapour.
Note, you can also derive the total substantive derivative of \(N\) and then subtract the Planck feedback, you should arrive at the approximately same answer (try it and see!):
def dtaudT(T,fac=fac):
"""optical depth as function of surface temperature"""
LoR=Lv/Rv
return tauwv(T,fac=fac)*LoR/(T*T)
Ts=288
lamwv=dtaudT(Ts,fac=0.14)*2*sigma*np.power(Ts,4)/np.power(2+tau(Ts),2)
print ("water vapour feedback for",Ts," = ",lamwv," W m$^{-2}$ K^-1")
Ts=np.arange(260,380,2)
lamwv=dtaudT(Ts,fac=0.14)*2*sigma*np.power(Ts,4)/np.power(2+tau(Ts),2)
fig,ax=plt.subplots(figsize=(4,3))
ax.plot(Ts,lamwv)
ax.set_xlabel("$T_s$ (K)")
ax.set_ylabel("WV Feedback $\\lambda_{wv}$ (W m$^{-2}$ K$^{-1}$)")
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[5], line 1
----> 1 def dtaudT(T,fac=fac):
2 """optical depth as function of surface temperature"""
3 LoR=Lv/Rv
NameError: name 'fac' is not defined