]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Avoid deprecated features in PETSc tests.
authorDavid Wells <drwells@email.unc.edu>
Sat, 22 May 2021 19:36:45 +0000 (15:36 -0400)
committerDavid Wells <drwells@email.unc.edu>
Sat, 22 May 2021 19:36:56 +0000 (15:36 -0400)
tests/petsc/64.cc
tests/petsc/slowness_03.cc
tests/petsc/slowness_04.cc
tests/petsc/sparse_matrix_01.cc

index 9cf1a0db5c8bbbcbf318e7fb8cbe9df49d54fe31..27ee8f4cacac763f6ceb25cf65e91bb577d69a0e 100644 (file)
@@ -28,6 +28,8 @@
 
 #include "../tests.h"
 
+#include "../testmatrix.h"
+
 
 template <typename MatrixType>
 void
@@ -53,7 +55,8 @@ main(int argc, char **argv)
     {
       Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv, 1);
       {
-        const unsigned int n_dofs = 420;
+        const unsigned int N      = 20;
+        const unsigned int n_dofs = N * N;
         // check
         // PETScWrappers::SparseMatrix
         PETScWrappers::SparseMatrix v1(n_dofs, n_dofs, 5);
@@ -67,8 +70,18 @@ main(int argc, char **argv)
         const unsigned int n_mpi_processes = static_cast<unsigned int>(n_jobs);
         Assert(n_dofs % n_mpi_processes == 0, ExcInternalError());
         const unsigned int n_local_dofs = n_dofs / n_mpi_processes;
-        PETScWrappers::MPI::SparseMatrix v2(
-          mpi_communicator, n_dofs, n_dofs, n_local_dofs, n_local_dofs, 5);
+        PETScWrappers::MPI::SparseMatrix v2;
+        {
+          FDMatrix               fd_matrix(N, N);
+          DynamicSparsityPattern dsp(n_dofs, n_dofs);
+          fd_matrix.five_point_structure(dsp);
+          dsp.add(0, 0); // be sure that we have this one
+          SparsityPattern sparsity_pattern;
+          sparsity_pattern.copy_from(dsp);
+          IndexSet all_dofs(n_dofs);
+          all_dofs.add_range(0, n_dofs);
+          v2.reinit(all_dofs, all_dofs, sparsity_pattern, PETSC_COMM_WORLD);
+        }
         test(v2);
       }
     }
index b44aa82ea00500b735eff7e072684e237a745ba6..1b079257ff9973cd31090a12af05b88c2745c77b 100644 (file)
 //
 // the tests build the 5-point stencil matrix for a uniform grid of size N*N
 
+#include <deal.II/lac/dynamic_sparsity_pattern.h>
 #include <deal.II/lac/petsc_sparse_matrix.h>
 #include <deal.II/lac/petsc_vector.h>
 #include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/sparsity_pattern.h>
 
 #include <iostream>
 
 void
 test()
 {
-  const unsigned int N = 200;
+  const unsigned int N      = 200;
+  const unsigned int n_dofs = N * N;
 
-  // build the sparse matrix
-  PETScWrappers::MPI::SparseMatrix matrix(
-    PETSC_COMM_WORLD, N * N, N * N, N * N, N * N, 5);
+  DynamicSparsityPattern dsp(n_dofs, n_dofs);
+  // An older version of this test relied on PETSc doing dynamic allocation, but
+  // we require sparsity patterns in constructors now so we need the sparsity
+  // pattern ahead of time - hence this is done twice
+  for (unsigned int i = 0; i < N; i++)
+    for (unsigned int j = 0; j < N; j++)
+      {
+        const unsigned int global = i * N + j;
+        dsp.add(global, global);
+        if (j > 0)
+          {
+            dsp.add(global - 1, global);
+            dsp.add(global, global - 1);
+          }
+        if (j < N - 1)
+          {
+            dsp.add(global + 1, global);
+            dsp.add(global, global + 1);
+          }
+        if (i > 0)
+          {
+            dsp.add(global - N, global);
+            dsp.add(global, global - N);
+          }
+        if (i < N - 1)
+          {
+            dsp.add(global + N, global);
+            dsp.add(global, global + N);
+          }
+      }
+
+  SparsityPattern sparsity_pattern;
+  sparsity_pattern.copy_from(dsp);
+  IndexSet all_dofs(n_dofs);
+  all_dofs.add_range(0, n_dofs);
+
+  PETScWrappers::MPI::SparseMatrix matrix;
+  matrix.reinit(all_dofs, all_dofs, sparsity_pattern, PETSC_COMM_WORLD);
   for (unsigned int i = 0; i < N; i++)
     for (unsigned int j = 0; j < N; j++)
       {
index 51d212f006eb0186ac8f8ff2d1d62bef64eb15ee..221b9c3c2e1d601b37c063b0ec83cd79bdde6f03 100644 (file)
 // matrix in a consecutive fashion, but rather according to the order of
 // degrees of freedom in the sequence of cells that we traverse
 
+#include <deal.II/lac/dynamic_sparsity_pattern.h>
 #include <deal.II/lac/petsc_sparse_matrix.h>
 #include <deal.II/lac/petsc_vector.h>
 #include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/sparsity_pattern.h>
 
 #include <iostream>
 
 void
 test()
 {
-  const unsigned int N = 200;
+  const unsigned int N      = 200;
+  const unsigned int n_dofs = N * N;
+
+  DynamicSparsityPattern dsp(n_dofs, n_dofs);
+  // An older version of this test relied on PETSc doing dynamic allocation, but
+  // we require sparsity patterns in constructors now so we need the sparsity
+  // pattern ahead of time - hence this is done twice
+  for (unsigned int i = 0; i < N; i++)
+    for (unsigned int j = 0; j < N; j++)
+      {
+        const unsigned int global = i * N + j;
+        dsp.add(global, global);
+        if (j > 0)
+          {
+            dsp.add(global - 1, global);
+            dsp.add(global, global - 1);
+          }
+        if (j < N - 1)
+          {
+            dsp.add(global + 1, global);
+            dsp.add(global, global + 1);
+          }
+        if (i > 0)
+          {
+            dsp.add(global - N, global);
+            dsp.add(global, global - N);
+          }
+        if (i < N - 1)
+          {
+            dsp.add(global + N, global);
+            dsp.add(global, global + N);
+          }
+      }
+
+  SparsityPattern sparsity_pattern;
+  sparsity_pattern.copy_from(dsp);
+  IndexSet all_dofs(n_dofs);
+  all_dofs.add_range(0, n_dofs);
+
+  PETScWrappers::MPI::SparseMatrix matrix;
+  matrix.reinit(all_dofs, all_dofs, sparsity_pattern, PETSC_COMM_WORLD);
 
   // first find a random permutation of the
   // indices
@@ -65,8 +107,6 @@ test()
   }
 
   // build the sparse matrix
-  PETScWrappers::MPI::SparseMatrix matrix(
-    PETSC_COMM_WORLD, N * N, N * N, N * N, N * N, 5);
   for (unsigned int i_ = 0; i_ < N; i_++)
     for (unsigned int j_ = 0; j_ < N; j_++)
       {
index 87b422581883d763d8b5c46990ad6ca5a8bbcf4b..32fa0ae71e4313d40b1ef32ebf1b36809c10483f 100644 (file)
@@ -15,7 +15,7 @@
 
 
 
-// check SparseMatrix::add(other, factor)
+// check SparseMatrix::add(factor, other)
 
 #include <deal.II/lac/petsc_sparse_matrix.h>
 
@@ -51,14 +51,14 @@ test()
     deallog << m(i, i) << " ";
   deallog << std::endl;
 
-  m.add(m2, 1.0);
+  m.add(1.0, m2);
 
   deallog << "after: " << m(0, 1) << std::endl;
   for (unsigned int i = 0; i < s; ++i)
     deallog << m(i, i) << " ";
   deallog << std::endl;
 
-  m.add(m2, -1.0);
+  m.add(-1.0, m2);
 
   deallog << "back to original: " << m(0, 1) << std::endl;
   for (unsigned int i = 0; i < s; ++i)

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.