]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Make DiagonalMatrix member of MFOps::Base a shared_ptr
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Sat, 5 Nov 2016 21:24:17 +0000 (22:24 +0100)
committerMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Sun, 6 Nov 2016 14:48:57 +0000 (15:48 +0100)
include/deal.II/matrix_free/operators.h
tests/matrix_free/mass_operator_02.cc
tests/matrix_free/parallel_multigrid.with_mpi=true.with_p4est=true.with_trilinos=true.mpirun=3.output [moved from tests/matrix_free/parallel_multigrid.with_mpi=true.with_p4est=true.mpirun=3.output with 73% similarity]
tests/matrix_free/parallel_multigrid.with_mpi=true.with_p4est=true.with_trilinos=true.mpirun=7.output [moved from tests/matrix_free/parallel_multigrid.with_mpi=true.with_p4est=true.mpirun=7.output with 73% similarity]
tests/matrix_free/parallel_multigrid_02.cc
tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.mpirun=3.output [deleted file]
tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.mpirun=7.output [deleted file]
tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.with_trilinos=true.mpirun=3.output [new file with mode: 0644]
tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.with_trilinos=true.mpirun=7.output [new file with mode: 0644]
tests/matrix_free/parallel_multigrid_adaptive_02.cc
tests/matrix_free/parallel_multigrid_adaptive_04.cc

index 842e07a6328a91fa7d9855d163efcf3f0750da40..c8fdf4ad47cd725c31c6c21e350aaa58cf6d0667 100644 (file)
@@ -161,7 +161,8 @@ namespace MatrixFreeOperators
     /**
      * Get read access to the inverse diagonal of this operator.
      */
-    const DiagonalMatrix<LinearAlgebra::distributed::Vector<Number> > &get_matrix_diagonal_inverse() const;
+    const std_cxx11::shared_ptr<DiagonalMatrix<LinearAlgebra::distributed::Vector<Number> > > &
+    get_matrix_diagonal_inverse() const;
 
     /**
      * Apply the Jacobi preconditioner, which multiplies every element of the
@@ -200,9 +201,10 @@ namespace MatrixFreeOperators
     SmartPointer<const MatrixFree<dim,Number>, Base<dim,Number> > data;
 
     /**
-     * A vector to store inverse of diagonal elements.
+     * A shared pointer to a diagonal matrix that stores the inverse of
+     * diagonal elements as a vector.
      */
-    DiagonalMatrix<LinearAlgebra::distributed::Vector<Number> > inverse_diagonal_entries;
+    std_cxx11::shared_ptr<DiagonalMatrix<LinearAlgebra::distributed::Vector<Number> > > inverse_diagonal_entries;
 
   private:
 
@@ -232,7 +234,10 @@ namespace MatrixFreeOperators
 
     /**
      * Adjust the ghost range of the vectors to the storage requirements of
-     * the underlying MatrixFree class.
+     * the underlying MatrixFree class. This is used inside the mult_add() as
+     * well as vmult_interface_up() and vmult_interface_down() methods in
+     * order to ensure that the cell loops will be able to access the ghost
+     * indices with the correct local indices.
      */
     void adjust_ghost_range_if_necessary(const LinearAlgebra::distributed::Vector<Number> &vec) const;
   };
@@ -636,7 +641,7 @@ namespace MatrixFreeOperators
   Base<dim,Number>::clear ()
   {
     data = NULL;
-    inverse_diagonal_entries.clear();
+    inverse_diagonal_entries.reset();
   }
 
 
@@ -648,8 +653,9 @@ namespace MatrixFreeOperators
   {
     (void) col;
     Assert (row == col, ExcNotImplemented());
-    Assert (inverse_diagonal_entries.m() > 0, ExcNotInitialized());
-    return 1.0/inverse_diagonal_entries(row,row);
+    Assert (inverse_diagonal_entries.get() != NULL &&
+            inverse_diagonal_entries->m() > 0, ExcNotInitialized());
+    return 1.0/(*inverse_diagonal_entries)(row,row);
   }
 
 
@@ -918,16 +924,17 @@ namespace MatrixFreeOperators
   std::size_t
   Base<dim,Number>::memory_consumption () const
   {
-    return inverse_diagonal_entries.memory_consumption();
+    return inverse_diagonal_entries.get() != NULL ? inverse_diagonal_entries->memory_consumption() : sizeof(*this);
   }
 
 
 
   template <int dim, typename Number>
-  const DiagonalMatrix<LinearAlgebra::distributed::Vector<Number> > &
+  const std_cxx11::shared_ptr<DiagonalMatrix<LinearAlgebra::distributed::Vector<Number> > > &
   Base<dim,Number>::get_matrix_diagonal_inverse() const
   {
-    Assert(inverse_diagonal_entries.m() > 0, ExcNotInitialized());
+    Assert(inverse_diagonal_entries.get() != NULL &&
+           inverse_diagonal_entries->m() > 0, ExcNotInitialized());
     return inverse_diagonal_entries;
   }
 
@@ -949,9 +956,10 @@ namespace MatrixFreeOperators
                                         const LinearAlgebra::distributed::Vector<Number> &src,
                                         const Number omega) const
   {
-    Assert(inverse_diagonal_entries.m() > 0, ExcNotInitialized());
-    inverse_diagonal_entries.vmult(dst,src);
-    dst*= omega;
+    Assert(inverse_diagonal_entries.get() &&
+           inverse_diagonal_entries->m() > 0, ExcNotInitialized());
+    inverse_diagonal_entries->vmult(dst,src);
+    dst *= omega;
   }
 
 
@@ -974,23 +982,23 @@ namespace MatrixFreeOperators
   {
     Assert((Base<dim, Number>::data != NULL), ExcNotInitialized());
 
+    this->inverse_diagonal_entries.
+    reset(new DiagonalMatrix<LinearAlgebra::distributed::Vector<Number> >());
+    LinearAlgebra::distributed::Vector<Number> &inverse_diagonal_vector = this->inverse_diagonal_entries->get_vector();
     LinearAlgebra::distributed::Vector<Number> ones;
-    LinearAlgebra::distributed::Vector<Number> &inverse_diagonal_entries = Base<dim, Number>::inverse_diagonal_entries.get_vector();
     this->initialize_dof_vector(ones);
-    this->initialize_dof_vector(inverse_diagonal_entries);
+    this->initialize_dof_vector(inverse_diagonal_vector);
     ones = 1.;
-    ones.update_ghost_values();
-    apply_add(inverse_diagonal_entries, ones);
+    apply_add(inverse_diagonal_vector, ones);
 
-    this->set_constrained_entries_to_one(inverse_diagonal_entries);
+    this->set_constrained_entries_to_one(inverse_diagonal_vector);
 
-    const unsigned int local_size = inverse_diagonal_entries.local_size();
+    const unsigned int local_size = inverse_diagonal_vector.local_size();
     for (unsigned int i=0; i<local_size; ++i)
-      inverse_diagonal_entries.local_element(i)
-        =1./inverse_diagonal_entries.local_element(i);
+      inverse_diagonal_vector.local_element(i)
+        =1./inverse_diagonal_vector.local_element(i);
 
-    inverse_diagonal_entries.compress(VectorOperation::insert);
-    inverse_diagonal_entries.update_ghost_values();
+    inverse_diagonal_vector.update_ghost_values();
   }
 
 
@@ -1082,22 +1090,22 @@ namespace MatrixFreeOperators
     Assert((Base<dim, Number>::data != NULL), ExcNotInitialized());
 
     unsigned int dummy = 0;
-    LinearAlgebra::distributed::Vector<Number> &inverse_diagonal_entries = Base<dim,Number>::inverse_diagonal_entries.get_vector();
-    this->initialize_dof_vector(inverse_diagonal_entries);
-    Base<dim,Number>::
-    data->cell_loop (&LaplaceOperator::local_diagonal_cell,
-                     this, inverse_diagonal_entries, dummy);
-
-    this->set_constrained_entries_to_one(inverse_diagonal_entries);
-
-    for (unsigned int i=0; i<inverse_diagonal_entries.local_size(); ++i)
-      if (std::abs(inverse_diagonal_entries.local_element(i)) > std::sqrt(std::numeric_limits<Number>::epsilon()))
-        inverse_diagonal_entries.local_element(i) = 1./inverse_diagonal_entries.local_element(i);
+    this->inverse_diagonal_entries.
+    reset(new DiagonalMatrix<LinearAlgebra::distributed::Vector<Number> >());
+    LinearAlgebra::distributed::Vector<Number> &inverse_diagonal_vector = this->inverse_diagonal_entries->get_vector();
+    this->initialize_dof_vector(inverse_diagonal_vector);
+
+    this->data->cell_loop (&LaplaceOperator::local_diagonal_cell,
+                           this, inverse_diagonal_vector, dummy);
+    this->set_constrained_entries_to_one(inverse_diagonal_vector);
+
+    for (unsigned int i=0; i<inverse_diagonal_vector.local_size(); ++i)
+      if (std::abs(inverse_diagonal_vector.local_element(i)) > std::sqrt(std::numeric_limits<Number>::epsilon()))
+        inverse_diagonal_vector.local_element(i) = 1./inverse_diagonal_vector.local_element(i);
       else
-        inverse_diagonal_entries.local_element(i) = 1.;
+        inverse_diagonal_vector.local_element(i) = 1.;
 
-    inverse_diagonal_entries.compress(VectorOperation::insert);
-    inverse_diagonal_entries.update_ghost_values();
+    inverse_diagonal_vector.update_ghost_values();
   }
 
 
index b082200bd59aba44a30749d3aca7f8427c2dfedf..34a3c0c38fda96b037b6c4cbf35dba97d22562f9 100644 (file)
@@ -84,7 +84,7 @@ void test ()
   mf.initialize(mf_data);
   mf.compute_diagonal();
   const LinearAlgebra::distributed::Vector<double> &diagonal
-    = mf.get_matrix_diagonal_inverse().get_vector();
+    = mf.get_matrix_diagonal_inverse()->get_vector();
 
   LinearAlgebra::distributed::Vector<number> in, out, ref;
   mf_data.initialize_dof_vector (in);
@@ -191,4 +191,3 @@ int main (int argc, char **argv)
   test<3,2>();
   deallog.pop();
 }
-
similarity index 73%
rename from tests/matrix_free/parallel_multigrid.with_mpi=true.with_p4est=true.mpirun=3.output
rename to tests/matrix_free/parallel_multigrid.with_mpi=true.with_p4est=true.with_trilinos=true.mpirun=3.output
index c1311be95595a179f2c2e22b8fdae328006c7eb1..81a324f2c70db8cea1f59052f2bce373cd067d0a 100644 (file)
@@ -2,31 +2,31 @@
 DEAL:2d::Testing FE_Q<2>(1)
 DEAL:2d::Number of degrees of freedom: 81
 DEAL:2d:cg::Starting value 9.000
-DEAL:2d:cg:cg::Starting value 0.009355
+DEAL:2d:cg:cg::Starting value 0.009350
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 6.428e-06
+DEAL:2d:cg:cg::Starting value 6.469e-06
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 6.896e-08
+DEAL:2d:cg:cg::Starting value 6.921e-08
 DEAL:2d:cg:cg::Convergence step 1 value 0
 DEAL:2d:cg::Convergence step 3 value 4.626e-07
 DEAL:2d::Testing FE_Q<2>(1)
 DEAL:2d::Number of degrees of freedom: 289
 DEAL:2d:cg::Starting value 17.00
-DEAL:2d:cg:cg::Starting value 0.02710
+DEAL:2d:cg:cg::Starting value 0.02703
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 5.173e-06
+DEAL:2d:cg:cg::Starting value 5.170e-06
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 7.863e-10
+DEAL:2d:cg:cg::Starting value 8.499e-10
 DEAL:2d:cg:cg::Convergence step 1 value 0
 DEAL:2d:cg::Convergence step 3 value 3.600e-07
 DEAL:2d::Testing FE_Q<2>(1)
 DEAL:2d::Number of degrees of freedom: 1089
 DEAL:2d:cg::Starting value 33.00
-DEAL:2d:cg:cg::Starting value 0.09750
+DEAL:2d:cg:cg::Starting value 0.09751
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 2.792e-06
+DEAL:2d:cg:cg::Starting value 2.794e-06
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 1.110e-07
+DEAL:2d:cg:cg::Starting value 1.111e-07
 DEAL:2d:cg:cg::Convergence step 1 value 0
 DEAL:2d:cg:cg::Starting value 1.758e-10
 DEAL:2d:cg:cg::Convergence step 1 value 0
@@ -34,39 +34,39 @@ DEAL:2d:cg::Convergence step 4 value 1.484e-08
 DEAL:2d::Testing FE_Q<2>(2)
 DEAL:2d::Number of degrees of freedom: 289
 DEAL:2d:cg::Starting value 17.00
-DEAL:2d:cg:cg::Starting value 0.6907
+DEAL:2d:cg:cg::Starting value 0.5165
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0001064
+DEAL:2d:cg:cg::Starting value 7.798e-05
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 6.439e-07
+DEAL:2d:cg:cg::Starting value 4.794e-07
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.579e-09
+DEAL:2d:cg:cg::Starting value 1.177e-09
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg::Convergence step 4 value 1.405e-08
+DEAL:2d:cg::Convergence step 4 value 1.404e-08
 DEAL:2d::Testing FE_Q<2>(2)
 DEAL:2d::Number of degrees of freedom: 1089
 DEAL:2d:cg::Starting value 33.00
-DEAL:2d:cg:cg::Starting value 2.631
+DEAL:2d:cg:cg::Starting value 1.948
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0001068
+DEAL:2d:cg:cg::Starting value 7.876e-05
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.290e-06
+DEAL:2d:cg:cg::Starting value 9.527e-07
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 2.685e-09
+DEAL:2d:cg:cg::Starting value 1.973e-09
 DEAL:2d:cg:cg::Convergence step 2 value 0
 DEAL:2d:cg::Convergence step 4 value 1.627e-08
 DEAL:2d::Testing FE_Q<2>(2)
 DEAL:2d::Number of degrees of freedom: 4225
 DEAL:2d:cg::Starting value 65.00
-DEAL:2d:cg:cg::Starting value 10.37
+DEAL:2d:cg:cg::Starting value 7.684
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0005721
+DEAL:2d:cg:cg::Starting value 0.0004225
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 7.479e-07
+DEAL:2d:cg:cg::Starting value 5.550e-07
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.098e-08
+DEAL:2d:cg:cg::Starting value 8.109e-09
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg::Convergence step 4 value 3.011e-08
+DEAL:2d:cg::Convergence step 4 value 3.009e-08
 DEAL:3d::Testing FE_Q<3>(1)
 DEAL:3d::Number of degrees of freedom: 125
 DEAL:3d:cg::Starting value 11.18
@@ -80,7 +80,7 @@ DEAL:3d:cg::Convergence step 3 value 9.022e-09
 DEAL:3d::Testing FE_Q<3>(1)
 DEAL:3d::Number of degrees of freedom: 729
 DEAL:3d:cg::Starting value 27.00
-DEAL:3d:cg:cg::Starting value 0.03499
+DEAL:3d:cg:cg::Starting value 0.03500
 DEAL:3d:cg:cg::Convergence step 1 value 0
 DEAL:3d:cg:cg::Starting value 0.0002870
 DEAL:3d:cg:cg::Convergence step 1 value 0
@@ -90,13 +90,13 @@ DEAL:3d:cg::Convergence step 3 value 1.327e-06
 DEAL:3d::Testing FE_Q<3>(1)
 DEAL:3d::Number of degrees of freedom: 4913
 DEAL:3d:cg::Starting value 70.09
-DEAL:3d:cg:cg::Starting value 0.06180
+DEAL:3d:cg:cg::Starting value 0.06187
 DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 7.869e-05
+DEAL:3d:cg:cg::Starting value 7.842e-05
 DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 1.067e-06
+DEAL:3d:cg:cg::Starting value 1.062e-06
 DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 1.447e-09
+DEAL:3d:cg:cg::Starting value 1.441e-09
 DEAL:3d:cg:cg::Convergence step 1 value 0
 DEAL:3d:cg::Convergence step 4 value 6.374e-08
 DEAL:3d::Testing FE_Q<3>(2)
@@ -104,19 +104,19 @@ DEAL:3d::Number of degrees of freedom: 729
 DEAL:3d:cg::Starting value 27.00
 DEAL:3d:cg:cg::Starting value 1.155
 DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 0.0001367
+DEAL:3d:cg:cg::Starting value 0.0001365
 DEAL:3d:cg:cg::Convergence step 2 value 0
 DEAL:3d:cg:cg::Starting value 1.471e-07
 DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg::Convergence step 3 value 5.042e-08
+DEAL:3d:cg::Convergence step 3 value 5.041e-08
 DEAL:3d::Testing FE_Q<3>(2)
 DEAL:3d::Number of degrees of freedom: 4913
 DEAL:3d:cg::Starting value 70.09
-DEAL:3d:cg:cg::Starting value 6.475
+DEAL:3d:cg:cg::Starting value 6.474
 DEAL:3d:cg:cg::Convergence step 2 value 0
 DEAL:3d:cg:cg::Starting value 0.0005841
 DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 2.220e-06
+DEAL:3d:cg:cg::Starting value 2.219e-06
 DEAL:3d:cg:cg::Convergence step 2 value 0
 DEAL:3d:cg::Convergence step 3 value 2.560e-06
 DEAL:3d::Testing FE_Q<3>(2)
@@ -124,8 +124,8 @@ DEAL:3d::Number of degrees of freedom: 35937
 DEAL:3d:cg::Starting value 189.6
 DEAL:3d:cg:cg::Starting value 47.62
 DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 0.006358
+DEAL:3d:cg:cg::Starting value 0.006356
 DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 8.274e-06
+DEAL:3d:cg:cg::Starting value 8.271e-06
 DEAL:3d:cg:cg::Convergence step 2 value 0
 DEAL:3d:cg::Convergence step 3 value 1.007e-05
similarity index 73%
rename from tests/matrix_free/parallel_multigrid.with_mpi=true.with_p4est=true.mpirun=7.output
rename to tests/matrix_free/parallel_multigrid.with_mpi=true.with_p4est=true.with_trilinos=true.mpirun=7.output
index c1311be95595a179f2c2e22b8fdae328006c7eb1..81a324f2c70db8cea1f59052f2bce373cd067d0a 100644 (file)
@@ -2,31 +2,31 @@
 DEAL:2d::Testing FE_Q<2>(1)
 DEAL:2d::Number of degrees of freedom: 81
 DEAL:2d:cg::Starting value 9.000
-DEAL:2d:cg:cg::Starting value 0.009355
+DEAL:2d:cg:cg::Starting value 0.009350
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 6.428e-06
+DEAL:2d:cg:cg::Starting value 6.469e-06
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 6.896e-08
+DEAL:2d:cg:cg::Starting value 6.921e-08
 DEAL:2d:cg:cg::Convergence step 1 value 0
 DEAL:2d:cg::Convergence step 3 value 4.626e-07
 DEAL:2d::Testing FE_Q<2>(1)
 DEAL:2d::Number of degrees of freedom: 289
 DEAL:2d:cg::Starting value 17.00
-DEAL:2d:cg:cg::Starting value 0.02710
+DEAL:2d:cg:cg::Starting value 0.02703
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 5.173e-06
+DEAL:2d:cg:cg::Starting value 5.170e-06
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 7.863e-10
+DEAL:2d:cg:cg::Starting value 8.499e-10
 DEAL:2d:cg:cg::Convergence step 1 value 0
 DEAL:2d:cg::Convergence step 3 value 3.600e-07
 DEAL:2d::Testing FE_Q<2>(1)
 DEAL:2d::Number of degrees of freedom: 1089
 DEAL:2d:cg::Starting value 33.00
-DEAL:2d:cg:cg::Starting value 0.09750
+DEAL:2d:cg:cg::Starting value 0.09751
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 2.792e-06
+DEAL:2d:cg:cg::Starting value 2.794e-06
 DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 1.110e-07
+DEAL:2d:cg:cg::Starting value 1.111e-07
 DEAL:2d:cg:cg::Convergence step 1 value 0
 DEAL:2d:cg:cg::Starting value 1.758e-10
 DEAL:2d:cg:cg::Convergence step 1 value 0
@@ -34,39 +34,39 @@ DEAL:2d:cg::Convergence step 4 value 1.484e-08
 DEAL:2d::Testing FE_Q<2>(2)
 DEAL:2d::Number of degrees of freedom: 289
 DEAL:2d:cg::Starting value 17.00
-DEAL:2d:cg:cg::Starting value 0.6907
+DEAL:2d:cg:cg::Starting value 0.5165
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0001064
+DEAL:2d:cg:cg::Starting value 7.798e-05
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 6.439e-07
+DEAL:2d:cg:cg::Starting value 4.794e-07
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.579e-09
+DEAL:2d:cg:cg::Starting value 1.177e-09
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg::Convergence step 4 value 1.405e-08
+DEAL:2d:cg::Convergence step 4 value 1.404e-08
 DEAL:2d::Testing FE_Q<2>(2)
 DEAL:2d::Number of degrees of freedom: 1089
 DEAL:2d:cg::Starting value 33.00
-DEAL:2d:cg:cg::Starting value 2.631
+DEAL:2d:cg:cg::Starting value 1.948
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0001068
+DEAL:2d:cg:cg::Starting value 7.876e-05
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.290e-06
+DEAL:2d:cg:cg::Starting value 9.527e-07
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 2.685e-09
+DEAL:2d:cg:cg::Starting value 1.973e-09
 DEAL:2d:cg:cg::Convergence step 2 value 0
 DEAL:2d:cg::Convergence step 4 value 1.627e-08
 DEAL:2d::Testing FE_Q<2>(2)
 DEAL:2d::Number of degrees of freedom: 4225
 DEAL:2d:cg::Starting value 65.00
-DEAL:2d:cg:cg::Starting value 10.37
+DEAL:2d:cg:cg::Starting value 7.684
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0005721
+DEAL:2d:cg:cg::Starting value 0.0004225
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 7.479e-07
+DEAL:2d:cg:cg::Starting value 5.550e-07
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.098e-08
+DEAL:2d:cg:cg::Starting value 8.109e-09
 DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg::Convergence step 4 value 3.011e-08
+DEAL:2d:cg::Convergence step 4 value 3.009e-08
 DEAL:3d::Testing FE_Q<3>(1)
 DEAL:3d::Number of degrees of freedom: 125
 DEAL:3d:cg::Starting value 11.18
@@ -80,7 +80,7 @@ DEAL:3d:cg::Convergence step 3 value 9.022e-09
 DEAL:3d::Testing FE_Q<3>(1)
 DEAL:3d::Number of degrees of freedom: 729
 DEAL:3d:cg::Starting value 27.00
-DEAL:3d:cg:cg::Starting value 0.03499
+DEAL:3d:cg:cg::Starting value 0.03500
 DEAL:3d:cg:cg::Convergence step 1 value 0
 DEAL:3d:cg:cg::Starting value 0.0002870
 DEAL:3d:cg:cg::Convergence step 1 value 0
@@ -90,13 +90,13 @@ DEAL:3d:cg::Convergence step 3 value 1.327e-06
 DEAL:3d::Testing FE_Q<3>(1)
 DEAL:3d::Number of degrees of freedom: 4913
 DEAL:3d:cg::Starting value 70.09
-DEAL:3d:cg:cg::Starting value 0.06180
+DEAL:3d:cg:cg::Starting value 0.06187
 DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 7.869e-05
+DEAL:3d:cg:cg::Starting value 7.842e-05
 DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 1.067e-06
+DEAL:3d:cg:cg::Starting value 1.062e-06
 DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 1.447e-09
+DEAL:3d:cg:cg::Starting value 1.441e-09
 DEAL:3d:cg:cg::Convergence step 1 value 0
 DEAL:3d:cg::Convergence step 4 value 6.374e-08
 DEAL:3d::Testing FE_Q<3>(2)
@@ -104,19 +104,19 @@ DEAL:3d::Number of degrees of freedom: 729
 DEAL:3d:cg::Starting value 27.00
 DEAL:3d:cg:cg::Starting value 1.155
 DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 0.0001367
+DEAL:3d:cg:cg::Starting value 0.0001365
 DEAL:3d:cg:cg::Convergence step 2 value 0
 DEAL:3d:cg:cg::Starting value 1.471e-07
 DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg::Convergence step 3 value 5.042e-08
+DEAL:3d:cg::Convergence step 3 value 5.041e-08
 DEAL:3d::Testing FE_Q<3>(2)
 DEAL:3d::Number of degrees of freedom: 4913
 DEAL:3d:cg::Starting value 70.09
-DEAL:3d:cg:cg::Starting value 6.475
+DEAL:3d:cg:cg::Starting value 6.474
 DEAL:3d:cg:cg::Convergence step 2 value 0
 DEAL:3d:cg:cg::Starting value 0.0005841
 DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 2.220e-06
+DEAL:3d:cg:cg::Starting value 2.219e-06
 DEAL:3d:cg:cg::Convergence step 2 value 0
 DEAL:3d:cg::Convergence step 3 value 2.560e-06
 DEAL:3d::Testing FE_Q<3>(2)
@@ -124,8 +124,8 @@ DEAL:3d::Number of degrees of freedom: 35937
 DEAL:3d:cg::Starting value 189.6
 DEAL:3d:cg:cg::Starting value 47.62
 DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 0.006358
+DEAL:3d:cg:cg::Starting value 0.006356
 DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 8.274e-06
+DEAL:3d:cg:cg::Starting value 8.271e-06
 DEAL:3d:cg:cg::Convergence step 2 value 0
 DEAL:3d:cg::Convergence step 3 value 1.007e-05
index 62394c94663e637a1ba70d42c732d04a71288b61..d3c49daaa04312d1a65eb25806e0e354c57c6b60 100644 (file)
@@ -35,9 +35,8 @@
 #include <deal.II/distributed/tria.h>
 
 #include <deal.II/multigrid/multigrid.h>
-#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_transfer_matrix_free.h>
 #include <deal.II/multigrid/mg_tools.h>
-#include <deal.II/multigrid/mg_coarse.h>
 #include <deal.II/multigrid/mg_smoother.h>
 #include <deal.II/multigrid/mg_matrix.h>
 
 std::ofstream logfile("output");
 
 
-template <typename MatrixType>
-class MGTransferPrebuiltMF : public MGTransferPrebuilt<LinearAlgebra::distributed::Vector<double> >
-{
-public:
-  MGTransferPrebuiltMF(const MGLevelObject<MatrixType> &laplace)
-    :
-    laplace_operator (laplace)
-  {};
-
-  /**
-   * Overload copy_to_mg from MGTransferPrebuilt to get the vectors compatible
-   * with MatrixFree and bypass the crude initialization in MGTransferPrebuilt
-   */
-  template <int dim, class InVector, int spacedim>
-  void
-  copy_to_mg (const DoFHandler<dim,spacedim> &mg_dof,
-              MGLevelObject<LinearAlgebra::distributed::Vector<double> > &dst,
-              const InVector &src) const
-  {
-    for (unsigned int level=dst.min_level();
-         level<=dst.max_level(); ++level)
-      laplace_operator[level].initialize_dof_vector(dst[level]);
-    MGTransferPrebuilt<LinearAlgebra::distributed::Vector<double> >::copy_to_mg(mg_dof, dst, src);
-  }
-
-private:
-  const MGLevelObject<MatrixType> &laplace_operator;
-};
-
-
 
 template<typename MatrixType, typename Number>
 class MGCoarseIterative : public MGCoarseGridBase<LinearAlgebra::distributed::Vector<Number> >
@@ -194,8 +163,8 @@ void do_test (const DoFHandler<dim>  &dof)
       mg_matrices[level].compute_diagonal();
     }
 
-  MGTransferPrebuiltMF<LevelMatrixType> mg_transfer(mg_matrices);
-  mg_transfer.build_matrices(dof);
+  MGTransferMatrixFree<dim,double> mg_transfer(mg_constrained_dofs);
+  mg_transfer.build(dof);
 
   MGCoarseIterative<LevelMatrixType,number> mg_coarse;
   mg_coarse.initialize(mg_matrices[0]);
@@ -211,10 +180,7 @@ void do_test (const DoFHandler<dim>  &dof)
       smoother_data[level].smoothing_range = 15.;
       smoother_data[level].degree = 5;
       smoother_data[level].eig_cg_n_iterations = 15;
-      smoother_data[level].preconditioner.
-      reset(new DiagonalMatrix<LinearAlgebra::distributed::Vector<number> >());
-      *smoother_data[level].preconditioner =
-        mg_matrices[level].get_matrix_diagonal_inverse();
+      smoother_data[level].preconditioner = mg_matrices[level].get_matrix_diagonal_inverse();
     }
   mg_smoother.initialize(mg_matrices, smoother_data);
 
@@ -228,7 +194,7 @@ void do_test (const DoFHandler<dim>  &dof)
                                                             mg_smoother,
                                                             mg_smoother);
   PreconditionMG<dim, LinearAlgebra::distributed::Vector<double>,
-                 MGTransferPrebuiltMF<LevelMatrixType> >
+                 MGTransferMatrixFree<dim,double> >
                  preconditioner(dof, mg, mg_transfer);
 
   {
diff --git a/tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.mpirun=3.output b/tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.mpirun=3.output
deleted file mode 100644 (file)
index c1311be..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-
-DEAL:2d::Testing FE_Q<2>(1)
-DEAL:2d::Number of degrees of freedom: 81
-DEAL:2d:cg::Starting value 9.000
-DEAL:2d:cg:cg::Starting value 0.009355
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 6.428e-06
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 6.896e-08
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg::Convergence step 3 value 4.626e-07
-DEAL:2d::Testing FE_Q<2>(1)
-DEAL:2d::Number of degrees of freedom: 289
-DEAL:2d:cg::Starting value 17.00
-DEAL:2d:cg:cg::Starting value 0.02710
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 5.173e-06
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 7.863e-10
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg::Convergence step 3 value 3.600e-07
-DEAL:2d::Testing FE_Q<2>(1)
-DEAL:2d::Number of degrees of freedom: 1089
-DEAL:2d:cg::Starting value 33.00
-DEAL:2d:cg:cg::Starting value 0.09750
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 2.792e-06
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 1.110e-07
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 1.758e-10
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg::Convergence step 4 value 1.484e-08
-DEAL:2d::Testing FE_Q<2>(2)
-DEAL:2d::Number of degrees of freedom: 289
-DEAL:2d:cg::Starting value 17.00
-DEAL:2d:cg:cg::Starting value 0.6907
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0001064
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 6.439e-07
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.579e-09
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg::Convergence step 4 value 1.405e-08
-DEAL:2d::Testing FE_Q<2>(2)
-DEAL:2d::Number of degrees of freedom: 1089
-DEAL:2d:cg::Starting value 33.00
-DEAL:2d:cg:cg::Starting value 2.631
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0001068
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.290e-06
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 2.685e-09
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg::Convergence step 4 value 1.627e-08
-DEAL:2d::Testing FE_Q<2>(2)
-DEAL:2d::Number of degrees of freedom: 4225
-DEAL:2d:cg::Starting value 65.00
-DEAL:2d:cg:cg::Starting value 10.37
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0005721
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 7.479e-07
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.098e-08
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg::Convergence step 4 value 3.011e-08
-DEAL:3d::Testing FE_Q<3>(1)
-DEAL:3d::Number of degrees of freedom: 125
-DEAL:3d:cg::Starting value 11.18
-DEAL:3d:cg:cg::Starting value 0.1410
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 6.992e-05
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 4.858e-09
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg::Convergence step 3 value 9.022e-09
-DEAL:3d::Testing FE_Q<3>(1)
-DEAL:3d::Number of degrees of freedom: 729
-DEAL:3d:cg::Starting value 27.00
-DEAL:3d:cg:cg::Starting value 0.03499
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 0.0002870
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 1.473e-07
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg::Convergence step 3 value 1.327e-06
-DEAL:3d::Testing FE_Q<3>(1)
-DEAL:3d::Number of degrees of freedom: 4913
-DEAL:3d:cg::Starting value 70.09
-DEAL:3d:cg:cg::Starting value 0.06180
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 7.869e-05
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 1.067e-06
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 1.447e-09
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg::Convergence step 4 value 6.374e-08
-DEAL:3d::Testing FE_Q<3>(2)
-DEAL:3d::Number of degrees of freedom: 729
-DEAL:3d:cg::Starting value 27.00
-DEAL:3d:cg:cg::Starting value 1.155
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 0.0001367
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 1.471e-07
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg::Convergence step 3 value 5.042e-08
-DEAL:3d::Testing FE_Q<3>(2)
-DEAL:3d::Number of degrees of freedom: 4913
-DEAL:3d:cg::Starting value 70.09
-DEAL:3d:cg:cg::Starting value 6.475
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 0.0005841
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 2.220e-06
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg::Convergence step 3 value 2.560e-06
-DEAL:3d::Testing FE_Q<3>(2)
-DEAL:3d::Number of degrees of freedom: 35937
-DEAL:3d:cg::Starting value 189.6
-DEAL:3d:cg:cg::Starting value 47.62
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 0.006358
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 8.274e-06
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg::Convergence step 3 value 1.007e-05
diff --git a/tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.mpirun=7.output b/tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.mpirun=7.output
deleted file mode 100644 (file)
index c1311be..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-
-DEAL:2d::Testing FE_Q<2>(1)
-DEAL:2d::Number of degrees of freedom: 81
-DEAL:2d:cg::Starting value 9.000
-DEAL:2d:cg:cg::Starting value 0.009355
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 6.428e-06
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 6.896e-08
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg::Convergence step 3 value 4.626e-07
-DEAL:2d::Testing FE_Q<2>(1)
-DEAL:2d::Number of degrees of freedom: 289
-DEAL:2d:cg::Starting value 17.00
-DEAL:2d:cg:cg::Starting value 0.02710
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 5.173e-06
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 7.863e-10
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg::Convergence step 3 value 3.600e-07
-DEAL:2d::Testing FE_Q<2>(1)
-DEAL:2d::Number of degrees of freedom: 1089
-DEAL:2d:cg::Starting value 33.00
-DEAL:2d:cg:cg::Starting value 0.09750
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 2.792e-06
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 1.110e-07
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg:cg::Starting value 1.758e-10
-DEAL:2d:cg:cg::Convergence step 1 value 0
-DEAL:2d:cg::Convergence step 4 value 1.484e-08
-DEAL:2d::Testing FE_Q<2>(2)
-DEAL:2d::Number of degrees of freedom: 289
-DEAL:2d:cg::Starting value 17.00
-DEAL:2d:cg:cg::Starting value 0.6907
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0001064
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 6.439e-07
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.579e-09
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg::Convergence step 4 value 1.405e-08
-DEAL:2d::Testing FE_Q<2>(2)
-DEAL:2d::Number of degrees of freedom: 1089
-DEAL:2d:cg::Starting value 33.00
-DEAL:2d:cg:cg::Starting value 2.631
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0001068
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.290e-06
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 2.685e-09
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg::Convergence step 4 value 1.627e-08
-DEAL:2d::Testing FE_Q<2>(2)
-DEAL:2d::Number of degrees of freedom: 4225
-DEAL:2d:cg::Starting value 65.00
-DEAL:2d:cg:cg::Starting value 10.37
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 0.0005721
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 7.479e-07
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg:cg::Starting value 1.098e-08
-DEAL:2d:cg:cg::Convergence step 2 value 0
-DEAL:2d:cg::Convergence step 4 value 3.011e-08
-DEAL:3d::Testing FE_Q<3>(1)
-DEAL:3d::Number of degrees of freedom: 125
-DEAL:3d:cg::Starting value 11.18
-DEAL:3d:cg:cg::Starting value 0.1410
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 6.992e-05
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 4.858e-09
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg::Convergence step 3 value 9.022e-09
-DEAL:3d::Testing FE_Q<3>(1)
-DEAL:3d::Number of degrees of freedom: 729
-DEAL:3d:cg::Starting value 27.00
-DEAL:3d:cg:cg::Starting value 0.03499
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 0.0002870
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 1.473e-07
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg::Convergence step 3 value 1.327e-06
-DEAL:3d::Testing FE_Q<3>(1)
-DEAL:3d::Number of degrees of freedom: 4913
-DEAL:3d:cg::Starting value 70.09
-DEAL:3d:cg:cg::Starting value 0.06180
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 7.869e-05
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 1.067e-06
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg:cg::Starting value 1.447e-09
-DEAL:3d:cg:cg::Convergence step 1 value 0
-DEAL:3d:cg::Convergence step 4 value 6.374e-08
-DEAL:3d::Testing FE_Q<3>(2)
-DEAL:3d::Number of degrees of freedom: 729
-DEAL:3d:cg::Starting value 27.00
-DEAL:3d:cg:cg::Starting value 1.155
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 0.0001367
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 1.471e-07
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg::Convergence step 3 value 5.042e-08
-DEAL:3d::Testing FE_Q<3>(2)
-DEAL:3d::Number of degrees of freedom: 4913
-DEAL:3d:cg::Starting value 70.09
-DEAL:3d:cg:cg::Starting value 6.475
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 0.0005841
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 2.220e-06
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg::Convergence step 3 value 2.560e-06
-DEAL:3d::Testing FE_Q<3>(2)
-DEAL:3d::Number of degrees of freedom: 35937
-DEAL:3d:cg::Starting value 189.6
-DEAL:3d:cg:cg::Starting value 47.62
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 0.006358
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg:cg::Starting value 8.274e-06
-DEAL:3d:cg:cg::Convergence step 2 value 0
-DEAL:3d:cg::Convergence step 3 value 1.007e-05
diff --git a/tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.with_trilinos=true.mpirun=3.output b/tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.with_trilinos=true.mpirun=3.output
new file mode 100644 (file)
index 0000000..f4dd586
--- /dev/null
@@ -0,0 +1,103 @@
+
+DEAL:2d::Testing FE_Q<2>(1)
+DEAL:2d::Number of degrees of freedom: 81
+DEAL:2d:cg::Starting value 9.000
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg::Convergence step 3 value 3.519e-08
+DEAL:2d::Testing FE_Q<2>(1)
+DEAL:2d::Number of degrees of freedom: 289
+DEAL:2d:cg::Starting value 17.00
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg::Convergence step 3 value 3.003e-08
+DEAL:2d::Testing FE_Q<2>(1)
+DEAL:2d::Number of degrees of freedom: 1089
+DEAL:2d:cg::Starting value 33.00
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg::Convergence step 3 value 1.234e-06
+DEAL:2d::Testing FE_Q<2>(2)
+DEAL:2d::Number of degrees of freedom: 289
+DEAL:2d:cg::Starting value 17.00
+DEAL:2d:cg:cg::Starting value 0.5046
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 0.0001009
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 2.390e-07
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg::Convergence step 3 value 2.836e-07
+DEAL:2d::Testing FE_Q<2>(2)
+DEAL:2d::Number of degrees of freedom: 1089
+DEAL:2d:cg::Starting value 33.00
+DEAL:2d:cg:cg::Starting value 1.907
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 0.0001557
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 2.528e-08
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg::Convergence step 3 value 7.105e-07
+DEAL:2d::Testing FE_Q<2>(2)
+DEAL:2d::Number of degrees of freedom: 4225
+DEAL:2d:cg::Starting value 65.00
+DEAL:2d:cg:cg::Starting value 7.521
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 0.0004595
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 4.621e-07
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg::Convergence step 3 value 1.709e-06
+DEAL:3d::Testing FE_Q<3>(1)
+DEAL:3d::Number of degrees of freedom: 125
+DEAL:3d:cg::Starting value 11.18
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg::Convergence step 3 value 9.585e-10
+DEAL:3d::Testing FE_Q<3>(1)
+DEAL:3d::Number of degrees of freedom: 729
+DEAL:3d:cg::Starting value 27.00
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg::Convergence step 3 value 1.302e-07
+DEAL:3d::Testing FE_Q<3>(1)
+DEAL:3d::Number of degrees of freedom: 4913
+DEAL:3d:cg::Starting value 70.09
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg::Convergence step 3 value 1.260e-07
+DEAL:3d::Testing FE_Q<3>(2)
+DEAL:3d::Number of degrees of freedom: 729
+DEAL:3d:cg::Starting value 27.00
+DEAL:3d:cg:cg::Starting value 1.111
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 4.641e-05
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 1.161e-07
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg::Convergence step 3 value 2.867e-08
+DEAL:3d::Testing FE_Q<3>(2)
+DEAL:3d::Number of degrees of freedom: 4913
+DEAL:3d:cg::Starting value 70.09
+DEAL:3d:cg:cg::Starting value 6.226
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 0.0006131
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 1.964e-06
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg::Convergence step 3 value 1.131e-06
+DEAL:3d::Testing FE_Q<3>(2)
+DEAL:3d::Number of degrees of freedom: 35937
+DEAL:3d:cg::Starting value 189.6
+DEAL:3d:cg:cg::Starting value 45.82
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 0.006222
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 8.361e-06
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg::Convergence step 3 value 5.576e-06
diff --git a/tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.with_trilinos=true.mpirun=7.output b/tests/matrix_free/parallel_multigrid_02.with_mpi=true.with_p4est=true.with_trilinos=true.mpirun=7.output
new file mode 100644 (file)
index 0000000..f4dd586
--- /dev/null
@@ -0,0 +1,103 @@
+
+DEAL:2d::Testing FE_Q<2>(1)
+DEAL:2d::Number of degrees of freedom: 81
+DEAL:2d:cg::Starting value 9.000
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg::Convergence step 3 value 3.519e-08
+DEAL:2d::Testing FE_Q<2>(1)
+DEAL:2d::Number of degrees of freedom: 289
+DEAL:2d:cg::Starting value 17.00
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg::Convergence step 3 value 3.003e-08
+DEAL:2d::Testing FE_Q<2>(1)
+DEAL:2d::Number of degrees of freedom: 1089
+DEAL:2d:cg::Starting value 33.00
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg:cg::Convergence step 0 value 0
+DEAL:2d:cg::Convergence step 3 value 1.234e-06
+DEAL:2d::Testing FE_Q<2>(2)
+DEAL:2d::Number of degrees of freedom: 289
+DEAL:2d:cg::Starting value 17.00
+DEAL:2d:cg:cg::Starting value 0.5046
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 0.0001009
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 2.390e-07
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg::Convergence step 3 value 2.836e-07
+DEAL:2d::Testing FE_Q<2>(2)
+DEAL:2d::Number of degrees of freedom: 1089
+DEAL:2d:cg::Starting value 33.00
+DEAL:2d:cg:cg::Starting value 1.907
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 0.0001557
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 2.528e-08
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg::Convergence step 3 value 7.105e-07
+DEAL:2d::Testing FE_Q<2>(2)
+DEAL:2d::Number of degrees of freedom: 4225
+DEAL:2d:cg::Starting value 65.00
+DEAL:2d:cg:cg::Starting value 7.521
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 0.0004595
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg:cg::Starting value 4.621e-07
+DEAL:2d:cg:cg::Convergence step 1 value 0
+DEAL:2d:cg::Convergence step 3 value 1.709e-06
+DEAL:3d::Testing FE_Q<3>(1)
+DEAL:3d::Number of degrees of freedom: 125
+DEAL:3d:cg::Starting value 11.18
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg::Convergence step 3 value 9.585e-10
+DEAL:3d::Testing FE_Q<3>(1)
+DEAL:3d::Number of degrees of freedom: 729
+DEAL:3d:cg::Starting value 27.00
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg::Convergence step 3 value 1.302e-07
+DEAL:3d::Testing FE_Q<3>(1)
+DEAL:3d::Number of degrees of freedom: 4913
+DEAL:3d:cg::Starting value 70.09
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg:cg::Convergence step 0 value 0
+DEAL:3d:cg::Convergence step 3 value 1.260e-07
+DEAL:3d::Testing FE_Q<3>(2)
+DEAL:3d::Number of degrees of freedom: 729
+DEAL:3d:cg::Starting value 27.00
+DEAL:3d:cg:cg::Starting value 1.111
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 4.641e-05
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 1.161e-07
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg::Convergence step 3 value 2.867e-08
+DEAL:3d::Testing FE_Q<3>(2)
+DEAL:3d::Number of degrees of freedom: 4913
+DEAL:3d:cg::Starting value 70.09
+DEAL:3d:cg:cg::Starting value 6.226
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 0.0006131
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 1.964e-06
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg::Convergence step 3 value 1.131e-06
+DEAL:3d::Testing FE_Q<3>(2)
+DEAL:3d::Number of degrees of freedom: 35937
+DEAL:3d:cg::Starting value 189.6
+DEAL:3d:cg:cg::Starting value 45.82
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 0.006222
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg:cg::Starting value 8.361e-06
+DEAL:3d:cg:cg::Convergence step 1 value 0
+DEAL:3d:cg::Convergence step 3 value 5.576e-06
index d2f2bd838cbc98e9bf5114d0c730fa29d179648b..1e99b8af183931cd22f812ef7edfa312c15d5be3 100644 (file)
@@ -262,10 +262,7 @@ void do_test (const DoFHandler<dim>  &dof)
       smoother_data[level].smoothing_range = 15.;
       smoother_data[level].degree = 5;
       smoother_data[level].eig_cg_n_iterations = 15;
-      smoother_data[level].preconditioner.
-      reset(new DiagonalMatrix<LinearAlgebra::distributed::Vector<number> >());
-      *smoother_data[level].preconditioner =
-        mg_matrices[level].get_matrix_diagonal_inverse();
+      smoother_data[level].preconditioner = mg_matrices[level].get_matrix_diagonal_inverse();
     }
   mg_smoother.initialize(mg_matrices, smoother_data);
 
index a415d3f647ae6070b08fc28d63d03701d0b510ff..d23eec9f0f426debf1ec9c4f1d7d976f56b658e9 100644 (file)
@@ -261,10 +261,7 @@ void do_test (const DoFHandler<dim>  &dof)
       smoother_data[level].smoothing_range = 15.;
       smoother_data[level].degree = 5;
       smoother_data[level].eig_cg_n_iterations = 15;
-      smoother_data[level].preconditioner.
-      reset(new DiagonalMatrix<LinearAlgebra::distributed::Vector<number> >());
-      *smoother_data[level].preconditioner =
-        mg_matrices[level].get_matrix_diagonal_inverse();
+      smoother_data[level].preconditioner = mg_matrices[level].get_matrix_diagonal_inverse();
     }
   mg_smoother.initialize(mg_matrices, smoother_data);
 

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.