From: Wolfgang Bangerth Date: Wed, 2 Nov 2022 23:11:34 +0000 (-0600) Subject: Add to the documentation of the ConsensusAlgorithms functions. X-Git-Tag: v9.5.0-rc1~876^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F14388%2Fhead;p=dealii.git Add to the documentation of the ConsensusAlgorithms functions. --- diff --git a/include/deal.II/base/mpi_consensus_algorithms.h b/include/deal.II/base/mpi_consensus_algorithms.h index 88cedfae5c..8d28cb893f 100644 --- a/include/deal.II/base/mpi_consensus_algorithms.h +++ b/include/deal.II/base/mpi_consensus_algorithms.h @@ -526,6 +526,17 @@ namespace Utilities * * @tparam RequestType The type of the object to be sent. * @tparam AnswerType The type of the object to be received. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()`, + * `answer_request()`, and `process_answer()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector @@ -562,6 +573,17 @@ namespace Utilities * is to be performed. * * @tparam RequestType The type of the object to be sent. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()` and + * `process_request()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector @@ -760,6 +782,17 @@ namespace Utilities * * @tparam RequestType The type of the object to be sent. * @tparam AnswerType The type of the object to be received. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()`, + * `answer_request()`, and `process_answer()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector @@ -796,6 +829,17 @@ namespace Utilities * is to be performed. * * @tparam RequestType The type of the object to be sent. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()` and + * `process_request()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector @@ -1029,6 +1073,17 @@ namespace Utilities * * @tparam RequestType The type of the object to be sent. * @tparam AnswerType The type of the object to be received. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()`, + * `answer_request()`, and `process_answer()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector @@ -1066,6 +1121,17 @@ namespace Utilities * is to be performed. * * @tparam RequestType The type of the object to be sent. + * + * @note Nothing good will generally happen if any of the function + * objects passed as arguments throws an exception when called. + * This is because when that happens, one MPI process will stop + * participating in MPI communications, deadlocking the other + * processes. As a consequence, the `create_request()` + * and `process_request()` functions should + * not throw any exceptions; if they encounter error + * conditions, they should instead call `MPI_Abort()` or use + * another way to reliably print an error message and then + * bring the MPI universe down. */ template std::vector