ENV / ATM 415: Climate Laboratory, Spring 2016

Assignment 4

Out: Tuesday March 8, 2016

Due: Thursday March 24, 2016 at 10:15 am.

Your assignment

Answer all questions below, using the example code as a guide.

Just like last time, you will submit your work as a single notebook file. Save your notebook as

[your last name]_Assignment04.ipynb

Again, try to make sure your notebook runs from start to finish without error. Follow the same instructions as in Assignment 3.

Submit your complete notebook file by email to brose@albany.edu



In [ ]:
#  The usual import statements to get us started
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import climlab

Question 1: computing global averages

Suppose we have an axis of evenly spaced latitude points. Here for example we create an array of 18 points with latitude every 10 degrees:


In [ ]:
lat = np.arange(-85., 90., 10.)
print lat

Now suppose that we have an array of temperature data on this grid. Each data point represents the zonal average temperature, that is, the average temperature across all longitudes at that particular latitude.

Here we create and plot some "fake" temperature data with the same array size as lat. The formula used here to create the data is just for illustration and is not important.


In [ ]:
x = np.sin(np.deg2rad(lat))
T = 288. + 10.*x - 15*(3*x**2-1)
print 'The array T is ', T
plt.plot(lat, T)
plt.xlim(-90,90)
plt.xticks([-90,-60,-30,0,30,60,90])
plt.grid()
plt.title('T versus latitude')

We want to calculate the global average temperature.

(a) We might naively think that we can just take a simple average of the numbers in the array called T. Write Python code to take this average in two different ways:

  • by writing a for loop to step through all the numbers in the array
  • using the np.mean() shortcut

Verify that your two different calculations give the same result.

(b) Because T represents zonal average temperature, unfortunately taking a simple average of the array T as you just did does NOT give a meaningful global average temperature. Explain why, thinking about the spherical shape of the Earth.

(c) FOR BONUS POINTS: provide a formula that DOES give a meaningful global average temperature, and write Python code to calculate it.

Question 2: EBM with fixed albedo

Using climlab, set up a 1D energy balance model with annual mean insolation and default parameters (no albedo feedback).

a) Integrate to equilibrium. Verify that the global mean planetary energy balance is closed.

b) Repeat part (a) after decreasing $A$ (the constant in the OLR parameterization) by 4 W m$^{-2}$ (a global warming experiment). What is the radiative forcing in this experiment?

c) Make two nicely labeled graphs, each with 2 curves (including legends):

  • one graph showing temperature before and after the global warming
  • another showing heat transport before and after.

d) Did the heat transport change? Why or why not?

e) Calculate the change $\Delta T$ in global mean temperature.

f) Based on this temperature change, and refering back to your notes from earlier in the semester, calculate the feedback and gain for this model.

g) What parameter do you think you would have to change in the model to get a different feedback? What physical process do you think this might represent?

Here is a little bit of code to get you started:


In [ ]:
#  Create the EBM with all default parameters, including annual mean insolation
model1 = climlab.EBM_annual()
print model1

Question 3: EBM with interactive ice line

Repeat Question 1, this time using a model with an interactive snow/ice line. Follow this example code to set up the model with appropriate albedo values:

(a) - (f): same as Question 1

(g) Compare to your results from Question 1 and comment on the effects of the interactive ice line on:

  • the spatial pattern of warming (i.e. do some latitudes warm more than others?)
  • the climate sensitivity (change in global mean temperature)
  • the net feedback

In [ ]:
#  By providing explicit albedo parameters including ai (the albedo of cold icy regions), 
#  we get a model with an interactive ice line
ice_model = climlab.EBM_annual(a0=0.3, a2=0.078, ai=0.62, Tf=-10.)
print ice_model

Question 4: Snowball Earth in the EBM

These exercises are largely inspired by Table 3.3 of the Primer. Use our climlab version of the diffusive EBM to answer these questions:

(a) Using the parameter values from Question 3 with interactive ice edge, determine what decrease of the solar constant from its default (present-day) value of $S_0 = 1365.2$ W m$^{-2}$ is required just to glaciate the Earth completely (ice edge at 0ºN).

This will require some trial and error!


In [ ]:
#  Here is an example of changing the solar constant in an existing model:
print 'The current solar constant is ', ice_model.subprocess.insolation.S0, 'W/m2.'
#  Now change it
ice_model.subprocess.insolation.S0 = 1350.
print 'The new solar constant is ', ice_model.subprocess.insolation.S0, 'W/m2.'

#  You can also pass S0 as an input argument when creating a new model:
newmodel = climlab.EBM_annual(S0=1350., a0=0.3, a2=0.078, ai=0.62, Tf=-10.)
print 'The solar constant in newmodel is ', newmodel.subprocess.insolation.S0, 'W/m2.'

(b) Repeat part (a) but with some different parameter values. Parameters include $A$, $B$, $D$, albedo values, and the ice threshold temperature $T_f$. Each one of these can be specified as input arguments when you create a new model, as illustrated above.

Provide a very brief justification for your parameter choices (e.g. what are you trying to investigate?). How does the change in parameters affect your answer about the minimum solar constant decrease necessary to freeze over the model Earth?

Question 5: De-glaciating the Snowball

Once the Earth is just fully glaciated, begin to increase the solar constant. Determine how much of an increase in the solar constant is required before the ice retreats from the equator. How do you interpret this value?

Allow the climate to reach equilibrium after the ice retreats. What does the Earth look like now in your model? Is it much colder, much warmer, or about the same as our present-day climate?

For this question you can use whatever parameter values you like -- those from Question 3 or Question 4, or something else. Just make sure that you state clearly what are doing.


In [ ]: