The upper ocean box model is forced by observed atmospheric pCO2 and temperature. It calculates the pCO2 and air-sea CO2 flux. The model runs 1960-2017 (Dec 2017) . If linear atmospheric boundary condition is selected, this is applied only 1980-2017. The output that is the focus of the plotting is 1980-2017. For complete documentation, including the equation being solved, see section 2.5 of McKinley et al. (2020).
The zip file McKinley2020_boxmodel.zip contains code and documentation for the Upper Ocean Box Model along with information about how to make modifications to do sensitivity tests. See "Data Files" for access to McKinley2020_boxmodel.zip.
====================================================
Files included in the zip file McKinley2020_boxmodel.zip:
2 main files
Ocean_Atm_Carbon_Box_McKinley2020.m
plot_boxmodel_McKinley2020.m
3 helper routines
remove_fixed_trend.m
make_annual.m
calc_pCO2_McKinley2020.m
1 data file for atmospheric pCO2
adjusted_atmpco2_fromML_v3.mat
"README for Upper ocean diagnostic box model.rtf" (McKinley et al. 2020). Text reproduced below with additional information about data sources.
====================================================
In Matlab2017a.
Coding and documentation by Galen A. McKinley, Columbia University / Lamont Doherty Earth Observatory. mckinley@ldeo.columbia.edu
DESCRIPTION from "README for Upper ocean diagnostic box model.rtf"
In Ocean_Atm_Carbon_Box_McKinley2020.m
Atmospheric pCO2 boundary conditions are loaded, and the linear forcing, as a change from change from Jan 1980 to Dec 2017 is calculated.
The magnitude and duration of El Chichon and Mt Pinatubo volcano temperature anomalies are set and plotted.
The model equation is integrated, including carbon chemistry at each timestep.
In plot_boxmodel_McKinley2020.m, set key input variables:
On lines 28-33, set model temperature, overturning, depth of box, piston velocity (kw), deep abiotic DIC concentration, Alkalinity.
On line 37 set real or linear atmospheric pCO2 (do_linear_pco2 = 0, 1, respectively).
On line 38, set volcano forcing of SST or not (vary_temp = 1, 0, respectively).
In plot_boxmodel_McKinley2020.m, set years to plot and to save on lines 44-45.
In plot_boxmodel_McKinley2020.m, line 50, set to save out *mat files (tosave=1), into an existing directory.
In plot_boxmodel_McKinley2020.m, plot results starting on line 90. Save results starting on line 164.
====================================================
PARAMETER INFORMATION
List variables hard coded in Ocean_Atm_Carbon_Box_McKinley2020.m
% A % ocean Area
% rho % density (kg/m3), default is 1027
% timestep % choose 1/12 for monthly
Input variables for each run of Ocean_Atm_Carbon_Box_McKinley2020.m
do_linear_pco2atm=0; % if = 1, will replace NOAA ESRL global pCO2atm with linear change from 1980-2018
vary_temp=1; % if = 1, volcano imposed, mean T set by Temp; details in Ocean_Atm_Carbon_Box_McKinley2020.m
% if = 0, TempC throughout
% TempC % Temperature, set for box (C)
% nu_in % rate of ocean overturning (m3/yr)
% dz % Box depth (m)
% kw_in % piston velocity, cm/hr input
% deepDIC % deep ocean DIC
% ALK % Alkalinity, global constant, mmol/m3
---
pCO2_atm (uatm) is read in from file adjusted_atmpco2_fromML_v4.mat (Mean adjusted in years 1959-1979 to merge from Mauna Loa only prior to 1980 to global after. Water vapor correction has been applied using global SST to find uatm.) Mauna Loa xCO2 data came from
https://www.esrl.noaa.gov/gmd/ccgg/trends/data.html from 1959-1979, and then ESRL global marine boundary layer
https://www.esrl.noaa.gov/gmd/ccgg/mbl/data.php . From annual mean, we interpolate back to monthly to create a smoothly evolving timeseries that is deseasonalized. The slight adjutment is to bring the mean of Mauna Loa and the global MBL into agreement at the 1979-1980 transition.
There is additional detail on the data processing to derive pCO2 from NOAA xCO2 in supplementary of McKinley, G. A., Fay, A. R., Eddebbar, Y. A., Gloege, L. and Lovenduski, N. S.: External Forcing Explains Recent Decadal Variability of the Ocean Carbon Sink, AGU Advances, 1(2), 1, doi:10.1029/2019AV000149, 2020.
adjusted_atmpco2_fromML_v3.mat contains variables:
adjusted_atmpco2_1959_2018 60x1 480 double
atm_pco2_wvcorr_global_AW 468x1 3744 double
atm_pco2_wvcorr_global_AW_annual 39x1 312 double
time_year 40x1 320 double
Output from Ocean_Atm_Carbon_Box_McKinley2020.m
[pco2_ocean,pco2atm,trend_pco2atm,flux,time,dt]
pco2_ocean % Global mean Ocean pCO2 (uatm)
pco2atm % Global mean atmospheric pCO2 (uatm)
trend_pco2atm % atmospheric pCO2 trend for 1980 to 2017 (uatm/yr)
flux % air-sea CO2 flux (PgC/yr)
time % time of simulation
dt % timestep (fraction of year)
If plot_boxmodel_McKinley2020.m, these variables can be set there. Plotting of output is automated.
% TempC % Temperature, set for box (C)
% NU_IN % rate of ocean overturning (m3/yr)
% dz % Box depth (m)
% kw_in % piston velocity, cm/hr input
% deepDIC % deep ocean DIC
% ALK % Alkalinity, global constant, mmol/m3