njleach

physics | climate | python

Climate modelling in Excel...

You can download the implementation of the FaIRv2.0 model in Excel described in this post here.

This is a brief post that introduces an Excel version of the FaIRv2.0 model1 that I’ve created. I go through some of the key features, suggest some experiments that you can do, and provide recipes for how to carry out a few different types of analyses with the model. Much of the information here is also available in the README file contained alongside the workbook in the .zip file. Something to make clear right from the start is that while I have tried to ensure everything is correct, including testing the model in as many configurations I can think of, there could still be mistakes. For this reason, for scientific or policy-relevant research, I’d strongly recommend using the “official” python model version where possible.

Introduction to FaIRv2.0 in Excel

There are several resources available with more information on the model itself, including the paper pre-print reference at the bottom, or in this other post. For this reason, I’m not going to go into the model specifics here. However, it’s worth mentioning that the Excel version of the model here is the full FaIRv2.0.0 model. It can replicate any experiment possible with the python version (though large ensemble experiments could be considered impossible practically due to the time they would take to run…). It includes all the forcing agents included in the python version: CO$$_2$$, other GHGs, aerosols etc. From here onwards, I’ll refer to the FaIRv2.0.0 Excel version simply as the “model”.

Model Structure

The model workbook is divided into four categories of worksheet: output, model setup, model input and calculation. These do more or less exactly what you’d expect… There are also a number of hidden sheets containing underlying data, but these sheets are what you need to actually run the model.

Model setup

Configuration

This is where you set-up how you want the model to be run:

• Runmode: choose whether you want the model to run in concentration-driven or emission-driven mode. A mixed mode is not possible.
• Baseline scenario: select the desired baseline scenario (data from 2,3). Any user defined input emissions or concentrations will be added to the top of the baseline selected here. The “None” scenario is defined as zero emissions, or constant pre-industrial concentrations depending on the selected runmode.
• Selected agents: choose what GHGs / aerosol emissions you want to be included in the model run. “1” = included in run, “0” = not included in run. The worksheets will dynamically adjust to the agents selected here.
• Selected indirect forcings: choose which indirect forcings you want to include.
• External forcings: choose any external forcings to provide exogenously. For example, if you don’t want the model to compute CO$$_2$$ forcing internally, you can deselect it in the “Selected agents” option, and select it here. Note that these external forcings only work for scenarios where they exist - for the idealised esm/1pctCO2/abrupt-4xCO2 experiments selecting external forcings will break the model.
Parameters
• gas_params: set the gas cycle / forcing parameters for all species here. After changing parameters, to reset the table back to the defaults, select and cell in the table, and then navigate to “Query” → “Refresh” in the menu bar.
• response_params: set the parameters for the thermal response & SESLR model here. A thermal response parameter calculation tool is provided to compute response parameters for user-specified ECS / TCR combinations, based on mean inferred CMIP6 response timescales.
Specifying input emissions or concentrations
• emms_in: here you can specify emissions to be added on top of the selected baseline scenario emissions. It is only possible to input user-specified emissions for agents selected in the model configuration.
• conc_in: here you can specify concentrations to be added on top of the selected baseline scenario concentrations. It is only possible to input user-specified concentrations for agents selected in the model configuration.
• forc_in: here you can specify additional external forcing to be included on top of any selected external forcings for the selected baseline scenario.
Calculation tabs
• C: where concentrations are computed (if emissions-driven) or where user-inputs are added to the selected baseline scenario (if concentration-driven).
• ERF: where effective radiative forcing is computed from concentrations & externally prescribed forcings.
• T: where the surface temperature response (relative to the start time) is computed from ERF.
• THC: where total earth-system heat-content is computed based on the 0D energy-balance model.
• SLR: where the sea-level rise (relative to the start time) is computed. Semi-empirical sea-level rise model based on Kopp et al4.

Model output

The calculation tabs contain the “raw” model output. If you wish to do further data analysis in Excel or another programme, copy the data directly from these tabs as desired. For instance, if you want to compute the difference in temperature attributable to a specific emission perturbation, you’ll need to run the baseline, save the output, then run again with the perturbation, save the output, and finally difference the two outputs. However, the “reporting” tab contains a variety of key model outputs and charts that users may find sufficient. Some notes on the options provided are below:

Output options
• agent to chart: choose any of the agents selected to display their emissions / cumulative emissions / concentrations / ERF in the charts.
• baseline start & baseline end: choose the start / end period for the surface temperature response chart.
• chart year start & chart year end: choose the start / end times for the timeseries displayed on the charts. Sometimes Excel makes weird choices over axes limits, so on changing these you may need to manually set the chart axes ranges.
• observational temperature dataset: choose one of several observational surface temperature datasets5,6,7,8,9.
• observational sea level rise dataset: choose one of two observational sea level rise datasets4,10.
Model diagnostics

Most of these are self-explanatory. A few definitions used:

• “end of century” : 2081-2100 mean
• warming rate over last two decades : difference between 2010-2019 and 2000-2009 mean modelled temperature

Some experiment “recipes”

Probably the best way to get familiar with the model is to actually use it yourself - so to end this post I’m just providing some “recipes” for how to carry out various different types of experiment.

Standard emissions-driven SSP2-45 experiment (all forcings included)
• model config
• Runmode : 0
• Baseline scenario : ssp245
• Selected agents : all → 1
• Selected indirect forcings : all → 1
• External forcings : Anthropogenic|Albedo change & Natural → 1, all else → 0
• gas_params : default
• response_params : default
• emms_in, concs_in, forc_in : all cells → empty
Emissions-driven SSP2-45 experiment with 100 GtC CO$$_2$$ perturbation in 2015 (all forcings included)

as above with

• emms_in : 2015 \ carbon_dioxide → 100
abrupt-4xCO2 experiment
• model config
• Runmode : 1
• Baseline scenario : abrupt-4xCO2
• Selected agents : all → 0 except carbon_dioxide
• Selected indirect forcings : all → 0
• External forcings : all → 0
• gas_params : default except PI_conc \ carbon_dioxide → 284
• response_params : default
• emms_in, concs_in, forc_in : all cells → empty
1pctCO2-cdr experiment
• model config
• Runmode : 1
• Baseline scenario : None
• Selected agents : all → 0 except carbon_dioxide
• Selected indirect forcings : all → 0
• External forcings : all → 0
• gas_params : default except PI_conc \ carbon_dioxide → 284
• response_params : default
• emms_in, forc_in : all cells → empty
• concs_in :
• 1850-1989 \ carbon_dioxide284*(1.01^(@Time_index-1850)-1)
• 1990-2130 \ carbon_dioxide284*(1.01^(140+1990-@Time_index)-1)

Thoughts

That’s that for this short intro to FaIRv2.0 in Excel. Although not nearly as flexible or powerful as the python version, for carrying out simple experiments quickly, I still rely on it quite a bit! It can also be used as a teaching tool to explain many key concepts in climate science, such as: equilibrium climate sensitivity, transient climate response, realised warming fraction, transient climate response to cumulative carbon emissions, global warming potentials etc…

Feel free to email me / comment if you have any questions or notice any mistakes or issues in the model!