Parameter settings
Load libraries
[1]:
# Convenient jupyter setup
%load_ext autoreload
%autoreload 2
%config IPCompleter.greedy=True
[2]:
from numpy import log, e
import pint
from scipy.constants import Stefan_Boltzmann # W m^-2 K^-4
ureg = pint.UnitRegistry()
Radiative Forcing calculations
[3]:
# ∆RF = 5.35ln(C/Co)
# 405
# 315
# https://journals.sagepub.com/doi/pdf/10.1260/0958-305X.25.8.1439#:~:text=On%20this%20basis%2C%20the%20IPCC,to%20the%20Beer%2DLambert%20law.
# IPCC relation
5.35*log(405/315) / log(e) * ureg.watt / ureg.meter ** 2
[3]:
1.3445321913028478 watt/meter2
[4]:
def ipcc_delta_co2(ratio: float):
return 5.35*log(ratio) / log(e) * ureg.watt / ureg.meter ** 2
print(ipcc_delta_co2(2))
print(ipcc_delta_co2(400/300))
3.708337415995707 watt / meter ** 2
1.5390990876170274 watt / meter ** 2
[5]:
log(1.33) * 3
[5]:
0.8555368267009874
[6]:
# Lightfoot and Mamer 2014 relation
def rf_quad_co2(conc: float):
return (-0.00002480* conc**2 + 0.03231 * conc) * ureg.watt / ureg.meter ** 2
rf_quad_co2(405) - rf_quad_co2(315)
[6]:
1.3008600000000001 watt/meter2
Redoing f1prime calculation in the paper
[7]:
# c. 300 to c. 400 ppm
def f1_prime(
delta_forcing=0.75 * ureg.watt / ureg.meter ** 2, # W m -2
temp_surface=301 * ureg.kelvin, # K
cloud_cover=0.6, # dimensionless fraction
cloud_constant_a=0.4, # dimensionless fraction
emissivity=0.97, # dimensionless fraction
):
stefan_boltzmann = (
Stefan_Boltzmann * ureg.watt / ureg.meter ** 2 / ureg.kelvin ** 4
) # W m^-2 K^-4
return -delta_forcing / (
emissivity
* stefan_boltzmann
* (temp_surface ** 4)
* (1 - cloud_constant_a * (cloud_cover ** 2))
)
[8]:
print(f1_prime())
-0.0019406090190503145 dimensionless
[9]:
print(f1_prime(delta_forcing=rf_quad_co2(405) - rf_quad_co2(315)))
-0.00336594753136239 dimensionless
[10]:
print(f1_prime(delta_forcing=ipcc_delta_co2(400/300)))
-0.003982386094188952 dimensionless
[11]:
print(f1_prime(delta_forcing=ipcc_delta_co2(405/315), cloud_constant_a=0.6))
-0.0037984436566326457 dimensionless
[13]:
temp_surface=301 * ureg.kelvin
temp_surface.to(ureg.celsius)
# almost 28 degrees
[13]:
27.850000000000023 degree_Celsius
[14]:
type(temp_surface)
[14]:
pint.quantity.build_quantity_class.<locals>.Quantity
[ ]: