====== Error Handling ======
In CP2K there exist three convenient macros for error handling. They are defined in [[src>src/base/base_uses.f90]], and are therefore always available. However, these macros can only be used for **short messages** (approximately less than 7 words), because of Fortran's line length limitation.
CPWARN("A short warning message")
CPABORT("A short error message")
CPASSERT(2>1) ! For sanity checks only, not for user errors.
For longer messages one can use these two routines:
CALL cp_warn(__LOCATION__,"A long warning message "//&
"which can span multiple lines and contains "//&
"some valuable advice for the user.")
CALL cp_abort(__LOCATION__,"A long error message "//&
"with even more valuable advices.")
Messages from ''CPWARN'' and ''cp_warn'' are only printed on the first MPI-rank.\\ Warnings issued on other ranks are ignored.
===== Cheat Sheet =====
If you want to...
* print a **short warning** message, then you should use: CPWARN("your short message")
* print a **longer warning** message, then you should use: CALL cp_warn(__LOCATION__,"your lengthy message, "//&
"which can even span multiple lines")
* **stop** the program with a **short** error message, then you should use: CPABORT("your short message")
* **stop** the program with a **longer** error message, then you should use: CALL cp_abort(__LOCATION__,"your lengthy message, "//&
"which can even span multiple lines")
* have a **simple assertion** without a custom error message, then you should use: CPASSERT(your_logical_expression)
* have a **simple assertion** with a **short** error message, then you should use: IF(.NOT.your_logical_expression) CPABORT("your short message")
* have a **complex assertion** with a **short** error message, then you should use: IF(.NOT.your_super_complicated_logical_expression_that_takes_alot_of_space)&
CPABORT("your short message")
* have a **lengthy assertion** with a **longer** error message, then you should use: IF(.NOT.your_super_long_logical_expression_that_takes_alot_of_space)&
CALL cp_abort(__LOCATION__,"your lengthy message"//&
"which again can even span multiple lines")