]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Addressed WB's comments, plus one test.
authorLuca Heltai <luca.heltai@sissa.it>
Thu, 21 Dec 2017 10:32:33 +0000 (11:32 +0100)
committerLuca Heltai <luca.heltai@sissa.it>
Fri, 29 Dec 2017 11:15:13 +0000 (12:15 +0100)
include/deal.II/base/quadrature_lib.h
source/base/quadrature_lib.cc
tests/base/quadrature_simplex_01.cc
tests/base/quadrature_simplex_01.output
tests/base/quadrature_simplex_02.cc
tests/base/quadrature_simplex_02.output
tests/base/quadrature_simplex_03.cc [new file with mode: 0644]
tests/base/quadrature_simplex_03.output [new file with mode: 0644]
tests/base/simplex.h [new file with mode: 0644]

index f61fab54180833949c6c988bd98a4aa6f8413709..03a1916961e2e14fb2c937fdfa84d29910eac85b 100644 (file)
@@ -649,12 +649,20 @@ private:
 
 /**
  * Given an arbitrary quadrature formula, return one that chops the quadrature
- * points above the principal diagonals.
+ * points above the hyper-plane defined by $\sum_i x_i = 1$). In other words,
+ * it extracts those quadrature points from the base formula that satisfy
+ * $\sum_i (\mathbf x_q)_i \le 1$."
  *
  * In general the resulting quadrature is not very useful, unless the
  * quadrature you started from has been constructed specifically to integrate
  * over triangles or tetrahedra. This class ensures that the resulting
- * quadrature formula only has quadrature points in the reference simplex.
+ * quadrature formula only has quadrature points in the reference simplex or on
+ * its boundary.
+ *
+ * No transformation is applied to the weights. The weights referring to points
+ * that live outside the reference simplex are simply discarded. If you chop a
+ * quadrature formula that is good for both the lower and upper triangles
+ * separately, then the weights should add up to 1/2.
  *
  * @author Luca Heltai, 2017.
  */
@@ -677,10 +685,22 @@ public:
    * Both the quadrature point locations and the weights are transformed, so that you
    * can effectively use the resulting quadrature to integrate on the simplex.
    *
+   * The transformation is defined as
+   * \f[
+   * x = v_0 + B \hat x
+   * \f]
+   * where the matrix $B$ is given by $B_{ij} = v[j][i]-v[0][i]$.
+   *
+   * The weights are scaled with the determinant of $B$. An assertion is thrown
+   * if the ordering of the vertices is such that the determinant of $B$ is
+   * negative (this means you attempted to construct a simplex with a negative
+   * area).
+   *
    * @param[in] vertices The vertices of the simplex you wish to integrate on
    * @return A quadrature object that can be used to integrate on the simplex
    */
-  Quadrature<dim> affine_transformation(const std::array<Point<dim>, dim+1> &vertices);
+  Quadrature<dim>
+  compute_affine_transformation(const std::array<Point<dim>, dim+1> &vertices) const;
 
 };
 
index a430d1f4e7818356c33f28e3384b2dfa0b9bdbd8..522f180988fc84b7fc0d21bf3def4edab0df505c 100644 (file)
@@ -1358,7 +1358,7 @@ QSimplex<dim>::QSimplex(const Quadrature<dim> &quad)
       double r=0;
       for (unsigned int d=0; d<dim; ++d)
         r += quad.point(i)[d];
-      if ((r-1) <= 0)
+      if (r <= 1)
         {
           this->quadrature_points.push_back(quad.point(i));
           this->weights.push_back(quad.weight(i));
@@ -1370,7 +1370,7 @@ QSimplex<dim>::QSimplex(const Quadrature<dim> &quad)
 
 template<int dim>
 Quadrature<dim>
-QSimplex<dim>::affine_transformation(const std::array<Point<dim>, dim+1>& vertices)
+QSimplex<dim>::compute_affine_transformation(const std::array<Point<dim>, dim+1>& vertices) const
 {
   std::vector<Point<dim> > qp(this->size());
   std::vector<double> w(this->size());
@@ -1384,13 +1384,14 @@ QSimplex<dim>::affine_transformation(const std::array<Point<dim>, dim+1>& vertic
   auto J = determinant(B);
 
   AssertThrow(J>0, ExcMessage("The provided vertices generate an inverted Simplex."
-                              " Make sure the vertices are oriented lexicographically."))
+                              " Make sure the vertices are oriented correctly."))
 
   for (unsigned int i=0; i<this->size(); ++i)
     {
       qp[i] = Point<dim>(vertices[0]+B*this->point(i));
       w[i] = J*this->weight(i);
     }
+
   return Quadrature<dim>(qp, w);
 }
 
index 14423810540425857f8198f948a1d0eca28f153b..58e8bf3be8e43e008acf7e076caca983e0c34a43 100644 (file)
 //
 // ---------------------------------------------------------------------
 
-// construct a simplex simplex quadrature, and check that we can
-// get an affine transformation out of it.
-
+// construct a simplex quadrature, and check that we can get an affine
+// transformation out of it.
 
 #include "../tests.h"
-
 #include <deal.II/base/quadrature_lib.h>
-
 #include <numeric>
-
-using namespace dealii;
+#include "simplex.h"
 
 template<int dim>
 void test(int n)
@@ -39,14 +35,7 @@ void test(int n)
                                                         quad.get_weights().end(),
                                                         0.0) << std::endl << std::endl;
 
-  std::array<Point<dim>, dim+1> v;
-  for (unsigned int i=0; i<dim; ++i)
-    {
-      v[i] = 2*Point<dim>::unit_vector(i);
-      v[dim] += 2*v[i];
-    }
-
-  auto quad2 = quad.affine_transformation(v);
+  auto quad2 = quad.compute_affine_transformation(get_simplex<dim>());
 
   for (auto p:quad2.get_points())
     deallog << p << std::endl;
index 18ea2a1baa98de0d35cc6fe7245801f1f4fda791..483ce17b118dc1b0f53d1581774753c538437a9a 100644 (file)
@@ -14,17 +14,17 @@ DEAL::1.00000
 DEAL::
 DEAL::# Area: 1.00000
 DEAL::
-DEAL::2.00000
-DEAL::2.20000
-DEAL::2.40000
-DEAL::2.60000
-DEAL::2.80000
 DEAL::3.00000
 DEAL::3.20000
 DEAL::3.40000
 DEAL::3.60000
 DEAL::3.80000
 DEAL::4.00000
+DEAL::4.20000
+DEAL::4.40000
+DEAL::4.60000
+DEAL::4.80000
+DEAL::5.00000
 DEAL::
 DEAL::# Area 2: 2.00000
 DEAL::
@@ -98,74 +98,74 @@ DEAL::0.00000 1.00000
 DEAL::
 DEAL::# Area: 0.547500
 DEAL::
-DEAL::2.00000 0.00000
-DEAL::1.80000 0.200000
-DEAL::1.60000 0.400000
-DEAL::1.40000 0.600000
-DEAL::1.20000 0.800000
-DEAL::1.00000 1.00000
-DEAL::0.800000 1.20000
-DEAL::0.600000 1.40000
-DEAL::0.400000 1.60000
-DEAL::0.200000 1.80000
-DEAL::0.00000 2.00000
-DEAL::2.20000 0.400000
-DEAL::2.00000 0.600000
-DEAL::1.80000 0.800000
-DEAL::1.60000 1.00000
-DEAL::1.40000 1.20000
-DEAL::1.20000 1.40000
-DEAL::1.00000 1.60000
-DEAL::0.800000 1.80000
-DEAL::0.600000 2.00000
-DEAL::0.400000 2.20000
-DEAL::2.40000 0.800000
-DEAL::2.20000 1.00000
-DEAL::2.00000 1.20000
-DEAL::1.80000 1.40000
-DEAL::1.60000 1.60000
-DEAL::1.40000 1.80000
-DEAL::1.20000 2.00000
-DEAL::1.00000 2.20000
-DEAL::0.800000 2.40000
-DEAL::2.60000 1.20000
-DEAL::2.40000 1.40000
-DEAL::2.20000 1.60000
-DEAL::2.00000 1.80000
-DEAL::1.80000 2.00000
-DEAL::1.60000 2.20000
-DEAL::1.40000 2.40000
-DEAL::1.20000 2.60000
-DEAL::2.80000 1.60000
-DEAL::2.60000 1.80000
-DEAL::2.40000 2.00000
-DEAL::2.20000 2.20000
-DEAL::2.00000 2.40000
-DEAL::1.80000 2.60000
-DEAL::1.60000 2.80000
-DEAL::3.00000 2.00000
-DEAL::2.80000 2.20000
-DEAL::2.60000 2.40000
-DEAL::2.40000 2.60000
-DEAL::2.20000 2.80000
-DEAL::2.00000 3.00000
-DEAL::3.20000 2.40000
-DEAL::3.00000 2.60000
-DEAL::2.80000 2.80000
-DEAL::2.60000 3.00000
-DEAL::2.40000 3.20000
-DEAL::3.40000 2.80000
-DEAL::3.20000 3.00000
-DEAL::3.00000 3.20000
-DEAL::2.80000 3.40000
-DEAL::3.60000 3.20000
-DEAL::3.40000 3.40000
-DEAL::3.20000 3.60000
-DEAL::3.80000 3.60000
-DEAL::3.60000 3.80000
-DEAL::4.00000 4.00000
+DEAL::4.00000 2.00000
+DEAL::3.90000 2.10000
+DEAL::3.80000 2.20000
+DEAL::3.70000 2.30000
+DEAL::3.60000 2.40000
+DEAL::3.50000 2.50000
+DEAL::3.40000 2.60000
+DEAL::3.30000 2.70000
+DEAL::3.20000 2.80000
+DEAL::3.10000 2.90000
+DEAL::3.00000 3.00000
+DEAL::3.80000 2.05000
+DEAL::3.70000 2.15000
+DEAL::3.60000 2.25000
+DEAL::3.50000 2.35000
+DEAL::3.40000 2.45000
+DEAL::3.30000 2.55000
+DEAL::3.20000 2.65000
+DEAL::3.10000 2.75000
+DEAL::3.00000 2.85000
+DEAL::2.90000 2.95000
+DEAL::3.60000 2.10000
+DEAL::3.50000 2.20000
+DEAL::3.40000 2.30000
+DEAL::3.30000 2.40000
+DEAL::3.20000 2.50000
+DEAL::3.10000 2.60000
+DEAL::3.00000 2.70000
+DEAL::2.90000 2.80000
+DEAL::2.80000 2.90000
+DEAL::3.40000 2.15000
+DEAL::3.30000 2.25000
+DEAL::3.20000 2.35000
+DEAL::3.10000 2.45000
+DEAL::3.00000 2.55000
+DEAL::2.90000 2.65000
+DEAL::2.80000 2.75000
+DEAL::2.70000 2.85000
+DEAL::3.20000 2.20000
+DEAL::3.10000 2.30000
+DEAL::3.00000 2.40000
+DEAL::2.90000 2.50000
+DEAL::2.80000 2.60000
+DEAL::2.70000 2.70000
+DEAL::2.60000 2.80000
+DEAL::3.00000 2.25000
+DEAL::2.90000 2.35000
+DEAL::2.80000 2.45000
+DEAL::2.70000 2.55000
+DEAL::2.60000 2.65000
+DEAL::2.50000 2.75000
+DEAL::2.80000 2.30000
+DEAL::2.70000 2.40000
+DEAL::2.60000 2.50000
+DEAL::2.50000 2.60000
+DEAL::2.40000 2.70000
+DEAL::2.60000 2.35000
+DEAL::2.50000 2.45000
+DEAL::2.40000 2.55000
+DEAL::2.30000 2.65000
+DEAL::2.40000 2.40000
+DEAL::2.30000 2.50000
+DEAL::2.20000 2.60000
+DEAL::2.20000 2.45000
+DEAL::2.10000 2.55000
+DEAL::2.00000 2.50000
 DEAL::
-DEAL::# Area 2: -6.57000
+DEAL::# Area 2: 0.821250
 DEAL::
 DEAL::# dim = 3
 DEAL::0.00000 0.00000 0.00000
@@ -457,292 +457,292 @@ DEAL::0.00000 0.00000 1.00000
 DEAL::
 DEAL::# Area: 0.194750
 DEAL::
-DEAL::2.00000 0.00000 0.00000
-DEAL::1.80000 0.200000 0.00000
-DEAL::1.60000 0.400000 0.00000
-DEAL::1.40000 0.600000 0.00000
-DEAL::1.20000 0.800000 0.00000
-DEAL::1.00000 1.00000 0.00000
-DEAL::0.800000 1.20000 0.00000
-DEAL::0.600000 1.40000 0.00000
-DEAL::0.400000 1.60000 0.00000
-DEAL::0.200000 1.80000 0.00000
-DEAL::0.00000 2.00000 0.00000
-DEAL::1.80000 0.00000 0.200000
-DEAL::1.60000 0.200000 0.200000
-DEAL::1.40000 0.400000 0.200000
-DEAL::1.20000 0.600000 0.200000
-DEAL::1.00000 0.800000 0.200000
-DEAL::0.800000 1.00000 0.200000
-DEAL::0.600000 1.20000 0.200000
-DEAL::0.400000 1.40000 0.200000
-DEAL::0.200000 1.60000 0.200000
-DEAL::0.00000 1.80000 0.200000
-DEAL::1.60000 0.00000 0.400000
-DEAL::1.40000 0.200000 0.400000
-DEAL::1.20000 0.400000 0.400000
-DEAL::1.00000 0.600000 0.400000
-DEAL::0.800000 0.800000 0.400000
-DEAL::0.600000 1.00000 0.400000
-DEAL::0.400000 1.20000 0.400000
-DEAL::0.200000 1.40000 0.400000
-DEAL::0.00000 1.60000 0.400000
-DEAL::1.40000 0.00000 0.600000
-DEAL::1.20000 0.200000 0.600000
-DEAL::1.00000 0.400000 0.600000
-DEAL::0.800000 0.600000 0.600000
-DEAL::0.600000 0.800000 0.600000
-DEAL::0.400000 1.00000 0.600000
-DEAL::0.200000 1.20000 0.600000
-DEAL::0.00000 1.40000 0.600000
-DEAL::1.20000 0.00000 0.800000
-DEAL::1.00000 0.200000 0.800000
-DEAL::0.800000 0.400000 0.800000
-DEAL::0.600000 0.600000 0.800000
-DEAL::0.400000 0.800000 0.800000
-DEAL::0.200000 1.00000 0.800000
-DEAL::0.00000 1.20000 0.800000
-DEAL::1.00000 0.00000 1.00000
-DEAL::0.800000 0.200000 1.00000
-DEAL::0.600000 0.400000 1.00000
-DEAL::0.400000 0.600000 1.00000
-DEAL::0.200000 0.800000 1.00000
-DEAL::0.00000 1.00000 1.00000
-DEAL::0.800000 0.00000 1.20000
-DEAL::0.600000 0.200000 1.20000
-DEAL::0.400000 0.400000 1.20000
-DEAL::0.200000 0.600000 1.20000
-DEAL::0.00000 0.800000 1.20000
-DEAL::0.600000 0.00000 1.40000
-DEAL::0.400000 0.200000 1.40000
-DEAL::0.200000 0.400000 1.40000
-DEAL::0.00000 0.600000 1.40000
-DEAL::0.400000 0.00000 1.60000
-DEAL::0.200000 0.200000 1.60000
-DEAL::0.00000 0.400000 1.60000
-DEAL::0.200000 0.00000 1.80000
-DEAL::0.00000 0.200000 1.80000
-DEAL::0.00000 0.00000 2.00000
-DEAL::2.20000 0.400000 0.400000
-DEAL::2.00000 0.600000 0.400000
-DEAL::1.80000 0.800000 0.400000
-DEAL::1.60000 1.00000 0.400000
-DEAL::1.40000 1.20000 0.400000
-DEAL::1.20000 1.40000 0.400000
-DEAL::1.00000 1.60000 0.400000
-DEAL::0.800000 1.80000 0.400000
-DEAL::0.600000 2.00000 0.400000
-DEAL::0.400000 2.20000 0.400000
-DEAL::2.00000 0.400000 0.600000
-DEAL::1.80000 0.600000 0.600000
-DEAL::1.60000 0.800000 0.600000
-DEAL::1.40000 1.00000 0.600000
-DEAL::1.20000 1.20000 0.600000
-DEAL::1.00000 1.40000 0.600000
-DEAL::0.800000 1.60000 0.600000
-DEAL::0.600000 1.80000 0.600000
-DEAL::0.400000 2.00000 0.600000
-DEAL::1.80000 0.400000 0.800000
-DEAL::1.60000 0.600000 0.800000
-DEAL::1.40000 0.800000 0.800000
-DEAL::1.20000 1.00000 0.800000
-DEAL::1.00000 1.20000 0.800000
-DEAL::0.800000 1.40000 0.800000
-DEAL::0.600000 1.60000 0.800000
-DEAL::0.400000 1.80000 0.800000
-DEAL::1.60000 0.400000 1.00000
-DEAL::1.40000 0.600000 1.00000
-DEAL::1.20000 0.800000 1.00000
-DEAL::1.00000 1.00000 1.00000
-DEAL::0.800000 1.20000 1.00000
-DEAL::0.600000 1.40000 1.00000
-DEAL::0.400000 1.60000 1.00000
-DEAL::1.40000 0.400000 1.20000
-DEAL::1.20000 0.600000 1.20000
-DEAL::1.00000 0.800000 1.20000
-DEAL::0.800000 1.00000 1.20000
-DEAL::0.600000 1.20000 1.20000
-DEAL::0.400000 1.40000 1.20000
-DEAL::1.20000 0.400000 1.40000
-DEAL::1.00000 0.600000 1.40000
-DEAL::0.800000 0.800000 1.40000
-DEAL::0.600000 1.00000 1.40000
-DEAL::0.400000 1.20000 1.40000
-DEAL::1.00000 0.400000 1.60000
-DEAL::0.800000 0.600000 1.60000
-DEAL::0.600000 0.800000 1.60000
-DEAL::0.400000 1.00000 1.60000
-DEAL::0.800000 0.400000 1.80000
-DEAL::0.600000 0.600000 1.80000
-DEAL::0.400000 0.800000 1.80000
-DEAL::0.600000 0.400000 2.00000
-DEAL::0.400000 0.600000 2.00000
-DEAL::0.400000 0.400000 2.20000
-DEAL::2.40000 0.800000 0.800000
-DEAL::2.20000 1.00000 0.800000
-DEAL::2.00000 1.20000 0.800000
-DEAL::1.80000 1.40000 0.800000
-DEAL::1.60000 1.60000 0.800000
-DEAL::1.40000 1.80000 0.800000
-DEAL::1.20000 2.00000 0.800000
-DEAL::1.00000 2.20000 0.800000
-DEAL::0.800000 2.40000 0.800000
-DEAL::2.20000 0.800000 1.00000
-DEAL::2.00000 1.00000 1.00000
-DEAL::1.80000 1.20000 1.00000
-DEAL::1.60000 1.40000 1.00000
-DEAL::1.40000 1.60000 1.00000
-DEAL::1.20000 1.80000 1.00000
-DEAL::1.00000 2.00000 1.00000
-DEAL::0.800000 2.20000 1.00000
-DEAL::2.00000 0.800000 1.20000
-DEAL::1.80000 1.00000 1.20000
-DEAL::1.60000 1.20000 1.20000
-DEAL::1.40000 1.40000 1.20000
-DEAL::1.20000 1.60000 1.20000
-DEAL::1.00000 1.80000 1.20000
-DEAL::0.800000 2.00000 1.20000
-DEAL::1.80000 0.800000 1.40000
-DEAL::1.60000 1.00000 1.40000
-DEAL::1.40000 1.20000 1.40000
-DEAL::1.20000 1.40000 1.40000
-DEAL::1.00000 1.60000 1.40000
-DEAL::0.800000 1.80000 1.40000
-DEAL::1.60000 0.800000 1.60000
-DEAL::1.40000 1.00000 1.60000
-DEAL::1.20000 1.20000 1.60000
-DEAL::1.00000 1.40000 1.60000
-DEAL::0.800000 1.60000 1.60000
-DEAL::1.40000 0.800000 1.80000
-DEAL::1.20000 1.00000 1.80000
-DEAL::1.00000 1.20000 1.80000
-DEAL::0.800000 1.40000 1.80000
-DEAL::1.20000 0.800000 2.00000
-DEAL::1.00000 1.00000 2.00000
-DEAL::0.800000 1.20000 2.00000
-DEAL::1.00000 0.800000 2.20000
-DEAL::0.800000 1.00000 2.20000
-DEAL::0.800000 0.800000 2.40000
-DEAL::2.60000 1.20000 1.20000
-DEAL::2.40000 1.40000 1.20000
-DEAL::2.20000 1.60000 1.20000
-DEAL::2.00000 1.80000 1.20000
-DEAL::1.80000 2.00000 1.20000
-DEAL::1.60000 2.20000 1.20000
-DEAL::1.40000 2.40000 1.20000
-DEAL::1.20000 2.60000 1.20000
-DEAL::2.40000 1.20000 1.40000
-DEAL::2.20000 1.40000 1.40000
-DEAL::2.00000 1.60000 1.40000
-DEAL::1.80000 1.80000 1.40000
-DEAL::1.60000 2.00000 1.40000
-DEAL::1.40000 2.20000 1.40000
-DEAL::1.20000 2.40000 1.40000
-DEAL::2.20000 1.20000 1.60000
-DEAL::2.00000 1.40000 1.60000
-DEAL::1.80000 1.60000 1.60000
-DEAL::1.60000 1.80000 1.60000
-DEAL::1.40000 2.00000 1.60000
-DEAL::1.20000 2.20000 1.60000
-DEAL::2.00000 1.20000 1.80000
-DEAL::1.80000 1.40000 1.80000
-DEAL::1.60000 1.60000 1.80000
-DEAL::1.40000 1.80000 1.80000
-DEAL::1.20000 2.00000 1.80000
-DEAL::1.80000 1.20000 2.00000
-DEAL::1.60000 1.40000 2.00000
-DEAL::1.40000 1.60000 2.00000
-DEAL::1.20000 1.80000 2.00000
-DEAL::1.60000 1.20000 2.20000
-DEAL::1.40000 1.40000 2.20000
-DEAL::1.20000 1.60000 2.20000
-DEAL::1.40000 1.20000 2.40000
-DEAL::1.20000 1.40000 2.40000
-DEAL::1.20000 1.20000 2.60000
-DEAL::2.80000 1.60000 1.60000
-DEAL::2.60000 1.80000 1.60000
-DEAL::2.40000 2.00000 1.60000
-DEAL::2.20000 2.20000 1.60000
-DEAL::2.00000 2.40000 1.60000
-DEAL::1.80000 2.60000 1.60000
-DEAL::1.60000 2.80000 1.60000
-DEAL::2.60000 1.60000 1.80000
-DEAL::2.40000 1.80000 1.80000
-DEAL::2.20000 2.00000 1.80000
-DEAL::2.00000 2.20000 1.80000
-DEAL::1.80000 2.40000 1.80000
-DEAL::1.60000 2.60000 1.80000
-DEAL::2.40000 1.60000 2.00000
-DEAL::2.20000 1.80000 2.00000
-DEAL::2.00000 2.00000 2.00000
-DEAL::1.80000 2.20000 2.00000
-DEAL::1.60000 2.40000 2.00000
-DEAL::2.20000 1.60000 2.20000
-DEAL::2.00000 1.80000 2.20000
-DEAL::1.80000 2.00000 2.20000
-DEAL::1.60000 2.20000 2.20000
-DEAL::2.00000 1.60000 2.40000
-DEAL::1.80000 1.80000 2.40000
-DEAL::1.60000 2.00000 2.40000
-DEAL::1.80000 1.60000 2.60000
-DEAL::1.60000 1.80000 2.60000
-DEAL::1.60000 1.60000 2.80000
-DEAL::3.00000 2.00000 2.00000
-DEAL::2.80000 2.20000 2.00000
-DEAL::2.60000 2.40000 2.00000
-DEAL::2.40000 2.60000 2.00000
-DEAL::2.20000 2.80000 2.00000
-DEAL::2.00000 3.00000 2.00000
-DEAL::2.80000 2.00000 2.20000
-DEAL::2.60000 2.20000 2.20000
-DEAL::2.40000 2.40000 2.20000
-DEAL::2.20000 2.60000 2.20000
-DEAL::2.00000 2.80000 2.20000
-DEAL::2.60000 2.00000 2.40000
-DEAL::2.40000 2.20000 2.40000
-DEAL::2.20000 2.40000 2.40000
-DEAL::2.00000 2.60000 2.40000
-DEAL::2.40000 2.00000 2.60000
-DEAL::2.20000 2.20000 2.60000
-DEAL::2.00000 2.40000 2.60000
-DEAL::2.20000 2.00000 2.80000
-DEAL::2.00000 2.20000 2.80000
-DEAL::2.00000 2.00000 3.00000
-DEAL::3.20000 2.40000 2.40000
-DEAL::3.00000 2.60000 2.40000
-DEAL::2.80000 2.80000 2.40000
-DEAL::2.60000 3.00000 2.40000
-DEAL::2.40000 3.20000 2.40000
-DEAL::3.00000 2.40000 2.60000
-DEAL::2.80000 2.60000 2.60000
-DEAL::2.60000 2.80000 2.60000
-DEAL::2.40000 3.00000 2.60000
-DEAL::2.80000 2.40000 2.80000
-DEAL::2.60000 2.60000 2.80000
-DEAL::2.40000 2.80000 2.80000
-DEAL::2.60000 2.40000 3.00000
-DEAL::2.40000 2.60000 3.00000
-DEAL::2.40000 2.40000 3.20000
-DEAL::3.40000 2.80000 2.80000
-DEAL::3.20000 3.00000 2.80000
-DEAL::3.00000 3.20000 2.80000
-DEAL::2.80000 3.40000 2.80000
-DEAL::3.20000 2.80000 3.00000
-DEAL::3.00000 3.00000 3.00000
-DEAL::2.80000 3.20000 3.00000
-DEAL::3.00000 2.80000 3.20000
-DEAL::2.80000 3.00000 3.20000
-DEAL::2.80000 2.80000 3.40000
-DEAL::3.60000 3.20000 3.20000
-DEAL::3.40000 3.40000 3.20000
-DEAL::3.20000 3.60000 3.20000
-DEAL::3.40000 3.20000 3.40000
-DEAL::3.20000 3.40000 3.40000
-DEAL::3.20000 3.20000 3.60000
-DEAL::3.80000 3.60000 3.60000
-DEAL::3.60000 3.80000 3.60000
-DEAL::3.60000 3.60000 3.80000
-DEAL::4.00000 4.00000 4.00000
+DEAL::4.00000 2.00000 0.00000
+DEAL::3.90000 2.10000 0.00000
+DEAL::3.80000 2.20000 0.00000
+DEAL::3.70000 2.30000 0.00000
+DEAL::3.60000 2.40000 0.00000
+DEAL::3.50000 2.50000 0.00000
+DEAL::3.40000 2.60000 0.00000
+DEAL::3.30000 2.70000 0.00000
+DEAL::3.20000 2.80000 0.00000
+DEAL::3.10000 2.90000 0.00000
+DEAL::3.00000 3.00000 0.00000
+DEAL::3.80000 2.05000 0.00000
+DEAL::3.70000 2.15000 0.00000
+DEAL::3.60000 2.25000 0.00000
+DEAL::3.50000 2.35000 0.00000
+DEAL::3.40000 2.45000 0.00000
+DEAL::3.30000 2.55000 0.00000
+DEAL::3.20000 2.65000 0.00000
+DEAL::3.10000 2.75000 0.00000
+DEAL::3.00000 2.85000 0.00000
+DEAL::2.90000 2.95000 0.00000
+DEAL::3.60000 2.10000 0.00000
+DEAL::3.50000 2.20000 0.00000
+DEAL::3.40000 2.30000 0.00000
+DEAL::3.30000 2.40000 0.00000
+DEAL::3.20000 2.50000 0.00000
+DEAL::3.10000 2.60000 0.00000
+DEAL::3.00000 2.70000 0.00000
+DEAL::2.90000 2.80000 0.00000
+DEAL::2.80000 2.90000 0.00000
+DEAL::3.40000 2.15000 0.00000
+DEAL::3.30000 2.25000 0.00000
+DEAL::3.20000 2.35000 0.00000
+DEAL::3.10000 2.45000 0.00000
+DEAL::3.00000 2.55000 0.00000
+DEAL::2.90000 2.65000 0.00000
+DEAL::2.80000 2.75000 0.00000
+DEAL::2.70000 2.85000 0.00000
+DEAL::3.20000 2.20000 0.00000
+DEAL::3.10000 2.30000 0.00000
+DEAL::3.00000 2.40000 0.00000
+DEAL::2.90000 2.50000 0.00000
+DEAL::2.80000 2.60000 0.00000
+DEAL::2.70000 2.70000 0.00000
+DEAL::2.60000 2.80000 0.00000
+DEAL::3.00000 2.25000 0.00000
+DEAL::2.90000 2.35000 0.00000
+DEAL::2.80000 2.45000 0.00000
+DEAL::2.70000 2.55000 0.00000
+DEAL::2.60000 2.65000 0.00000
+DEAL::2.50000 2.75000 0.00000
+DEAL::2.80000 2.30000 0.00000
+DEAL::2.70000 2.40000 0.00000
+DEAL::2.60000 2.50000 0.00000
+DEAL::2.50000 2.60000 0.00000
+DEAL::2.40000 2.70000 0.00000
+DEAL::2.60000 2.35000 0.00000
+DEAL::2.50000 2.45000 0.00000
+DEAL::2.40000 2.55000 0.00000
+DEAL::2.30000 2.65000 0.00000
+DEAL::2.40000 2.40000 0.00000
+DEAL::2.30000 2.50000 0.00000
+DEAL::2.20000 2.60000 0.00000
+DEAL::2.20000 2.45000 0.00000
+DEAL::2.10000 2.55000 0.00000
+DEAL::2.00000 2.50000 0.00000
+DEAL::4.05000 2.10000 0.200000
+DEAL::3.95000 2.20000 0.200000
+DEAL::3.85000 2.30000 0.200000
+DEAL::3.75000 2.40000 0.200000
+DEAL::3.65000 2.50000 0.200000
+DEAL::3.55000 2.60000 0.200000
+DEAL::3.45000 2.70000 0.200000
+DEAL::3.35000 2.80000 0.200000
+DEAL::3.25000 2.90000 0.200000
+DEAL::3.15000 3.00000 0.200000
+DEAL::3.85000 2.15000 0.200000
+DEAL::3.75000 2.25000 0.200000
+DEAL::3.65000 2.35000 0.200000
+DEAL::3.55000 2.45000 0.200000
+DEAL::3.45000 2.55000 0.200000
+DEAL::3.35000 2.65000 0.200000
+DEAL::3.25000 2.75000 0.200000
+DEAL::3.15000 2.85000 0.200000
+DEAL::3.05000 2.95000 0.200000
+DEAL::3.65000 2.20000 0.200000
+DEAL::3.55000 2.30000 0.200000
+DEAL::3.45000 2.40000 0.200000
+DEAL::3.35000 2.50000 0.200000
+DEAL::3.25000 2.60000 0.200000
+DEAL::3.15000 2.70000 0.200000
+DEAL::3.05000 2.80000 0.200000
+DEAL::2.95000 2.90000 0.200000
+DEAL::3.45000 2.25000 0.200000
+DEAL::3.35000 2.35000 0.200000
+DEAL::3.25000 2.45000 0.200000
+DEAL::3.15000 2.55000 0.200000
+DEAL::3.05000 2.65000 0.200000
+DEAL::2.95000 2.75000 0.200000
+DEAL::2.85000 2.85000 0.200000
+DEAL::3.25000 2.30000 0.200000
+DEAL::3.15000 2.40000 0.200000
+DEAL::3.05000 2.50000 0.200000
+DEAL::2.95000 2.60000 0.200000
+DEAL::2.85000 2.70000 0.200000
+DEAL::2.75000 2.80000 0.200000
+DEAL::3.05000 2.35000 0.200000
+DEAL::2.95000 2.45000 0.200000
+DEAL::2.85000 2.55000 0.200000
+DEAL::2.75000 2.65000 0.200000
+DEAL::2.65000 2.75000 0.200000
+DEAL::2.85000 2.40000 0.200000
+DEAL::2.75000 2.50000 0.200000
+DEAL::2.65000 2.60000 0.200000
+DEAL::2.55000 2.70000 0.200000
+DEAL::2.65000 2.45000 0.200000
+DEAL::2.55000 2.55000 0.200000
+DEAL::2.45000 2.65000 0.200000
+DEAL::2.45000 2.50000 0.200000
+DEAL::2.35000 2.60000 0.200000
+DEAL::2.25000 2.55000 0.200000
+DEAL::4.10000 2.20000 0.400000
+DEAL::4.00000 2.30000 0.400000
+DEAL::3.90000 2.40000 0.400000
+DEAL::3.80000 2.50000 0.400000
+DEAL::3.70000 2.60000 0.400000
+DEAL::3.60000 2.70000 0.400000
+DEAL::3.50000 2.80000 0.400000
+DEAL::3.40000 2.90000 0.400000
+DEAL::3.30000 3.00000 0.400000
+DEAL::3.90000 2.25000 0.400000
+DEAL::3.80000 2.35000 0.400000
+DEAL::3.70000 2.45000 0.400000
+DEAL::3.60000 2.55000 0.400000
+DEAL::3.50000 2.65000 0.400000
+DEAL::3.40000 2.75000 0.400000
+DEAL::3.30000 2.85000 0.400000
+DEAL::3.20000 2.95000 0.400000
+DEAL::3.70000 2.30000 0.400000
+DEAL::3.60000 2.40000 0.400000
+DEAL::3.50000 2.50000 0.400000
+DEAL::3.40000 2.60000 0.400000
+DEAL::3.30000 2.70000 0.400000
+DEAL::3.20000 2.80000 0.400000
+DEAL::3.10000 2.90000 0.400000
+DEAL::3.50000 2.35000 0.400000
+DEAL::3.40000 2.45000 0.400000
+DEAL::3.30000 2.55000 0.400000
+DEAL::3.20000 2.65000 0.400000
+DEAL::3.10000 2.75000 0.400000
+DEAL::3.00000 2.85000 0.400000
+DEAL::3.30000 2.40000 0.400000
+DEAL::3.20000 2.50000 0.400000
+DEAL::3.10000 2.60000 0.400000
+DEAL::3.00000 2.70000 0.400000
+DEAL::2.90000 2.80000 0.400000
+DEAL::3.10000 2.45000 0.400000
+DEAL::3.00000 2.55000 0.400000
+DEAL::2.90000 2.65000 0.400000
+DEAL::2.80000 2.75000 0.400000
+DEAL::2.90000 2.50000 0.400000
+DEAL::2.80000 2.60000 0.400000
+DEAL::2.70000 2.70000 0.400000
+DEAL::2.70000 2.55000 0.400000
+DEAL::2.60000 2.65000 0.400000
+DEAL::2.50000 2.60000 0.400000
+DEAL::4.15000 2.30000 0.600000
+DEAL::4.05000 2.40000 0.600000
+DEAL::3.95000 2.50000 0.600000
+DEAL::3.85000 2.60000 0.600000
+DEAL::3.75000 2.70000 0.600000
+DEAL::3.65000 2.80000 0.600000
+DEAL::3.55000 2.90000 0.600000
+DEAL::3.45000 3.00000 0.600000
+DEAL::3.95000 2.35000 0.600000
+DEAL::3.85000 2.45000 0.600000
+DEAL::3.75000 2.55000 0.600000
+DEAL::3.65000 2.65000 0.600000
+DEAL::3.55000 2.75000 0.600000
+DEAL::3.45000 2.85000 0.600000
+DEAL::3.35000 2.95000 0.600000
+DEAL::3.75000 2.40000 0.600000
+DEAL::3.65000 2.50000 0.600000
+DEAL::3.55000 2.60000 0.600000
+DEAL::3.45000 2.70000 0.600000
+DEAL::3.35000 2.80000 0.600000
+DEAL::3.25000 2.90000 0.600000
+DEAL::3.55000 2.45000 0.600000
+DEAL::3.45000 2.55000 0.600000
+DEAL::3.35000 2.65000 0.600000
+DEAL::3.25000 2.75000 0.600000
+DEAL::3.15000 2.85000 0.600000
+DEAL::3.35000 2.50000 0.600000
+DEAL::3.25000 2.60000 0.600000
+DEAL::3.15000 2.70000 0.600000
+DEAL::3.05000 2.80000 0.600000
+DEAL::3.15000 2.55000 0.600000
+DEAL::3.05000 2.65000 0.600000
+DEAL::2.95000 2.75000 0.600000
+DEAL::2.95000 2.60000 0.600000
+DEAL::2.85000 2.70000 0.600000
+DEAL::2.75000 2.65000 0.600000
+DEAL::4.20000 2.40000 0.800000
+DEAL::4.10000 2.50000 0.800000
+DEAL::4.00000 2.60000 0.800000
+DEAL::3.90000 2.70000 0.800000
+DEAL::3.80000 2.80000 0.800000
+DEAL::3.70000 2.90000 0.800000
+DEAL::3.60000 3.00000 0.800000
+DEAL::4.00000 2.45000 0.800000
+DEAL::3.90000 2.55000 0.800000
+DEAL::3.80000 2.65000 0.800000
+DEAL::3.70000 2.75000 0.800000
+DEAL::3.60000 2.85000 0.800000
+DEAL::3.50000 2.95000 0.800000
+DEAL::3.80000 2.50000 0.800000
+DEAL::3.70000 2.60000 0.800000
+DEAL::3.60000 2.70000 0.800000
+DEAL::3.50000 2.80000 0.800000
+DEAL::3.40000 2.90000 0.800000
+DEAL::3.60000 2.55000 0.800000
+DEAL::3.50000 2.65000 0.800000
+DEAL::3.40000 2.75000 0.800000
+DEAL::3.30000 2.85000 0.800000
+DEAL::3.40000 2.60000 0.800000
+DEAL::3.30000 2.70000 0.800000
+DEAL::3.20000 2.80000 0.800000
+DEAL::3.20000 2.65000 0.800000
+DEAL::3.10000 2.75000 0.800000
+DEAL::3.00000 2.70000 0.800000
+DEAL::4.25000 2.50000 1.00000
+DEAL::4.15000 2.60000 1.00000
+DEAL::4.05000 2.70000 1.00000
+DEAL::3.95000 2.80000 1.00000
+DEAL::3.85000 2.90000 1.00000
+DEAL::3.75000 3.00000 1.00000
+DEAL::4.05000 2.55000 1.00000
+DEAL::3.95000 2.65000 1.00000
+DEAL::3.85000 2.75000 1.00000
+DEAL::3.75000 2.85000 1.00000
+DEAL::3.65000 2.95000 1.00000
+DEAL::3.85000 2.60000 1.00000
+DEAL::3.75000 2.70000 1.00000
+DEAL::3.65000 2.80000 1.00000
+DEAL::3.55000 2.90000 1.00000
+DEAL::3.65000 2.65000 1.00000
+DEAL::3.55000 2.75000 1.00000
+DEAL::3.45000 2.85000 1.00000
+DEAL::3.45000 2.70000 1.00000
+DEAL::3.35000 2.80000 1.00000
+DEAL::3.25000 2.75000 1.00000
+DEAL::4.30000 2.60000 1.20000
+DEAL::4.20000 2.70000 1.20000
+DEAL::4.10000 2.80000 1.20000
+DEAL::4.00000 2.90000 1.20000
+DEAL::3.90000 3.00000 1.20000
+DEAL::4.10000 2.65000 1.20000
+DEAL::4.00000 2.75000 1.20000
+DEAL::3.90000 2.85000 1.20000
+DEAL::3.80000 2.95000 1.20000
+DEAL::3.90000 2.70000 1.20000
+DEAL::3.80000 2.80000 1.20000
+DEAL::3.70000 2.90000 1.20000
+DEAL::3.70000 2.75000 1.20000
+DEAL::3.60000 2.85000 1.20000
+DEAL::3.50000 2.80000 1.20000
+DEAL::4.35000 2.70000 1.40000
+DEAL::4.25000 2.80000 1.40000
+DEAL::4.15000 2.90000 1.40000
+DEAL::4.05000 3.00000 1.40000
+DEAL::4.15000 2.75000 1.40000
+DEAL::4.05000 2.85000 1.40000
+DEAL::3.95000 2.95000 1.40000
+DEAL::3.95000 2.80000 1.40000
+DEAL::3.85000 2.90000 1.40000
+DEAL::3.75000 2.85000 1.40000
+DEAL::4.40000 2.80000 1.60000
+DEAL::4.30000 2.90000 1.60000
+DEAL::4.20000 3.00000 1.60000
+DEAL::4.20000 2.85000 1.60000
+DEAL::4.10000 2.95000 1.60000
+DEAL::4.00000 2.90000 1.60000
+DEAL::4.45000 2.90000 1.80000
+DEAL::4.35000 3.00000 1.80000
+DEAL::4.25000 2.95000 1.80000
+DEAL::4.50000 3.00000 2.00000
 DEAL::
-DEAL::# Area 2: 7.79000
+DEAL::# Area 2: 0.584250
 DEAL::
index 0db7e9946185a95b99b3073c8e4987f32be59fad..cdb31611e23a142371ccf6da60a3c8e33b8d614e 100644 (file)
 //
 // ---------------------------------------------------------------------
 
-// construct a simplex simplex quadrature, and check that we can
-// get an affine transformation out of it.
+// construct a simplex quadrature, and check that we can get an affine
+// transformation out of it.
 
 
 #include "../tests.h"
-
 #include <deal.II/base/quadrature_lib.h>
-
 #include <numeric>
-
-using namespace dealii;
+#include "simplex.h"
 
 void test(int n)
 {
@@ -38,14 +35,7 @@ void test(int n)
                                                         quad.get_weights().end(),
                                                         0.0) << std::endl << std::endl;
 
-  std::array<Point<dim>, dim+1> v = {{
-      Point<2>(2,0),
-      Point<2>(5,4),
-      Point<2>(0,2)
-    }
-  };
-
-  auto quad2 = quad.affine_transformation(v);
+  auto quad2 = quad.compute_affine_transformation(get_simplex<dim>());
 
   for (auto p:quad2.get_points())
     deallog << p << std::endl;
index bd22a01c5395c90b123272e1daccd03c03180d03..46ca547e81b54827269538a02b0dfae3d3e63f74 100644 (file)
@@ -102,106 +102,106 @@ DEAL::0.0198229 0.967130
 DEAL::
 DEAL::# Area: 0.500000
 DEAL::
-DEAL::2.03783 0.0516629
-DEAL::2.19563 0.267163
-DEAL::2.46479 0.634742
-DEAL::2.82146 1.12183
-DEAL::3.23395 1.68516
-DEAL::3.66562 2.27467
-DEAL::4.07812 2.83800
-DEAL::4.43479 3.32509
-DEAL::4.70395 3.69267
-DEAL::4.86175 3.90817
-DEAL::2.03287 0.0496781
-DEAL::2.16997 0.256899
-DEAL::2.40382 0.610356
-DEAL::2.71371 1.07873
-DEAL::3.07210 1.62042
-DEAL::3.44715 2.18729
-DEAL::3.80554 2.72897
-DEAL::4.11543 3.19734
-DEAL::4.34928 3.55080
-DEAL::4.48638 3.75802
-DEAL::2.02579 0.0468479
-DEAL::2.13338 0.242263
-DEAL::2.31689 0.575584
-DEAL::2.56007 1.01727
-DEAL::2.84131 1.52810
-DEAL::3.13562 2.06267
-DEAL::3.41686 2.57350
-DEAL::3.66004 3.01519
-DEAL::3.84355 3.34851
-DEAL::3.95114 3.54392
-DEAL::2.01808 0.0437610
-DEAL::2.09347 0.226300
-DEAL::2.22208 0.537658
-DEAL::2.39250 0.950245
-DEAL::2.58959 1.42741
-DEAL::2.79584 1.92676
-DEAL::2.99294 2.40393
-DEAL::3.16336 2.81652
-DEAL::3.29196 3.12787
-DEAL::3.36736 3.31041
-DEAL::2.01035 0.0406727
-DEAL::2.05355 0.210330
-DEAL::2.12722 0.499714
-DEAL::2.22484 0.883184
-DEAL::2.33775 1.32668
-DEAL::2.45590 1.79079
-DEAL::2.56881 2.23428
-DEAL::2.66643 2.61775
-DEAL::2.74011 2.90713
-DEAL::2.78330 3.07679
-DEAL::2.00269 0.0376077
-DEAL::2.01392 0.194480
-DEAL::2.03308 0.462057
-DEAL::2.05846 0.816630
-DEAL::2.08781 1.22670
-DEAL::2.11853 1.65584
-DEAL::2.14789 2.06591
-DEAL::2.17327 2.42048
-DEAL::2.19242 2.68806
-DEAL::2.20365 2.84493
-DEAL::1.99497 0.0345194
-DEAL::1.97400 0.178509
-DEAL::1.93822 0.424113
-DEAL::1.89081 0.749569
-DEAL::1.83597 1.12597
-DEAL::1.77859 1.51986
-DEAL::1.72376 1.89626
-DEAL::1.67635 2.22171
-DEAL::1.64057 2.46732
-DEAL::1.61960 2.61131
-DEAL::1.98725 0.0314326
-DEAL::1.93409 0.162547
-DEAL::1.84340 0.386188
-DEAL::1.72323 0.682540
-DEAL::1.58425 1.02528
-DEAL::1.43881 1.38395
-DEAL::1.29984 1.72669
-DEAL::1.17967 2.02304
-DEAL::1.08898 2.24668
-DEAL::1.03581 2.37779
-DEAL::1.98018 0.0286023
-DEAL::1.89750 0.147911
-DEAL::1.75647 0.351415
-DEAL::1.56959 0.621083
-DEAL::1.35346 0.932961
-DEAL::1.12728 1.25934
-DEAL::0.911155 1.57122
-DEAL::0.724276 1.84088
-DEAL::0.583248 2.04439
-DEAL::0.500568 2.16370
-DEAL::1.97522 0.0266176
-DEAL::1.87184 0.137647
-DEAL::1.69551 0.327029
-DEAL::1.46185 0.577985
-DEAL::1.19161 0.868220
-DEAL::0.908813 1.17195
-DEAL::0.638579 1.46219
-DEAL::0.404918 1.71314
-DEAL::0.228586 1.90252
-DEAL::0.125208 2.01355
+DEAL::3.98669 2.01292
+DEAL::3.93118 2.06679
+DEAL::3.83649 2.15869
+DEAL::3.71101 2.28046
+DEAL::3.56589 2.42129
+DEAL::3.41403 2.56867
+DEAL::3.26891 2.70950
+DEAL::3.14343 2.83127
+DEAL::3.04874 2.92317
+DEAL::2.99322 2.97704
+DEAL::3.98570 2.01242
+DEAL::3.92604 2.06422
+DEAL::3.82429 2.15259
+DEAL::3.68946 2.26968
+DEAL::3.53352 2.40510
+DEAL::3.37033 2.54682
+DEAL::3.21439 2.68224
+DEAL::3.07956 2.79934
+DEAL::2.97781 2.88770
+DEAL::2.91815 2.93951
+DEAL::3.98428 2.01171
+DEAL::3.91873 2.06057
+DEAL::3.80691 2.14390
+DEAL::3.65873 2.25432
+DEAL::3.48736 2.38202
+DEAL::3.30803 2.51567
+DEAL::3.13666 2.64337
+DEAL::2.98848 2.75380
+DEAL::2.87666 2.83713
+DEAL::2.81110 2.88598
+DEAL::3.98274 2.01094
+DEAL::3.91075 2.05658
+DEAL::3.78794 2.13441
+DEAL::3.62522 2.23756
+DEAL::3.43702 2.35685
+DEAL::3.24007 2.48169
+DEAL::3.05187 2.60098
+DEAL::2.88914 2.70413
+DEAL::2.76634 2.78197
+DEAL::2.69435 2.82760
+DEAL::3.98120 2.01017
+DEAL::3.90276 2.05258
+DEAL::3.76897 2.12493
+DEAL::3.59169 2.22080
+DEAL::3.38665 2.33167
+DEAL::3.17208 2.44770
+DEAL::2.96705 2.55857
+DEAL::2.78976 2.65444
+DEAL::2.65597 2.72678
+DEAL::2.57753 2.76920
+DEAL::3.97966 2.00940
+DEAL::3.89484 2.04862
+DEAL::3.75014 2.11551
+DEAL::3.55841 2.20416
+DEAL::3.33666 2.30668
+DEAL::3.10461 2.41396
+DEAL::2.88286 2.51648
+DEAL::2.69113 2.60512
+DEAL::2.54643 2.67201
+DEAL::2.46161 2.71123
+DEAL::3.97812 2.00863
+DEAL::3.88685 2.04463
+DEAL::3.73117 2.10603
+DEAL::3.52488 2.18739
+DEAL::3.28629 2.28149
+DEAL::3.03662 2.37997
+DEAL::2.79804 2.47406
+DEAL::2.59174 2.55543
+DEAL::2.43606 2.61683
+DEAL::2.34479 2.65283
+DEAL::3.97658 2.00786
+DEAL::3.87887 2.04064
+DEAL::3.71221 2.09655
+DEAL::3.49136 2.17063
+DEAL::3.23595 2.25632
+DEAL::2.96866 2.34599
+DEAL::2.71325 2.43167
+DEAL::2.49241 2.50576
+DEAL::2.32575 2.56167
+DEAL::2.22804 2.59445
+DEAL::3.97516 2.00715
+DEAL::3.87155 2.03698
+DEAL::3.69482 2.08785
+DEAL::3.46063 2.15527
+DEAL::3.18979 2.23324
+DEAL::2.90636 2.31483
+DEAL::2.63551 2.39280
+DEAL::2.40133 2.46022
+DEAL::2.22460 2.51110
+DEAL::2.12099 2.54092
+DEAL::3.97417 2.00665
+DEAL::3.86642 2.03441
+DEAL::3.68263 2.08176
+DEAL::3.43909 2.14450
+DEAL::3.15742 2.21706
+DEAL::2.86266 2.29299
+DEAL::2.58100 2.36555
+DEAL::2.33746 2.42829
+DEAL::2.15367 2.47563
+DEAL::2.04592 2.50339
 DEAL::
-DEAL::# Area 2: 7.00000
+DEAL::# Area 2: 0.750000
 DEAL::
diff --git a/tests/base/quadrature_simplex_03.cc b/tests/base/quadrature_simplex_03.cc
new file mode 100644 (file)
index 0000000..93fb2ae
--- /dev/null
@@ -0,0 +1,55 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2017 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// construct an anisotropic simplex quadrature, and check that we can
+// get an affine transformation out of it.
+
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <numeric>
+#include "simplex.h"
+
+void test(int n)
+{
+  const unsigned int dim = 2;
+
+  QTrianglePolar quad(QGauss<1>(10), QGauss<1>(5));
+
+  for (auto p:quad.get_points())
+    deallog << p << std::endl;
+
+  deallog << std::endl << "# Area: " << std::accumulate(quad.get_weights().begin(),
+                                                        quad.get_weights().end(),
+                                                        0.0) << std::endl << std::endl;
+
+  auto quad2 = quad.compute_affine_transformation(get_simplex<2>());
+
+  for (auto p:quad2.get_points())
+    deallog << p << std::endl;
+
+
+  deallog << std::endl << "# Area 2: " << std::accumulate(quad2.get_weights().begin(),
+                                                          quad2.get_weights().end(),
+                                                          0.0) << std::endl << std::endl;
+
+}
+
+
+int main()
+{
+  initlog();
+  test(10);
+}
diff --git a/tests/base/quadrature_simplex_03.output b/tests/base/quadrature_simplex_03.output
new file mode 100644 (file)
index 0000000..729dd51
--- /dev/null
@@ -0,0 +1,107 @@
+
+DEAL::0.0121498 0.000896899
+DEAL::0.0628302 0.00463811
+DEAL::0.149276 0.0110195
+DEAL::0.263827 0.0194756
+DEAL::0.396307 0.0292554
+DEAL::0.534947 0.0394897
+DEAL::0.667428 0.0492694
+DEAL::0.781979 0.0577256
+DEAL::0.868425 0.0641070
+DEAL::0.919105 0.0678482
+DEAL::0.00945935 0.00358739
+DEAL::0.0489169 0.0185514
+DEAL::0.116220 0.0440755
+DEAL::0.205404 0.0778981
+DEAL::0.308548 0.117015
+DEAL::0.416487 0.157950
+DEAL::0.519631 0.197066
+DEAL::0.608816 0.230889
+DEAL::0.676118 0.256413
+DEAL::0.715576 0.271377
+DEAL::0.00652337 0.00652337
+DEAL::0.0337342 0.0337342
+DEAL::0.0801476 0.0801476
+DEAL::0.141651 0.141651
+DEAL::0.212781 0.212781
+DEAL::0.287219 0.287219
+DEAL::0.358349 0.358349
+DEAL::0.419852 0.419852
+DEAL::0.466266 0.466266
+DEAL::0.493477 0.493477
+DEAL::0.00358739 0.00945935
+DEAL::0.0185514 0.0489169
+DEAL::0.0440755 0.116220
+DEAL::0.0778981 0.205404
+DEAL::0.117015 0.308548
+DEAL::0.157950 0.416487
+DEAL::0.197066 0.519631
+DEAL::0.230889 0.608816
+DEAL::0.256413 0.676118
+DEAL::0.271377 0.715576
+DEAL::0.000896899 0.0121498
+DEAL::0.00463811 0.0628302
+DEAL::0.0110195 0.149276
+DEAL::0.0194756 0.263827
+DEAL::0.0292554 0.396307
+DEAL::0.0394897 0.534947
+DEAL::0.0492694 0.667428
+DEAL::0.0577256 0.781979
+DEAL::0.0641070 0.868425
+DEAL::0.0678482 0.919105
+DEAL::
+DEAL::# Area: 0.499988
+DEAL::
+DEAL::3.98606 2.01260
+DEAL::3.92789 2.06515
+DEAL::3.82869 2.15479
+DEAL::3.69722 2.27356
+DEAL::3.54518 2.41094
+DEAL::3.38607 2.55469
+DEAL::3.23403 2.69206
+DEAL::3.10257 2.81084
+DEAL::3.00336 2.90048
+DEAL::2.94520 2.95303
+DEAL::3.98337 2.01125
+DEAL::3.91398 2.05819
+DEAL::3.79563 2.13826
+DEAL::3.63880 2.24435
+DEAL::3.45742 2.36706
+DEAL::3.26761 2.49546
+DEAL::3.08624 2.61816
+DEAL::2.92941 2.72426
+DEAL::2.81106 2.80433
+DEAL::2.74167 2.85126
+DEAL::3.98043 2.00979
+DEAL::3.89880 2.05060
+DEAL::3.75956 2.12022
+DEAL::3.57505 2.21248
+DEAL::3.36166 2.31917
+DEAL::3.13834 2.43083
+DEAL::2.92495 2.53752
+DEAL::2.74044 2.62978
+DEAL::2.60120 2.69940
+DEAL::2.51957 2.74021
+DEAL::3.97749 2.00832
+DEAL::3.88361 2.04301
+DEAL::3.72349 2.10219
+DEAL::3.51129 2.18060
+DEAL::3.26589 2.27129
+DEAL::3.00908 2.36619
+DEAL::2.76367 2.45688
+DEAL::2.55148 2.53530
+DEAL::2.39135 2.59447
+DEAL::2.29747 2.62917
+DEAL::3.97480 2.00697
+DEAL::3.86970 2.03605
+DEAL::3.69043 2.08566
+DEAL::3.45287 2.15139
+DEAL::3.17813 2.22741
+DEAL::2.89062 2.30696
+DEAL::2.61587 2.38298
+DEAL::2.37832 2.44872
+DEAL::2.19904 2.49832
+DEAL::2.09394 2.52740
+DEAL::
+DEAL::# Area 2: 0.749982
+DEAL::
diff --git a/tests/base/simplex.h b/tests/base/simplex.h
new file mode 100644 (file)
index 0000000..5eefe54
--- /dev/null
@@ -0,0 +1,55 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2017 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// construct a simplex quadrature, and check that we can get an affine
+// transformation out of it.
+#ifndef tests_base_simplex_h
+#define tests_base_simplex_h
+
+#include "../tests.h"
+
+#include <deal.II/base/quadrature_lib.h>
+
+#include "simplex.h"
+
+#include <numeric>
+
+
+// Helper functions
+template<int dim>
+std::array<Point<dim>, dim+1> get_simplex();
+
+template<>
+std::array<Point<1>, 2> get_simplex()
+{
+  return {{Point<1>(3), Point<1>(5)}};
+}
+
+
+template<>
+std::array<Point<2>, 3> get_simplex()
+{
+  return {{Point<2>(4,2), Point<2>(3,3), Point<2>(2,2.5)}};
+}
+
+
+template<>
+std::array<Point<3>, 4> get_simplex()
+{
+  return {{Point<3>(4,2,0), Point<3>(3,3,0), Point<3>(2,2.5,0), Point<3>(4.5, 3, 2)}};
+}
+
+
+#endif

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.