]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Fixed bug in dof_test
authorheltai <heltai@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 28 Jan 2014 15:59:15 +0000 (15:59 +0000)
committerheltai <heltai@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 28 Jan 2014 15:59:15 +0000 (15:59 +0000)
git-svn-id: https://svn.dealii.org/branches/branch_manifold_id@32335 0785d39b-7218-0410-832d-ea1e28bc413d

tests/deal.II/dof_test.cc

index bf41611661b081d593557798bb7b4afc17d349be..65099565279b603ff6c7bc9b8a9c32da8fdcdd8d 100644 (file)
@@ -50,9 +50,10 @@ class Ball
 {
 public:
   virtual Point<dim>
-  get_new_point_on_line (const typename Triangulation<dim>::line_iterator &line) const
+  get_new_point (const std::vector<Point<dim> > &p,
+                const std::vector<double> &w) const
   {
-    Point<dim> middle = StraightBoundary<dim>::get_new_point_on_line(line);
+    Point<dim> middle = StraightBoundary<dim>::get_new_point(p,w);
 
     for (int i=0; i<dim; ++i)
       middle(i) -= .5;
@@ -61,22 +62,7 @@ public:
       middle(i) += .5;
 
     return middle;
-  }
-
-
-  virtual Point<dim>
-  get_new_point_on_quad (const typename Triangulation<dim>::quad_iterator &quad) const
-  {
-    Point<dim> middle = StraightBoundary<dim>::get_new_point_on_quad(quad);
-
-    for (int i=0; i<dim; ++i)
-      middle(i) -= .5;
-    middle *= std::sqrt(static_cast<double>(dim)) / (std::sqrt(middle.square())*2);
-    for (int i=0; i<dim; ++i)
-      middle(i) += .5;
-
-    return middle;
-  }
+  };
 };
 
 
@@ -87,18 +73,18 @@ class CurvedLine
 {
 public:
   virtual Point<dim>
-  get_new_point_on_line (const typename Triangulation<dim>::line_iterator &line) const;
-
-  virtual Point<dim>
-  get_new_point_on_quad (const typename Triangulation<dim>::quad_iterator &quad) const;
+  get_new_point (const std::vector<Point<dim> > &p,
+                const std::vector<double> &w) const;
 };
 
 
 template <int dim>
 Point<dim>
-CurvedLine<dim>::get_new_point_on_line (const typename Triangulation<dim>::line_iterator &line) const
+CurvedLine<dim>::get_new_point (const std::vector<Point<dim> > &p,
+                               const std::vector<double> &w) const
+
 {
-  Point<dim> middle = StraightBoundary<dim>::get_new_point_on_line (line);
+  Point<dim> middle = StraightBoundary<dim>::get_new_point (p,w);
 
   // if the line is at the top of bottom
   // face: do a special treatment on
@@ -106,48 +92,40 @@ CurvedLine<dim>::get_new_point_on_line (const typename Triangulation<dim>::line_
   // z-value of the midpoint is either
   // 0 or 1, then the z-values of all
   // vertices of the line is like that
-  if (dim>=3)
-    if (((middle(2) == 0) || (middle(2) == 1))
-        // find out, if the line is in the
-        // interior of the top or bottom face
-        // of the domain, or at the edge.
-        // lines at the edge need to undergo
-        // the usual treatment, while for
-        // interior lines taking the midpoint
-        // is sufficient
-        //
-        // note: the trick with the boundary
-        // id was invented after the above was
-        // written, so we are not very strict
-        // here with using these flags
-        && (line->boundary_indicator() == 1))
+  if (dim>=3 && p.size() == 2) {
+    if (((middle(2) == 0) || (middle(2) == 1)))
+      // find out, if the line is in the
+      // interior of the top or bottom face
+      // of the domain, or at the edge.
+      // lines at the edge need to undergo
+      // the usual treatment, while for
+      // interior lines taking the midpoint
+      // is sufficient
+      //
+      // note: the trick with the boundary
+      // id was invented after the above was
+      // written, so we are not very strict
+      // here with using these flags
+      // && (line->boundary_indicator() == 1))
       return middle;
 
 
-  double x=middle(0),
-         y=middle(1);
-
-  if (y<x)
-    if (y<1-x)
-      middle(1) = 0.04*std::sin(6*3.141592*middle(0));
-    else
-      middle(0) = 1+0.04*std::sin(6*3.141592*middle(1));
-
-  else if (y<1-x)
-    middle(0) = 0.04*std::sin(6*3.141592*middle(1));
-  else
-    middle(1) = 1+0.04*std::sin(6*3.141592*middle(0));
-
-  return middle;
-}
+    double x=middle(0),
+      y=middle(1);
 
+    if (y<x)
+      if (y<1-x)
+       middle(1) = 0.04*std::sin(6*3.141592*middle(0));
+      else
+       middle(0) = 1+0.04*std::sin(6*3.141592*middle(1));
 
+    else if (y<1-x)
+      middle(0) = 0.04*std::sin(6*3.141592*middle(1));
+    else
+      middle(1) = 1+0.04*std::sin(6*3.141592*middle(0));
 
-template <int dim>
-Point<dim>
-CurvedLine<dim>::get_new_point_on_quad (const typename Triangulation<dim>::quad_iterator &quad) const
-{
-  Point<dim> middle = StraightBoundary<dim>::get_new_point_on_quad (quad);
+    return middle;
+  }
 
   // if the face is at the top of bottom
   // face: do not move the midpoint in

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.