LMDZ to DYNAMICO start files
This page explains how to convert a start.nc startfi.nc to a Dynamico There is a wiki page specific for Dynamico just in case: https://lmdz-forge.lmd.jussieu.fr/mediawiki/Planets/index.php/The_DYNAMICO_dynamical_core ).
Compilation
- The first step is to compile DYNAMICO using the LMDZ physics. Please refer to DYNAMICO with LMDZ physics for this step. This implies the compilation of IOIPSL, XIOS, DYNAMICO and LMDZ package (Generic, Mars, Pluto, ...). It will create the executable icosa_lmdz.exe in your ICOSA_LMDZ/bin directory.
- Compile start_archive.e using the following command. Replace architecture, dimensions and <your_physics> by your package (mars/pluto/...)
makelmdz_fcm -arch <architecture> -d <dimensions (lonxlatxalt)> -p <your_physics> start2archive
- Compile the files in LMDZ.<YOUR_PHYSICS>/util/startarchive2icosa (where YOUR_PHYSICS is MARS/PLUTO/...) with the compile script, which will create start_archive2icosa and rearrange_startphy.
Preliminary steps
To convert your lmdz files to dynamico files, you will need to go through the #startarchive2icosa script, which requires the following files:
- start_archive_nc4.nc
- startphy_icosa_ref.nc
- start_icosa_ref.nc
- surface_nc4.nc
To get these files, follow the following procedure:
1. Get start.nc and startfi.nc from your simulation via newstart or the PCM and create an archive file using start2archive, and convert it to netcdf4:
start2archive.e nccopy -k 4 start_archive.nc start_archive_nc4.nc
2. Create an initial conditions files for dynamico by running a dynamico simulation without an initial physics file (startphy_file=false).
- a) In run_icosa.def change the following variables (adapt to your case) :
# short run run_length=1500 # isothermal could a bad initial state, you can try etat0=temperature_profile, which reads a 'profile.in' file. etat=isothermal etat_isothermal_temp=200 # use LMDZ physics physics = phys_external # do not use startfi.nc startphy_file=false
- b) run icosa_lmdz.exe (fingers crossed it run smoothly) and copy its output files.
icosa_lmdz.exe cp restartfi.nc startphy_icosa_ref.nc cp restart.nc start_icosa_ref.nc
3) Create a surface_nc4.nc based on your topography (could be a symbolic link).
It may fail if the format is netCDF 3. You can convert the file with nc3tonc4 or nccopy -k 4.
startarchive2icosa
This script will convert the LMDZ start files to the DYNAMCIO grid.
1) Gather:
- start_archive_nc4.nc
- startphy_icosa_ref.nc
- start_icosa_ref.nc
- surface_nc4.nc
- xml files for DYNAMICO (in deftank/ hopefully)
2) Then get executable files (*.e) from path/to/LMDZ.<YOUR_PHYSICS>/util/startarchive2icosa/*
ln -s path/to/LMDZ.<YOUR_PHYSICS>/util/startarchive2icosa/ cp -r startarchive2icosa/*.e startarchive2icosa/run* startarchive2icosa/*.xml startarchive2icosa/job* startarchive2icosa/*sh . mv run_icosa.def.no_startfi run.def
3) run start_archive2icosa as a job (requires a lot of memory). Make sure that iodef.xml is the one from the startarchive2icosa folder.
sbatch job_start_archive_2icosa
The script creates start_icosa_prefinalize.nc and startfi_prefinalize.nc.
4) You will need to run a final script:
./icosa_finalize.bash
There could be an issue with the location of the LMDZ root folder. Please change the icosa_finalize.bash file accordingly or set the LMDZ variable in your environment. The script creates a folder icosa_starts/ with the dynamico startfi.nc and start.nc.
5. NOT NEEDED? update the tracer name in startfi for each tracer for example: ncrename -v ccn_number_surf,ccn_number startfi.nc.
Run Dynamico simulation
Create another folder, with the xml and def files from deftank/dynamico.
In run.def, be sure to have :
etat0=start_file etat0_start_file_colocated=true
Make sure the run.def also lists llm equal to your start.nc lev count. If you encounter an error about n_glo not being equal to your model n_glo, change llm to match lev.
Copy in your folder the startfi.nc and start.nc from the icosa_starts/ folder generated by #start_archive2icosa and icosa_finalize.bash scripts.
mv icosa_starts/start*nc your_dynamico_folder/