Welcome to the new DiscussCESM forum!
We are still working on the website migration, so you may experience downtime during this process.

Existing users, please reset your password before logging in here: https://xenforo.cgd.ucar.edu/cesm/index.php?lost-password/

How to spin up a transient climate simulation

KeerZ

Member
Hello, I am configuring a transient climate simulation using BSSP585 compset. I need to spin up my simulation before I ran my simulation from 2015-2100, because I modified the surface data and assigned individual soil column to each pfts.

I think the spin up could be done by creating a simulation using BSSP585 compset and make the simulation cycles over 2015 (probably for 40 years). But I am not sure how to make my simulation cycle over a single year?

Also I am wondering whether there are other ways to do the spin-up. Since I only modified the land component, is it possible to just spin up using a case with I2000-compset and then use the equilibrium result to restart a case of BSSP585 compset?
 

KeerZ

Member
A somewhat related quick question: in BSSP585 compset, the BGC-CROP is used by default. Can I still use surface data with 17 pfts?

Thank you very much!
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
One question is whether you intend to have BGC and crop on in your BSSP585 simulation? If you don't want it on, in other words, if you want to run in SP (satellite phenology) mode, then you can just turn it off in that compset by removing "-bgc bgc -crop" in the entry for CLM_BLDNML_OPTS in env_run.xml. Then your surface dataset with 17 pfts should work.
Regarding spinup, I don't think you can or would want to do a fully coupled (B-case) spinup. You could either do an F-case type spinup (where land and atmosphere are active; probably an F2000climo compset), or a year 2000 I-case spinup as you suggested. The advantage of the F-case spinup is that your land surface conditions would be adapted to the coupled model (land-atmosphere) climate as opposed to the I-case spinup which is driven by reanalysis essentially. One disadvantage is that the F-case spinup would be quite a bit more computationally expensive. In my opinion, the I-case spinup may be sufficient for your purposes. There will be some period of time for the initial conditions to adapt to the coupled model climate, but in SP mode in particular that shouldn't take too long.
For reference, the procedure for determining land initial conditions for CESM2 CMIP6 fully-coupled SSP585 simulations was quite comprehensive. First, a fully-coupled 1850 case was run to near-equilibrium. Then coupler history output for atmospheric fields were saved from about 20 years of simulation. This was used to drive an 1850 land-only simulation to equilibrium. Those land initial conditions were then used to initialize a fully-coupled historical simulation (1850-12014). The initial conditions from the end of that simulation were then used in a BSSP585 (or other SSP) simulation.
Deciding how much to deviate from that process is both a science and available resources (computational) question. One important aspect is to try to minimize transient behavior that results from not having fully spunup initial conditions that are compatible with fully-coupled model climate. However, in SP mode, perhaps you don't need to be as rigorous, as soil moisture and temperature should adapt fairly quickly.
 

KeerZ

Member
One question is whether you intend to have BGC and crop on in your BSSP585 simulation? If you don't want it on, in other words, if you want to run in SP (satellite phenology) mode, then you can just turn it off in that compset by removing "-bgc bgc -crop" in the entry for CLM_BLDNML_OPTS in env_run.xml. Then your surface dataset with 17 pfts should work.
Regarding spinup, I don't think you can or would want to do a fully coupled (B-case) spinup. You could either do an F-case type spinup (where land and atmosphere are active; probably an F2000climo compset), or a year 2000 I-case spinup as you suggested. The advantage of the F-case spinup is that your land surface conditions would be adapted to the coupled model (land-atmosphere) climate as opposed to the I-case spinup which is driven by reanalysis essentially. One disadvantage is that the F-case spinup would be quite a bit more computationally expensive. In my opinion, the I-case spinup may be sufficient for your purposes. There will be some period of time for the initial conditions to adapt to the coupled model climate, but in SP mode in particular that shouldn't take too long.
For reference, the procedure for determining land initial conditions for CESM2 CMIP6 fully-coupled SSP585 simulations was quite comprehensive. First, a fully-coupled 1850 case was run to near-equilibrium. Then coupler history output for atmospheric fields were saved from about 20 years of simulation. This was used to drive an 1850 land-only simulation to equilibrium. Those land initial conditions were then used to initialize a fully-coupled historical simulation (1850-12014). The initial conditions from the end of that simulation were then used in a BSSP585 (or other SSP) simulation.
Deciding how much to deviate from that process is both a science and available resources (computational) question. One important aspect is to try to minimize transient behavior that results from not having fully spunup initial conditions that are compatible with fully-coupled model climate. However, in SP mode, perhaps you don't need to be as rigorous, as soil moisture and temperature should adapt fairly quickly.
Thank you very much, Keith! This is really helpful.

I think it is easier for me to use SP mode and spin up the BSSP585 simulation with a I2000-case. Another follow-up question is that after my I2000 simulation reach equilibrium, how should I run the BSSP585 case using the restart file of the I2000 simulation?

My guess is that I should create a hybrid run with BSSP585 compset and set RUN_REFCASE = I2000 simulation?
Thank you!
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
If you change the ref case to your I2000 simulation, the other components (e.g., atm, ocn, ice, etc) are going to expect initial conditions from the I2000 simulation, which don't exist. I think I would leave the ref case alone as the default and simply change the land initial conditions by specifying finidat in your user_nl_clm.
I'm wondering what simulation you are going to compare your BSSP585 / CLM SP case to?
 

KeerZ

Member
If you change the ref case to your I2000 simulation, the other components (e.g., atm, ocn, ice, etc) are going to expect initial conditions from the I2000 simulation, which don't exist. I think I would leave the ref case alone as the default and simply change the land initial conditions by specifying finidat in your user_nl_clm.
I'm wondering what simulation you are going to compare your BSSP585 / CLM SP case to?
Thanks!
We are going to run two transient simulations based on SSP5-8.5, one with constant 2015 urban extension and another with expanding urban extension from 2020-2070. And then compare their results. I am now configuring the first case.
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
So both simulations are going to have " modified the surface data and assigned individual soil column to each pfts "?
 

KeerZ

Member
If you change the ref case to your I2000 simulation, the other components (e.g., atm, ocn, ice, etc) are going to expect initial conditions from the I2000 simulation, which don't exist. I think I would leave the ref case alone as the default and simply change the land initial conditions by specifying finidat in your user_nl_clm.
I'm wondering what simulation you are going to compare your BSSP585 / CLM SP case to?
Hello Keith. I am spinning up my BSSP585-compset transient simulation using a I2000-compset case.

I've finished a I2000-compset case and I am now trying to start a BSSP585 simulation with the land initial condition provided by I2000-compset simulation by specifying finidat in the user_nl_clm. I created the BSSP585-compset case, set the RUN_TYPE=hybrid and left the RUN_REFDATE & RUN_REFCASE as default. However, there are 9 nc files in the rest folder of my I2000-compset case. Could you tell me which file should be pointed to finidat in the user_nl_clm?

Thank you!
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
The "restart" file is the one you want. There should be a file of the type *.clm2.r.*.nc
 

KeerZ

Member
The "restart" file is the one you want. There should be a file of the type *.clm2.r.*.nc
Yes, many thanks. I've used *.clm2.r.*.nc as finidat. However, as I built my case, error occurred:

ERROR: Missing required pointer_file /glade/scratch/keerzhang/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run/rpointer.ocn.restart ---has pop initial data been prestaged to /glade/scratch/keerzhang/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run?

It seems that I still need to provide ocean initial data.
My setups in group run_begin_stop_restart are as follows:
RUN_TYPE: hybrid
GET_REFCASE: FALSE
RUN_REFCASE: case.std
RUN_REFDATE: 0001-01-01
RUN_REFTOD: 00000
RUN_STARTDATE: 2015-01-01

Did I miss any steps that need to be done?
If I switch RUN_TYPE from hybrid to startup and still keep finidat='/glade/.../i.e20.I2000.f09_g16.IndividualColumn_Spinup.clm2.r.0010-01-01-00000.nc', the case.build is successful. But I am not sure in this case whether the land initial condition is still given by the restart file I point to finidat.
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
You'll still need to provide the initial files and rpointer files from the corresponding historical simulation for all the other components. Those will need to be copied into your run directory.
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
You'll also need to specify the RUN_REFCASE and RUN_REFDATE for the historical simulation you are starting from.
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
I was looking at your case and see what you are trying to do now. Leave the RUN_TYPE as startup and keep finidat pointing to your spunup file. The other component models should have initial files already specified in their default namelists. I was assuming you were initializing the entire model from a fully-coupled historical case. So, these settings should work:

RUN_TYPE: startup
GET_REFCASE: FALSE
RUN_REFCASE: case.std
RUN_REFDATE: 0001-01-01
RUN_REFTOD: 00000
RUN_STARTDATE: 2015-01-01
 

KeerZ

Member
You'll also need to specify the RUN_REFCASE and RUN_REFDATE for the historical simulation you are starting from.
Yes, I copied all files from my I2000 simulation rest file to the run directory of BSSP585 case by this command:
cp /glade/scratch//$LOGNAME/archive/i.e20.I2000.f09_g16.IndividualColumn_Spinup/rest/0010-01-01-00000/* /glade/scratch//$LOGNAME/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run/

I specified RUN_REFCASE=i.e20.I2000.f09_g16.IndividualColumn_Spinup,RUN_REFDATE=0010-01-01-00000 and then built case. But the Error code is the same: ERROR: Missing required pointer_file /glade/scratch/keerzhang/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run/rpointer.ocn.restart ---has pop initial data been prestaged to /glade/scratch/keerzhang/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run?

It seems that there is no such file named rpointer.ocn in the rest file folder of my I2000 case. There are only rpointer.atm/rpointer.drv/rpointer.lnd/rpointer.rof (I checked .../archive/i.e20.I2000.f09_g16.IndividualColumn_Spinup/rest/0010-01-01-00000/).

Besids, I recall that in our previous discussion (#5 of this thread), you said "If you change the ref case to your I2000 simulation, the other components (e.g., atm, ocn, ice, etc) are going to expect initial conditions from the I2000 simulation, which don't exist. I think I would leave the ref case alone as the default and simply change the land initial conditions by specifying finidat in your user_nl_clm".
Here since I am spinning up my BSSP585 simulation using the I2000-compset case, I think I only want the land initial condition to be provided by the I2000-compset historical simulation. Should I still specify RUN_REFCASE and RUN_REFDATE?

Thank you so much for the patient help!
 

KeerZ

Member
Yes, I copied all files from my I2000 simulation rest file to the run directory of BSSP585 case by this command:
cp /glade/scratch//$LOGNAME/archive/i.e20.I2000.f09_g16.IndividualColumn_Spinup/rest/0010-01-01-00000/* /glade/scratch//$LOGNAME/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run/

I specified RUN_REFCASE=i.e20.I2000.f09_g16.IndividualColumn_Spinup,RUN_REFDATE=0010-01-01-00000 and then built case. But the Error code is the same: ERROR: Missing required pointer_file /glade/scratch/keerzhang/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run/rpointer.ocn.restart ---has pop initial data been prestaged to /glade/scratch/keerzhang/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run?

It seems that there is no such file named rpointer.ocn in the rest file folder of my I2000 case. There are only rpointer.atm/rpointer.drv/rpointer.lnd/rpointer.rof (I checked .../archive/i.e20.I2000.f09_g16.IndividualColumn_Spinup/rest/0010-01-01-00000/).

Besids, I recall that in our previous discussion (#5 of this thread), you said "If you change the ref case to your I2000 simulation, the other components (e.g., atm, ocn, ice, etc) are going to expect initial conditions from the I2000 simulation, which don't exist. I think I would leave the ref case alone as the default and simply change the land initial conditions by specifying finidat in your user_nl_clm".
Here since I am spinning up my BSSP585 simulation using the I2000-compset case, I think I only want the land initial condition to be provided by the I2000-compset historical simulation. Should I still specify RUN_REFCASE and RUN_REFDATE?

Thank you so much for the patient help!
Yes, I copied all files from my I2000 simulation rest file to the run directory of BSSP585 case by this command:
cp /glade/scratch//$LOGNAME/archive/i.e20.I2000.f09_g16.IndividualColumn_Spinup/rest/0010-01-01-00000/* /glade/scratch//$LOGNAME/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run/

I specified RUN_REFCASE=i.e20.I2000.f09_g16.IndividualColumn_Spinup,RUN_REFDATE=0010-01-01-00000 and then built case. But the Error code is the same: ERROR: Missing required pointer_file /glade/scratch/keerzhang/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run/rpointer.ocn.restart ---has pop initial data been prestaged to /glade/scratch/keerzhang/b.e20.BSSP585.f09_g16.SSP5_Test_Ispinup/run?

It seems that there is no such file named rpointer.ocn in the rest file folder of my I2000 case. There are only rpointer.atm/rpointer.drv/rpointer.lnd/rpointer.rof (I checked .../archive/i.e20.I2000.f09_g16.IndividualColumn_Spinup/rest/0010-01-01-00000/).

Besids, I recall that in our previous discussion (#5 of this thread), you said "If you change the ref case to your I2000 simulation, the other components (e.g., atm, ocn, ice, etc) are going to expect initial conditions from the I2000 simulation, which don't exist. I think I would leave the ref case alone as the default and simply change the land initial conditions by specifying finidat in your user_nl_clm".
Here since I am spinning up my BSSP585 simulation using the I2000-compset case, I think I only want the land initial condition to be provided by the I2000-compset historical simulation. Should I still specify RUN_REFCASE and RUN_REFDATE?

Thank you so much for the patient help!

Opps! I did not see your last reply. Please ignore me and I will try what you said in #14 first. Thank you!
 

KeerZ

Member
I was looking at your case and see what you are trying to do now. Leave the RUN_TYPE as startup and keep finidat pointing to your spunup file. The other component models should have initial files already specified in their default namelists. I was assuming you were initializing the entire model from a fully-coupled historical case. So, these settings should work:

RUN_TYPE: startup
GET_REFCASE: FALSE
RUN_REFCASE: case.std
RUN_REFDATE: 0001-01-01
RUN_REFTOD: 00000
RUN_STARTDATE: 2015-01-01
Yes, It works. So to run a B-compset case with land initial condition provided by a I-compset case, we just need to set RUN_TYPE= startup and point finidat to *.clm2.r.*.nc of spunup case. I also checked the lnd_in/pop_in/atm_in files to confirm that the initial condition files of other components are still default settings.

Thank you very much!
 
Top