]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Add doc.
authorRalf Hartmann <Ralf.Hartmann@dlr.de>
Tue, 20 Sep 2005 10:45:18 +0000 (10:45 +0000)
committerRalf Hartmann <Ralf.Hartmann@dlr.de>
Tue, 20 Sep 2005 10:45:18 +0000 (10:45 +0000)
git-svn-id: https://svn.dealii.org/trunk@11479 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/base/source/utilities.cc

index 182b4ee60b8299371bca74e07b85e82c781c9b1c..24477d14056d1000c90662840942409bcdd68ea6 100644 (file)
@@ -335,11 +335,44 @@ namespace Utilities
     }
     
 #ifdef DEAL_II_USE_PETSC
+                                // Unfortunately, we have to work
+                                // around an oddity in the way PETSc
+                                // and some gcc versions interact. If
+                                // we use PETSc's MPI dummy
+                                // implementation, it expands the
+                                // calls to the two MPI functions
+                                // basically as ``(n_jobs=1, 0)'',
+                                // i.e. it assigns the number one to
+                                // the variable holding the number of
+                                // jobs, and then uses the comma
+                                // operator to let the entire
+                                // expression have the value zero. The
+                                // latter is important, since
+                                // ``MPI_Comm_size'' returns an error
+                                // code that we may want to check (we
+                                // don't here, but one could in
+                                // principle), and the trick with the
+                                // comma operator makes sure that both
+                                // the number of jobs is correctly
+                                // assigned, and the return value is
+                                // zero. Unfortunately, if some recent
+                                // versions of gcc detect that the
+                                // comma expression just stands by
+                                // itself, i.e. the result is not
+                                // assigned to another variable, then
+                                // they warn ``right-hand operand of
+                                // comma has no effect''. This
+                                // unwanted side effect can be
+                                // suppressed by casting the result of
+                                // the entire expression to type
+                                // ``void'' -- not beautiful, but
+                                // helps calming down unwarranted
+                                // compiler warnings...
     unsigned int get_n_mpi_processes (
       const MPI_Comm &mpi_communicator)
     {
       int n_jobs=1;
-      MPI_Comm_size (mpi_communicator, &n_jobs);
+      (void) MPI_Comm_size (mpi_communicator, &n_jobs);
       
       return n_jobs;
     }
@@ -348,7 +381,7 @@ namespace Utilities
       const MPI_Comm &mpi_communicator)
     {
       int rank=0;
-      MPI_Comm_rank (mpi_communicator, &rank);
+      (void) MPI_Comm_rank (mpi_communicator, &rank);
       
       return rank;
     }

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.