]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Take over a few useful changes anyway.
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 17 Oct 2006 04:08:39 +0000 (04:08 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 17 Oct 2006 04:08:39 +0000 (04:08 +0000)
git-svn-id: https://svn.dealii.org/trunk@14009 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/examples/step-26/step-26.cc

index 0cffe5165b0420ac2e47fb55103718e160b1dbcc..aa363f6256a50c9526e285a67bee38db349fe3c4 100644 (file)
 #include <grid/tria_boundary.h>
 
 
-class PointDefinedSurface : public StraightBoundary<3>
+class PointCloudSurface : public StraightBoundary<3>
 {
   public:
-    PointDefinedSurface (const std::string &filename);
-
-    Point<3> closest_point (const Point<3> &p) const;
+                                    /**
+                                     * Constructor.
+                                     */
+    PointCloudSurface (const std::string &filename);
     
                                     /**
                                      * Let the new point be the
@@ -125,12 +126,23 @@ class PointDefinedSurface : public StraightBoundary<3>
     virtual void
     get_intermediate_points_on_quad (const Triangulation<3>::quad_iterator &quad,
                                     std::vector<Point<3> > &points) const;
+
+                                    /**
+                                     * A function that, given a point @p p,
+                                     * returns the closest point on the
+                                     * surface defined by the input file. For
+                                     * the time being, we simply return the
+                                     * closest point in the point cloud,
+                                     * rather than doing any sort of
+                                     * interpolation.
+                                     */
+    Point<3> closest_point (const Point<3> &p) const;    
   private:
     std::vector<Point<3> > point_list;
 };
 
 
-PointDefinedSurface::PointDefinedSurface (const std::string &filename)
+PointCloudSurface::PointCloudSurface (const std::string &filename)
 {
                                   // first read in all the points
   {
@@ -237,7 +249,7 @@ PointDefinedSurface::PointDefinedSurface (const std::string &filename)
 
 
 Point<3>
-PointDefinedSurface::closest_point (const Point<3> &p) const
+PointCloudSurface::closest_point (const Point<3> &p) const
 {
   double distance = p.distance (point_list[0]);
   Point<3> point = point_list[0];
@@ -258,7 +270,7 @@ PointDefinedSurface::closest_point (const Point<3> &p) const
 
   
 Point<3>
-PointDefinedSurface::
+PointCloudSurface::
 get_new_point_on_line (const Triangulation<3>::line_iterator &line) const
 {
   return closest_point (StraightBoundary<3>::get_new_point_on_line (line));
@@ -267,7 +279,7 @@ get_new_point_on_line (const Triangulation<3>::line_iterator &line) const
 
 
 Point<3>
-PointDefinedSurface::
+PointCloudSurface::
 get_new_point_on_quad (const Triangulation<3>::quad_iterator &quad) const
 {
   return closest_point (StraightBoundary<3>::get_new_point_on_quad (quad));
@@ -276,7 +288,7 @@ get_new_point_on_quad (const Triangulation<3>::quad_iterator &quad) const
 
 
 void
-PointDefinedSurface::
+PointCloudSurface::
 get_intermediate_points_on_line (const Triangulation<3>::line_iterator &line,
                                 std::vector<Point<3> > &points) const
 {
@@ -289,7 +301,7 @@ get_intermediate_points_on_line (const Triangulation<3>::line_iterator &line,
 
 
 void
-PointDefinedSurface::
+PointCloudSurface::
 get_intermediate_points_on_quad (const Triangulation<3>::quad_iterator &quad,
                                 std::vector<Point<3> > &points) const
 {
@@ -301,7 +313,7 @@ get_intermediate_points_on_quad (const Triangulation<3>::quad_iterator &quad,
 
 
 
-PointDefinedSurface pds("surface-points");
+PointCloudSurface pds("surface-points");
 
 
 
@@ -492,7 +504,7 @@ void LaplaceProblem<dim>::make_grid_and_dofs ()
                                      triangulation.begin()->vertex(v)[1],
                                      0));
        
-  for (unsigned int i=0; i<7; ++i)
+  for (unsigned int i=0; i<4; ++i)
     {
       for (typename Triangulation<dim>::active_cell_iterator
             cell = triangulation.begin_active();
@@ -597,7 +609,9 @@ void LaplaceProblem<dim>::assemble_system ()
 template <int dim>
 void LaplaceProblem<dim>::solve () 
 {
-  SolverControl           solver_control (1000, 1e-12);
+                                  // NEW
+  SolverControl           solver_control (dof_handler.n_dofs(),
+                                         1e-12*system_rhs.l2_norm());
   SolverCG<>              cg (solver_control);
 
   PreconditionSSOR<> preconditioner;

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.