Honor code: This is an open-book, non-collaborative exam. You may consult your notes and homework assignments, the course textbooks, the Canvas course website and any encyclopedia or dictionary or glossary (e.g., wikipedia). You may also use any computer software for calculating and plotting (e.g., Python, Matlab, google calculator, Excel); but you may not consult other sources (e.g., google searches for similar problems). You may not discuss course material or exam problems with any person during the exam. The exception to this is that you may ask the course instructor or TA for clarification regarding the exam problems (both are reachable via email). You may not discuss the exam after you finish it with anyone in the class who has not yet turned it in. You are free to appeal to the solutions to any problems from the homework assignments and course lecture notes, without re-deriving them, in your answers to the exam questions.
Please submit your solutions via email to us at nlutsko@ucsd.edu and parndt@ucsd.edu.
Define the troposphere, the tropopause and the stratosphere.
How do temperatures in the troposphere differ from those in the stratosphere?
In the troposphere, temperatures decrease with altitude. In contrast, in the stratosphere, temperatures increase with altitude due to the absorption of ultraviolet radiation by the ozone layer.
Where are the coldest temperatures in Earth's atmosphere? (Hint: only consider the troposphere and the stratosphere.)
The coldest temperatures in Earth's atmosphere are found at the tropopause, the boundary between the troposphere and the stratosphere.
Define the atmospheric scale height, and discuss how it would change if the nitrogen in Earth's atmosphere was replaced by hydrogen (gas constant $R = 4124 \mathrm{\,J\,kg}^{-1}\mathrm{K}^{-1}$).
We showed in class that atmospheric pressure $p$ (and density) decrease exponentially with height $z$ in the atmosphere. Given a surface-level pressure of $p_0$ this can be expressed as \begin{align} p = p_0 e^{-z/H}, \end{align} where $H$ is the atmospheric scale height. This means that the atmospheric scale height is the height in the atmosphere at which pressure has decreased to a factor of $1/e$ from the surface (sea-level) pressure (see figure below). We derived the scale height for an isothermal (constant temperature) atmosphere in class: \begin{align} H = \frac{R_d T}{g} \approx 8 \mathrm{\,km}, \end{align} where
To assess the scale height for a hydrogen atmosphere $H_H$, we simply replace $R_d$ with $R_H = 4124 \mathrm{\,J\,kg}^{-1}\mathrm{K}^{-1}$ in the forumla, to obtain \begin{align} H = \frac{R_H T}{g} \approx 115 \mathrm{\,km}. \end{align}
# imports
from IPython.display import display, Markdown
import numpy as np
# constants
T_0 = 273 # K (surface temperature)
g = 9.8 # m s^-1 (gravitational acceleration)
R_d = 287 # J kg^-1 K^-1 (specific gas constant for dry air)
R_H = 4124 # kg^-1 K^-1 (specific gas constant for hydrogen)
# function to calculate the scale height of the atmosphere
def scale_height(T=T_0, g=g, R=R_d):
return R * T / g
# calculate the scale height for normal conditions
H_0 = scale_height()
# calculate the new scale height
H_new = scale_height(R=R_H)
# print the results
display(Markdown(r"## Results:"))
display(Markdown(r"The scale height of Earth's atmosphere is about $%.2g \mathrm{\,km}$." % (H_0/1000)))
display(Markdown(r" If the atmosphere were to be entirely composed of hydrogen, its scale height would be about $%.3g \mathrm{\,km}$." % (H_new/1000)))
The scale height of Earth's atmosphere is about $8 \mathrm{\,km}$.
If the atmosphere were to be entirely composed of hydrogen, its scale height would be about $115 \mathrm{\,km}$.
## the plot below is just for illustration purposes (not needed on the exam)
# imports
import numpy as np
import matplotlib.pyplot as plt
# constants
T_0 = 273 # K (surface temperature)
g = 9.8 # m s^-1 (gravitational acceleration)
R_d = 287 # J kg^-1 K^-1 (specific gas constant for dry air)
p_0 = 1000 # hPa (surface pressure)
# function for calculating the scale height
def scale_height(T=T_0, g=g, R=R_d):
return R * T / g
# calculate the scale height for normal conditions
H = scale_height()
# function to calculate the pressure from altitude
def pressure(z, H=H, p_0=1000):
return p_0 * np.exp(-z/H)
# calculate the pressure at different altitudes
z = np.linspace(0, 2e4, 1000)
p = pressure(z)
# calculate the pressure at the scale height
p_H = p_0 / np.e
# make the plot
fig, ax = plt.subplots()
ax.plot(p, z/1000, 'k-')
ax.plot([p_H]*2, [0, H/1000], 'b--')
ax.plot([0, p_H], [H/1000]*2, 'r--')
ax.plot(p_H, H/1000, marker='.', ms=15, color='k')
ax.text(p_H+10, H/2000, r'$p = \frac{p_0}{e}$', rotation=90, ha='left', va='center', color='b', fontsize=12)
ax.text(p_H-10, H/2000, 'pressure at scale height', rotation=90, ha='right', va='center', color='b', fontsize=8)
ax.text(p_H/2, H/1000-0.2, r'$H = \frac{R_d T}{g}$', ha='center', va='top', color='r', fontsize=12)
ax.text(p_H/2, H/1000+0.2, 'atmospheric scale height', ha='center', va='bottom', color='r', fontsize=8)
ax.annotate(r'$p = p_0 e^{-z/H}$', (pressure(13e3), 13), (350, 16), arrowprops=dict(arrowstyle= '-|>', color='k'))
ax.set_xlim((0, p[0]))
ax.set_ylim((0, 20))
ax.set_xticks([0,200,p_H,600,800,1000], labels=[0,200,r'$\approx%.0f\mathrm{\,hPa}$'%p_H,600,800,r'$p_0 = 1000\mathrm{\,hPa}$'])
ax.set_yticks([0,2.5,5,H/1000,10,12.5,15,17.5, 10], labels=[0,2.5,5,r'$\approx%.0f\mathrm{\,km}$'%(H/1000),10,12.5,15,17.5, 10])
ax.set_ylabel(r'atmospheric height $z$ (km)')
ax.set_xlabel(r'atmospheric pressure $p$ (hPa)')
ax.set_title('the atmospheric scale height relates pressure and height in the atmosphere')
ax.grid()
Consider two air parcels, $\mathrm{A}$ and $\mathrm{B}$. $\mathrm{A}$ has a temperature of $280 \mathrm{\,K}$ and pressure of $800 \mathrm{\,hPa}$. $\mathrm{B}$ has a temperature of $240 \mathrm{\,K}$ and pressure of $400 \mathrm{\,hPa}$.
What are the potential temperatures of $\mathrm{A}$ and $\mathrm{B}$?
Potential temperature is given by \begin{align} \theta = T\left(\frac{p_s}{p}\right)^\kappa, \end{align} where
# imports
from IPython.display import display, Markdown
# constants
R_d = 287 # J kg^-1 K^-1 (specific gas constant for dry air)
c_pd = 1006 # J kg^-1 K^-1 (specific heat at constant pressure for dry air)
# parameters
T_A = 280 # K
p_A = 800 # hPa
T_B = 240 # K
p_B = 400 # hPa
# function for potential temperature
def theta(T, p, p_0=1000):
kappa = R_d / c_pd
return T * (p_0/p)**kappa
# calculate the potential temperatures
theta_A = theta(T_A, p_A)
theta_B = theta(T_B, p_B)
# print the results
display(Markdown(r"## Results:"))
display(Markdown(r"For parcel $\mathrm{A}$ the potential temperature is $\theta_A = %.1f\mathrm{\,K}$." % theta_A))
display(Markdown(r"For parcel $\mathrm{B}$ the potential temperature is $\theta_B = %.1f\mathrm{\,K}$." % theta_B))
For parcel $\mathrm{A}$ the potential temperature is $\theta_A = 298.4\mathrm{\,K}$.
For parcel $\mathrm{B}$ the potential temperature is $\theta_B = 311.7\mathrm{\,K}$.
If $\mathrm{A}$ and $\mathrm{B}$ are in the same air column, is the column statically stable?
We have shown in class that the atmosphere is: \begin{align} \text{stable if:}\qquad &d\theta/dz > 0 \\ \text{unstable if:}\qquad &d\theta/dz < 0 \\ \text{neutral if:}\qquad &d\theta/dz = 0. \end{align}
Here
What would happen after we lifted a new parcel $\mathrm{C}$ with a potential temperature of $300 \mathrm{\,K}$ up to the level of parcel $\mathrm{B}$ (i.e. the environment of parcel $\mathrm{C}$ is now governed by the properties of parcel $\mathrm{B}$)?
Quick and easy answer:
We know that the atmosphere is neutral if $\frac{\partial \theta}{\partial z} = 0$, but since $\theta_C < \theta_B$ and they are at the same pressure level, we must have $T_C < T_B$ and $\rho_C > \rho_B$, which means that parcel $\mathrm{C}$ would sink below the level of parcel $\mathrm{B}$.
Detailed, quantitative answer:
Parcel $\mathrm{C}$ is lifted into an environment governed by the properties of parcel $\mathrm{B}$, and we would like to know it's buoyancy \begin{align} b = -g\frac{\rho_p - \rho_e}{\rho_p}, \end{align} or in our case the buoyancy of parcel $\mathrm{C}$ in the environment of parcel $\mathrm{B}$ is \begin{align} b_C = -g\frac{\rho_C - \rho_B}{\rho_C}, \end{align} to assess what would happen.
Here, $\rho_p$ is the density of the parcel and $\rho_e$ is the density of the environment.
Here, the pressure of the parcel and the environment are the same, so the Ideal Gas Law $\rho = \frac{p}{RT}$ allows us to replace $\rho$ with temperature so that \begin{align} b_C = -g\frac{\frac{p}{RT_C} - \frac{p}{RT_B}}{\frac{p}{RT_C}} = -g \frac{1/T_C - 1/T_B}{1/T_C} \approx -0.4 \mathrm{\,m\,s}^{-2}. \end{align} Since the buoycancy of parcel $\mathrm{C}$ is negative, it will sink.
# imports
from IPython.display import display, Markdown
# constants
g = 9.8 # m s^-1 (gravitational acceleration)
R_d = 287 # J kg^-1 K^-1 (specific gas constant for dry air)
c_pd = 1006 # J kg^-1 K^-1 (specific heat at constant pressure for dry air)
# parameters
T_B = 240 # K
theta_C = 300 # K
# function for getting T from theta
def T_from_theta(theta, p, p_0=1000):
kappa = R_d / c_pd
return theta / (p_0/p)**kappa
# function for getting the buoyancy from parcel and environmental temperatures
def buoyancy(T_p, T_e):
return -g * (1/T_p - 1/T_e) / (1/T_p)
# calculate the temperature of parcel C, and its buoyancy
T_C = T_from_theta(theta_C, p_B)
b_C = buoyancy(T_C, T_B)
# print the results
display(Markdown(r"## Results:"))
display(Markdown(r"The temperature of parcel $\mathrm{C}$ is $T_C = %.1f \mathrm{\,K}$." % T_C))
display(Markdown(r"The buoyancy of parcel $\mathrm{C}$ is $b_C = %.2f \mathrm{\,m\,s}^{-2}$." % b_C))
display(Markdown(r"Since the buoyancy is negative, the parcel will sink."))
The temperature of parcel $\mathrm{C}$ is $T_C = 231.0 \mathrm{\,K}$.
The buoyancy of parcel $\mathrm{C}$ is $b_C = -0.37 \mathrm{\,m\,s}^{-2}$.
Since the buoyancy is negative, the parcel will sink.
The mean temperature in an atmospheric layer between $750$ and $500 \mathrm{\,hPa}$ decreases in the eastward direction by $3^\circ\mathrm{C}$ per $100 \mathrm{\,km}$. The $750$-$\mathrm{hPa}$ geostrophic wind is northerly at $20 \mathrm{\,m\,s}^{-1}$. What is the geostrophic wind speed at $500 hPa$? Let $f = 10^{-4}\mathrm{\,s}^{-1}$.
We can here use the Thermal Wind relation, which states that along constant pressure surfaces: \begin{align} f \frac{\partial v}{\partial p} &= -\frac{R}{p}\frac{\partial T}{\partial x} \\ f \frac{\partial u}{\partial p} &= \frac{R}{p}\frac{\partial T}{\partial y}, \end{align} where
Now, this is quite similar to Question 3 on Homework 4. The difference is that we are given a temperature gradient in eastward ($x$) direction, so we need to use the above equation that has $\frac{\partial T}{\partial x}$ in it.
Let
We now would like to calculate $u_2$, the geostrophic wind at $p_2 = 500 \mathrm{\, hPa}$.
To find $v_2$, we can re-write the thermal wind relation with respect to $\frac{\partial T}{\partial x}$ as \begin{align} dv &= -\frac{R}{f p}\frac{\partial T}{\partial x}\, dp \\ &= - \frac{R}{f} \frac{\partial T}{\partial x}\, d \ln{p}. \end{align} Since we assume uniformly varying temperature and since $\ln(p)$ is linear we can discretize: \begin{align} \Delta v &= -\frac{R}{f} \frac{\Delta T}{\Delta x}\, \Delta ( \ln p ) \end{align} or \begin{align} v_2 - v_1 &= -\frac{R}{f} \frac{\Delta T}{\Delta x}\, ( \ln p_2 - \ln p_1 ). \end{align} Solving for $v_2$ yields \begin{align} v_2 &= -\frac{R}{f} \frac{\Delta T}{\Delta x}\, \ln \left(\frac{p_2}{p_1}\right) + v_1 \approx -55 \mathrm{\,m\,s}^{-1}. \end{align}
This means that the geostrophic wind at $p_2 = 500 \mathrm{\,hPa}$ is northerly at a speed of about $55 \mathrm{\,m\,s}^{-1}$.
# imports
from IPython.display import display, Markdown
import numpy as np
# constants
R = 287 # J kg^-1 K^-1 (specific gas constant for dry air)
f = 1e-4 # s^-1 (coriolis frequency)
# parameters
p1 = 75000 # Pa (pressure level of lower atmospheric layer)
p2 = 50000 # Pa (pressure level of higher atmospheric layer)
dT = -3 # K (temperature difference in x-direction)
dx = 100e3 # m (distance in x-direction)
v_1 = - 20 # m / s
# calculate geostrophic wind at 500 hPa
v_2 = - R / f * dT / dx * np.log( p2 / p1) + v_1
# print the results
display(Markdown(r"## Results:"))
display(Markdown(r"The geostrophic wind at $p_2 = %.0f \mathrm{\,hPa}$ is $v_2 \approx %.1f \mathrm{\,m\,s}^{-1}$." % (p2/100, v_2)))
The geostrophic wind at $p_2 = 500 \mathrm{\,hPa}$ is $v_2 \approx -54.9 \mathrm{\,m\,s}^{-1}$.
The figure below shows observed $500 \mathrm{\,hPa}$ geopotential height contours for average January conditions. Contours are labeled in $\mathrm{dam}$ ($1\mathrm{\,dam} = 10\mathrm{\,m}$). Estimate the $500 \mathrm{\,hPa}$ geostrophic zonal wind at $35^\circ\mathrm{N}$, $110^\circ\mathrm{W}$, which is near Tucson. Unlike question 2, use the value of $f$ at $35^\circ\mathrm{N}$ (Hint: remember that $dy = ad\phi$, where $a$ is Earth's radius, to convert from latitude $\phi$ to distance $y$).
Let
We want to estimate the zonal (i.e. parallel to latitudes, from west to east) geostrophic wind $u_g$, so we need to estimate the longitudinal (i.e. south to north) geopotential height gradient $\frac{d z_g}{d y}$.
From the plot we can estimate (as shown below)
Now, we can calculate \begin{align} & \frac{dz_g}{dy} = \frac{dz_g}{a d\phi} \approx \frac{\Delta z_g}{a\Delta \phi} = \frac{z_g^{(2)} - z_g^{(1)}}{a(\phi_2 - \phi_1)} \approx -0.11 \mathrm{\,m \,km}^{-1}. \end{align}
Just like in Question 5 on Homework 4 (and in class), we start with the equation for geostrophic balance, and use the hydrostatic balance to re-write it in terms of the geopotential height $z_g$: \begin{align} fu_g &= - \frac{1}{\rho} \frac{\partial p}{\partial y}\Biggr\vert_z = \frac{1}{\rho}\ \frac{\partial p}{\partial z}\Biggr\vert_y\ \frac{\partial z}{\partial y} \Biggr\vert_p = \frac{1}{\rho}\ (-\rho g)\ \frac{\partial z}{\partial y} \Biggr\vert_p = - g\ \frac{\partial z}{\partial y} \Biggr\vert_p = - g\frac{\partial z_g}{\partial y} \end{align} This means we can write \begin{align} u_g = - \frac{g}{f} \frac{\partial z_g}{\partial y}, \end{align} where at $\phi = 35^\circ$ we have \begin{align} f = 2\Omega \sin(\phi) \approx 8.4 \times 10^{-5}\mathrm{\,s}^{-1}. \end{align} Plugging in our values, we can calculate the zonal geostrophic wind \begin{align} u_g \approx 12.6 \mathrm{\,m\,s}^{-1}, \end{align} which means that it is a westerly wind.
# imports
from IPython.display import display, Markdown
import numpy as np
# constants
a = 6371e3 # m (radius of the Earth)
Omega = 7.29e-5 # s^-1 (angular velocity of the Earth)
g = 9.8 # m s^-2 (gravitational acceleration)
# parameters
phi = 35 # degrees (latitude at which we want to estimate the geostrophic wind)
phi_1 = 32.5 # degrees
phi_2 = 37.5 # degrees
zgy1 = 5700 # m
zgy2 = 5640 # m
# calculate the gradient of the geopotential height
dzgdy = (zgy2 - zgy1) / (a * (np.deg2rad(phi_2) - np.deg2rad(phi_1)))
# calculate the coriolis frequency
f = 2 * Omega * np.sin(np.deg2rad(phi)) # s^-1 (coriolis frequency)
# calculate the geostrophic wind
u_g = - g / f * dzgdy
# print results
display(Markdown(r"## Results:"))
display(Markdown(r"The coriolis frequency at $\phi = %.0f^\circ$ is $f \approx %.3g \mathrm{\,s}^{-1}$" % (phi, f)))
display(Markdown(r"The temperature gradient is $\frac{\partial z_g}{\partial y} \approx %.3g \mathrm{\,m\,km}^{-1}$" % (dzgdy*1000)))
display(Markdown(r"The geostrophic zonal wind at $500\mathrm{\,hPa}$ is $u_g \approx %.1f \mathrm{\,m\,s}^{-1}$." % (u_g)))
if u_g != 0:
display(Markdown(r"This is a %serly wind." % ("west" if u_g > 0 else "east")))
The coriolis frequency at $\phi = 35^\circ$ is $f \approx 8.36e-05 \mathrm{\,s}^{-1}$
The temperature gradient is $\frac{\partial z_g}{\partial y} \approx -0.108 \mathrm{\,m\,km}^{-1}$
The geostrophic zonal wind at $500\mathrm{\,hPa}$ is $u_g \approx 12.6 \mathrm{\,m\,s}^{-1}$.
This is a westerly wind.
In class we derived a 1-layer model of the climate system, where the net energy flux at the top-of-atmosphere is: \begin{align} R = \frac{S}{4} (1-\alpha) - \epsilon\sigma T_a^4 - (1-\epsilon) \sigma T_s^4 \end{align} Now suppose the emissivity can be divided up into 2 terms: one which is independent of surface temperature (like $\mathrm{CO}_2$) and one which is proportional to temperature (like $\mathrm{H}_2\mathrm{O}$). I.e. $\epsilon = \epsilon_0 + C (T_s - T_0)$, where $C$ is a constant and $\epsilon_0$ is the emissivity at some base-line $T_0$. Derive an expression for the *water vapor feedback* in this system: \begin{align} \lambda_{wv} = \frac{\partial R}{\partial \epsilon}\Biggr\rvert_{T_a, T_s} \frac{\partial \epsilon}{\partial T_s}\Biggr\rvert_{\epsilon_0, T_0}. \end{align} Is $\lambda_{wv}$ a positive (destabilizing) or negative (stabilizing) feedback?
We have \begin{align} \frac{\partial \epsilon}{\partial T_s}\Biggr\rvert_{\epsilon_0, T_0} = C \end{align} and \begin{align} \frac{\partial R}{\partial \epsilon}\Biggr\rvert_{T_a, T_s} &= - \frac{\partial}{\partial \epsilon}\Biggr\rvert_{T_a} \left( \epsilon \sigma T_a^4 \right) + \frac{\partial}{\partial \epsilon}\Biggr\rvert_{T_a^4} \left( \epsilon \sigma T_s^4 \right) \\ &= -\sigma T_a^4 + \sigma T_s^4 \\ &= \sigma (T_s^4 - T_a^4). \end{align}
Therefore \begin{align} \lambda_{wv} &= \frac{\partial R}{\partial \epsilon}\Biggr\rvert_{T_a, T_s} \frac{\partial \epsilon}{\partial T_s}\Biggr\rvert_{\epsilon_0, T_0} \\ &= \sigma C \left( T_s^4 - T_a^4 \right) \end{align}
In class we have shown that for this model \begin{align} T_a &= \left(\frac{S(1 - \alpha)}{4\sigma(2 - \epsilon)} \right)^\frac{1}{4} \\ T_s &= \left(\frac{S(1 - \alpha)}{2\sigma(2 - \epsilon)} \right)^\frac{1}{4} = 2^\frac{1}{4}T_a. \end{align} so we can substitute \begin{align} \lambda_{wv} &= \sigma C \left( T_s^4 - T_a^4 \right) \\ &= \sigma C \left( 2^{1/4} T_a^4 - T_a^4 \right) \\ &= \left(2^{1/4}-1\right) \sigma C T_a^4\\ &\approx 0.19\, \sigma C T_a^4 \\ &\approx 0.16\, \sigma C T_s^4 \end{align}
where
Since in $\lambda_{wv} \approx 0.19\, \sigma C T_a$, both $\sigma$ and $T_a$ are positive, we know that the sign of $\lambda_{wv}$ is the same as the sign of $C$.
We know that with increasing temperatures
Therefore, we expect the emissivity to increase with increasing temperatures. This means that $T_s - T_0 > 0$ and consequently we must have $C > 0$ for this to hold true given that $\epsilon = \epsilon_0 + C (T_s - T_0)$.
This means $\lambda_{wv} > 0$, and the water vapor feedback is *positive* .