Simplified Energy Balance Model#

Task 1: Write a Python function for the OLR and effective temperature for later use.

def T_eff(OLR):
    """ Effective global mean emission temperature """
    # Stefan-Boltzmann constant
    sigma = 5.67e-8
    
    # Write your code here
    return (OLR/sigma)**0.25
    
     
def OLR(T):
    """ Stefan-Boltzmann law """
    # Stefan-Boltzmann constant
    sigma = 5.67e-8
    
    # Write your code here
    return sigma * T**4
    
print("Effective temperature: {:.2f} K".format(T_eff(239)))
Effective temperature: 254.80 K

Task 2: Extend the OLR function by another transmissivity constant \(\tau\) which takes this effect into account. Determine the transmissivity for a global mean temperature of 288 K.

def tau(OLR, T):
    """ transmissivity """
    # Stefan-Boltzmann constant
    sigma = 5.67e-8
    
    # Write your code here
    return OLR / (sigma*T**4)
    
     
def OLR(T, tau):
    """ Stefan-Boltzmann law """
    # Stefan-Boltzmann constant
    sigma = 5.67e-8
    
    # Write your code here
    return tau * sigma * T**4
    
# Print the results
print("Transmissivity assuming a global mean temperature of 288 K: {:.2f}".format(tau(239,288)))
Transmissivity assuming a global mean temperature of 288 K: 0.61

Task 3: Determine the planetary albedo from the observations and write a function for the absorbed shortwave radiation, the part of the incoming sunlight that is not reflected back to space

# Calculate the planetary albedo
Q = 341.2
Qref = 101.9
alpha = Qref/Q

print("Planetary Albedo: {:0.4f}".format(alpha))
Planetary Albedo: 0.2987

Task 4: What additional amount of energy would have to remain in the system for the global temperature to rise by 4 K?

def ASR(Q, albedo):
    """ Absorbed shortwave radiation """
    # Write your code here
    return Q * (1-alpha)
# Print the results
print("Absorbed shortwave radiation: {:0.4f}".format(ASR(Q, alpha)))
Absorbed shortwave radiation: 239.3000

Task 5: Rearrange the equation according to the temperature denoting our equilibrium temperature. Substitute the observed values for insolation, transmissivity and planetary albedo and calculate the equlibrium temperature.

def equilibrium_temperature(alpha,Q,tau):
    """ Equilibrium temperature """
    # Stefan-Boltzmann constant
    sigma = 5.67e-8
    return ((1-alpha)*Q/(tau*sigma))**(1/4)

Teq_observed = equilibrium_temperature(alpha,Q,tau(238.5, 288))
print(Teq_observed)
288.2412062415524
# Print the results

Task 6: With simple approaches such as equlibrium temperature, conceptual scenarios can be calculated. For example, the connection between the increase in albedo due to more cloud cover and the associated decrease in transmissivity can be investigated. For example, assume that the planetary albedo increases to 0.32 due to more cloud cover and that the transmissivity decreases to 0.57. What is the equilibrium temperature?

# Make your calculations here

Task 8: Write a function called step_forward(T, dt) that returns the new temperature given the old temeprature T and timestep dt. Assume an initial temperature of 288 K and integrate the function for a few timestep and observe how the temperature changes.

def step_forward(Q, T, Cw, alpha, tau, dt):
    # Write your code here
    pass
# Do first step forward
# Do second step forward
# Do third step forward

Task 9: Integrate the equation over a time of 200 years and plot the result. Use the following initial and boundary conditions:

$

()#\[\begin{align} S_0 &=1360 ~ W m^{-2} \\ T_0 &= 273 ~ K \\ C_w &= 10^8 ~ J/(m^2 \cdot K) \\ \alpha &= 0.3 \\ \tau &= 0.64 \end{align}\]

$

import numpy as np
import matplotlib.pyplot as plt


def OLR(T, tau):
    """ Stefan-Boltzmann law """
    # Write your code here
    pass

def ASR(Q, alpha):
    """ Absorbed shortwave radiation """
    # Write your code here
    pass


def step_forward(Q, T, Cw, alpha, tau, dt):
    """ Time integration """
    # Write your code here
    pass


def ebm(T0, Q=341.3, Cw=10e8, alpha=0.3, tau=0.64, years=100):
    ''' This is a simple Energy Balance Model with global radiation and outgoing longwave radiation.'''
     # Write your code here
    pass
# Experiment 1

Task 10: What happens if the intial temperature is set to 293 K ?

# Experiment 2

Task 11: What changes do you observe with a higher \(C_w\) value (e.g. \(C_w=10\cdot10^8 ~ J/(m^2 \cdot K)\))?

# Experiment 3

Task 12: How does the result change when \(\tau=1\)?

# Experiment 4

Case Study: Venus.#

Calculate the mean surface temperature on Venus. Due to its proximity to the Sun, Venus has a very high irradiance of \(S_{0}=2619 ~ Wm^{-2}\). Due to the high cloud cover, the albedo is about 0.7. What surface temperature can be expected? (Use the previous values for \(C_w\) and \(\tau\)).

# Experiment 5

Compare the measurements with your simulation.

Is there a difference? If so, why does this difference exist? (Use the model to prove your hypothesis)

# Experiment 6