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

RCP atmospheric forcing for CLM5 projections

Status
Not open for further replies.

Gabriel.Hes

Hes
Member
Hi,
I plan to force CLM5 with RCP atmospheric projections. Do you know if this has already been done and if there are compsets made for this purpose?
Any advice on how to do this would be welcome.

Kind regards,
Gabriel
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
This has already been done in the sense that there are results available from CESM2 (fully coupled using CLM5 as the land model component) simulations using Shared Socioeconomic Pathway-Representative Concentration Pathway (SSP-RCP) scenarios submitted as part of the ScenarioMIP component of CMIP6. These results should be available on the Earth System Grid (ESG).
If you wish to run your own land-only simulations forced with atmospheric data from SSP-RCP scenarios then we generally recommend using the anomaly forcing capability in the data atmosphere model. This capability is available in a recent CTSM tag (ctsm5.1.dev100).
There is a description of anomaly forcing here in the CLM User's Guide:


The recent version of the CTSM development code has a test of anomaly forcing that you could run to generate an example case:

cd cime/scripts
./create_test SMS_D_Ld5.f10_f10_mg37.ISSP126Clm50BgcCrop.cheyenne_intel.clm-datm_ssp126_anom_forc

This is for SSP126 but there is also data available for SSP245, SSP370, SSP585 on the inputdata server.
The compset that this starts with is:
SSP126_DATM%GSWP3v1_CLM50%BGC-CROP_SICE_SOCN_MOSART_SGLC_SWAV_SESP
but you could change the first part to the SSP you want to use.

There have also been some recent posts on the Forum regarding anomaly forcing that may be helpful.

An alternative to this is to force CLM with coupler history data generated from the fully coupled simulations, but this will involve processing of the data by yourself and the ability to store a large amount of data for each of the scenarios.
 

Gabriel.Hes

Hes
Member
Thank you for this very clear answer. I will try the anomaly forcing method. If I understand correctly the anomaly forcings derived from CMIP6 are available on the NCAR server at the following: /glade/p/cgd/tss/people/oleson/anomaly_forcing . However, I do not have an NCAR account. Do you know if there is an alternative way to access them or if it is possible to request an access permission?
 

Gabriel.Hes

Hes
Member
Great! I am trying to modify my namelists in order to use the anomaly forcings. To do so I add the following lines to my script:
cat > user_nl_cpl << EOF
cplflds_custom = ’Sa_prec_af->a2x’, ’Sa_prec_af->x2l’

EOF


cat > user_nl_datm << EOF
anomaly_forcing= ’Anomaly.Forcing.Precip’

streams = "datm.streams.txt.CLMGSWP3v1.Solar 2015 2005 2014",
"datm.streams.txt.CLMGSWP3v1.Precip 2015 2005 2014",
"datm.streams.txt.CLMGSWP3v1.TPQW 2015 2005 2014",
“datm.streams.txt.Anomaly.Forcing.Precip 2015 2015 2100”

EOF
However, it seems like I'm doing something wrong somewhere because I get the following errors:
ERROR: Entry RESUBMIT was listed as type int but value '' is not valid int
and
ERROR: Error in parsing namelist: expected literal value, but got '\xe2\x80\x99Anomaly.Forcing.Precip\xe2\x80\x99'

In particular, I don't quite understand where and how the path to the anomaly forcing data should be specified.
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
What version of clm/ctsm are you using (the output of running git describe in your code checkout)?
And what is your create_newcase command?
There are different ways to do this depending on if you are using mct (older code) or nuopc (newer code) driver, sorry.
I will see if I can set it up myself once I know what version you are using.

Also, are there instructions somewhere that you are following that instructs you to modify user_nl_cpl? I don't think that is required.
 

Gabriel.Hes

Hes
Member
To answer your questions:
ghes@daint106:/scratch/snx3000/ghes/ctsm_210319_af> git describe
ctsm5.1.dev029-17-g859a799d
Here is what is printed when I run the create_newcase:
##############################################################################################
Create new case "I2000Clm51Sp_hcru_hcru_daint_intel_15_365_SET4-PEDflt-wallt2h"
- Compset: I2000Clm51Sp
- Res: hcru_hcru
- Compiler: intel
- run for: 365
- time: 02:00:00
##############################################################################################
and below are the relevant lines in env_build.xml:
<entry id="COMP_INTERFACE" value="mct">
<type>char</type>
<valid_values>mct,nuopc,moab</valid_values>
<desc>use MCT component interface</desc>
</entry>

There are instructions to modify user_nl_cpl in the Appendix of the following paper: Using the anomaly forcing Community Land Model (CLM 4.5) for crop yield projections
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
Ah, I was wondering where people were getting instructions to modify user_nl_cpl. That part is not necessary any more, I'm not sure when that changed.
Since you are using the mct coupler, please disregard my instructions for getting the anomaly forcing data from the inputdata repository. The data there is the same as that at /glade/p/cgd/tss/people/oleson/anomaly_forcing but the individual variable files have been converted into a single file, which will not work with the mct coupler version that you are using.
I've put the anomaly forcing data on our ftp site:

ftp://ftp.cgd.ucar.edu/pub/oleson/anomaly_forcing

To run an anomaly-forced SSP simulation (e.g, SSP370), you could start with something like this:

./create_newcase --compset SSP370_DATM%GSWP3v1_CLM51%SP_SICE_SOCN_MOSART_SGLC_SWAV --res hcru_hcru --case ctsm51sp_ctsm51d029_hcru_GSWP3V1_SSP3-7_Anomaly --run-unsupported

The base forcing (GSWP3V1) that the anomaly forcing is applied to comes out of the box with:

<entry id="DATM_CLMNCEP_YR_ALIGN" value="$DATM_CLMNCEP_YR_START">
<entry id="DATM_CLMNCEP_YR_START" value="2001">
<entry id="DATM_CLMNCEP_YR_END" value="2013">

Since we are starting the model here at 2015, do this:

./xmlchange DATM_CLMNCEP_YR_ALIGN=2015

That will align model year 2015 with the 2001 GSWP3V1 forcing.

Then place the following files that are in the ftp directory, into your case directory (you can follow the instructions at 1.5.9. Running with anomaly forcing — ctsm CTSM master documentation to generate these files, but I'm providing them here for completeness):

user_datm.streams.txt.Anomaly.Forcing.Humidity
user_datm.streams.txt.Anomaly.Forcing.Longwave
user_datm.streams.txt.Anomaly.Forcing.Precip
user_datm.streams.txt.Anomaly.Forcing.Pressure
user_datm.streams.txt.Anomaly.Forcing.Shortwave
user_datm.streams.txt.Anomaly.Forcing.Temperature
user_datm.streams.txt.Anomaly.Forcing.Uwind
user_datm.streams.txt.Anomaly.Forcing.Vwind
user_nl_datm

You'll need to change the paths for the domain and anomaly forcing files to the path where your data is located.
 

Gabriel.Hes

Hes
Member
Thank you for the details. I have managed to connect to the ftp://ftp.cgd.ucar.edu/pub/ with WinSCP but I cannot find any 'oleson' or 'anomaly_forcing' folder there. Am I not on the right server?
 

caufj

Jing Fu
New Member
Thank you for the details. I have managed to connect to the ftp://ftp.cgd.ucar.edu/pub/ with WinSCP but I cannot find any 'oleson' or 'anomaly_forcing' folder there. Am I not on the right server?
can't connect with the ftp server either
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
Hmm, maybe try again. This method also works for me from a computer outside our network:

"Users should still be able to access this data without an official ftp client using either Window's File Explorer or Apple's Finder, by simply typing in the ftp://ftp.cgd.ucar.edu/pub address."
 

Gabriel.Hes

Hes
Member
Thanks, yes I followed the instructions. This is what I get when I access the ftp.cgd.ucar.edu/pub/ with Winscp (following the CGD's information System group). I cannot find the oleson directory.
Screenshot (32).jpg
 

ryanj

Ryan Johnson
ISG
Staff member
So the screenshot you posted is actually from ftp.ucar.edu and not the CGD FTP area. When entering the URL to connect, you will need to make sure cgd is included between ftp and ucar exactly like the snippet below:

Code:
ftp.cgd.ucar.edu/pub
 

Gabriel.Hes

Hes
Member
So the screenshot you posted is actually from ftp.ucar.edu and not the CGD FTP area. When entering the URL to connect, you will need to make sure cgd is included between ftp and ucar exactly like the snippet below:

Code:
ftp.cgd.ucar.edu/pub
Yes, you are right. I added the cgd and now I can access the data properly. Thank you
 

Gabriel.Hes

Hes
Member
Ah, I was wondering where people were getting instructions to modify user_nl_cpl. That part is not necessary any more, I'm not sure when that changed.
Since you are using the mct coupler, please disregard my instructions for getting the anomaly forcing data from the inputdata repository. The data there is the same as that at /glade/p/cgd/tss/people/oleson/anomaly_forcing but the individual variable files have been converted into a single file, which will not work with the mct coupler version that you are using.
I've put the anomaly forcing data on our ftp site:

ftp://ftp.cgd.ucar.edu/pub/oleson/anomaly_forcing

To run an anomaly-forced SSP simulation (e.g, SSP370), you could start with something like this:

./create_newcase --compset SSP370_DATM%GSWP3v1_CLM51%SP_SICE_SOCN_MOSART_SGLC_SWAV --res hcru_hcru --case ctsm51sp_ctsm51d029_hcru_GSWP3V1_SSP3-7_Anomaly --run-unsupported

The base forcing (GSWP3V1) that the anomaly forcing is applied to comes out of the box with:

<entry id="DATM_CLMNCEP_YR_ALIGN" value="$DATM_CLMNCEP_YR_START">
<entry id="DATM_CLMNCEP_YR_START" value="2001">
<entry id="DATM_CLMNCEP_YR_END" value="2013">

Since we are starting the model here at 2015, do this:

./xmlchange DATM_CLMNCEP_YR_ALIGN=2015

That will align model year 2015 with the 2001 GSWP3V1 forcing.

Then place the following files that are in the ftp directory, into your case directory (you can follow the instructions at 1.5.9. Running with anomaly forcing — ctsm CTSM master documentation to generate these files, but I'm providing them here for completeness):

user_datm.streams.txt.Anomaly.Forcing.Humidity
user_datm.streams.txt.Anomaly.Forcing.Longwave
user_datm.streams.txt.Anomaly.Forcing.Precip
user_datm.streams.txt.Anomaly.Forcing.Pressure
user_datm.streams.txt.Anomaly.Forcing.Shortwave
user_datm.streams.txt.Anomaly.Forcing.Temperature
user_datm.streams.txt.Anomaly.Forcing.Uwind
user_datm.streams.txt.Anomaly.Forcing.Vwind
user_nl_datm

You'll need to change the paths for the domain and anomaly forcing files to the path where your data is located.
I managed to access the anomaly forcing data. I'm now following your steps. I changed the paths for the domain and anomaly forcing files in all the user_datm.streams.txt.Anomaly.Forcing.* files.
However, I still get the error I mentioned previously. During the building process I get this:
Generating component namelists as part of build
2022-07-20 14:30:50 atm
Create namelist for component datm
Calling /scratch/snx3000/ghes/ctsm_210319_af/cime/src/components/data_comps_mct/datm/cime_config/buildnml
ERROR: Error in parsing namelist: expected literal value, but got '\xe2\x80\x98Anomaly.Forcing.Precip\xe2\x80\x99'
Do you know what could be the reason for this?
 

Gabriel.Hes

Hes
Member
Yes, here it is, I copied the one from the ftp://ftp.cgd.ucar.edu/pub/oleson/anomaly_forcing folder:
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 2015 2001 2013",
"datm.streams.txt.CLMGSWP3v1.Precip 2015 2001 2013",
"datm.streams.txt.CLMGSWP3v1.TPQW 2015 2001 2013",
"datm.streams.txt.presaero.SSP3-7.0 2015 2015 2101",
"datm.streams.txt.topo.observed 1 1 1",
"datm.streams.txt.co2tseries.SSP3-7.0 2015 2015 2500",
"datm.streams.txt.Anomaly.Forcing.Precip 2015 2015 2100",
"datm.streams.txt.Anomaly.Forcing.Temperature 2015 2015 2100",
"datm.streams.txt.Anomaly.Forcing.Pressure 2015 2015 2100",
"datm.streams.txt.Anomaly.Forcing.Humidity 2015 2015 2100",
"datm.streams.txt.Anomaly.Forcing.Uwind 2015 2015 2100",
"datm.streams.txt.Anomaly.Forcing.Vwind 2015 2015 2100",
"datm.streams.txt.Anomaly.Forcing.Shortwave 2015 2015 2100",
"datm.streams.txt.Anomaly.Forcing.Longwave 2015 2015 2100"
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
Hmm. Is that first line (anomaly_forcing = ...) one continuous line or is there maybe a carriage return after the equal sign?
 

Gabriel.Hes

Hes
Member
I think that it is just a continuous line. But there is a blank space on the first line between the beginning of the document and 'anomaly'. Similarly there is a blank space at the beginning of the 2nd line.
 
Status
Not open for further replies.
Top