{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Assignment: Climate change in the zero-dimensional EBM\n",
"\n",
"This notebook is part of [The Climate Laboratory](https://brian-rose.github.io/ClimateLaboratoryBook) by [Brian E. J. Rose](http://www.atmos.albany.edu/facstaff/brose/index.html), University at Albany."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Learning goals\n",
"\n",
"Students completing this assignment will gain the following skills and concepts:\n",
"\n",
"- Familiarity with the Jupyter notebook\n",
"- Familiarity with the zero-dimensional Energy Balance Model\n",
"- Understanding of the adjustment toward equilibrium temperature\n",
"- Introduction to the concept of ice-albedo feedback\n",
"- Use of numerical timestepping to find the equilibrium temperature\n",
"- Python programming skills: arrays, loops, and simple graphs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Instructions\n",
"\n",
"- In a local copy of this notebook (on the JupyterHub or your own device) **add your answers in additional cells**.\n",
"- **Complete the required problems** below. \n",
"- Some assignments have **optional bonus problems**. These are meant to be interesting and thought-provoking, but are not required. Extra credit will be given for interesting answers to the bonus problems.\n",
"- Follow [these instructions](https://brian-rose.github.io/ClimateLaboratoryBook/how-to.html#ualbany-users-interact-through-our-dedicated-jupyterhub) to run your notebook on the UAlbany JupyterHub. Remember to set your kernel to `Python 3 Jan. 2024 Environment`\n",
"- Remember you can add new cells using the \"+\" button, and set your cell types to `Markdown` for text, and `Code` for Python code!\n",
"- **Include comments** in your code to explain your method as necessary.\n",
"- Remember to actually answer the questions. **Written answers in Markdown cells are required** (not just code and figures!)\n",
"- Submit your solutions in **a single Jupyter notebook** that contains your text, your code, and your figures.\n",
"- *Make sure that your notebook* ***runs cleanly without errors:***\n",
" - Save your notebook.\n",
" - From the `Kernel` menu, select `Restart & Run All`.\n",
" - Did the notebook run from start to finish without error and produce the expected output?\n",
" - If yes, save again and submit your notebook file.\n",
" - If no, fix the errors and try again."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Problem 1: Time-dependent warming in the zero-dimensional Energy Balance Model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The equation of the Energy Balance Model\n",
"\n",
"In lecture we defined a zero-dimensional Energy Balance Mdel for the global mean surface temperature $T$ as follows\n",
"\n",
"$$ C \\frac{dT}{dt} = \\text{ASR} - \\text{OLR}$$\n",
"\n",
"$$ \\text{ASR} = (1-\\alpha) Q $$\n",
"\n",
"$$ \\text{OLR} = \\tau \\sigma T^4$$\n",
"\n",
"where we defined these terms:\n",
"\n",
"- $C$ is a heat capacity for the atmosphere-ocean column\n",
"- $\\alpha$ is the global mean planetary albedo\n",
"- $\\sigma = 5.67 \\times 10^{-8}$ W m$^{-2}$ K$^{-4}$ is the Stefan-Boltzmann constant\n",
"- $\\tau$ is our transmissivity parameter for the atmosphere.\n",
"- $Q$ is the global-mean incoming solar radiation, or *insolation*.\n",
"\n",
"Refer back to our class notes for parameter values."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Part (a)\n",
"\n",
"If the heat penetrated to twice as deep into the ocean, the value of $C$ would be twice as large. Would this affect the **equilibrium temperature**? Why or why not? \n",
"\n",
"_Hint: look carefully at the equation for the Energy Balance Model. What is the condition for equilibrium? What role does $C$ play in the equation at equilibrium?_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Your answer goes here! (Double-click this cell to edit)_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Part (b)\n",
"\n",
"In the [Lecture notes we used numerical timestepping](https://brian-rose.github.io/ClimateLaboratoryBook/courseware/zero-dim-ebm.html#automate-the-timestepping-with-a-loop) to investigate a *hypothetical climate change scenario* in which $\\tau$ decreases to 0.57 and $\\alpha$ increases to 0.32. We produced a graph of $T_s(t)$ over a twenty year period, starting from an initial temperature of 288 K. Here you will repeat this calculate with a larger value of $C$ and compare the warming rates. Specifically:\n",
"\n",
"- Repeat our in-class time-stepping calculation with the same parameters we used before (including a heat capacity of $C = 4\\times10^8$ J m$^{-2}$ K$^{-1}$), but extend it to 50 years. **You should create an array of temperatures with 51 elements, beginning from 288 K**.\n",
"- Now do it again, but use $C = 8\\times10^8$ J m$^{-2}$ K$^{-1}$ (representing 200 meters of water). You should **create another 51-element array** of temperatures also beginning from 288 K.\n",
"- **Make a well-labeled graph** that compares the two temperatures over the 50-year period."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Part (c)\n",
"\n",
"What do your results show about the role of heat capacity on climate change? **Give a short written answer.**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Problem 2: Albedo feedback in the Energy Balance Model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The albedo formula\n",
"\n",
"For this exercise, we will introduce a new physical process into our model by **letting the planetary albedo depend on temperature**. The idea is that a warmer planet has less ice and snow at the surface, and thus a lower planetary albedo (less reflection).\n",
"\n",
"Represent the ice-albedo feedback through the following formula:\n",
"\n",
"$$ \\alpha(T) = \\left\\{ \\begin{array}{ccc}\n",
"\\alpha_i & & T \\le T_i \\\\\n",
"\\alpha_o + (\\alpha_i-\\alpha_o) \\frac{(T-T_o)^2}{(T_i-T_o)^2} & & T_i < T < T_o \\\\\n",
"\\alpha_o & & T \\ge T_o \\end{array} \\right\\}$$\n",
"\n",
"with the following parameter values:\n",
"\n",
"- $\\alpha_o = 0.289$ is the albedo of a warm, ice-free planet\n",
"- $\\alpha_i = 0.7$ is the albedo of a very cold, completely ice-covered planet\n",
"- $T_o = 293$ K is the threshold temperature above which we assume the planet is ice-free\n",
"- $T_i = 260$ K is the threshold temperature below which we assume the planet is completely ice covered. \n",
"\n",
"For intermediate temperature, this formula gives a smooth variation in albedo with global mean temperature. It is tuned to reproduce the observed albedo $\\alpha = 0.299$ for $T = 288$ K. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Part (a)\n",
"\n",
"- Define a Python function that implements the above albedo formula. Your function should take the temperature $T$ as input and return the correct albedo $\\alpha$. \n",
"- Use your function to calculate albedos for a wide range on planetary temperature (e.g. from $T=250$ K to $T=300$ K.)\n",
"- Present your results (albedo as a function of global mean temperature, or $\\alpha(T)$) in a nicely labeled graph with temperature $T$ along the x axis and albedo $\\alpha$ on the y axis.\n",
"\n",
"_Hint: your code will need to decide which of the three formulas to use based on the value of $T$. You might want to review the use of `if` and `else` statements in Python. Alternatively, you can check out the `numpy.where()` function (see [the numpy documentation](https://numpy.org/doc/stable/reference/generated/numpy.where.html)) which can make decisions simultaneously on arrays of numbers. There is definitely more than one way to solve this problem. It doesn't matter how you do it as long as it works!_"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Part (b)\n",
"\n",
"Now investigate a climate change scenario with this new model:\n",
"\n",
"- Suppose that the transmissivity decreases from 0.611 to 0.57 (same as before)\n",
"- This time the albedo is not a fixed, known number. Instead, it varies with the current value of temperature according the formula you plotted in Part (a).\n",
"- Your task is to **calculate the new equilibrium temperature**. \n",
"- Unlike when the albedo is a fixed number, it is not possible to solve for the equilibrium temperature analytically. Instead, you will use numerical time-stepping to find the equilibrium temperature\n",
"- Repeat the procedure from Problem 1b *(time-step forward for 50 years from an initial temperature of 288 K and make a graph of the results)*, but this time **use the function you defined above to compute the albedo for the current temperature**."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Part (c)\n",
"\n",
"Explain in your own words how the temperature-dependent albedo affects the equilibrium temperature. If the albedo never changed from the observed value $0.299$, would the equilibrium temperature be larger or smaller?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Bonus problem\n",
"\n",
"*Open-ended investigation for extra credit, not required*\n",
"\n",
"Something very different occurs in this model if you introduce a strong negative radiative forcing, either by substantially reducing greenhouse gases (which we would represent as an increase in the transmissivity $\\tau$), or by decreasing the incoming solar radiation $Q$.\n",
"\n",
"Investigate, using your numerical model code, and report your results along with your thoughts."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"____________\n",
"\n",
"## Credits\n",
"\n",
"This notebook is part of [The Climate Laboratory](https://brian-rose.github.io/ClimateLaboratoryBook), an open-source textbook developed and maintained by [Brian E. J. Rose](http://www.atmos.albany.edu/facstaff/brose/index.html), University at Albany.\n",
"\n",
"It is licensed for free and open consumption under the\n",
"[Creative Commons Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/) license.\n",
"\n",
"Development of these notes and the [climlab software](https://github.com/climlab/climlab) is partially supported by the National Science Foundation under award AGS-1455071 to Brian Rose. Any opinions, findings, conclusions or recommendations expressed here are mine and do not necessarily reflect the views of the National Science Foundation.\n",
"____________"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}