wiki:LMDZoGuOR

Version 18 (modified by jgipsl, 13 years ago) (diff)

--

Configuration LMDZOR_v4 =

a configuration under developpement
/J Ghattas


This configuration is a modified copy of LMDZ4OR_v3. Modifications are :

  • the grille 280x280x39 is added. This grid contains a zoom over Africa
  • the CREATE experience does not have a PARAM directory. In CREATE/COMP/lmdz.card the parameter PARAM_DIR points to ../LMDZOR/PARAM.

In the CREATE experience, 2 files exist in double versions : config_card and lmdz.card. Before run a manual copy or link must be done :

ln -s config.card_Interannuel config.card; cd COMP; ln -s lmdz.card_Interannuel lmdz.card

or

ln -s config.card_Climat config.card; cd COMP; ln -s lmdz.card_Climat lmdz.card
  • bug correction for CREATE run with leap calendar (gregorian), in config.card : CalendarType=leap => in run.def : calend=gregorian
  • scripts for interpolating files for nudging are stored in CREATE/SCRIPT. The script get_era.x is the master that will launch the other 2 (era2gcm.x and add_step.x).

In the LMDZOR experience, a climat or a AMIP(interannual) experience can be run. Before run a manual copy or link must be done :

cd LMDZOR/COMP; ln -s lmdz.card_Climat lmdz.card; ln -s orchidee.card_Climat orchidee.card

or

cd LMDZOR/COMP; ln -s lmdz.card_AMIP lmdz.card; ln -s orchidee.card_AMIP orchidee.card

Parametres in config.card such as JobName, CalendarType, DateBegin, DateEnd must be considered and eventally modified according to desired experience.


Problems running at VARGAS?

  • You should not compile with -O5 at VARGAS. Compile with -O3 or lower optimization. Default compiler xlf 13.1.0.3 is ok with -O3.
  • If the executable create_etat0_limit or ce0l exits with following error message you need to update your LMDZ version to revision 1476 at branch LMDZ4_AR5 or higher :

ERROR: 0032-184 MPI was not finalized in routine unknown, task 0

  • Check memory in your job. For higher resolutions you may need to add threads just to have more memory. You must then compile in mpi mode (default for create_etat0_limit.e.para) and not mixt mpi_openmpi. In your job, add @ parallel_threads = 8. This gives you 8 times more memory per process mpi availible and you can multiply data_limit and stack_limit by 8. When adding threads you should remove @ resources = ConsumableCpus(1). For exemple for resolution 280x280x39 put in your job :

# @ total_tasks = 32
# @ environment = "BATCH_NUM_PROC_TOT=32"
# @ parallel_threads = 8
# @ data_limit  = 18.0gb
# @ stack_limit = 6.0gb,6.0gb
### @ resources = ConsumableCpus(1)
  • You must desactivate the filtre fft if using branch LMDZ4_AR5 or earlier version of LMDZ. In run.def set use_filtre_fft = n.

Interpolation of nudge files

The files that will be used for the nudging must be interpolated to the model grid before running the gcm. This can be done either using a script get_era.x or using a patch in libIGCM, see below.

Interpolation using get_era.x

Follow step 1 to 3.

1) Create file grilles_gcm.nc
LMDZ contains a program that creates a file netcdf containg the grid u and v. This program is located in file LMDZ5/libf/dyn3d/grilles_gcm_netcdf.F. Compile this program with the same resolution as the gcm. For exemple if using the LMDZOR_v4/Makefile, add in Makefile :

(cd ../../modeles/LMDZ; ./makelmdz_fcm -cpp ORCHIDEE_NOOPENMP -d $(RESOL_LMDZ) -arch $(FCM_ARCH) grilles_gcm_netcdf ; cp bin/grilles_gcm_netcdf_$(RESOL_LMDZ)_phylmd_seq.e ../../bin/grilles_gcm_netcdf.e ; )

For a regular grid no parameter files are needed, just execute the program. If you have a zoom, execute the program together with your parameter files (run.def, gcm.def).

2) Modify and run get_era.x
The script get_era.x is stored in LMDZOR_v4/CREATE/SCRIPT and it is used together with era2gcm.x and add_step.x. These scripts have to be adapted according to the machine and file locations. To extract only interpolation scripts :

svn co http://forge.ipsl.jussieu.fr/igcmg/svn/CONFIG/LMDZOR/branches/LMDZOR_v4/CREATE/SCRIPT

Modifications :

  • get_era.x set year and month to be interpolated. Set path to your grilles_gcm.nc file
  • era2gcm.x set ANA_DIR to the path of ERAI files

During execution of get_era.x the directory OUT_ERAI will be created in the running directory.

3) Move interpolated files to archive directory

Interpolation using a patch in libIGCM

Interpolation is done in the CREATE job at the same time as execution of create_etat0_limit for creation of boudary files limit.nc. Using lmdz.card_Interannuel and config.card_Interannuel is necessary to interpolate over several years. libIGCM tag v1_10 is requierd.

To activate the patch modifications in CREATE/COMP/lmdz.card_Interannuel is needed. Add the files to interpolate in [BoundaryFiles]/List and in [OutputFiles]/List and add the paragraf [Nudge_Interp] in the end of lmdz.card. Here below is an exemple how to add u. In the same lmdz.card it is possible to add different files u,v,t,... using the same syntax :

[BoundaryFiles]
List=   (${R_INIT}/ATM/${config_UserChoices_TagName}/AMIP/amipbc_sst_360x180_${year}.nc, amipbc_sst_1x1.nc), \
	(${R_INIT}/ATM/${config_UserChoices_TagName}/AMIP/amipbc_sic_360x180_${year}.nc, amipbc_sic_1x1.nc), \
	(${R_INIT}/ATM/${config_UserChoices_TagName}/Ozone/HYBRIDE/v2.clim/tro3_${year}.new.nc, climoz.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}01.aphei.GLOBAL_075.nc, u_1_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}02.aphei.GLOBAL_075.nc, u_2_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}03.aphei.GLOBAL_075.nc, u_3_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}04.aphei.GLOBAL_075.nc, u_4_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}05.aphei.GLOBAL_075.nc, u_5_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}06.aphei.GLOBAL_075.nc, u_6_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}07.aphei.GLOBAL_075.nc, u_7_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}08.aphei.GLOBAL_075.nc, u_8_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}09.aphei.GLOBAL_075.nc, u_9_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}10.aphei.GLOBAL_075.nc, u_10_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}11.aphei.GLOBAL_075.nc, u_11_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year}/u.${year}12.aphei.GLOBAL_075.nc, u_12_${year}.nc), \
        (/u/rech/psl/rpsl376/ERAI/NETCDF/GLOBAL_075/4xdaily/AN_PL/${year_p1}/u.${year_p1}01.aphei.GLOBAL_075.nc, u_13_${year}.nc)

...

[OutputFiles]
List=	( limit.nc,       ${R_OUT_ATM_O}/Boundary/${config_UserChoices_JobName}_${year}_limit.nc,       NONE), \
	( climoz_LMDZ.nc, ${R_OUT_ATM_O}/Boundary/${config_UserChoices_JobName}_${year}_climoz_LMDZ.nc, NONE), \
	( start.nc,       ${R_OUT_ATM_O}/Restart/${config_UserChoices_JobName}_${year}_start.nc,        NONE), \
	( startphy.nc,    ${R_OUT_ATM_O}/Restart/${config_UserChoices_JobName}_${year}_startphy.nc,     NONE), \
        ( u_1_${year}.nc,  ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}01_u.nc,       Post_Interp), \
        ( u_2_${year}.nc,  ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}02_u.nc,       NONE), \
        ( u_3_${year}.nc,  ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}03_u.nc,       NONE), \
        ( u_4_${year}.nc,  ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}04_u.nc,       NONE), \
        ( u_5_${year}.nc,  ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}05_u.nc,       NONE), \
        ( u_6_${year}.nc,  ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}06_u.nc,       NONE), \
        ( u_7_${year}.nc,  ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}07_u.nc,       NONE), \
        ( u_8_${year}.nc,  ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}08_u.nc,       NONE), \
        ( u_9_${year}.nc,  ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}09_u.nc,       NONE), \
        ( u_10_${year}.nc, ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}10_u.nc,       NONE), \
        ( u_11_${year}.nc, ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}11_u.nc,       NONE), \
        ( u_12_${year}.nc, ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}12_u.nc,       NONE), \
        ( u_13_${year}.nc, ${R_OUT_ATM_O}/Nudgefiles/${config_UserChoices_JobName}_${year}13_u.nc,       NONE)



# This patch is applied to the first file but it will work on all files u01.nc - u13.nc
[Post_Interp]
Patches = (Patch_20101208_nudge_interp)
GatherWithInternal = ()
TimeSeriesVars2D = ()
ChunckJob2D = NONE
TimeSeriesVars3D = ()
ChunckJob3D = NONE
Seasonal=OFF

In config.card it is necessary to put :

RebuildFrequency=1Y

Différentes expériences

Différences actuelle entre LMDZOR et AMIP :

Fichier LMDZOR AMIP Commentaires
COMP/lmdz.card ELC-${RESOL_ATM_3D} ELI-${RESOL_ATM_3D} CREATE (nom du job create_etat0_limit)
clim_start.nc ${year}_start.nc fichier climat / inter annuelle
clim_startphy.nc ${year}_startphy.nc fichier climat / inter annuelle
clim_limit.nc ${year}_limit.nc fichier climat / inter annuelle
aerosols_11YearsClim_1860.nc aerosols_11YearsClim_1855.nc aerosols.nat.nc
aerosols_11YearsClim_1995.nc aerosols1980.nc
aerosols_11YearsClim_${year}.nc aerosols${year}.nc, 1:12: (smoothfile : à partir de la 1ère toutes les 12 périodes (mois) [min]:[modulo:][max] )
climoz_LMDZ_1995.nc climoz_LMDZ_${year}.nc, climoz_LMDZ.nc, 1:12: climoz_LMDZ.nc
CO2_1765_2005.txt
CH4_1765_2005.txt
N2O_1765_2005.txt
CFC11_1765_2005.txt
CFC12_1765_2005.txt
guide.def a mettre aussi dans LMDZOR!||
COMP/lmdz.driver IPCC_CO2= ... ; LMDZ_sed physiq.def co2_ppm ${IPCC_CO2} update physiq.def with values from file .txt :
solaire, co2_ppm, CH4_ppb, N2O_ppb, CFC11_ppt, CFC12_ppt
COMP/orchidee.card PFTmap_IPCC_2000.nc ${BC_SRF_PFTmap} = PFTmap_1850to2005_AR5_LUHa.rc2.nc new function in driver will choose PFTmap
or ORCHIDEE_PFTmap_2006to2100_AR5_RCP8.5_MESSAGE.nc
COMP/orchidee.driver srf_period_start new function for choice of PFTmap before and after 2004
cas test : modif for certain years VEGET_REINIT
cas test : modif for certain years VEGET_YEAR
PARAM/orchidee.def 0Y 1Y VEGET_UPDATE
n y LAND_COVER_CHANGE = n
PARAM/physiq.def_L39 0.008 0.0 pmagic
1366.0896 1365.6537 solaire RQ: le valeur dans AMIP sera ecraser
actuel annuel aer_type

Commentaires :

  • orchidee.driver pourrait être le même car srf_period_start prend effet en utilisant le variable ${BC_SRF_PFTmap}, qui se fait dans orchidee.card. On pourrait donc avoir : orchidee.card_Climat et orchidee.card_Interannuel
  • Les différentes valeurs dans les .def pourrait être mis dans lmdz.card et orchidee.card pour ensuite être modifié avec sed
  • guide.def pourrait etre mis dans les 2 expériences