preparing a forced LMDZ configuration with Schwarz for further developments
The following was done for a LMDZOR_v6.1.5 version but should work with newer versions.
The forced LMDZOR_v6.1.5 configuration
Install modipsl in a directory named for you new configuration. For instance:
mkdir SWZ_LMDZORV6 cd SWZ_LMDZORV6 svn_ano
If your environment on irene is set properly you should have the alias svn_ano defined for downloading modipsl.
You can review the available LMDZOR versions by going to modipsl/util and running:
./model -h
In our case the installed model was LMDZOR_v6.1.5:
./model LMDZOR_v6.1.5
Once the model is installed go to the general Makefile directory in config/LMDZOR_v6.
You need to edit the Makefile.
It contains a LMD9695-L39noORCH that you will call but orchidee is not removed from the lmdz compiling section.
Edit lmdz compiling section from Makefile this way:
lmdz: ../../modeles/LMDZ # (cd ../../modeles/LMDZ; ./makelmdz_fcm -d $(RESOL_LMDZ) -prod -arch $(FCM_ARCH) -j 8 ce0l ; mv bin/ce0l_$(RESOL_LMDZ)_phylmd_seq.e ../../bin/create_etat0_limit.e ; ) (cd ../../modeles/LMDZ; ./makelmdz_fcm -d $(RESOL_LMDZ) -debug -mem -cosp true -v false -parallel mpi_omp -arch $(FCM_ARCH) -j 8 -io xios -rrtm true gcm ; mv bin/gcm_$(RESOL_LMDZ)_phylmd_para_mem.e ../../bin/gcm.e ; )
It will remove the compilation of the code that creates limit states that will bug under this configuration, switch orchidee to false and give the proper name of the executable to move to the bin directory.
Now you can compile using:
gmake LMD9695-L39noORCH
setting the config files for running a forced LMDZ
config.card
In config.card add an ORCA_version variable in the [UserChoices] section:
#============================ ORCA_version=ORCA2.3 #============================ #-- 1Y, 1M, 5D, 1D Period Length for one execution PeriodLength=5D
It will be needed by lmdz.card for retrieving the proper files.
Edit the [Executable] section to set a single OpenMP thread (Schwarz implementation breaks OpenMP support):
[Executable] #D- For each component: Real name of executable, Name of executable in the run directory #D- Here is set 47MPI*8OMP which is suitable for resolution 144x142x79 #D- Change to 31MPI*4OMP for resolution 96x95x39 ATM= (gcm.e, lmdz.x, 31MPI, 1OMP) IOS= (xios_server.exe, xios.x, 1MPI)
You can set the restart to none:
[Restarts] #D- by default: config.card describes no restart for all components #D- ie start from Levitus or limit files #D- If you want to restart all components from the same simulation, #D- put OveRule flag to 'y' and set the next 3 parameters OverRule=n
and
[ATM] WriteFrequency="1M 1D HF" # If config_Restarts_OverRule == 'n' next 4 params are read Restart= n
lmdz.card
Go to COMP and edit lmdz.card.
The Schwarz method was implemented with the old Physics set this:
LMDZ_Physics=AP
Set read_climoz:
read_climoz=2
You can deactivate COSP:
LMDZ_COSP_OK=n
Use this initial state (this is why you need ORCA_version):
[InitialStateFiles] List= (${R_IN}/ATM/IPSLCM6/${config_UserChoices_ORCA_version}xLMD${RESOL_ATM_XY}/start_${config_UserChoices_ORCA_version}xLMD${RESOL_ATM_3D}_o2a_v3.nc , start.nc ), \ (${R_IN}/ATM/IPSLCM6/${config_UserChoices_ORCA_version}xLMD${RESOL_ATM_XY}/startphy_${config_UserChoices_ORCA_version}xLMD${RESOL_ATM_3D}_o2a_v3.nc, startphy.nc )
Use these boundary files:
[BoundaryFiles] List=() # # With CMIP6 aerosols version 1 # With 3D ozone ListNonDel= (${R_IN}/ATM/${RESOL_ATM}/AR5/HISTORIQUE/aerosols_11YearsClim_1855_v5.nc, aerosols.nat.nc),\ (${R_IN}/ATM/${RESOL_ATM}/AR5/HISTORIQUE/aerosols_11YearsClim_1995_v5.nc, aerosols1980.nc),\ (${R_IN}/ATM/${RESOL_ATM}/AR5/HISTORIQUE/climoz_LMDZ_1995_v2.nc, climoz_LMDZ.nc),\ (${R_IN}/ATM/LIMIT/AMIP.v20170419/interpol/${RESOL_ATM_XY}_ORCA2.3_365d/limit_1979_2008_clim.nc, limit.nc),\ (${R_IN}/ATM/SOLAR/CMIP6/v3.1corr/Control/solarforcing_v3.1_pdControl_ave_6bands_365days.nc, solarforcing.nc)
set gcm.def_96x95_AP
Add these lines and set the Schwarz parameters for your simulation:
## Schwarz coupling parameters from config.card ## number of schwarz iterations mswr= 5 ## write output at schwarz iteration number ksout ksout= 5 ## first all physics iteration kall= 1 ## frequency of coupling in seconds ncplfrq= 86400
The parameter ncplfrq is used to set the Schwarz window length as for our implementation of Schwarz it is always equal to the coupling frequency.
insert the modifications from the svn repository into the sources
Next follow the procedure to insert Schwarz modifications and subroutines to your sources see updating LMDZ beginning.