wiki:Documentation/UserGuide/PreIndSim

Setting up a coupled climate run for pre-industrial times

Author: S. Luyssaert and M. McGrath
Last major revision: S. Luyssaert (2016/11/26)
Last minor revision: S. Luyssaert (2020/02/28)

Objective

Background of this set-up: The aim is to run a 20 year long equilibrium simulation for the year 1751. Orchidee off-line line was used to simulate the surface area in 1750 and now we want to know how the climate looked liked for such a surface. The coupled run is zoomed over Europe, nudged at the edges of Europe uses the CWRR (a.k.a. 11-layer) hydrology and all the DOFOCO features. The page follows the workflow of Documentation/UserGuide/LMDZOR and Documentation/SetupZoomEurope. For the commands and actions consult those pages. On this page the settings are specified.

The boundary conditions

LMDZOR was installed twice to avoid any confusion between the boundary files of the pre-industrial and the present day simulations. Hence, one installation will be used for the pre-industrial runs (and will thus use the pre-industrial boundary conditions), the other installation is to be used for present day simulations. For both sets of simulations an AMIP set-up was chosen. Note that we use ERAI wind fields for nudging but AMIP for the other boundary conditions. It would be better to use ERAI for all boundary conditions but that is only possible for more recent simulations. This set-up comes with acceptable BC between 1870 and 2012 which allows us to focus on the climate and reduce issues with sea surface temperature, sea ice and aerosol concentrations. So copy the amip config.card to define the job that will create the BC

cd config/LMDZOR_v5.2/
cp EXPERIMENTS/LMDZ/CREATE_amip/config.card ./

The following changes were made to the config.card:

(1) Add a suffix, i.e., -1750 (but keep the grid dimensions 128x118x39) to the job name so that the pre-industrial and present day boundary files will not interfere with each other on the store directory

JobName= ELI-128x118x39-1750

(2) Set the begin date to the earliest year available. We are planning 20 year long equilibrium simulations but we are not sure whether it will take 20 or 30 years so we simulate the BC for 30 years to be on the safe side.

DateBegin=1751-01-01
DateEnd=1780-12-31

(3) There is no need to manually create a directory for this experiment. When you use ./util/ins_job the script will create a directory with a copy of the config.card as well as the COMP, DRIVER and PARAM folder.

Following, more settings need to be changed and/or confirmed before launching the job:

(1) We now have to set-up the job to create files for the boundary conditions (BC) for the years 1751 to 1780 but we have no driver files for these years so we use the earliest years available. That varies from data stream to data stream so we used a creative solution. We are limited, for example by the SST and sea ice files that only go back until 1870. So we assume that the SST in 1870 represents pre-industrial conditions.

Open .../libIGCM/libIGCM_config/libIGCM_config.ksh and search for the phrase '# BEGIN: SHOULD GO IN A FUNCTION FROM libIGCM_date.ksh'. Then add:

# BEGIN: SHOULD GO IN A FUNCTION FROM libIGCM_date.ksh
# Compute year_m1 and year_p1 (year minus 1Y and year plus 1Y)
  year_m1=$(( year - 1 ))
  year_p1=$(( year + 1 ))
  # First year for SST 1870 = 1751 + 119
  year_sst=$((year + 119))
  # First year for O3 is 1855 = 1751 + 104
  year_o3=$((year + 104))
  # First year for nudged wind fields 1980 = 1751 + 229
  year_nudge=$((year + 229))
  # First year of pre-industrial forcing 1765 = 1751 + 14
  year_preind=$((year + 14))

(2) These newly defined years now have to be used in COMP/lmdz.card. Therefore, change the boundary files as follows:

List=   (${R_INIT}/ATM/${config_UserChoices_TagName}/AMIP/amipbc_sst_360x180_${year_sst}.nc, amipbc_sst_1x1.nc), \
	(${R_INIT}/ATM/${config_UserChoices_TagName}/AMIP/amipbc_sic_360x180_${year_sst}.nc, amipbc_sic_1x1.nc), \
	(${R_INIT}/ATM/${config_UserChoices_TagName}/Ozone/HYBRIDE/v2.clim/tro3_${year_o3}.new.nc, climoz.nc)

(3) Note that many of the data files that are used to describe the boundary conditions can be found at

/ccc/work/cont003/dsm/p86ipsl/IGCM/INIT/ATM/LMDZOR/

The following, further, changes to were made to the COMP/lmdz.card:

(1) Specify in the list of parameter files that the BC should be based on the predefined pre-industrial settings. These settings contain the TOA solar incoming radiation, atmospheric CO2, CH4 and N2O among other settings. Have a look in PARAM/config.def_preind to get a better idea of these settings.

(${SUBMIT_DIR}/PARAM/config.def_preind     ,  config.def),    \

(2) In the DRIVER/lmdz.driver it is specified that in the absence of the Oasis coupler, which is the case for LMDZOR, the ocean is forced. Hence the need of SST and sea ice files for all years in the experiment.

(3) Most likely this is redundant at this stage but better safe than sorry so in PARAM/run.def set

VEGET=y

Now the ELI-128x118x39-1750 can be launched. It takes about 70 seconds per year so in this example it will take over 30 minutes to complete this 30-year job

ccc_msub Job_ELI-128x118x39-1750

The pre-industrial experiment

Where for the BC run, an LMD experiment was copied, we now have to copy a LMDZOR experiment. We haven't tried whether LMDZ/clim BC files can be combined with LMDZOR/amip experiments but to keep it simple we propose to be consistent and thus combine LMDZ/amip BC files with an LMDZOR/amip experiment

cp ./EXPERIMENTS/LMDZOR/amip/config.card .

Edit the config card by changing the JOBNAME and setting the dates so that all dates of the experiment fall within the dates for which the BC were made. Alternatively, and that is what was done here we will run the experiment for the years we want, i.e., 1751-1770 and use offsets in the COMP/*.card settings to ensure the correct BC files were used.

../../util/ins_job 

This will create a new directory with the JOBNAME and copies the COMP, DRIVER and PARAM into that folder. Following the settings can be adjusted to the needs of the experiments

cd JOBNAME

config.card

Given we want to simulate the equilibrium climate with the surface we should provide an initial condition of the vegetation. As an initial condition we use the restarts of an off-line simulation. Remember to use a restart for both the SRF and SBG component!

# If config_Restarts_OverRule == 'n' next 4 params are read
Restart=y
#-- Last day of the experience used as restart for this component if Restart=y
RestartDate=1750-12-31
# Define restart simulation name for this component
RestartJobName=ACLF
RestartPath=/ccc/store/cont003/dsm/cheny/IGCM_OUT/OL2/PROD/SECSTO

COMP/orchidee.card (Part 1)

LMDZOR can use both the 2-layer and 11-layer hydrology. ORCHIDEE-DOFOCO can only use the 11-layer hydrology so there is no choice but to use the 11-layers or CWRR scheme. First open the COMP/orchidee.card and change the suffix to ensure that the correct run.def will be used.

DefSuffix=CWRR

PARAM/orchidee.def_CWRR

When installing LMDZOR we substituted the trunk version of ORCHIDEE by the DOFOCO-branch. The coupled set-up has some left overs of previous ORCHIDEE versions. Earlier the run.def of ORCHIDEE contained all settings. Because such an extensive file was very difficult to read and maintain all parameters now get a default value and only when the default value needs to be changed, the parameter should be mentioned in the run.def. This basically resulted in an empty run.def when running a default set-up. LMDZOR still comes with the unreadable full run.def which in the LMDZOR world is called PARAM/orchidee.def_CWRR. We propose to delete all settings from the old run.def and only keep the following settings:

# When using the new physics (NP) use the corrected potential evapotranspiration. Not needed
# for the old physics (AP)
evapot_corr= CHOOSE{y/n} for {NP/AP}

# The river routing module does not like zoomed grids 
# because a zoom affects the coastal pixels. 
# Because in a zoomed grid, the coast may have moved 
# into the sea, some rivers are too short and 
# never make it to the ocean. The model notices 
# and will crash. 
RIVER_ROUTING = n 

# Use stomate (all the biogeochemical and anthropogenic processes)
STOMATE_OK_STOMATE = y

# To reset the time coming from SECHIBA restart file
# This option allows the model to override the time
# found in the restart file of SECHIBA with the time
# of the first call. That is the restart time of the GCM.
SECHIBA_reset_time = y

# Name of restart to READ for initial conditions
# This is the name of the file which will be opened
# to extract the initial values of all prognostic
# values of the model. This has to be a netCDF file.
# Not truly COADS compliant. NONE will mean that
# no restart file is to be expected.
SECHIBA_restart_in = _AUTO_

# Name of restart to READ for initial conditions of STOMATE
# If STOMATE_OK_STOMATE || STOMATE_WATCHOUT
# This is the name of the file which will be opened of STOMATE
# to extract the initial values of all prognostic values of STOMATE.
STOMATE_RESTART_FILEIN = _AUTO_

# Frequency in seconds at which to WRITE output
# This variables gives the frequency the output of
# the model should be written into the netCDF file.
# It does not affect the frequency at which the
# operations such as averaging are done.
WRITE_STEP = _AUTO_

# Frequency in seconds at which to WRITE output
# If SECHIBA_HISTFILE2
# This variables gives the frequency the output 2 of
# the model should be written into the netCDF file.
# It does not affect the frequency at which the
# operations such as averaging are done.
# That is IF the coding of the calls to histdef
#  are correct !
WRITE_STEP2 = _AUTO_

# STOMATE history time step (d)
# Time step of the STOMATE history file
# Care : this variable must be higher than DT_SLOW
STOMATE_HIST_DT = _AUTO_

# Interception reservoir coefficient.
# Transforms leaf area index into size of interception reservoir
#  for slowproc_derivvar or stomate.
SECHIBA_QSINT = 0.02
# default = 0.1

# If HYDROL_OK_HDIFF
# Defines how fast diffusion occurs horizontally between
#  the individual PFTs' water reservoirs. If infinite, no
#  diffusion.
HYDROL_TAU_HDIFF = 1800.
# default = 86400.

IF you are using ORCHIDEE-DOFOCO to its full potential, 13 PFTs - which is the default - is low. The two default DOFOCO set-ups have either 28 PFTs (without age classes) or 64 PFTs (with four age classes for each of the European tree species. This implies that you have to add all the PFT specific parameters as well. These parameters can be found in a table stored on /ccc/work/cont003/dofoco/dofoco/PARAMETERS/PARAMETER_VALUES/. The script Parameter_table_to_run_def0303.py at /ccc/work/cont003/dofoco/dofoco/SCRIPTS/rundef_from_table/ can be used to convert the table in run.def. The script allows a more or less flexible way of defining which PFTs need age classes. Have a look at the readme.txt file in the same folder.

Given that off-line ORCHIDEE runs were used to forward the land surface in time, the off-line runs may account for land cover change, forest management and litter raking. To increase the chances that an equilibrium climate is reached in under 20 years it is advised to switch off as many of these changes as possible.

READ_FM_MAP=y
LAND_COVER_CHANGE=n
VEGET_UPDATE=0Y
LIGNORE_LCC_STOPS=y
USE_LITTER_RAKING=y 

Make sure that stomate is on by looking in PARAM/orchidee.def_CWRR

STOMATE_OK_STOMATE = y

and in config.card (if this line is missing, there will be no STOMATE)

SBG= ("", "")

COMP/orchidee.card (Part 2)

Use the minimally required output level, i.e., 2, to limit the size of the history files. Land cover change is now switched off.

sechiba_LEVEL=2
VEGET_UPDATE=0Y
LAND_COVER_CHANGE=n

Within the 20-year coupled run the land surface will stay constant to that described by the restart file that will be used, i.e., 1750. Forest management and litter raking are still activated (else we will affect the C-pools). We will keep these settings constant to their values for the year 1750. We simply hard code the years for these maps as detailed below. Note that because we start from a restart file the [InitialStateFiles] are not used. We have to define the litter and FM maps as [BoundaryFiles] which are read only once during the year. Note that 1:12: means that the file will be copied to the working directory at the first integration step and then every 12 iterations until the simulation is finished. More information on the difference between InitialStateFiles, BoundaryFilesn and SmoothFiles can be found at http://forge.ipsl.jussieu.fr/igcmg_doc/wiki/DocEsetup#COMPdirectory

[InitialStateFiles]
List= ()

[BoundaryFiles]
List= ()
ListNonDel= (/ccc/work/cont003/dofoco/dofoco/MAPS/LITTER_DEMAND/RGRID/litter_demand_map_1750.nc, litter_map.nc), \
	    (/ccc/work/cont003/dofoco/dofoco/MAPS/FM/RGRID/fm_strat_map_1750_mean.nc, FMmap.nc)

[SmoothFiles]
List= ()

PARAM/config.def_preind

Double check whether in PARAM/config.def_preind the aerosol setting is as follows:

aer_type=preind

All other settings are set to _AUTO_ and should thus be automatically taken into account. For the pre-industrial run only the natural aerosols are used and the regridded data can be found at /ccc/work/cont003/dsm/p86ipsl/IGCM/BC/ATM/LMDZOR/LMD128118/AR5/HISTORIQUE/aerosols_11YearsClim_1860_v5.nc. In COMP/lmdz.card some of the aerosol settings can be manually set (see below).

COMP/lmdz.card

More details on the settings of COMP/lmdz.card are given on http://forge.ipsl.jussieu.fr/igcmg/wiki/platform/documentation/modeles/LMDZ section 5. For the new physics, set in COMP/lmdz.card

LMDZ_Physics=NPv3.1

For the old physics set in COMP/lmdz.card

LMDZ_Physics=AP

Because we have BC files for a pre-industrial but also for present day experiment we changed the name of the BC folder by adding the suffic '-1750'. We have to make sure that LMDZOR finds the correct BC by adding this suffix:

[InitialStateFiles]
List=	(${ARCHIVE}/IGCM_OUT/LMDZ/${CREATE}/ATM/Output/Restart/${CREATE}_${year}_start.nc,    start.nc),\
        (${ARCHIVE}/IGCM_OUT/LMDZ/${CREATE}/ATM/Output/Restart/${CREATE}_${year}_startphy.nc, startphy.nc)

...

[SmoothFiles]
List=   (${ARCHIVE}/IGCM_OUT/LMDZ/${CREATE}/ATM/Output/Boundary/${CREATE}_${year}_limit.nc,          limit.nc,           1:12:),\
        (${ARCHIVE}/IGCM_OUT/LMDZ/${CREATE}/ATM/Output/Boundary/${CREATE}_${year}_climoz_LMDZ.nc,    climoz_LMDZ.nc,     1:12:)

The aerosols that are being used are set in PARAM/config.def_preind (see above). In COMP/lmdz.card we have some additional manual control but it is better not to touch it.

#flag_aerosol=6
#ok_ade=y
#ok_aie=y
#aerosol_couple=n
#read_climoz=2
#ok_cdnc=y

We can choose from 5 aerosol groups which groups we want to account for during the simulation. 6 means that all 5 groups will be used. Activating ok_ade and ok_aie implies that the model accounts for both the direct and indirect effects of aerosols. Because we run without INCA, the aerosols are coupled and aerosol_couple is set to n. For ozone it a day time climatology, a night time climatology or both (=2) can be used. cdnc stands for cloud number count. The path of the aerosol files is also specified in COMP/lmdz.card (see below). For a more detailed description of the these aerosols settings have a look at http://forge.ipsl.jussieu.fr/igcmg_doc/wiki/DocImodelBlmdz#Informationabouttheaerosolradiativeforcing. As we are not sure which information is read first, i.e., the PARAM/config.def_preind or the COMP/lmdz.card we don't want to take the risk that the pre-industrial settings get overwritten and so we commented-out the setting in the COMP/lmdz.card. In case you want to regrid your own aerosol files the relevant scripts and instructions (in French) can be found at http://forge.ipsl.jussieu.fr/igcmg/wiki/InfosAerosol#Cr%C3%A9ationetinterpolationdesfichiersdefor%C3%A7ages. Interesting to know but NOT part of this set-up: it is also possible to deactivate aerosol forcing. To do so, remove the lines containing aerosols_ from the List section and change lmdz.card to the following : flag_aerosol=0, ok_ade=n, ok_aie=n, aerosol_couple=n, read_climoz=0, ok_cdnc=n. Note that read_climoz=0 will also deactivate the reading of ozone. Ozone is regridded by the job LMDZ/CREATE_ (as are some other boundary conditions such as SST, sea ice, ...) so this is not necessary to deactivate.

Activate nudging by setting ok_guide=y and add the path to the nudging files in Boundary Files section List in lmdz.card. (the French for 'nudging' is 'guider')

ok_guide=y

Ideally wind fields for the year 1750 should be used for the pre-industrial run. However, ERAI data only start in 1958 so such files do not exist. Consequently, the 1980 to 2011 wind fields are used to nudge the pre-industrial simulation. the assumption we make here is that the wind patterns outside the nudged area have not changed dramatically between 1980 and 1750. Because we want to calculate the difference in climate between 1750 and 2010 it is more important to make sure that our wind fields come from the phase in NOA. If not, the change in climate that will be assigned to our treatment could be just due to a change in NOA. For a strongly zoomed simulation over Europe that is probably an acceptable assumption. The years 1980 to 2011 have been prepared for the 128x118 zoomed grid and are stored at /ccc/work/cont003/dsm/p86ipsl/IGCM/BC/ATM/LMDZ/LMD128118/NUDGE_FILES/ERAI. If you are not using a zoomed grid that has been used previously, or you want to use the 128*118 grid for different years, you will have to prepare your own nudging files. ERAI nudging files for wind (u and v) can be interpolated to the zoomed grid using the method described here : ​https://forge.ipsl.jussieu.fr/igcmg/wiki/platform/en/documentation/I_modeles/B_LMDZ#Interpolationofnudgefiles. Note that you must be in the group subipsl to have the permission to access these files. Contact Anne Cozic for TGCC to be added to subipsl.

We still need to tell the model which nudging files it should use. This requires a change to COMP/lmdz.card so that libIGCM knows to copy the files before the run. Note that here we substitute the argument ${year} by ${year+130} so we will run the simulation from 1750 to 1780 (as specified in the config.card) but use the wind fields from 1980 to 2000 during the 20 years of the equilibrium climate experiment.

[BoundaryFiles]
List= (${R_BC}/ATM/${config_UserChoices_TagName}/${RESOL_ATM}/NUDGE_FILES/ERAI/${year_nudge}/u_${year_nudge}${month}_erai.nc, u.nc),\
      (${R_BC}/ATM/${config_UserChoices_TagName}/${RESOL_ATM}/NUDGE_FILES/ERAI/${year_nudge}/v_${year_nudge}${month}_erai.nc, v.nc)

The aerosols have to be interpolated to the zoomed model grid. The years 1980-2000 for HISTORIQUE run version _v5 have been done. They are found at the standard place : /ccc/work/cont003/dsm/p86ipsl/IGCM/BC/ATM/LMDZ/LMD128118/AR5/HISTORIQUE . You need to change _v3 into _v5 in lmdz.card to use these files.

[BoundaryFiles]

...

# With AR5 aerosols (including ASSO4M(=SO4), CSSO4M, AIBCM, ASBCM, AIPOMM, ASPOMM, ASSSM, CSSSM, SSSSM, CIDUSTM)
# With AR5 ozone(tropo + strato from LMDZOR-INCA-REPROBUS simulations)
ListNonDel= (/ccc/work/cont003/dofoco/dofoco/INPUT_FILES/ATM_COMP/SOLAR_PREIND.txt, SOLARANDVOLCANOES.txt),\
	    (/ccc/work/cont003/dofoco/dofoco/INPUT_FILES/ATM_COMP/CO2_PREIND.txt, CO2.txt),\
	    (/ccc/work/cont003/dofoco/dofoco/INPUT_FILES/ATM_COMP/CH4_PREIND.txt, CH4.txt),\
	    (/ccc/work/cont003/dofoco/dofoco/INPUT_FILES/ATM_COMP/N2O_PREIND.txt, N2O.txt),\
	    (/ccc/work/cont003/dofoco/dofoco/INPUT_FILES/ATM_COMP/CFC11_PREIND.txt, CFC11.txt),\
	    (/ccc/work/cont003/dofoco/dofoco/INPUT_FILES/ATM_COMP/CFC12_PREIND.txt, CFC12.txt),\
	    (${R_BC}/ATM/${config_UserChoices_TagName}/${RESOL_ATM}/AR5/HISTORIQUE/aerosols_11YearsClim_1860_v5.nc, aerosols.nat.nc)
 
[SmoothFiles]

...

List=   (${ARCHIVE}/IGCM_OUT/LMDZ/${CREATE}/ATM/Output/Boundary/${CREATE}_${year}_limit.nc,          limit.nc,           1:12:)
(${ARCHIVE}/IGCM_OUT/LMDZ/${CREATE}/ATM/Output/Boundary/${CREATE}_${year}_climoz_LMDZ.nc,    climoz_LMDZ.nc,     1:12:)
 

Pre-defined pre-industrial settings (TOA solar incoming radiation, atmospheric CO2, CH4 and N2O and aerosols (see above)) should be set by changing

ConfType=preind

Alternatively this setting can be hard coded by changing ${ConfType?} into preind in the following line. The first option seems more direct.

(${SUBMIT_DIR}/PARAM/config.def_preind,  config.def),    \

PARAM/guide.def

Change the PARAM/guide.def to the following: (JR: is the spelling of 'DEFAULT' an error in the code or just in this guide?)

ok_guide=_AUTO_ : DEFFAULT = n  
guide_u= y
guide_v= y
guide_T= n
guide_P= n
guide_Q= n
tau_min_u=0.05
tau_max_u=10.
tau_min_v=0.05
tau_max_v=10.

This means that outside the zoom, the wind is nudged every 86400*0.05 seconds (about 1h12min), which is considered fairly strong but necessary for an intense zoom. Inside the zoom, the winds are slightly nudged every 10 days.

PARAM/physiq.def_L39_NPv3.1

For the new physics only. The number codes are explained in the file physiq.def_L39_NPv3.1

iflag_thermals=17
iflag_pbl=11

PARAM/physiq.def_L39_AP

No specific changes are required for the old physics

DRIVER/lmdz.driver

In DRIVER/lmdz.driver search for

Annee_${year}

and replace by

Annee_${year_preind}

This is necessary because these files start in 1765 but we want to make a simulation that is assigned to the year 1751. We defined the variable 'year_preind' ourselves in libigcm_config.ksh (see above)

Alternative to changing the years

Rather than changing the years in .../libIGCM/libIGCM_config/libIGCM_config.ksh, and several of the DRIVER and COMP files it is also possible to adjust the data files and more specificaly all the *.txt files as those contain only one value per year. The files SOLARANDVOLCANOES_1610_2008.txt, CO2_1765_2005.txt, CH4_1765_2005.txt, N2O_1765_2005.txt, CFC11_1765_2005.txt, and CFC12_1765_2005.txt are all write protected so you have to copy them before you can change the content. For an equilibrium experiment it could be wise to set the same value for all the years in the experiment. This way, equilibrium will be reached faster. If you use this approach remember to change the paths in COMP/lmdz.card such that it uses your copied and adjusted files.

Launch the experiment

For the regular grid you are done and can try to launch the job:

ccc_msub Job_JOBNAME
Last modified 10 months ago Last modified on 03/19/20 18:56:26