]> https://gitweb.dealii.org/ - dealii.git/commitdiff
All get_mpi_communicator methods now return MPI_Comm by value 15086/head
authorStefano Zampini <stefano.zampini@gmail.com>
Wed, 12 Apr 2023 10:17:18 +0000 (13:17 +0300)
committerStefano Zampini <stefano.zampini@gmail.com>
Thu, 20 Apr 2023 16:22:02 +0000 (19:22 +0300)
33 files changed:
doc/news/changes/incompatibilities/20230412Zampini [new file with mode: 0644]
include/deal.II/base/communication_pattern_base.h
include/deal.II/base/mpi.h
include/deal.II/base/mpi_noncontiguous_partitioner.h
include/deal.II/base/partitioner.h
include/deal.II/lac/la_parallel_vector.h
include/deal.II/lac/petsc_block_sparse_matrix.h
include/deal.II/lac/petsc_block_vector.h
include/deal.II/lac/petsc_communication_pattern.h
include/deal.II/lac/petsc_matrix_base.h
include/deal.II/lac/petsc_precondition.h
include/deal.II/lac/petsc_vector_base.h
include/deal.II/lac/trilinos_block_sparse_matrix.h
include/deal.II/lac/trilinos_epetra_communication_pattern.h
include/deal.II/lac/trilinos_epetra_vector.h
include/deal.II/lac/trilinos_precondition.h
include/deal.II/lac/trilinos_sparse_matrix.h
include/deal.II/lac/trilinos_sparsity_pattern.h
include/deal.II/lac/trilinos_tpetra_communication_pattern.h
include/deal.II/lac/trilinos_tpetra_vector.h
include/deal.II/lac/trilinos_vector.h
include/deal.II/matrix_free/vector_data_exchange.h
include/deal.II/multigrid/multigrid.h
source/base/mpi_noncontiguous_partitioner.cc
source/lac/petsc_communication_pattern.cc
source/lac/petsc_parallel_block_sparse_matrix.cc
source/lac/petsc_precondition.cc
source/lac/trilinos_epetra_communication_pattern.cc
source/lac/trilinos_tpetra_communication_pattern.cc
source/matrix_free/vector_data_exchange.cc
tests/sundials/n_vector.cc
tests/sundials/n_vector.mpirun=1.with_trilinos=off.with_petsc=on.output [new file with mode: 0644]
tests/sundials/n_vector.mpirun=1.with_trilinos=on.with_petsc=off.output [new file with mode: 0644]

diff --git a/doc/news/changes/incompatibilities/20230412Zampini b/doc/news/changes/incompatibilities/20230412Zampini
new file mode 100644 (file)
index 0000000..be73f52
--- /dev/null
@@ -0,0 +1,4 @@
+Changed: The get_mpi_communicator() methods no longer return references to MPI_Comm.
+They all now return the MPI_Comm by value.
+<br>
+(Stefano Zampini, 2023/04/12)
index fb3c24c8f3ff8b33f43c09692936b6a808fd5cf6..e1f78666183435e9c1eee81b8d2d9be0bbf23c62 100644 (file)
@@ -91,9 +91,9 @@ namespace Utilities
              const MPI_Comm &communicator) = 0;
 
       /**
-       * Return a constant reference to the underlying MPI communicator.
+       * Return the underlying MPI communicator.
        */
-      virtual const MPI_Comm &
+      virtual MPI_Comm
       get_mpi_communicator() const = 0;
     };
 
index 17198a215dbf21ef55b76e9f38850cf29050a426..7582cf1f69e0cd318c43f803ef579769b3ce1253 100644 (file)
@@ -277,7 +277,7 @@ namespace Utilities
       /**
        * Access the stored communicator.
        */
-      const MPI_Comm &
+      MPI_Comm
       operator*() const
       {
         return comm;
index e0927bbf004e67ded9bf9edaa5ca5bebfc332bee..8b62a5f9b3484704065dfa794754fa61a842f0ac 100644 (file)
@@ -189,9 +189,9 @@ namespace Utilities
       memory_consumption();
 
       /**
-       * Return the underlying communicator.
+       * Return the underlying MPI communicator.
        */
-      const MPI_Comm &
+      MPI_Comm
       get_mpi_communicator() const override;
 
       void
index 479e29134c74c8396b037f5c0e13a8c4e2a421fd..e5bb2703e7fe23f8a50239c9c1fc8e66a01524c2 100644 (file)
@@ -474,9 +474,9 @@ namespace Utilities
       n_mpi_processes() const;
 
       /**
-       * Return the MPI communicator underlying the partitioner object.
+       * Return the underlying MPI communicator.
        */
-      virtual const MPI_Comm &
+      virtual MPI_Comm
       get_mpi_communicator() const override;
 
       /**
@@ -985,7 +985,7 @@ namespace Utilities
 
 
 
-    inline const MPI_Comm &
+    inline MPI_Comm
     Partitioner::get_mpi_communicator() const
     {
       return communicator;
index afd9a24bcdf34fffad98cd3376670bcfc3f7c5d2..da5f4ef398c4599bb55f31f36452abc7d5ad47e4 100644 (file)
@@ -1158,10 +1158,9 @@ namespace LinearAlgebra
       /** @{ */
 
       /**
-       * Return a reference to the MPI communicator object in use with this
-       * vector.
+       * Return the underlying MPI communicator.
        */
-      const MPI_Comm &
+      MPI_Comm
       get_mpi_communicator() const;
 
       /**
@@ -1722,7 +1721,7 @@ namespace LinearAlgebra
 
 
     template <typename Number, typename MemorySpace>
-    inline const MPI_Comm &
+    inline MPI_Comm
     Vector<Number, MemorySpace>::get_mpi_communicator() const
     {
       return partitioner->get_mpi_communicator();
index 7b9a67ff9506016e14a4268dd5be6c4dba26b88e..c78b412fb165c457e8331caadfe441b2b6021fd5 100644 (file)
@@ -284,10 +284,9 @@ namespace PETScWrappers
       n_nonzero_elements() const;
 
       /**
-       * Return a reference to the MPI communicator object in use with this
-       * matrix.
+       * Return the underlying MPI communicator.
        */
-      const MPI_Comm &
+      MPI_Comm
       get_mpi_communicator() const;
 
       /**
index ed85850912df0749a73e150fb35553d79c36af14..3935a0f2c7efb7e13f39091eb7e5f20e85acac10 100644 (file)
@@ -265,10 +265,9 @@ namespace PETScWrappers
       has_ghost_elements() const;
 
       /**
-       * Return a reference to the MPI communicator object in use with this
-       * vector.
+       * Return the underlying MPI communicator.
        */
-      const MPI_Comm &
+      MPI_Comm
       get_mpi_communicator() const;
 
       /**
@@ -516,15 +515,10 @@ namespace PETScWrappers
 
 
 
-    inline const MPI_Comm &
+    inline MPI_Comm
     BlockVector::get_mpi_communicator() const
     {
-      static MPI_Comm comm = PETSC_COMM_SELF;
-      MPI_Comm        pcomm =
-        PetscObjectComm(reinterpret_cast<PetscObject>(petsc_nest_vector));
-      if (pcomm != MPI_COMM_NULL)
-        comm = pcomm;
-      return comm;
+      return PetscObjectComm(reinterpret_cast<PetscObject>(petsc_nest_vector));
     }
 
     inline bool
index eabadfb448c47111da5168753fbd91275000edf6..be5eab800df53779a29a7791103ddca1470be367 100644 (file)
@@ -171,7 +171,7 @@ namespace PETScWrappers
     /**
      * Return the underlying MPI communicator.
      */
-    const MPI_Comm &
+    MPI_Comm
     get_mpi_communicator() const override;
 
     /**
@@ -354,7 +354,7 @@ namespace PETScWrappers
     /**
      * Return the underlying MPI communicator.
      */
-    const MPI_Comm &
+    MPI_Comm
     get_mpi_communicator() const override;
 
   protected:
index 148cc48944b80740747b46cb615ef6a7e77e9a62..ba025c4d6cfdae0e4da32ab88c803f927cf9c591 100644 (file)
@@ -697,10 +697,9 @@ namespace PETScWrappers
     local_domain() const;
 
     /**
-     * Return a reference to the MPI communicator object in use with this
-     * matrix.
+     * Return the underlying MPI communicator.
      */
-    const MPI_Comm &
+    MPI_Comm
     get_mpi_communicator() const;
 
     /**
@@ -1665,14 +1664,10 @@ namespace PETScWrappers
     prepare_action(VectorOperation::insert);
   }
 
-  inline const MPI_Comm &
+  inline MPI_Comm
   MatrixBase::get_mpi_communicator() const
   {
-    static MPI_Comm comm = PETSC_COMM_SELF;
-    MPI_Comm pcomm = PetscObjectComm(reinterpret_cast<PetscObject>(matrix));
-    if (pcomm != MPI_COMM_NULL)
-      comm = pcomm;
-    return comm;
+    return PetscObjectComm(reinterpret_cast<PetscObject>(matrix));
   }
 
 #  endif // DOXYGEN
index c0b2f6189ecbf70d8dbe8a7b91b8b9d50c7f9156..a6b590b9714b801027c4e2a4d0c03a0ee77efa57 100644 (file)
@@ -109,9 +109,9 @@ namespace PETScWrappers
     get_pc() const;
 
     /**
-     * Return the MPI communicator object used by this preconditioner.
+     * Return the underlying MPI communicator.
      */
-    const MPI_Comm &
+    MPI_Comm
     get_mpi_communicator() const;
 
   protected:
index a5ccbd0d46acfee2079c7c13947ff81afe0a5ab3..61e24a45cb810b020c082d041677c211ccc73224 100644 (file)
@@ -803,10 +803,9 @@ namespace PETScWrappers
     memory_consumption() const;
 
     /**
-     * Return a reference to the MPI communicator object in use with this
-     * object.
+     * Return the underlying MPI communicator.
      */
-    const MPI_Comm &
+    MPI_Comm
     get_mpi_communicator() const;
 
   protected:
@@ -1178,14 +1177,10 @@ namespace PETScWrappers
     return operator()(index);
   }
 
-  inline const MPI_Comm &
+  inline MPI_Comm
   VectorBase::get_mpi_communicator() const
   {
-    static MPI_Comm comm = PETSC_COMM_SELF;
-    MPI_Comm pcomm = PetscObjectComm(reinterpret_cast<PetscObject>(vector));
-    if (pcomm != MPI_COMM_NULL)
-      comm = pcomm;
-    return comm;
+    return PetscObjectComm(reinterpret_cast<PetscObject>(vector));
   }
 
   inline void
index 8bb38cbb9b1b8710758fbcdd2c04d70b6a5e66f9..26dc8eb32e9ce91010bf000c70bfec7e3305d217 100644 (file)
@@ -223,7 +223,7 @@ namespace TrilinosWrappers
     n_nonzero_elements() const;
 
     /**
-     * Return the MPI communicator object in use with this matrix.
+     * Return the underlying MPI communicator.
      */
     MPI_Comm
     get_mpi_communicator() const;
index 2168c0af61989d8b7637b32bb254f97f37bc36f1..b6e8a470687e709cee060e12cfc47e2866ca1de3 100644 (file)
@@ -63,7 +63,7 @@ namespace LinearAlgebra
       /**
        * Return the underlying MPI communicator.
        */
-      virtual const MPI_Comm &
+      virtual MPI_Comm
       get_mpi_communicator() const override;
 
       /**
index 10abb5ce7bb715e4812f765e2a7ae77e59506635..8be058b6a63f4e817d451857dad4d2f90d01abb3 100644 (file)
@@ -291,7 +291,7 @@ namespace LinearAlgebra
       locally_owned_size() const;
 
       /**
-       * Return the MPI communicator object in use with this object.
+       * Return the underlying MPI communicator.
        */
       MPI_Comm
       get_mpi_communicator() const;
index d1f6a213a13a2b22d7da2da949fa282c2e41b0d5..95a8654a2fcde2f82f82d662341b96d32cf71f40 100644 (file)
@@ -114,7 +114,7 @@ namespace TrilinosWrappers
     clear();
 
     /**
-     * Return the MPI communicator object in use with this matrix.
+     * Return the underlying MPI communicator.
      */
     MPI_Comm
     get_mpi_communicator() const;
index daab898a2f59263cf43dfd59611e4693a5ceeea9..b28d0b9d259a7bfba1d61dea2747e697eb76627a 100644 (file)
@@ -973,7 +973,7 @@ namespace TrilinosWrappers
     memory_consumption() const;
 
     /**
-     * Return the MPI communicator object in use with this matrix.
+     * Return the underlying MPI communicator.
      */
     MPI_Comm
     get_mpi_communicator() const;
index 0f918eea89b898e7d1ee18f03bd420ee5ebf6741..86af2993498108c001b3fe17976dfd4c75601ec9 100644 (file)
@@ -812,10 +812,11 @@ namespace TrilinosWrappers
     range_partitioner() const;
 
     /**
-     * Return the MPI communicator object in use with this matrix.
+     * Return the underlying MPI communicator.
      */
     MPI_Comm
     get_mpi_communicator() const;
+
     /** @} */
 
     /**
index 927c9353704608e7248df09f05278504ded0c485..8dd027b754939bb2e397c46cbb519c36d2aaf5bd 100644 (file)
@@ -62,7 +62,7 @@ namespace LinearAlgebra
       /**
        * Return the underlying MPI communicator.
        */
-      virtual const MPI_Comm &
+      virtual MPI_Comm
       get_mpi_communicator() const override;
 
       /**
index 3a53c80694967c3611836b20bcb0e5342b49712b..bb2094485d762a0c9fc2d947e9110c03a906aa03 100644 (file)
@@ -347,7 +347,7 @@ namespace LinearAlgebra
       locally_owned_size() const;
 
       /**
-       * Return the MPI communicator object in use with this object.
+       * Return the underlying MPI communicator.
        */
       MPI_Comm
       get_mpi_communicator() const;
index 0a88440e156d3f596c2da7e97ebb6e071ce1dc6c..45a8f37448e7134c7e065bbcc82276b977d9e78d 100644 (file)
@@ -1265,10 +1265,9 @@ namespace TrilinosWrappers
       memory_consumption() const;
 
       /**
-       * Return a reference to the MPI communicator object in use with this
-       * object.
+       * Return the underlying MPI communicator.
        */
-      const MPI_Comm &
+      MPI_Comm
       get_mpi_communicator() const;
       /** @} */
 
@@ -2175,18 +2174,16 @@ namespace TrilinosWrappers
 
 
 
-    inline const MPI_Comm &
+    inline MPI_Comm
     Vector::get_mpi_communicator() const
     {
-      static MPI_Comm comm;
-
       const Epetra_MpiComm *mpi_comm =
         dynamic_cast<const Epetra_MpiComm *>(&vector->Map().Comm());
-      comm = mpi_comm->Comm();
-
-      return comm;
+      return mpi_comm->Comm();
     }
 
+
+
     template <typename number>
     Vector::Vector(const IndexSet &              parallel_partitioner,
                    const dealii::Vector<number> &v,
index e3f285edb777a83ee9824f551b953d30939023a4..9c2f9cc0409e2b4aad3e770271b1ce2ff6319b70 100644 (file)
@@ -281,7 +281,7 @@ namespace internal
         virtual types::global_dof_index
         size() const override;
 
-        const MPI_Comm &
+        MPI_Comm
         get_sm_mpi_communicator() const;
 
         void
index ed844ba369020c1356b8a89c54a4ad834c263e3b..d704bc048bef4636a40d74564d1f45e2c3edecbb 100644 (file)
@@ -578,7 +578,7 @@ public:
   locally_owned_domain_indices(const unsigned int block = 0) const;
 
   /**
-   * Return the MPI communicator object in use with this preconditioner.
+   * Return the underlying MPI communicator.
    */
   MPI_Comm
   get_mpi_communicator() const;
index ac842e2ff110ca9553df60997eedb1e0fa6778f8..99204825378bd32e54ba84901484afc8406b6b97 100644 (file)
@@ -80,7 +80,7 @@ namespace Utilities
 
 
 
-    const MPI_Comm &
+    MPI_Comm
     NoncontiguousPartitioner::get_mpi_communicator() const
     {
       return communicator;
index f89f9a93c35a64361a1e60e47a8f3a382b2e27fc..884019eefa8fd23b5fcf227ec4f98a902dceb2b4 100644 (file)
@@ -249,11 +249,10 @@ namespace PETScWrappers
     AssertPETSc(PetscSFDestroy(&sf));
   }
 
-  const MPI_Comm &
+  MPI_Comm
   CommunicationPattern::get_mpi_communicator() const
   {
-    static MPI_Comm comm = PetscObjectComm(reinterpret_cast<PetscObject>(sf));
-    return comm;
+    return PetscObjectComm(reinterpret_cast<PetscObject>(sf));
   }
 
   template <typename Number>
@@ -392,7 +391,7 @@ namespace PETScWrappers
     n_ghost_indices_larger = larger_ghost_indices.n_elements();
   }
 
-  const MPI_Comm &
+  MPI_Comm
   Partitioner::get_mpi_communicator() const
   {
     return ghost.get_mpi_communicator();
index fdaa00f15f398c0e80a6c081dbd8d2e0a3750882..b643610107d8ab103e9254c6a4cf9917dac72a52 100644 (file)
@@ -280,15 +280,10 @@ namespace PETScWrappers
 
 
 
-    const MPI_Comm &
+    MPI_Comm
     BlockSparseMatrix::get_mpi_communicator() const
     {
-      static MPI_Comm comm = PETSC_COMM_SELF;
-      MPI_Comm        pcomm =
-        PetscObjectComm(reinterpret_cast<PetscObject>(petsc_nest_matrix));
-      if (pcomm != MPI_COMM_NULL)
-        comm = pcomm;
-      return comm;
+      return PetscObjectComm(reinterpret_cast<PetscObject>(petsc_nest_matrix));
     }
 
     BlockSparseMatrix::operator const Mat &() const
index 1a7701a7e54c2615aba51491af0d605034c002d4..55ba96edd2bd842dd8485e016d804d1519458c7b 100644 (file)
@@ -90,14 +90,10 @@ namespace PETScWrappers
     AssertThrow(ierr == 0, ExcPETScError(ierr));
   }
 
-  const MPI_Comm &
+  MPI_Comm
   PreconditionBase::get_mpi_communicator() const
   {
-    static MPI_Comm comm  = PETSC_COMM_SELF;
-    MPI_Comm        pcomm = PetscObjectComm(reinterpret_cast<PetscObject>(pc));
-    if (pcomm != MPI_COMM_NULL)
-      comm = pcomm;
-    return comm;
+    return PetscObjectComm(reinterpret_cast<PetscObject>(pc));
   }
 
   void
index 3761e27d62ea9729a9976bfc9e2ce939083f3a4f..a5d010bb11e08e8fdde03df531a7f507831aaa06 100644 (file)
@@ -65,7 +65,7 @@ namespace LinearAlgebra
 
 
 
-    const MPI_Comm &
+    MPI_Comm
     CommunicationPattern::get_mpi_communicator() const
     {
       return *comm;
index 795ce6818527a83c57ff59734c79894055ad2830..303ab9352165ec53da21507b40a7ec0390b966c3 100644 (file)
@@ -71,7 +71,7 @@ namespace LinearAlgebra
 
 
 
-    const MPI_Comm &
+    MPI_Comm
     CommunicationPattern::get_mpi_communicator() const
     {
       return *comm;
index 6b6e146004c9d403e4f7d74de2557729875a7d95..4484dff5b34438aa52b02c53453a44394c2e0a6f 100644 (file)
@@ -1368,7 +1368,7 @@ namespace internal
 
 
 
-      const MPI_Comm &
+      MPI_Comm
       Full::get_sm_mpi_communicator() const
       {
         return this->comm_sm;
index 4cb04da272c11e684654f2c012655558438bc26a..03ef90223ed233bb2a49b8d74837d0242a506d80 100644 (file)
@@ -130,7 +130,7 @@ namespace
     return vector;
   }
 
-
+#ifdef DEAL_II_WITH_TRILINOS
   template <>
   TrilinosWrappers::MPI::Vector
   create_test_vector(const double value)
@@ -156,7 +156,9 @@ namespace
     vector = value;
     return vector;
   }
+#endif
 
+#ifdef DEAL_II_WITH_PETSC
   template <>
   PETScWrappers::MPI::Vector
   create_test_vector(const double value)
@@ -182,6 +184,7 @@ namespace
     vector = value;
     return vector;
   }
+#endif
 
   template <typename VectorType>
   bool
@@ -1008,18 +1011,21 @@ main(int argc, char **argv)
     "LinearAlgebra::distributed::Vector<double>");
   run_all_tests<LinearAlgebra::distributed::BlockVector<double>>(
     "LinearAlgebra::distributed::BlockVector<double>");
+#ifdef DEAL_II_WITH_TRILINOS
   run_all_tests<TrilinosWrappers::MPI::Vector>("TrilinosWrappers::MPI::Vector");
   run_all_tests<TrilinosWrappers::MPI::BlockVector>(
     "TrilinosWrappers::MPI::BlockVector");
+#endif
+#ifdef DEAL_II_WITH_PETSC
   run_all_tests<PETScWrappers::MPI::Vector>("PETScWrappers::MPI::Vector");
   run_all_tests<PETScWrappers::MPI::BlockVector>(
     "PETScWrappers::MPI::BlockVector");
-
   // although the memory would be cleared in ~MPI_InitFinalize it needs to be
   // done manually to satisfy the PETSc memory check inside ~MPILogInitAll,
   // which is invoked first
   GrowingVectorMemory<PETScWrappers::MPI::Vector>::release_unused_memory();
   GrowingVectorMemory<PETScWrappers::MPI::BlockVector>::release_unused_memory();
+#endif
 
 #if DEAL_II_SUNDIALS_VERSION_GTE(6, 0, 0)
   SUNContext_Free(&global_nvector_context);
diff --git a/tests/sundials/n_vector.mpirun=1.with_trilinos=off.with_petsc=on.output b/tests/sundials/n_vector.mpirun=1.with_trilinos=off.with_petsc=on.output
new file mode 100644 (file)
index 0000000..0a1ccae
--- /dev/null
@@ -0,0 +1,133 @@
+
+DEAL:0:Vector<double>::test_nvector_view_unwrap OK
+DEAL:0:Vector<double>::test_get_vector_id OK
+DEAL:0:Vector<double>::test_clone OK
+DEAL:0:Vector<double>::test_destroy OK
+DEAL:0:Vector<double>::test_get_communicator OK
+DEAL:0:Vector<double>::test_length OK
+DEAL:0:Vector<double>::test_linear_sum OK
+DEAL:0:Vector<double>::test_dot_product OK
+DEAL:0:Vector<double>::test_set_constant OK
+DEAL:0:Vector<double>::test_add_constant OK
+DEAL:0:Vector<double>::test_elementwise_product OK
+DEAL:0:Vector<double>::test_elementwise_div OK
+DEAL:0:Vector<double>::test_elementwise_inv OK
+DEAL:0:Vector<double>::test_elementwise_abs OK
+DEAL:0:Vector<double>::test_weighted_rms_norm OK
+DEAL:0:Vector<double>::test_weighted_rms_norm_mask 1 OK
+DEAL:0:Vector<double>::test_weighted_rms_norm_mask 0 OK
+DEAL:0:Vector<double>::test_weighted_l2_norm OK
+DEAL:0:Vector<double>::test_max_norm OK
+DEAL:0:Vector<double>::test_l1_norm OK
+DEAL:0:Vector<double>::test_min_element OK
+DEAL:0:Vector<double>::test_scale OK
+DEAL:0:BlockVector<double>::test_nvector_view_unwrap OK
+DEAL:0:BlockVector<double>::test_get_vector_id OK
+DEAL:0:BlockVector<double>::test_clone OK
+DEAL:0:BlockVector<double>::test_destroy OK
+DEAL:0:BlockVector<double>::test_get_communicator OK
+DEAL:0:BlockVector<double>::test_length OK
+DEAL:0:BlockVector<double>::test_linear_sum OK
+DEAL:0:BlockVector<double>::test_dot_product OK
+DEAL:0:BlockVector<double>::test_set_constant OK
+DEAL:0:BlockVector<double>::test_add_constant OK
+DEAL:0:BlockVector<double>::test_elementwise_product OK
+DEAL:0:BlockVector<double>::test_elementwise_div OK
+DEAL:0:BlockVector<double>::test_elementwise_inv OK
+DEAL:0:BlockVector<double>::test_elementwise_abs OK
+DEAL:0:BlockVector<double>::test_weighted_rms_norm OK
+DEAL:0:BlockVector<double>::test_weighted_rms_norm_mask 1 OK
+DEAL:0:BlockVector<double>::test_weighted_rms_norm_mask 0 OK
+DEAL:0:BlockVector<double>::test_weighted_l2_norm OK
+DEAL:0:BlockVector<double>::test_max_norm OK
+DEAL:0:BlockVector<double>::test_l1_norm OK
+DEAL:0:BlockVector<double>::test_min_element OK
+DEAL:0:BlockVector<double>::test_scale OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_nvector_view_unwrap OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_get_vector_id OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_clone OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_destroy OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_get_communicator OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_length OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_linear_sum OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_dot_product OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_set_constant OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_add_constant OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_elementwise_product OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_elementwise_div OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_elementwise_inv OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_elementwise_abs OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_weighted_rms_norm OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_weighted_rms_norm_mask 1 OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_weighted_rms_norm_mask 0 OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_weighted_l2_norm OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_max_norm OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_l1_norm OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_min_element OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_scale OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_nvector_view_unwrap OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_get_vector_id OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_clone OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_destroy OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_get_communicator OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_length OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_linear_sum OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_dot_product OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_set_constant OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_add_constant OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_elementwise_product OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_elementwise_div OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_elementwise_inv OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_elementwise_abs OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_weighted_rms_norm OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_weighted_rms_norm_mask 1 OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_weighted_rms_norm_mask 0 OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_weighted_l2_norm OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_max_norm OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_l1_norm OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_min_element OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_scale OK
+DEAL:0:PETScWrappers::MPI::Vector::test_nvector_view_unwrap OK
+DEAL:0:PETScWrappers::MPI::Vector::test_get_vector_id OK
+DEAL:0:PETScWrappers::MPI::Vector::test_clone OK
+DEAL:0:PETScWrappers::MPI::Vector::test_destroy OK
+DEAL:0:PETScWrappers::MPI::Vector::test_get_communicator OK
+DEAL:0:PETScWrappers::MPI::Vector::test_length OK
+DEAL:0:PETScWrappers::MPI::Vector::test_linear_sum OK
+DEAL:0:PETScWrappers::MPI::Vector::test_dot_product OK
+DEAL:0:PETScWrappers::MPI::Vector::test_set_constant OK
+DEAL:0:PETScWrappers::MPI::Vector::test_add_constant OK
+DEAL:0:PETScWrappers::MPI::Vector::test_elementwise_product OK
+DEAL:0:PETScWrappers::MPI::Vector::test_elementwise_div OK
+DEAL:0:PETScWrappers::MPI::Vector::test_elementwise_inv OK
+DEAL:0:PETScWrappers::MPI::Vector::test_elementwise_abs OK
+DEAL:0:PETScWrappers::MPI::Vector::test_weighted_rms_norm OK
+DEAL:0:PETScWrappers::MPI::Vector::test_weighted_rms_norm_mask 1 OK
+DEAL:0:PETScWrappers::MPI::Vector::test_weighted_rms_norm_mask 0 OK
+DEAL:0:PETScWrappers::MPI::Vector::test_weighted_l2_norm OK
+DEAL:0:PETScWrappers::MPI::Vector::test_max_norm OK
+DEAL:0:PETScWrappers::MPI::Vector::test_l1_norm OK
+DEAL:0:PETScWrappers::MPI::Vector::test_min_element OK
+DEAL:0:PETScWrappers::MPI::Vector::test_scale OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_nvector_view_unwrap OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_get_vector_id OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_clone OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_destroy OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_get_communicator OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_length OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_linear_sum OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_dot_product OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_set_constant OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_add_constant OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_elementwise_product OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_elementwise_div OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_elementwise_inv OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_elementwise_abs OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_weighted_rms_norm OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_weighted_rms_norm_mask 1 OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_weighted_rms_norm_mask 0 OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_weighted_l2_norm OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_max_norm OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_l1_norm OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_min_element OK
+DEAL:0:PETScWrappers::MPI::BlockVector::test_scale OK
diff --git a/tests/sundials/n_vector.mpirun=1.with_trilinos=on.with_petsc=off.output b/tests/sundials/n_vector.mpirun=1.with_trilinos=on.with_petsc=off.output
new file mode 100644 (file)
index 0000000..0f19007
--- /dev/null
@@ -0,0 +1,133 @@
+
+DEAL:0:Vector<double>::test_nvector_view_unwrap OK
+DEAL:0:Vector<double>::test_get_vector_id OK
+DEAL:0:Vector<double>::test_clone OK
+DEAL:0:Vector<double>::test_destroy OK
+DEAL:0:Vector<double>::test_get_communicator OK
+DEAL:0:Vector<double>::test_length OK
+DEAL:0:Vector<double>::test_linear_sum OK
+DEAL:0:Vector<double>::test_dot_product OK
+DEAL:0:Vector<double>::test_set_constant OK
+DEAL:0:Vector<double>::test_add_constant OK
+DEAL:0:Vector<double>::test_elementwise_product OK
+DEAL:0:Vector<double>::test_elementwise_div OK
+DEAL:0:Vector<double>::test_elementwise_inv OK
+DEAL:0:Vector<double>::test_elementwise_abs OK
+DEAL:0:Vector<double>::test_weighted_rms_norm OK
+DEAL:0:Vector<double>::test_weighted_rms_norm_mask 1 OK
+DEAL:0:Vector<double>::test_weighted_rms_norm_mask 0 OK
+DEAL:0:Vector<double>::test_weighted_l2_norm OK
+DEAL:0:Vector<double>::test_max_norm OK
+DEAL:0:Vector<double>::test_l1_norm OK
+DEAL:0:Vector<double>::test_min_element OK
+DEAL:0:Vector<double>::test_scale OK
+DEAL:0:BlockVector<double>::test_nvector_view_unwrap OK
+DEAL:0:BlockVector<double>::test_get_vector_id OK
+DEAL:0:BlockVector<double>::test_clone OK
+DEAL:0:BlockVector<double>::test_destroy OK
+DEAL:0:BlockVector<double>::test_get_communicator OK
+DEAL:0:BlockVector<double>::test_length OK
+DEAL:0:BlockVector<double>::test_linear_sum OK
+DEAL:0:BlockVector<double>::test_dot_product OK
+DEAL:0:BlockVector<double>::test_set_constant OK
+DEAL:0:BlockVector<double>::test_add_constant OK
+DEAL:0:BlockVector<double>::test_elementwise_product OK
+DEAL:0:BlockVector<double>::test_elementwise_div OK
+DEAL:0:BlockVector<double>::test_elementwise_inv OK
+DEAL:0:BlockVector<double>::test_elementwise_abs OK
+DEAL:0:BlockVector<double>::test_weighted_rms_norm OK
+DEAL:0:BlockVector<double>::test_weighted_rms_norm_mask 1 OK
+DEAL:0:BlockVector<double>::test_weighted_rms_norm_mask 0 OK
+DEAL:0:BlockVector<double>::test_weighted_l2_norm OK
+DEAL:0:BlockVector<double>::test_max_norm OK
+DEAL:0:BlockVector<double>::test_l1_norm OK
+DEAL:0:BlockVector<double>::test_min_element OK
+DEAL:0:BlockVector<double>::test_scale OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_nvector_view_unwrap OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_get_vector_id OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_clone OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_destroy OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_get_communicator OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_length OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_linear_sum OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_dot_product OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_set_constant OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_add_constant OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_elementwise_product OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_elementwise_div OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_elementwise_inv OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_elementwise_abs OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_weighted_rms_norm OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_weighted_rms_norm_mask 1 OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_weighted_rms_norm_mask 0 OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_weighted_l2_norm OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_max_norm OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_l1_norm OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_min_element OK
+DEAL:0:LinearAlgebra::distributed::Vector<double>::test_scale OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_nvector_view_unwrap OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_get_vector_id OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_clone OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_destroy OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_get_communicator OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_length OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_linear_sum OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_dot_product OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_set_constant OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_add_constant OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_elementwise_product OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_elementwise_div OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_elementwise_inv OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_elementwise_abs OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_weighted_rms_norm OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_weighted_rms_norm_mask 1 OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_weighted_rms_norm_mask 0 OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_weighted_l2_norm OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_max_norm OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_l1_norm OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_min_element OK
+DEAL:0:LinearAlgebra::distributed::BlockVector<double>::test_scale OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_nvector_view_unwrap OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_get_vector_id OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_clone OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_destroy OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_get_communicator OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_length OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_linear_sum OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_dot_product OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_set_constant OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_add_constant OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_elementwise_product OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_elementwise_div OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_elementwise_inv OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_elementwise_abs OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_weighted_rms_norm OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_weighted_rms_norm_mask 1 OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_weighted_rms_norm_mask 0 OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_weighted_l2_norm OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_max_norm OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_l1_norm OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_min_element OK
+DEAL:0:TrilinosWrappers::MPI::Vector::test_scale OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_nvector_view_unwrap OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_get_vector_id OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_clone OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_destroy OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_get_communicator OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_length OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_linear_sum OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_dot_product OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_set_constant OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_add_constant OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_elementwise_product OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_elementwise_div OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_elementwise_inv OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_elementwise_abs OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_weighted_rms_norm OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_weighted_rms_norm_mask 1 OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_weighted_rms_norm_mask 0 OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_weighted_l2_norm OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_max_norm OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_l1_norm OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_min_element OK
+DEAL:0:TrilinosWrappers::MPI::BlockVector::test_scale OK

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.