]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Adapt the first three tests in tests/umfpack to test for the transpose as well.
authorMatthias Maier <tamiko@kyomu.43-1.org>
Wed, 3 Jul 2013 09:01:46 +0000 (09:01 +0000)
committerMatthias Maier <tamiko@kyomu.43-1.org>
Wed, 3 Jul 2013 09:01:46 +0000 (09:01 +0000)
git-svn-id: https://svn.dealii.org/trunk@29924 0785d39b-7218-0410-832d-ea1e28bc413d

tests/umfpack/umfpack_01.cc
tests/umfpack/umfpack_01/cmp/generic
tests/umfpack/umfpack_02.cc
tests/umfpack/umfpack_02/cmp/generic
tests/umfpack/umfpack_03.cc
tests/umfpack/umfpack_03/cmp/generic

index 7aa5b088b7d9ea8eb5ddf0ac196ad765a6281cea..246ff8044e22a97cccf1b25cb2ef9c8015367f35 100644 (file)
@@ -12,6 +12,7 @@
 //----------------------------------------------------------------------
 
 // test the umfpack sparse direct solver on a mass matrix
+// test of the transpose as well
 
 #include "../tests.h"
 #include <iostream>
@@ -39,7 +40,7 @@
 
 
 template <int dim>
-void test ()
+void test (bool transpose = false)
 {
   deallog << dim << 'd' << std::endl;
   
@@ -84,9 +85,13 @@ void test ()
       for (unsigned int j=0; j<dof_handler.n_dofs(); ++j)
         solution(j) = j+j*(i+1)*(i+1);
 
-      B.vmult (b, solution);
+      if (transpose)
+        B.Tvmult (b, solution);
+      else
+        B.vmult (b, solution);
+
       x = b;
-      SparseDirectUMFPACK().solve (B, x);
+      SparseDirectUMFPACK().solve (B, x, transpose);
 
       x -= solution;
       deallog << "relative norm distance = "
@@ -111,4 +116,8 @@ int main ()
   test<1> ();
   test<2> ();
   test<3> ();
+
+  test<1> (/*transpose =*/ true);
+  test<2> (/*transpose =*/ true);
+  test<3> (/*transpose =*/ true);
 }
index 8df3f884c1722765a5f173d586e9e6ce9c4f9d8f..5cbb5f87649c50ac5caa6d6d0e97c63c28fcdd8d 100644 (file)
@@ -23,3 +23,27 @@ DEAL::relative norm distance = 0
 DEAL::absolute norms = 0 140414.
 DEAL::relative norm distance = 0
 DEAL::absolute norms = 0 280828.
+DEAL::1d
+DEAL::Number of dofs = 193
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 3084.00
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 7709.99
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 15420.0
+DEAL::2d
+DEAL::Number of dofs = 1889
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 94764.3
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 236911.
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 473822.
+DEAL::3d
+DEAL::Number of dofs = 1333
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 56165.6
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 140414.
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 280828.
index 2554f6cbca4fe390f758aab619bcfc7726e0fa5f..4eae46c954e7238e513496541ef6d05c316f8760 100644 (file)
@@ -41,7 +41,7 @@
 
 
 template <int dim>
-void test ()
+void test (bool transpose = false)
 {
   deallog << dim << 'd' << std::endl;
   
@@ -90,9 +90,13 @@ void test ()
       for (unsigned int j=0; j<dof_handler.n_dofs(); ++j)
         solution(j) = j+j*(i+1)*(i+1);
 
-      B.vmult (b, solution);
+      if (transpose)
+        B.Tvmult (b, solution);
+      else
+        B.vmult (b, solution);
+
       x = b;
-      Binv.solve (x);
+      Binv.solve (x, transpose);
 
       x -= solution;
       deallog << "relative norm distance = "
@@ -117,4 +121,8 @@ int main ()
   test<1> ();
   test<2> ();
   test<3> ();
+
+  test<1> (/*transpose =*/ true);
+  test<2> (/*transpose =*/ true);
+  test<3> (/*transpose =*/ true);
 }
index 8df3f884c1722765a5f173d586e9e6ce9c4f9d8f..5cbb5f87649c50ac5caa6d6d0e97c63c28fcdd8d 100644 (file)
@@ -23,3 +23,27 @@ DEAL::relative norm distance = 0
 DEAL::absolute norms = 0 140414.
 DEAL::relative norm distance = 0
 DEAL::absolute norms = 0 280828.
+DEAL::1d
+DEAL::Number of dofs = 193
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 3084.00
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 7709.99
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 15420.0
+DEAL::2d
+DEAL::Number of dofs = 1889
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 94764.3
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 236911.
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 473822.
+DEAL::3d
+DEAL::Number of dofs = 1333
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 56165.6
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 140414.
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 280828.
index 4249df449c2cbb175922e72a66c3bb8aedf57094..753672cbbd98d0a518076036ebdee0cbd22916fe 100644 (file)
@@ -12,6 +12,7 @@
 //----------------------------------------------------------------------
 
 // test the umfpack sparse direct solver on a mass matrix that is slightly modified to make it nonsymmetric
+// test for the transpose as well
 
 #include "../tests.h"
 #include <iostream>
@@ -39,7 +40,7 @@
 
 
 template <int dim>
-void test ()
+void test (bool transpose = false)
 {
   deallog << dim << 'd' << std::endl;
 
@@ -101,9 +102,13 @@ void test ()
       for (unsigned int j=0; j<dof_handler.n_dofs(); ++j)
         solution(j) = j+j*(i+1)*(i+1);
 
-      B.vmult (b, solution);
+      if (transpose)
+        B.Tvmult (b, solution);
+      else
+        B.vmult (b, solution);
+
       x = b;
-      SparseDirectUMFPACK().solve (B, x);
+      SparseDirectUMFPACK().solve (B, x, transpose);
 
       x -= solution;
       deallog << "relative norm distance = "
@@ -128,4 +133,8 @@ int main ()
   test<1> ();
   test<2> ();
   test<3> ();
+
+  test<1> (/*transpose =*/ true);
+  test<2> (/*transpose =*/ true);
+  test<3> (/*transpose =*/ true);
 }
index 8df3f884c1722765a5f173d586e9e6ce9c4f9d8f..5cbb5f87649c50ac5caa6d6d0e97c63c28fcdd8d 100644 (file)
@@ -23,3 +23,27 @@ DEAL::relative norm distance = 0
 DEAL::absolute norms = 0 140414.
 DEAL::relative norm distance = 0
 DEAL::absolute norms = 0 280828.
+DEAL::1d
+DEAL::Number of dofs = 193
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 3084.00
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 7709.99
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 15420.0
+DEAL::2d
+DEAL::Number of dofs = 1889
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 94764.3
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 236911.
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 473822.
+DEAL::3d
+DEAL::Number of dofs = 1333
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 56165.6
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 140414.
+DEAL::relative norm distance = 0
+DEAL::absolute norms = 0 280828.

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.