]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Fix two tests with complex PETSc 13960/head
authorMartin Kronbichler <martin.kronbichler@uni-a.de>
Sun, 12 Jun 2022 19:02:42 +0000 (21:02 +0200)
committerMartin Kronbichler <martin.kronbichler@uni-a.de>
Mon, 13 Jun 2022 05:13:09 +0000 (07:13 +0200)
tests/petsc_complex/assemble_01.cc
tests/petsc_complex/sparse_matrix_01.cc

index d675fee09913cc01cb8adfa21a2155dbccfcea93..e31b5a3c494dc9eb5d3247ab1aec7f3f37df9c1e 100644 (file)
@@ -19,6 +19,7 @@
 // combinations of PETScWrappers objects is correctly instantiated and works.
 
 #include <deal.II/lac/affine_constraints.h>
+#include <deal.II/lac/dynamic_sparsity_pattern.h>
 #include <deal.II/lac/full_matrix.h>
 #include <deal.II/lac/petsc_sparse_matrix.h>
 #include <deal.II/lac/petsc_vector.h>
@@ -37,9 +38,20 @@ main(int argc, char **argv)
 
   const unsigned int n = 4;
 
-  PETScWrappers::SparseMatrix      serial_matrix(n, n, n);
-  PETScWrappers::MPI::SparseMatrix mpi_matrix(MPI_COMM_WORLD, n, n, n, n, n);
-  PETScWrappers::MPI::Vector       mpi_vector(MPI_COMM_WORLD, n, n);
+  PETScWrappers::SparseMatrix serial_matrix(n, n, n);
+
+  // PETSc requires us to set up the sparsity pattern ahead of construction
+  DynamicSparsityPattern dsp(n, n);
+  for (unsigned int i = 0; i < n; ++i)
+    for (unsigned int j = 0; j < n; ++j)
+      dsp.add(i, j);
+  IndexSet all_dofs(n);
+  all_dofs.add_range(0, n);
+
+  PETScWrappers::MPI::SparseMatrix mpi_matrix;
+  mpi_matrix.reinit(all_dofs, all_dofs, dsp, MPI_COMM_WORLD);
+
+  PETScWrappers::MPI::Vector mpi_vector(MPI_COMM_WORLD, n, n);
 
   FullMatrix<PetscScalar> cell_matrix(n, n);
   Vector<PetscScalar>     cell_rhs(n);
index 09b9a7acc5a6e0bb9df5d44a3d6a9b60a4b62bc1..69a1e32e7e1a76640fd1472033d3fd6a8924beb9 100644 (file)
@@ -14,7 +14,7 @@
 // ---------------------------------------------------------------------
 
 
-// check SparseMatrix::add(other, factor)
+// check SparseMatrix::add(factor, other)
 
 #include <deal.II/lac/petsc_sparse_matrix.h>
 
@@ -50,14 +50,14 @@ test()
     deallog << m(k, k) << ' ';
   deallog << std::endl;
 
-  m.add(m2, 1.0);
+  m.add(1.0, m2);
 
   deallog << "after: " << m(0, 1) << std::endl;
   for (unsigned int k = 0; k < s; ++k)
     deallog << m(k, k) << ' ';
   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 k = 0; k < s; ++k)

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.