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

Change CO2 concentration in CESM2 FHIST experiment

wxalpha

New Member
Hi all,

I am looking forward to conducting some experiments with time-varying CO2 and aerosol emissions using CESM2 FHIST. I checked the env_run.xml, CaseDocs/atm_in and Buildconf/cam.input_data_list, but I am still not sure which way I should take to change the CO2 concentration. Could anyone help me distinguish these plausible approaches and which one is correct?

1. env_run.xml: CCSM_CO2_PPMV: is this setting the CO2 value in ppmv for CLM and POP?
2. user_nl_cam: co2vmr - co2 mixing ratio, also a fixed value.
3. co2flux_fuel_file: Filepath for dataset containing CO2 flux from fossil fuel.

Any help will be deeply appreciated!
 

brianpm

Active Member
I will take a stab at this, but I could be wrong.

There is some complexity involved in specifying the CO2. I think a lot of this complexity arises from two issues. First, there is a lot of historical baggage that CESM carries, and it takes a long time to change/remove things... that's why there are still parameters that have the old 'CCSM' name in them, for example. Second, as the model has evolved to be an Earth System Model and not just an "AOGCM" (to use an term that is probably out of fashion now), there are options for running an interactive carbon cycle. So there are many different configurations of "CO2" even with the supported compsets.

You haven't specified how you plan to run your experiments, so I'll try to provide a general response and you can follow up. Again, this is my current understanding, and I could get something wrong.

In coupled configurations, you can control how the CO2 works by specifying co2_flag = [.true. | .false.]. When it is true, then the co2flux_fuel_file can be provided to drive atmospheric CO2 as emissions. Here is an example from a historical run's atm_in file:
Code:
&co2_cycle_nl
co2_flag               = .true.
co2_readflux_aircraft          = .true.
co2_readflux_fuel              = .true.
co2flux_fuel_file              = '/glade/p/cesmdata/cseg/inputdata/atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc'
/


In the 1%/year run, CO2 is supposed to ramp up from pre-industrial values. In this case co2_flag = .true., but no co2flux_fuel_file is specified. Instead, the CO2 is taken from the surface "fixed lower boundary conditions." Here is how that is specified in atm_in:

Code:
&chem_surfvals_nl
flbc_file              = '/glade/p/cesmdata/cseg/inputdata/atm/waccm/lb/LBC_CMIP6_1pctCO2_y1-165_GlobAnnAvg_0p5degLat_c180929.nc'
flbc_list              = 'CO2','CH4','N2O','CFC11eq','CFC12'
flbc_type              = 'SERIAL'
scenario_ghg           = 'CHEM_LBC_FILE'
/

Another coupled case is the pre-industrial control, where CO2 should NOT be evolving. In this case again co2_flag = .true. in atm_in, but now neither co2flux_fuel_file nor flbc_file are specified. Instead, the atmospheric CO2 is directly specified using co2vmr = 284.7e-6. Note that this appears in the same sub-namelist as flbc_file, here is the example:

Code:
&chem_surfvals_nl
ch4vmr         =    791.6e-9  
co2vmr         =    284.7e-6  
f11vmr         =    12.48e-12 
f12vmr         =    0.0       
flbc_list              = ' '
n2ovmr         =    275.68e-9 
/

So that covers the coupled cases in "AOGCM" type of configurations. I'm not going to touch the ESM configurations. If you want to run in atmosphere-land configurations ("AMIP" or "F-case"), then the approach is similar.

For AMIP cases, the CO2 changes in time based on observed concentrations. That is specified just like in the ramped case above:
Code:
&chem_surfvals_nl
flbc_file              = '/glade/p/cesmdata/cseg/inputdata/atm/waccm/lb/LBC_1750-2015_CMIP6_GlobAnnAvg_c180926.nc'
flbc_list              = 'CO2','CH4','N2O','CFC11eq','CFC12'
flbc_type              = 'SERIAL'
scenario_ghg           = 'CHEM_LBC_FILE'
/

For cases where the CO2 should not vary in time, such as you can specify just like in the coupled case. Here is an example from a pre-industrial case where CO2 is specified to be quadrupled:
Code:
&co2_cycle_nl
co2_flag               = .true.
/
&chem_surfvals_nl
ch4vmr         =    791.6e-9  
co2vmr         = 1138.8e-6
f11vmr         =    12.48e-12 
f12vmr         =    0.0       
flbc_list              = ' '
n2ovmr         =    275.68e-9 
/

Just as an extra complication, you might also want the land model to use one value, but the radiative transfer to use another value of CO2. For example, the CFMIP case piSST-4xCO2-rad does this with the land using the pre-industrial CO2 and the radiation using quadruple that value. This can be specified as:

Code:
co2vmr         =    284.7e-6  
co2vmr_rad             = 1138.8e-6
I have been setting these via user_nl_cam. Sometimes you can use CCSM_CO2_PPMV in env_run.xml, but in this last case it is important to not set it there because that will set the value that the land model sees.

I hope this is helpful. If you find that any of this is incorrect, let me know.
 

brianpm

Active Member
Well, I see that you DID specify how you were going to run these: FHIST. So that is covered in my response, and I think the easy answer is therefore to use flbc_file.
 

wxalpha

New Member
Well, I see that you DID specify how you were going to run these: FHIST. So that is covered in my response, and I think the easy answer is therefore to use flbc_file.
Hi @brianpm, I deeply appreciate your detailed guidance!! I will try to run the experiment and see if it works!
 

wxalpha

New Member
Hi @brianpm, I tried the setting for AMIP experiments (FHIST), it works well! I hope you don't mind if I follow up on your statement.

I think what I feel confused is the difference between co2flux_fuel_file and flbc_file. In co2flux_fuel_file, the variables are 3D (time, lat, on) in units of kg m-2 s-1. But in flbc_file, the variables are 2D (time, lat) in units of mol/mol. So my questions are:

1. In 1ptCO2 experiment with coupled configurations, why the CO2 must be taken from the surface fixed lower boundary conditions flbc_file? Could I manually create a .nc file with a 1% rise in CO2 emission every year and use it as input to co2flux_fuel_file?
2. Similarly, in AMIP historical runs, could I use co2flux_fuel_file instead of flbc_file?

Thank you for your kind help again!
 

wxalpha

New Member
I also noted in the CESM2 fully-coupled ScenarioMIP experiments, both the co2flux_fuel_file and flbc_file are specified:

Code:
&co2_cycle_nl
 co2_flag               = .true.
 co2_readflux_aircraft          = .true.
 co2_readflux_fuel              = .true.
 co2flux_fuel_file              = '/glade/p/cesmdata/cseg/inputdata/atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_ScenarioMIP_IAMC-REMIND-MAGPIE-ssp585_201401-210112_fv_0.9x1.25_c20190207.nc'
/

Code:
&chem_surfvals_nl
 flbc_file              = '/glade/p/cesmdata/cseg/inputdata/atm/waccm/lb/LBC_2014-2500_CMIP6_SSP585_0p5degLat_GlobAnnAvg_c190301.nc'
 flbc_list              = 'CO2','CH4','N2O','CFC11eq','CFC12'
 flbc_type              = 'SERIAL'
 scenario_ghg           = 'CHEM_LBC_FILE'

I am also not sure how CO2 is evolving in this case. Is the co2flux_fuel_file overwritten by the lower boundary condition? Do they contradict each other? Thank you very much for your assistance!
 

brianpm

Active Member
My initial response was oversimplified. I've taken a longer look and discussed with one of the developers. Here's an updated/corrected response.

The co2_cycle namelist parameter turns on 4 CO2 tracers in CAM. That is, it adds 4 advected tracers. These may or may not impact CAM's radiative transfer. If co2_cycle (CAM namelist) and co2_cycle_rad_passive (In CAM_NAMELIST_OPTS in env_run.xml) are both TRUE, then these tracers are NOT used by the radiation scheme.

In this case, the CO2 for the radiation is specified either with the co2vmr value or by the flbc_file (with scenario_ghg = 'CHEM_LBC_FILE').

In cases where it is unclear, you can confirm whether the CO2 that is being used by radiation is the advected or non-advected constituent. The CAM namelist parameter rad_climate will have a CO2 entry; if it is 'N:CO2:CO2' then the non-advected CO2 is used, while 'A:CO2:CO2' indicates that it is the advected CO2. In the ScenarioMIP runs that you mentioned,

Code:
<entry id="CAM_NAMELIST_OPTS" value=" co2_cycle_rad_passive=.true. ">
in env_run.xml.

In the CAM namelist:
Code:
&co2_cycle_nl
co2_flag               = .true.
co2_readflux_aircraft          =                   .true.
co2_readflux_fuel              =                       .true.
co2flux_fuel_file              = '/glade/p/cesmdata/cseg/inputdata/atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_ScenarioMIP_IAMC-AIM-ssp370_201401-210112_fv_0.9x1.25_c20190207.nc'
/

&chem_surfvals_nl
flbc_file              = '/glade/p/cesmdata/cseg/inputdata/atm/waccm/lb/LBC_2014-2500_CMIP6_SSP370_0p5degLat_GlobAnnAvg_c190301.nc'
flbc_list              = 'CO2','CH4','N2O','CFC11eq','CFC12'
flbc_type              = 'SERIAL'
scenario_ghg           = 'CHEM_LBC_FILE'
/

rad_climate            = 'A:Q:H2O', 'N:O2:O2',
         'N:CO2:CO2', 'N:ozone:O3',
         'N:N2O:N2O', 'N:CH4:CH4',
         'N:CFC11:CFC11', 'N:CFC12:CFC12',
         'M:mam4_mode1:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode1_rrtmg_aeronetdust_sig1.6_dgnh.48_c140304.nc', 'M:mam4_mode2:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode2_rrtmg_aitkendust_c141106.nc',
         'M:mam4_mode3:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode3_rrtmg_aeronetdust_sig1.2_dgnl.40_c150219.nc', 'M:mam4_mode4:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode4_rrtmg_c130628.nc',
         'N:VOLC_MMR1:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.6_mode1_c170214.nc', 'N:VOLC_MMR2:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.6_mode2_c170214.nc',
         'N:VOLC_MMR3:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.2_mode3_c170214.nc'

So to address your question directly, I would recommend using the flbc_file and scenario_ghg = 'CHEM_LBC_FILE' if you are doing a 1% run. Or use the built in GHG ramping functionality. I say that because it seems easier and it will be slightly cheaper without the extra advected constituents. If you are doing experiments where CO2 emissions matter and regional effects might be of interest, I guess that using the prognostic CO2 would work. But in that case, you might want to dig deeper into the co2_cycle options to make sure you are doing the experiment that you intend.

The code that controls the CO2 options related to the chem_surfvals namelist is in components/cam/src/physics/cam/chem_surfvals.F90.

Also note that WACCM has it's own CO2 that is used by the radiation (i.e., rad_climate has 'A:CO2:CO2').

I hope this helps to clear up the issue. Apologies for jumping the gun with my first response, which was incomplete.
 

wxalpha

New Member
My initial response was oversimplified. I've taken a longer look and discussed with one of the developers. Here's an updated/corrected response.

The co2_cycle namelist parameter turns on 4 CO2 tracers in CAM. That is, it adds 4 advected tracers. These may or may not impact CAM's radiative transfer. If co2_cycle (CAM namelist) and co2_cycle_rad_passive (In CAM_NAMELIST_OPTS in env_run.xml) are both TRUE, then these tracers are NOT used by the radiation scheme.

In this case, the CO2 for the radiation is specified either with the co2vmr value or by the flbc_file (with scenario_ghg = 'CHEM_LBC_FILE').

In cases where it is unclear, you can confirm whether the CO2 that is being used by radiation is the advected or non-advected constituent. The CAM namelist parameter rad_climate will have a CO2 entry; if it is 'N:CO2:CO2' then the non-advected CO2 is used, while 'A:CO2:CO2' indicates that it is the advected CO2. In the ScenarioMIP runs that you mentioned,

Code:
<entry id="CAM_NAMELIST_OPTS" value=" co2_cycle_rad_passive=.true. ">
in env_run.xml.

In the CAM namelist:
Code:
&co2_cycle_nl
co2_flag               = .true.
co2_readflux_aircraft          =                   .true.
co2_readflux_fuel              =                       .true.
co2flux_fuel_file              = '/glade/p/cesmdata/cseg/inputdata/atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_ScenarioMIP_IAMC-AIM-ssp370_201401-210112_fv_0.9x1.25_c20190207.nc'
/

&chem_surfvals_nl
flbc_file              = '/glade/p/cesmdata/cseg/inputdata/atm/waccm/lb/LBC_2014-2500_CMIP6_SSP370_0p5degLat_GlobAnnAvg_c190301.nc'
flbc_list              = 'CO2','CH4','N2O','CFC11eq','CFC12'
flbc_type              = 'SERIAL'
scenario_ghg           = 'CHEM_LBC_FILE'
/

rad_climate            = 'A:Q:H2O', 'N:O2:O2',
         'N:CO2:CO2', 'N:ozone:O3',
         'N:N2O:N2O', 'N:CH4:CH4',
         'N:CFC11:CFC11', 'N:CFC12:CFC12',
         'M:mam4_mode1:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode1_rrtmg_aeronetdust_sig1.6_dgnh.48_c140304.nc', 'M:mam4_mode2:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode2_rrtmg_aitkendust_c141106.nc',
         'M:mam4_mode3:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode3_rrtmg_aeronetdust_sig1.2_dgnl.40_c150219.nc', 'M:mam4_mode4:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode4_rrtmg_c130628.nc',
         'N:VOLC_MMR1:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.6_mode1_c170214.nc', 'N:VOLC_MMR2:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.6_mode2_c170214.nc',
         'N:VOLC_MMR3:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.2_mode3_c170214.nc'

So to address your question directly, I would recommend using the flbc_file and scenario_ghg = 'CHEM_LBC_FILE' if you are doing a 1% run. Or use the built in GHG ramping functionality. I say that because it seems easier and it will be slightly cheaper without the extra advected constituents. If you are doing experiments where CO2 emissions matter and regional effects might be of interest, I guess that using the prognostic CO2 would work. But in that case, you might want to dig deeper into the co2_cycle options to make sure you are doing the experiment that you intend.

The code that controls the CO2 options related to the chem_surfvals namelist is in components/cam/src/physics/cam/chem_surfvals.F90.

Also note that WACCM has it's own CO2 that is used by the radiation (i.e., rad_climate has 'A:CO2:CO2').

I hope this helps to clear up the issue. Apologies for jumping the gun with my first response, which was incomplete.
Hi Brian,

Thank you so much for checking with developers for answering my question!!

I might need some time to run some test experiments and digest all these settings. Many thanks!

All the best,
Yujia
 

wxalpha

New Member
My initial response was oversimplified. I've taken a longer look and discussed with one of the developers. Here's an updated/corrected response.

The co2_cycle namelist parameter turns on 4 CO2 tracers in CAM. That is, it adds 4 advected tracers. These may or may not impact CAM's radiative transfer. If co2_cycle (CAM namelist) and co2_cycle_rad_passive (In CAM_NAMELIST_OPTS in env_run.xml) are both TRUE, then these tracers are NOT used by the radiation scheme.

In this case, the CO2 for the radiation is specified either with the co2vmr value or by the flbc_file (with scenario_ghg = 'CHEM_LBC_FILE').

In cases where it is unclear, you can confirm whether the CO2 that is being used by radiation is the advected or non-advected constituent. The CAM namelist parameter rad_climate will have a CO2 entry; if it is 'N:CO2:CO2' then the non-advected CO2 is used, while 'A:CO2:CO2' indicates that it is the advected CO2. In the ScenarioMIP runs that you mentioned,

Code:
<entry id="CAM_NAMELIST_OPTS" value=" co2_cycle_rad_passive=.true. ">
in env_run.xml.

In the CAM namelist:
Code:
&co2_cycle_nl
co2_flag               = .true.
co2_readflux_aircraft          =                   .true.
co2_readflux_fuel              =                       .true.
co2flux_fuel_file              = '/glade/p/cesmdata/cseg/inputdata/atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_ScenarioMIP_IAMC-AIM-ssp370_201401-210112_fv_0.9x1.25_c20190207.nc'
/

&chem_surfvals_nl
flbc_file              = '/glade/p/cesmdata/cseg/inputdata/atm/waccm/lb/LBC_2014-2500_CMIP6_SSP370_0p5degLat_GlobAnnAvg_c190301.nc'
flbc_list              = 'CO2','CH4','N2O','CFC11eq','CFC12'
flbc_type              = 'SERIAL'
scenario_ghg           = 'CHEM_LBC_FILE'
/

rad_climate            = 'A:Q:H2O', 'N:O2:O2',
         'N:CO2:CO2', 'N:ozone:O3',
         'N:N2O:N2O', 'N:CH4:CH4',
         'N:CFC11:CFC11', 'N:CFC12:CFC12',
         'M:mam4_mode1:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode1_rrtmg_aeronetdust_sig1.6_dgnh.48_c140304.nc', 'M:mam4_mode2:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode2_rrtmg_aitkendust_c141106.nc',
         'M:mam4_mode3:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode3_rrtmg_aeronetdust_sig1.2_dgnl.40_c150219.nc', 'M:mam4_mode4:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode4_rrtmg_c130628.nc',
         'N:VOLC_MMR1:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.6_mode1_c170214.nc', 'N:VOLC_MMR2:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.6_mode2_c170214.nc',
         'N:VOLC_MMR3:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.2_mode3_c170214.nc'

So to address your question directly, I would recommend using the flbc_file and scenario_ghg = 'CHEM_LBC_FILE' if you are doing a 1% run. Or use the built in GHG ramping functionality. I say that because it seems easier and it will be slightly cheaper without the extra advected constituents. If you are doing experiments where CO2 emissions matter and regional effects might be of interest, I guess that using the prognostic CO2 would work. But in that case, you might want to dig deeper into the co2_cycle options to make sure you are doing the experiment that you intend.

The code that controls the CO2 options related to the chem_surfvals namelist is in components/cam/src/physics/cam/chem_surfvals.F90.

Also note that WACCM has it's own CO2 that is used by the radiation (i.e., rad_climate has 'A:CO2:CO2').

I hope this helps to clear up the issue. Apologies for jumping the gun with my first response, which was incomplete.

Hi Brian,

As Cheyenne is not available this week, I try to understand the configurations based on the CESM2 scientifically validated cases in /glade/work/cmip6/cases. Your instructions really help a lot! But because I do plan to run some experiments in which the regional CO2 emission matters, I have one following question and I hope you do not mind have another look. I checked the chem_surfvals.F90, but did not find variables related to the co2flux_fuel_file. Thanks in advance!

I found a "special" case, that is, /glade/work/cmip6/cases/DECK/b.e21.BHIST_BPRP.f09_g17.CMIP6-esm-hist.001. Please see the attached code for the user_cam_nl. In this case, there is no co2_cycle_rad_passive option in env_run.xml. In cam_user_nl the rad_climate is A:CO2:CO2. However, both co2flux_fuel_file and flbc_file are specified. So my question is: how CO2 is evolving in this case?

Code:
rad_climate            = 'A:Q:H2O', 'N:O2:O2',
         'A:CO2:CO2', 'N:ozone:O3',
         'N:N2O:N2O', 'N:CH4:CH4',
         'N:CFC11:CFC11', 'N:CFC12:CFC12',
         'M:mam4_mode1:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode1_rrtmg_aeronetdust_sig1.6_dgnh.48_c140304.nc', 'M:mam4_mode2:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode2_rrtmg_aitkendust_c141106.nc',
         'M:mam4_mode3:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode3_rrtmg_aeronetdust_sig1.2_dgnl.40_c150219.nc', 'M:mam4_mode4:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/mam4_mode4_rrtmg_c130628.nc',
         'N:VOLC_MMR1:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.6_mode1_c170214.nc', 'N:VOLC_MMR2:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.6_mode2_c170214.nc',
         'N:VOLC_MMR3:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/volc_camRRTMG_byradius_sigma1.2_mode3_c170214.nc'
         /
               
&co2_cycle_nl
co2_flag               = .true.
co2_readflux_aircraft          = .true.
co2_readflux_fuel              = .true.
co2flux_fuel_file              = '/glade/p/cesmdata/cseg/inputdata/atm/cam/ggas/emissions-cmip6_CO2_anthro_surface_175001-201512_fv_0.9x1.25_c20181011.nc'

&chem_surfvals_nl
flbc_file              = '/glade/p/cesmdata/cseg/inputdata/atm/waccm/lb/LBC_1750-2015_CMIP6_GlobAnnAvg_c180926.nc'
flbc_list              = 'CO2','CH4','N2O','CFC11eq','CFC12'
flbc_type              = 'SERIAL'
scenario_ghg           = 'CHEM_LBC_FILE'

Thanks a lot,
Yujia
 

brianpm

Active Member
My guess is that including 'CO2' in flbc_list has no impact on the simulation, since the radiation sees the advected CO2 and presumably the fluxes between the components are using that CO2 as well (this is controlled by something called CCSM_BGC). This is the ESM configuration of the model, where the carbon cycle should be interactive, following Eyring et al.:
In naming the experi- ments, we distinguish between simulations with CO2 con- centrations calculated and anthropogenic sources of CO2 prescribed (esm-piControl and esm-hist) and simulations with prescribed CO2 concentrations (all others). Hereafter, models that can calculate atmospheric CO2 concentration and account for the fluxes of CO2 between the atmosphere, the ocean, and biosphere are referred to as Earth System Models (ESMs).
 

wxalpha

New Member
My guess is that including 'CO2' in flbc_list has no impact on the simulation, since the radiation sees the advected CO2 and presumably the fluxes between the components are using that CO2 as well (this is controlled by something called CCSM_BGC). This is the ESM configuration of the model, where the carbon cycle should be interactive, following Eyring et al.:
Got it! Thank you so much for all these detailed instructions!!
 
Hi,

I tried to use fixed co2 concentration with

&chem_surfvals_nl
ch4vmr = 791.6e-9
co2vmr = 284.7e-6
f11vmr = 12.48e-12
f12vmr = 0.0
flbc_list = ' '
n2ovmr = 275.68e-9
/

in user_nl_cam

but when I run ./case.build

it returns the following error

INFO: Chem flbc_file in use. co2vmr = 355.0e-6 removed from namelist.
CAM build-namelist - INFO: Chem flbc_file in use. ch4vmr = 791.6e-9 removed from namelist.
CAM build-namelist - INFO: Chem flbc_file in use. n2ovmr = 275.68e-9 removed from namelist.
CAM build-namelist - INFO: Chem flbc_file in use. f11vmr = 12.48e-12 removed from namelist.
CAM build-namelist - INFO: Chem flbc_file in use. f12vmr = 0.0 removed from namelist.
err=CAM build-namelist - ERROR: CO2 is missing from flbc_list

I wonder if you have seen similar errors before? Thanks!
 

brianpm

Active Member
@zhouwy1128@gmail_com -- Please check the setting of `scenario_ghg` as that is the parameter that controls how prescribed GHG are treated. To use the `*vmr` settings, I think you need to have scenario_ghg = 'FIXED'
 

khartig

Kara
New Member
I am working with both FHIST and F2000climo (CESM2.1.3 on Cheyenne) and would like to convert to a fixed atmospheric CO2 scenario but have run into an error. In both cases, I include the following in user_nl_cam:
co2_flag = .true.
flbc_list = " "
scenario_ghg = 'FIXED'
co2vmr = 400.0e-6


But get the following error when the model tries to build the namelists (before even running case.build):
ERROR: Command /glade/work/kara/cesm2/components/cam/bld/build-namelist -ntasks 360 -csmdata /glade/p/cesmdata/cseg/inputdata -infile /glade/u/home/kara/cesm2/cesm_caseroot/f2000climo_test_004/Buildconf/camconf/namelist -ignore_ic_year -use_case 2000_cam6 -inputdata /glade/u/home/kara/cesm2/cesm_caseroot/f2000climo_test_004/Buildconf/cam.input_data_list -namelist " &atmexp /" failed rc=255
out=
err=CAM build-namelist - ERROR: When flbc_file is used cannot set scenario_ghg = 'FIXED'


I have tried also setting flbc_file = ' ' in user_nl_cam but get the same error. My guess is that the use case (2000_cam6 for the F2000climo example above, for example) is setting the lower boundary condition files first, which are then incompatible with the change to scenario_ghg. Is there some other way I am supposed to be switching out the flbc files for fixed-CO2 namelist parameters? Can I use user_nl_cam to remove settings from the use case, or is it easier to just make a custom use case?
 

brianpm

Active Member
Hi @Kara -- I was able to reproduce your error. I think your diagnosis is correct; the use_case seems to be setting flbc_file and then build_namelist thinks there's a mismatch.

My first guess would have been the same as yours, i.e., set flbc_file = ' '. My second thought is that you can set your own use_case based on 2000_cam6, and point to it by changing the parameter `CAM_NML_USE_CASE` in env_run.xml. I didn't try it yet, but I think that would be easier than making your own custom compset.

Let me know if you try that and it does or doesn't work out. I'm wondering whether this error should be triggered at all, especially with `flbc_file = ' '`. There might be a bug in the build namelist script.
 

khartig

Kara
New Member
Brian's suggestion worked (thank you!), with minor adjustments which I've written out below in case anyone else wants to do this.

To generate the custom namelist, I made a copy of 2000_cam6.xml from components/cam/bld/namelist_files/use_cases/ within my CESM2 build. I gave it a unique name, for example my_custom_namelist.xml, left it in the same folder, and set CAM_NML_USE_CASE=my_custom_namelist with ./xmlchange in the caseroot. I originally tried putting my_custom_namelist.xml in my home directory and providing the full pathname to CAM_NML_USE_CASE, but I got an error for an invalid value of use_case, so it was easier to just put it in the original folder and give a new name.

Within the custom namelist, I replaced all of the entries starting with flbc_ with the following (pulled the values from the 1850_cam6.xml use case, but updated the CO2 value to correspond to the year 2000):
<scenario_ghg> 'FIXED' </scenario_ghg>
<co2vmr> 368.92e-6 </co2vmr>
<ch4vmr> 791.6e-9 </ch4vmr>
<n2ovmr> 275.68e-9 </n2ovmr>
<f11vmr> 12.48e-12 </f11vmr>
<f12vmr> 0.0 </f12vmr>

I had to remove co2_flag=.true., partly because I don't actually want active CO2 tracers (which is the main thing this flag adds, I believe) if I'm using a fixed CO2 scenario but also because I got an error when running the model about the advected tracer index being wrong. This post explains that co2_flag shouldn't be set independently in the namelist and is instead set along with other things by the -co2_cycle flag when configuring CAM. I'm pretty sure I get the behavior I want without messing with the CO2 cycle settings, but please correct me if I'm wrong on that. Presumably you would have to look more into co2_cycle options if you want a more active CO2 component.
 

Dahuzi

leiyd
New Member
Hi everyone,
I replaced the CO2 emissions in co2flux_fuel_file path with my updated CO2 emissions and expected to influence climate in BHIST_cmip6 simulation. The default settings about CO2 are as follows:

&co2_cycle_nl
co2_flag = .true.
co2_readflux_aircraft = .true.
co2_readflux_fuel = .true.
co2flux_fuel_file = 'CO2_anthro_surface_1750-2015.nc'

&chem_surfvals_nl
flbc_file = 'LBC_1750-2015_CMIP6_GlobAnnAvg_c180926.nc'
flbc_list = 'CO2','CH4','N2O','CFC11eq','CFC12'
flbc_type = 'SERIAL'
scenario_ghg = 'CHEM_LBC_FILE'

rad_climate = 'A:Q:H2O', 'N:O2:O2',
'N:CO2:CO2', 'N:ozone:O3',
'N:N2O:N2O', 'N:CH4:CH4',
'N:CFC11:CFC11', 'N:CFC12:CFC12',

In this case, I found that although the variable CO2 is changing, it has no effect on temperature. So, I changed 'N:CO2:CO2' to 'A:CO2:CO2' and found some differences in temperature. My question is: is my modification correct? or how to change settings in this case?

Looking forward to your reply!

Many thanks!
 
Top