Solving problems¶
Using the development version of IPSL-CM-LAM means you will probably encounter a lot of problems and bugs.
This section will help you navigate the known problems with their solutions.
The most famous: paprs bad order¶
This bug is notorious for its omnipresence and the effort required to debug it. LMDZ performs a check of pressure levels verifying if they are stacked correctly. When the levels are incorrect, you will probably see something along the lines:
It No : 19 t : 1710.0
It No : 20 t : 1800.0
Time spent (s): 13 -- ms/step : 681.89 -- Throughput : 131
Whole job (min) : 338 -- Completion in (min) : 337
nrerror: an assertion failed with this tag:physiq_mod paprs bad order
program terminated by assert_v
Info
The exact check is on line 1370 in file libf/phylmd/physiq_mod.f90 for LMDZ rev. 5913. It might be on another line or in different module, if your LMDZ version differs:
Get more information¶
It is possible to look up the paprs values by setting prt_level in run.def, the LMDZ configuration file, to at least 2 (this is the minimum necessary logging level):
Then, rerunning the simulation might produce:
nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur,pdtphys
846 79 4 F F 156038.000000000
2.083333334303461E-002 900.000000000000
paprs, play, phi, u, v, t
NaN NaN NaN
NaN NaN NaN
Or a mix of good and bad values:
96108.3466422974 95909.3557910326 1336.33825107508
-1.56595953376457 3.49277532618069 270.518210206537
NaN NaN NaN
NaN NaN NaN
Either way, we now know that something is wrong with the pressure levels!
Unfortunately, by default, the logs are collected from all MPI processes at once which creates hard to read and debug wall of text. By redirecting each process output to a separate file, we might be able to learn at which longitude-latitude the problem occurs and at what scale!
See ... for how to do that (TODO: USER guid > improving logging)
Missing *.xml file¶
The *.card parsers in the libIGCM is very sensitive about whitespaces between list elements.
If you see an error, saying that one of the XIOS configuration file is missing, there are two common cases:
- The file is missing so it cannot be copied
- The definition of files to copy are corrupted.
[ParametersFiles]
List= (${SUBMIT_DIR}/PARAM/DYNAMICO/earth_const.def, .),\
(${SUBMIT_DIR}/PARAM/DYNAMICO/run_dynamico.def_nbp${RESOL_NBP}, run_dynamico.def),\
(${SUBMIT_DIR}/PARAM/DYNAMICO/nudging_dynamico.xml, .),\ # <- hidden whitespaces
(${SUBMIT_DIR}/PARAM/DYNAMICO/sponge_dynamico.xml, .),\
(${MODIPSL}/modeles/ICOSA_LMDZ/xml/param_gw.xml, .), \
(${SUBMIT_DIR}/PARAM/DYNAMICO/context_dynamico.xml, .),\
(${SUBMIT_DIR}/PARAM/DYNAMICO/context_input_dynamico.xml, .),\
(${SUBMIT_DIR}/PARAM/DYNAMICO/field_def_dynamico.xml, .),\
(${SUBMIT_DIR}/PARAM/DYNAMICO/file_def_dynamico.xml, .)
The possible error:
terminate called after throwing an instance of 'xios::CException'
In file "xml_parser_impl.hpp", function "static void xios::xml::CXMLParser::ParseInclude(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> &, T &) [with T = xios::CContext]", line 19 ->
Can not open <./context_dynamico.xml> file