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

Anomaly forcing climate only and CO2 only

Joshua Rady

Joshua Rady
New Member
I want to run some well paired simulations to some anomaly forcing case with:
1. onstant climate
2. anomaly climate / fixed CO2
3. fixed climate / anomaly CO2.

For I case 2 I think I should be able to clone an anomaly case and set CLM_CO2_TYPE = constant and CCSM_CO2_PPMV to my desired value. However, env_run.xml warns that changing CLM_CO2_TYPE directly is inadvisable. What would the preferred method be?

I'm not sure what compset settings to used for constant climate and how to add anomaly CO2 on top of that?
 

dll@ucar_edu

Danica Lombardozzi
New Member
Hi Joshua,

For a constant climate scenario, I'd recommend cycling over several years of climate data. For example, for a constant 1850 climate, we cycle 20 years of climate data from 1900-1920. If you're looking for a present-day or future climate scenario, you might similarly want to cycle over multiple years, choosing the years based on your needs.

For the constant CO2, I do think you want to set CO2 to be constant in the env_run file and then choose a value. I've never used an 'anomaly' CO2, but just modified the CO2 file directly since the model only changes CO2 by year (there's no spatial variability in CO2).

In changing climate and CO2, keep in mind that you may want to consider thinking about how nitrogen deposition, fire, and urban files are changing. Also pay attention to land use scenarios.

Danica
 

Joshua Rady

Joshua Rady
New Member
For a constant climate scenario, I'd recommend cycling over several years of climate data.
Thank you for this. I am going to cycle over several years of climate. In my initial tests I used a 1850_DATM compset and then modified the climate years to match the default climate cycling years used for anomaly forcing. I couldn't find a compset that is specifically constant CO2 so I will try making XML changes manually (CLM_CO2_TYPE CCSM_CO2_PPMV) on top of that for my constant climate / constant CO2 simulations.

I've never used an 'anomaly' CO2, but just modified the CO2 file directly since the model only changes CO2 by year (there's no spatial variability in CO2).
I haven't messed with the CO2 files directly before. I examined an anomaly forcing case and the only CO2 files I could find referenced are historical files, for example:
/glade/p/cesmdata/cseg/inputdata/atm/datm7/CO2/fco2_datm_global_simyr_1750-2014_CMIP6_c180929.nc
I think this means that in anomaly forcing the CO2 is being applied as monthly anomalies over this baseline historical CO2. I would like to use identical CO2 forcing in the controls but I don't see how to do that, if this what is happening. There are bunch of SSP scenario CO2 files in the directory above but I'm not sure which flavor (global, lat-band, etc.) to use or how you specify a change in files. Any advice on these points would be great. Turning off transient CO2 seems a lot simpler than changing it to something else.

In changing climate and CO2, keep in mind that you may want to consider thinking about how nitrogen deposition, fire, and urban files are changing. Also pay attention to land use scenarios.
I am running without land use or fire, and I have altered the land surface so it is only 'natural vegetation', no urban, lake etc. in order to remove those factors. Also I'm using FATES vegetation so I don't think N deposition should change anything yet.
 

dll@ucar_edu

Danica Lombardozzi
New Member
Any of the time slice compsets (e.g., I1850 or I2000) should use constant CO2.

Regarding the CO2 file, I think you can just point to the file you want to use. I didn't realize that there were files generated by latitudinal bands, but it looks like both global (which will be one value globally) and lat-bands (varying by latitude) are associated with CMIP6 and are probably relevant. I think the most important thing is to be consistent across your simulations, and it's likely easiest to use the global file, particularly if you want to make any changes to it.
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
To add to the information @dll@ucar_edu supplied, the transient CO2 files are normally set by the compset. For example, the land-only SSP585 compset (ISSP585Clm50BgcCrop) sets "DATM_CO2_TSERIES" in env_run.xml to "SSP5-8.5" and sets "CLM_CO2_TYPE" to "diagnostic". This is used when generating the lnd_in file which results in "co2_type = 'diagnostic' and generating the co2 streams file "datm.streams.txt.co2tseries.SSP5-8.5" which specifies "/glade/p/cesmdata/cseg/inputdata/atm/datm7/CO2/fco2_datm_globalSSP5-8.5__simyr_2014-2501_CMIP6_c190506.nc". This specifies a time-varying global CO2 concentration in ppmv. It's best to let the compset pick the file.
 

Joshua Rady

Joshua Rady
New Member
I must have been in the wrong case when I did my search above. I now see that the CO2 files being pointed to are SSP specific. I appreciate the clarification.

It's best to let the compset pick the file.
Understood, I want to make as few changes myself as possible. Then is there a way to turn off the anomaly interpretation for the climate components after / while creating an anomaly forcing case? That is the alternative to changing the CO2 in a 'constant climate' case. Would that be done by omitting the following lines (that I usually add) from user_nl_datm?:
anomaly_forcing = 'Anomaly.Forcing.Precip','Anomaly.Forcing.Temperature','Anomaly.Forcing.Pressure','Anomaly.Forcing.Humidity','Anomaly.Forcing.Uwind','Anomaly.Forcing.Vwind','Anomaly.Forcing.Shortwave','Anomaly.Forcing.Longwave'
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
My user_nl_datm from a recent anomaly forcing case looks like this:

anomaly_forcing = 'Anomaly.Forcing.Precip','Anomaly.Forcing.Temperature','Anomaly.Forcing.Pressure','Anomaly.Forcing.Humidity','Anomaly.Forcing.Uwind','Anomaly.Forcing.Vwind','Anomaly.Forcing.Shortwave','Anomaly.Forcing.Longwave'
streams = "datm.streams.txt.CLMGSWP3v1.Solar 2005 2005 2014",
"datm.streams.txt.CLMGSWP3v1.Precip 2005 2005 2014",
"datm.streams.txt.CLMGSWP3v1.TPQW 2005 2005 2014",
"datm.streams.txt.presaero.clim_2000 1 2000 2000",
"datm.streams.txt.topo.observed 1 1 1",
"datm.streams.txt.Anomaly.Forcing.Precip 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Temperature 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Pressure 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Humidity 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Uwind 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Vwind 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Shortwave 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Longwave 2005 2090 2090"
mapalgo = "nn", "nn", "nn", "bilinear", "bilinear", "nn", "nn", "nn", "nn", "nn", "nn", "nn", "nn"

So I think you'd have to remove the datm.streams.txt.Anomaly.* lines in streams and reconfigure mapalgo, in addition to the change you suggest.
 

Joshua Rady

Joshua Rady
New Member
Thanks Danica and Keith. This gives me plenty to plenty to explore. Hopefully I'll be able to tell if I mess it up too bad.
 

MikeYuan

tfYuan
Member
My user_nl_datm from a recent anomaly forcing case looks like this:

anomaly_forcing = 'Anomaly.Forcing.Precip','Anomaly.Forcing.Temperature','Anomaly.Forcing.Pressure','Anomaly.Forcing.Humidity','Anomaly.Forcing.Uwind','Anomaly.Forcing.Vwind','Anomaly.Forcing.Shortwave','Anomaly.Forcing.Longwave'
streams = "datm.streams.txt.CLMGSWP3v1.Solar 2005 2005 2014",
"datm.streams.txt.CLMGSWP3v1.Precip 2005 2005 2014",
"datm.streams.txt.CLMGSWP3v1.TPQW 2005 2005 2014",
"datm.streams.txt.presaero.clim_2000 1 2000 2000",
"datm.streams.txt.topo.observed 1 1 1",
"datm.streams.txt.Anomaly.Forcing.Precip 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Temperature 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Pressure 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Humidity 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Uwind 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Vwind 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Shortwave 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Longwave 2005 2090 2090"
mapalgo = "nn", "nn", "nn", "bilinear", "bilinear", "nn", "nn", "nn", "nn", "nn", "nn", "nn", "nn"

So I think you'd have to remove the datm.streams.txt.Anomaly.* lines in streams and reconfigure mapalgo, in addition to the change you suggest.
Mr. Oleson, I don't understand the format of the steam file. For instance, the streams = "datm.streams.txt.CLMGSWP3v1.Solar 2005 2005 2014", so, what does these numbers mean? what's the difference between the first 2005 and second 2005?
Thank you very much.
Mike
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
The numbers refer to the year. The first corresponds to "DATM_CLMNCEP_YR_ALIGN", the second to "DATM_CLMNCEP_YR_START", the third to "DATM_CLMNCEP_YR_END". See the "streams" entry here:

 
Last edited:

MikeYuan

tfYuan
Member
The numbers refer to the year. The first corresponds to "DATM_CLMNCEP_YR_ALIGN", the second to "DATM_CLMNCEP_YR_START", the third to "DATM_CLMNCEP_YR_END". See the "streams" entry here:

Mr.Oleson, thanks for your help.
I don't know much about the meaning of "DATM_CLMNCEP_YR_ALIGN", the official explanation is that DATM_CLMNCEP_YR_ALIGN determines which year in that range of years the simulation will start with. Does it mean the setting of "DATM_CLMNCEP_YR_ALIGN" abides by the "RUN_STARTDATE"? Since I saw the default set of I1850Clm50BgcCrop is "1",and the RUN_STARTDATE is "0001".
Looking forward to your reply.
I appreciate it very much
Mike
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
DATM_CLMNCEP_YR_ALIGN is the model simulation year to align the stream to. It is independent of the RUN_STARTDATE.
The example of the I850 case you reference is:

RUN_STARTDATE=0001-01-01 This means that the model will start at year "1"

DATM_CLMNCEP_YR_ALIGN=1
DATM_CLMNCEP_YR_START=1901
DATM_CLMNCEP_YR_END=1920

This means that model simulation year 1 will align with the first year of atmospheric forcing specified (1901).
The last year of atmospheric forcing is 1920.
So, if the datm is setup to cycle through the forcing years, as it is by default in this case:

Simulation Year 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ....
DATM Forcing Year 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1901 .....

Another more complicated case is a historical case. We want to run 1850-2014 but we only have atmospheric forcing for 1901-2014. So we like to start by looping over 1901-1920 forcing for the 1850-1900 period. So we use these settings:

RUN_STARTDATE=1850-01-01

DATM_CLMNCEP_YR_ALIGN=1901
DATM_CLMNCEP_YR_START=1901
DATM_CLMNCEP_YR_END=1920

This will look like:

Simulation Year 1850 1851 ... 1860 ... 1861 ... 1880 ... 1881 ... 1900 ... 1901
DATM Forcing year 1910 1911 ... 1920 ... 1901 ... 1920 ... 1901 ... 1920 ... 1901

It's not immediately obvious from the settings but note that simulation year 1850 will start with 1910 forcing in order to end up with simulation year 1901 being forced with 1901 atm as specified.

My advice would be to do some short runs with various settings and see how the simulation years interact with the forcing years by looking at the atm log.
 

MikeYuan

tfYuan
Member
My user_nl_datm from a recent anomaly forcing case looks like this:

anomaly_forcing = 'Anomaly.Forcing.Precip','Anomaly.Forcing.Temperature','Anomaly.Forcing.Pressure','Anomaly.Forcing.Humidity','Anomaly.Forcing.Uwind','Anomaly.Forcing.Vwind','Anomaly.Forcing.Shortwave','Anomaly.Forcing.Longwave'
streams = "datm.streams.txt.CLMGSWP3v1.Solar 2005 2005 2014",
"datm.streams.txt.CLMGSWP3v1.Precip 2005 2005 2014",
"datm.streams.txt.CLMGSWP3v1.TPQW 2005 2005 2014",
"datm.streams.txt.presaero.clim_2000 1 2000 2000",
"datm.streams.txt.topo.observed 1 1 1",
"datm.streams.txt.Anomaly.Forcing.Precip 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Temperature 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Pressure 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Humidity 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Uwind 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Vwind 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Shortwave 2005 2090 2090",
"datm.streams.txt.Anomaly.Forcing.Longwave 2005 2090 2090"
mapalgo = "nn", "nn", "nn", "bilinear", "bilinear", "nn", "nn", "nn", "nn", "nn", "nn", "nn", "nn"

So I think you'd have to remove the datm.streams.txt.Anomaly.* lines in streams and reconfigure mapalgo, in addition to the change you suggest.
Dear Mr.Oleson
I am using ISSP585Clm50BgcCrop, how do I set it up if I want to use the CO2 of 2050 as the first year's CO2? Moreover, If anomaly_forcing is using simultaneously, how should I deal with it while I wanna choose the CO2 of 2050?
Looking forward to your reply.

Mike
Thank you very much
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
The anomaly forcing streams are independent of the CO2 stream. We'll need some more information though about what you want to do with CO2. What year do you want to start the model at and when will the simulation end? Do you want to use constant CO2 at 2050 levels throughout your simulation, or transient CO2 beginning at 2050?
 

MikeYuan

tfYuan
Member
The anomaly forcing streams are independent of the CO2 stream. We'll need some more information though about what you want to do with CO2. What year do you want to start the model at and when will the simulation end? Do you want to use constant CO2 at 2050 levels throughout your simulation, or transient CO2 beginning at 2050?
Dear Mr.Oleson, thanks for your reply.
I want to start the model at the year of 2050 and end at the year of 2060. I want to use transient CO2 beginning at 2050.

Sincerely,
Mike
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
There aren't any initial files for 2050 so you will get an error if you set RUN_STARTDATE=2050-01-01:

"err=Warning : CLM build-namelist::CLMBuildNamelist::setup_logic_initial_conditions() : using ignore_ic_date is incompatable with crop! If you choose to ignore this error, the counters since planting for crops will be messed up.
So you should ignore at least the first season for crops. And since it will impact the 20 year means, ideally the first 20 years should be ignored."

You'll need to either spinup separately or start in 2015.
 

MikeYuan

tfYuan
Member
There aren't any initial files for 2050 so you will get an error if you set RUN_STARTDATE=2050-01-01:

"err=Warning : CLM build-namelist::CLMBuildNamelist::setup_logic_initial_conditions() : using ignore_ic_date is incompatable with crop! If you choose to ignore this error, the counters since planting for crops will be messed up.
So you should ignore at least the first season for crops. And since it will impact the 20 year means, ideally the first 20 years should be ignored."

You'll need to either spinup separately or start in 2015.
If I want to start in 2015(RUN_STARTDATE=2015-01-01), and I want to use transient CO2 for beginning(replace 2015 with 2050), how should I do?
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
Well, actually, I had an error in my xmlchange command to test this out. I did this:

./xmlchange RUN_STARTDATE=2050

when I should have done this:

./xmlchange RUN_STARTDATE=2050-01-01

I no longer get the error above, but the initial file is still only suitable for starting at 2015.

To start in 2015, you should be able to just do this with release-cesm2.1.3:

./create_newcase --case clm50_cesm213R_1deg_AnomalyF_SSP585 --res f09_g17 --compset ISSP585Clm50BgcCrop --run-unsupported

After that there are modifications to make to make this an anomaly forcing run. CO2 however should be setup correctly.
Do you know how to do an anomaly forcing run?
 

MikeYuan

tfYuan
Member
Well, actually, I had an error in my xmlchange command to test this out. I did this:

./xmlchange RUN_STARTDATE=2050

when I should have done this:

./xmlchange RUN_STARTDATE=2050-01-01

I no longer get the error above, but the initial file is still only suitable for starting at 2015.

To start in 2015, you should be able to just do this with release-cesm2.1.3:

./create_newcase --case clm50_cesm213R_1deg_AnomalyF_SSP585 --res f09_g17 --compset ISSP585Clm50BgcCrop --run-unsupported

After that there are modifications to make to make this an anomaly forcing run. CO2 however should be setup correctly.
Do you know how to do an anomaly forcing run?
Thanks for your reply, Mr.Oleson.
I don't know very much about anomaly forcing run, and I have no idea how to choose the CO2 at the year of 2050 When I begin at the 2015.
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
Normally, that compset creates a model run 2015-2100 and the CO2 is setup to be transient for 2015-2100 also.
So, you could run that and stop at 2060 if you are just interested in 2050-2060 results.
Is that what you want to do?
 
Top