]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Make write_gnuplot_dof_support_point_info more robust by lexicographic indices with...
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Wed, 13 Dec 2017 13:19:52 +0000 (14:19 +0100)
committerMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Wed, 13 Dec 2017 13:22:29 +0000 (14:22 +0100)
source/dofs/dof_tools.cc
tests/dofs/dof_tools_write_gnuplot_dof_support_point_info_03.output
tests/mpi/renumber_cuthill_mckee_03.mpirun=2.output

index 7ad39de9c3b1ace54b008c7fbacb70faf678fb4f..727a99eb4c0f9b37194405e49f3f1abd98b595d0 100644 (file)
@@ -59,10 +59,10 @@ namespace DoFTools
      * "less" than the other one. This can be used to use Point<dim> as a key in
      * std::map.
      *
-     * Comparison is done by comparing values in each dimension in ascending
-     * order (first x, then y, etc.). Note that comparisons are done without an
-     * epsilon, so points need to have identical floating point components to be
-     * considered equal.
+     * Comparison is done through an artificial downstream direction that
+     * tells directions apart through a factor of 1e-5. The final comparison
+     * is done without an epsilon, so points need to have identical floating
+     * point components to be considered equal.
      */
     template <int dim,typename Number=double>
     struct ComparisonHelper
@@ -75,13 +75,14 @@ namespace DoFTools
       bool operator() (const Point<dim, Number> &lhs,
                        const Point<dim, Number> &rhs) const
       {
+        double downstream_size = 0;
+        double weight = 1.;
         for (unsigned int d=0; d<dim; ++d)
           {
-            if (lhs[d] == rhs[d])
-              continue;
-            return lhs[d]<rhs[d];
+            downstream_size += (lhs[d] - rhs[d]) * weight;
+            weight *= 1e-5;
           }
-        return false;
+        return downstream_size < 0;
       }
 
     };
index e27f1e9d7ef5b854270bc7afb9802f78ef67b19b..7c90b8c7c40d5bc3c0777e25c5c881065565fa78 100644 (file)
@@ -24,8 +24,8 @@ plot '-' using 1:2 with lines, '-' with labels point pt 2 offset 1,1
 
 e
 0.00000 0.500000 "16"
+5.74053e-17 0.750000 "17"
 0.00000 1.00000 "15"
-5.74034e-17 0.750000 "17"
 0.129404 0.482944 "19"
 0.194107 0.724416 "20"
 0.250000 0.433013 "10"
index ea74e81c8a833d952f62f82a67a8bb223333a8c8..c49eab973b8df3121261759189038bd25c98d534 100644 (file)
@@ -207,17 +207,17 @@ DEAL:0:3d::       dof indices: 49 39 40 28 21 22 23 24
 -0.500000 -1.00000 -0.500000 "29"
 -0.500000 -1.00000 0.00000 "1"
 -0.500000 -1.00000 0.500000 "79"
+-0.500000 -0.500000 -1.00000 "66"
 -0.500000 -0.500000 -0.500000 "41"
+-0.500000 -0.500000 0.00000 "3"
 -0.500000 -0.500000 0.500000 "91"
--0.500000 -0.500000 -1.00000 "66"
--0.500000 -0.500000 3.46945e-18 "3"
 -0.500000 0.00000 -1.00000 "68"
 -0.500000 0.00000 -0.500000 "43"
--0.500000 0.00000 6.93889e-18 "7"
+-0.500000 0.00000 0.00000 "7"
 -0.500000 0.00000 0.500000 "93"
 -0.500000 0.500000 -1.00000 "72"
--0.500000 0.500000 3.46945e-18 "16"
 -0.500000 0.500000 -0.500000 "47"
+-0.500000 0.500000 0.00000 "16"
 -0.500000 0.500000 0.500000 "97"
 -0.500000 1.00000 -1.00000 "62"
 -0.500000 1.00000 -0.500000 "37"
@@ -229,15 +229,15 @@ DEAL:0:3d::       dof indices: 49 39 40 28 21 22 23 24
 0.00000 -1.00000 0.500000 "81"
 0.00000 -0.500000 -1.00000 "67"
 0.00000 -0.500000 -0.500000 "42"
-0.00000 -0.500000 6.93889e-18 "5"
+0.00000 -0.500000 0.00000 "5"
 0.00000 -0.500000 0.500000 "92"
 0.00000 0.00000 -1.00000 "69"
 0.00000 0.00000 -0.500000 "44"
-0.00000 0.00000 1.38778e-17 "8"
+0.00000 0.00000 0.00000 "8"
 0.00000 0.00000 0.500000 "94"
 0.00000 0.500000 -1.00000 "73"
 0.00000 0.500000 -0.500000 "48"
-0.00000 0.500000 6.93889e-18 "17"
+0.00000 0.500000 0.00000 "17"
 0.00000 0.500000 0.500000 "98"
 0.00000 1.00000 -1.00000 "63"
 0.00000 1.00000 -0.500000 "38"
@@ -247,17 +247,17 @@ DEAL:0:3d::       dof indices: 49 39 40 28 21 22 23 24
 0.500000 -1.00000 -0.500000 "33"
 0.500000 -1.00000 0.00000 "9"
 0.500000 -1.00000 0.500000 "83"
+0.500000 -0.500000 -1.00000 "70"
 0.500000 -0.500000 -0.500000 "45"
+0.500000 -0.500000 0.00000 "10"
 0.500000 -0.500000 0.500000 "95"
-0.500000 -0.500000 -1.00000 "70"
-0.500000 -0.500000 3.46945e-18 "10"
 0.500000 0.00000 -1.00000 "71"
 0.500000 0.00000 -0.500000 "46"
-0.500000 0.00000 6.93889e-18 "13"
+0.500000 0.00000 0.00000 "13"
 0.500000 0.00000 0.500000 "96"
 0.500000 0.500000 -1.00000 "74"
-0.500000 0.500000 3.46945e-18 "21"
 0.500000 0.500000 -0.500000 "49"
+0.500000 0.500000 0.00000 "21"
 0.500000 0.500000 0.500000 "99"
 0.500000 1.00000 -1.00000 "65"
 0.500000 1.00000 -0.500000 "40"
@@ -493,17 +493,17 @@ DEAL:1:3d::       dof indices: 99 89 90 78 124 114 115 103
 -0.500000 -1.00000 0.500000 "79"
 -0.500000 -1.00000 1.00000 "104"
 -0.500000 -0.500000 -0.500000 "41"
+-0.500000 -0.500000 0.00000 "3"
 -0.500000 -0.500000 0.500000 "91"
--0.500000 -0.500000 3.46945e-18 "3"
 -0.500000 -0.500000 1.00000 "116"
 -0.500000 0.00000 -0.500000 "43"
--0.500000 0.00000 6.93889e-18 "7"
+-0.500000 0.00000 0.00000 "7"
 -0.500000 0.00000 0.500000 "93"
 -0.500000 0.00000 1.00000 "118"
--0.500000 0.500000 3.46945e-18 "16"
--0.500000 0.500000 1.00000 "122"
 -0.500000 0.500000 -0.500000 "47"
+-0.500000 0.500000 0.00000 "16"
 -0.500000 0.500000 0.500000 "97"
+-0.500000 0.500000 1.00000 "122"
 -0.500000 1.00000 -0.500000 "37"
 -0.500000 1.00000 0.00000 "19"
 -0.500000 1.00000 0.500000 "87"
@@ -513,15 +513,15 @@ DEAL:1:3d::       dof indices: 99 89 90 78 124 114 115 103
 0.00000 -1.00000 0.500000 "81"
 0.00000 -1.00000 1.00000 "106"
 0.00000 -0.500000 -0.500000 "42"
-0.00000 -0.500000 6.93889e-18 "5"
+0.00000 -0.500000 0.00000 "5"
 0.00000 -0.500000 0.500000 "92"
 0.00000 -0.500000 1.00000 "117"
 0.00000 0.00000 -0.500000 "44"
-0.00000 0.00000 1.38778e-17 "8"
+0.00000 0.00000 0.00000 "8"
 0.00000 0.00000 0.500000 "94"
 0.00000 0.00000 1.00000 "119"
 0.00000 0.500000 -0.500000 "48"
-0.00000 0.500000 6.93889e-18 "17"
+0.00000 0.500000 0.00000 "17"
 0.00000 0.500000 0.500000 "98"
 0.00000 0.500000 1.00000 "123"
 0.00000 1.00000 -0.500000 "38"
@@ -533,17 +533,17 @@ DEAL:1:3d::       dof indices: 99 89 90 78 124 114 115 103
 0.500000 -1.00000 0.500000 "83"
 0.500000 -1.00000 1.00000 "108"
 0.500000 -0.500000 -0.500000 "45"
+0.500000 -0.500000 0.00000 "10"
 0.500000 -0.500000 0.500000 "95"
-0.500000 -0.500000 3.46945e-18 "10"
 0.500000 -0.500000 1.00000 "120"
 0.500000 0.00000 -0.500000 "46"
-0.500000 0.00000 6.93889e-18 "13"
+0.500000 0.00000 0.00000 "13"
 0.500000 0.00000 0.500000 "96"
 0.500000 0.00000 1.00000 "121"
-0.500000 0.500000 3.46945e-18 "21"
-0.500000 0.500000 1.00000 "124"
 0.500000 0.500000 -0.500000 "49"
+0.500000 0.500000 0.00000 "21"
 0.500000 0.500000 0.500000 "99"
+0.500000 0.500000 1.00000 "124"
 0.500000 1.00000 -0.500000 "40"
 0.500000 1.00000 0.00000 "23"
 0.500000 1.00000 0.500000 "90"

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.