Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

BPRP case failed to calculate CO2 concentration

Eric

Eric
Member
Hello,

I am using esm-ssp126 case (CESM2.1.3) to carry out some experiments. My experiments changed the land carbon uptake and theoretically the atmospheric CO2 concentration would not be increasing much as usual. However, the CO2 concentration evolution is exactly the same as usual. It looks like the CO2 concentration is still specified while it is supposed to be calculated. I was wondering where I can find the codes calculating atmospheric CO2 concentration by emission, and land and ocean carbon fluxes? Any help on the problem I met would also be appreciated.
 

klindsay

CSEG and Liaisons
Staff member
It looks like CESM2.1.3 doesn't have out of the box SSP compsets that are BPRP (prognostic CO2).
All of the out of the box SSP compset are BDRD (prescribed CO2).
What compset are you using?
That said, even in a BDRD compset, I would expect to see differences in CAM's diagnostic CO2 and CO2_LND tracers,
if the land CO2 fluxes were changed.
I wonder if you are using a WACCM compset. The land and ocean CO2 fluxes are not coupled to the WACCM CO2 tracer.
 

klindsay

CSEG and Liaisons
Staff member
What variable are you looking at for CO2 concentration? CAM's co2vmr is not coupled to land and ocean CO2 fluxes, and I don't think it is used by the model in BPRP compsets. The fields that are coupled to land and ocean CO2 fluxes are CO2_LND, CO2_OCN, and CO2. Note that the units of these fields are (kg CO2)/(kg dry air). To convert to ppm, multiply by 1.0e6 * 28.966 / 44.0, where 28.966 and 44.0 are the molecular weights in CAM of dry air and CO2 respectively. (The dry air molecular weight actually comes from CIME's src/share/util/shr_const_mod.F90.)
 

Eric

Eric
Member
Hi Keith,

Thanks for your response! I used long name:
SSP126_CAM60_CLM50%BGC-CROP_CICE_POP2%ECO%ABIO-DIC_MOSART_CISM2%NOEVOLVE_WW3_BGC%BPRP
to create a SSP126BPRP case.

Yes I was looking at co2vmr for CO2 concentration. CO2_LND, CO2_OCN, and CO2 are three-dimensional fields. Do I need to consider latitude weights when trying to get a global average? I found a field in the atm output named "gw". However, this latitude weight data looks incorrect. Theoretically, the sum of each grid's latitude weight should be equal to 1. But the sum of latitude weights is 2 in that data.
 

Eric

Eric
Member
I ran esm-SSP126-BPRP case for 16 years and calculated CO2 concentration by "CO2" field. it has a large difference with the value in "co2vmr" field. I was wondering if this is because the model-calculated CO2 concentration is different from prescribed CO2 concentration, or is because I used a wrong way to calculated CO2 concentration from "CO2" field?

There are SSP126-BDRD CMIP6 simulation results on the glade system. I found a CMIP6 variable named "co2mass" in Amon that was derived from the CESM2 atm output "co2vmr". Do you know which CMIP6 variable in which the CESM2 atm output "CO2" was stored? I guess I can test if it is for some errors in my calculation or not by comparing "co2vmr" and "CO2" in SSP126-BDRD simulation results.

Thanks!!
 

klindsay

CSEG and Liaisons
Staff member
Eric,

There are a few ways to compute the global average. I'm assuming you want the global surface average.
You do need to consider weighting as a function of latitude to do this properly, and "gw" is an important ingredient for this. You are correct that "gw" is not normalized to have sum 1.0, so normalization is needed, either by you, or by a tool that you use.
1) NCO tool suite: The command "ncwa -O -w gw -a lon,lat infile.nc outfile.nc" will compute global averages on model layers, using gw as weight. The surface average of CO2 would be the last entry with respect to the dimension lev.
2) ncl usage: the functions wgt_areaave or wgt_areaave_Wrap with the arguments wgty=gw, wgtx=1.0 does the same computation as 1).
3) python/xarray: ds["CO2"].weighted(ds["gw"]).mean(dim=["lon", "lat"]) does this same computation, where ds is a dataset with variables "CO2" and "gw".

Computing the average over the full volume of the atmopsheric model is a bit more complicated, because the thickness of the model layers changes in time. Let me know if you would like a recipe for that.

Keith
 

klindsay

CSEG and Liaisons
Staff member
The model-calculated CO2 does differ from the prescribed CO2 concentration. Attached is a slide of annual mean global average surface CO2 from the CESM2 esm-hist experiments, compared to an observational product, which co2vmr is based on. The lower panel shows the difference between model minus obs/co2vmr. Local values, particularly the surface layer over land, can also vary considerably from the global average.

The CAM variable "CO2" is reported in the CMIP variable "co2". It has been interpolated to pressure levels. It's units are "mol mol-1", so multiply by 1e6 to get ppm.

Since co2mass is based on co2vmr, I would steer clear of it in BPRP/esm experiments.
 

Attachments

  • Lindsay_BGCWG_June_2021_CO2_slide.pdf
    154.9 KB · Views: 20

Eric

Eric
Member
Hi Keith,

I thought co2vmr represents the whole atmosphere average CO2 concentration. It seems co2vmr only represents surface CO2 concentration according to what you said. And it seems although people always say "atmospheric CO2 concentration" in the literature, it actually refers to surface CO2 concentration. It is good to know this. (Please correct me if this understanding is wrong).
For CMIP variable "co2", can I use the last-layer data to represent surface CO2 concentration?

Thanks a lot!
 

Eric

Eric
Member
I read in the CMIP6 variable "co2" from the CESM2 esm-hist experiments (both r1 and r2 members), and there is no value over land in surface layers. I was wondering if these values are intentionally removed for low quality, or are missing due to some data transfer issues?
Thanks!!
 

klindsay

CSEG and Liaisons
Staff member
When running CAM (i.e., not WACCM) with prescribed CO2, there is no difference between surface average and whole atmosphere average, as co2 used in radiative computations has a single value, co2vmr, over the whole atmosphere. The distinction only arises when co2 varies in space.

The answer to what people usually mean, surface or whole atmosphere, when they mention co2 depend on who you're talking to. People that deal with the troposphere tend to think of co2 as well-mixed, and it is, except for elevated values over land in the boundary layer. People that deal with the upper atmosphere are more used to thinking about lateral and vertical variations in co2, as co2 does vary considerably in the upper atmosphere.

There are no surface values over land for "co2" in CMIP6 output because it has been interpolated to pressure levels, and the levels with the highest pressure do not exist over land, particularly over taller mountains. This feature, missing values on pressure levels, does complicate analysis of CMIP6 output. I haven't done analysis of "co2" in other model's CMIP6 output, but I expect this feature to be present in their output as well. Looking at the CMIP6 variables at Data Request Section: CMORvar, I now see that "co2s" is the surface concentration of CO2. That's useful for models that provide it. It looks like we overlooked that in CESM.

One potential approach to obtaining surface "co2" in CMIP6 output for models that don't have "co2s" is the use the non-missing value with highest pressure. This will not be the same as the surface value, as that pressure level might be above the surface, but this might be the best you can do.

If you're on CISL machines, you can access CAM's output of CO2 on model layers for ensemble member 1 of esm-hist in the files
b.e21.BHIST_BPRP.f09_g17.CMIP6-esm-hist.001.cam.h0.CO2.185001-189912.nc
b.e21.BHIST_BPRP.f09_g17.CMIP6-esm-hist.001.cam.h0.CO2.190001-194912.nc
b.e21.BHIST_BPRP.f09_g17.CMIP6-esm-hist.001.cam.h0.CO2.195001-199912.nc
b.e21.BHIST_BPRP.f09_g17.CMIP6-esm-hist.001.cam.h0.CO2.200001-201412.nc
in the directory /glade/campaign/collections/cmip/CMIP6/timeseries-cmip6/b.e21.BHIST_BPRP.f09_g17.CMIP6-esm-hist.001/atm/proc/tseries/month_1
This directory is accessible from casper, but not cheyenne.
The output for ensemble member 2 is similarly located, replace 001 with 002 in the above.
 
Top