]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Leave references to step-77. 11953/head
authorWolfgang Bangerth <bangerth@colostate.edu>
Mon, 3 May 2021 23:51:49 +0000 (17:51 -0600)
committerWolfgang Bangerth <bangerth@colostate.edu>
Tue, 4 May 2021 21:38:31 +0000 (15:38 -0600)
examples/step-15/doc/intro.dox
examples/step-15/doc/results.dox
examples/step-15/step-15.cc
include/deal.II/base/timer.h
include/deal.II/dofs/dof_tools.h
include/deal.II/sundials/kinsol.h

index 7794162e0cbaad0cc402225c44be0f6bad7df361..784f2226107c3680b8fd93ccfb5273e6203637a6 100644 (file)
@@ -241,7 +241,8 @@ full step lengths we forego the rapid, quadratic convergence that
 makes Newton's method so appealing. Obviously, this is a point one
 eventually has to address if the program was made into one that is
 meant to solve more realistic problems. We will comment on this issue
-some more in the <a href="#Results">results section</a>.
+some more in the <a href="#Results">results section</a>, and use an
+even better approach in step-77.
 
 
 <h3> Summary of the algorithm and testcase </h3>
@@ -270,6 +271,11 @@ follows:
   $\alpha^n=0.1$. To make things easier to extend later on, this
   happens in a function of its own, namely in
   <code>MinimalSurfaceProblem::determine_step_length</code>.
+  (The strategy of always choosing $\alpha^n=0.1$ is of course not
+  optimal -- we should choose a step length that works for a given
+  search direction -- but it requires a bit of work to do that. In the
+  end, we leave these sorts of things to external packages: step-77
+  does that.)
 </li>
 
 <li>
index f939657c187c9a6f171d08bd63091c282ee445ac..c643e2ed1ed641f56328508fef7cfa50fd290c6c 100644 (file)
@@ -174,12 +174,15 @@ A separate point, very much worthwhile making, however, is that in practice
 the implementation of efficient nonlinear solvers is about as complicated as
 the implementation of efficient finite element methods. One should not
 attempt to reinvent the wheel by implementing all of the necessary steps
-oneself. Rather, just like building finite element solvers on libraries
+oneself. Substantial pieces of the puzzle are already available in
+the LineMinimization::line_search() function and could be used to this end.
+But, instead, just like building finite element solvers on libraries
 such as deal.II, one should be building nonlinear solvers on libraries such
 as [SUNDIALS](https://computing.llnl.gov/projects/sundials). In fact,
 deal.II has interfaces to SUNDIALS and in particular to its nonlinear solver
 sub-package KINSOL through the SUNDIALS::KINSOL class. It would not be
-very difficult to base the current problem on that interface.
+very difficult to base the current problem on that interface --
+indeed, that is what step-77 does.
 
 
 
index 6959010bc200a2cb53483c22d5fcb039ee435ca1..29cd9328da07f56b6c8847b7ae1722c4b012babc 100644 (file)
@@ -91,7 +91,9 @@ namespace Step15
   //   <code>determine_step_length()</code> computes the step length $\alpha^n$
   //   in each Newton iteration. As discussed in the introduction, we here use a
   //   fixed step length and leave implementing a better strategy as an
-  //   exercise.
+  //   exercise. (step-77 does this differently: It simply uses an
+  //   external package for the whole solution process, and a good
+  //   line search strategy is part of what that package provides.)
 
   template <int dim>
   class MinimalSurfaceProblem
@@ -581,7 +583,7 @@ namespace Step15
   // choice: ideally, what one wants is that the step size goes to one as we
   // get closer to the solution, so that we get to enjoy the rapid quadratic
   // convergence of Newton's method. We will discuss better strategies below
-  // in the results section.
+  // in the results section, and step-77 also covers this aspect.
   template <int dim>
   double MinimalSurfaceProblem<dim>::determine_step_length() const
   {
index a59712b22059fb421a1ce61d75158594bcd40c7c..8f28e4dc5f35b2988cd4ace5f91919e931dca24a 100644 (file)
@@ -361,7 +361,13 @@ private:
  * entered several times. By changing the options in OutputFrequency and
  * OutputType, the user can choose whether output should be generated every
  * time a section is joined or just in the end of the program. Moreover, it is
- * possible to show CPU times, wall times or both.
+ * possible to show CPU times, wall times, or both.
+ *
+ * The class is used in a substantial number of tutorial programs that collect
+ * timing data. step-77 is an example of a relatively simple sequential program
+ * that uses it. step-40 and several others mentioned below use it for parallel
+ * computations.
+ *
  *
  * <h3>Usage</h3>
  *
index 2fd833191923b5293d79697a40427d2f883a8133..0f7b9b1452b31261494753fa0aa45e80760b591e 100644 (file)
@@ -1473,6 +1473,8 @@ namespace DoFTools
    * located that shall be extracted. If it is an empty list (the default), then
    * all boundary indicators are accepted.
    *
+   * This function is used in step-11 and step-15, for example.
+   *
    * @note If the DoFHandler object is defined on a
    * parallel Triangulation object, then the computed index set
    * will contain only those degrees of freedom on the boundary that belong to
index da18ba8a0d8935bccd016ac20328451e60bdf225..83b73e10e3b16f4a0effdc87b2132231988e9ca1 100644 (file)
@@ -51,7 +51,7 @@ DEAL_II_NAMESPACE_OPEN
 namespace SUNDIALS
 {
   /**
-   * Interface to SUNDIALS non linear solver (KINSOL).
+   * Interface to SUNDIALS' nonlinear solver (KINSOL).
    *
    * KINSOL is a solver for nonlinear algebraic systems in residual form $F(u)
    * = 0$ or fixed point form $G(u) = u$, where $u$ is a vector which we will
@@ -61,7 +61,8 @@ namespace SUNDIALS
    * $F,G:{\mathbb C}^N \to{\mathbb C}^N$. It includes a Newton-Krylov solver
    * as well as Picard and fixed point solvers, both of which can be
    * accelerated with Anderson acceleration. KINSOL is based on the previous
-   * Fortran package NKSOL of Brown and Saad.
+   * Fortran package NKSOL of Brown and Saad. An example of using KINSOL
+   * can be found in the step-77 tutorial program.
    *
    * KINSOL's Newton solver employs the inexact Newton method. As this solver
    * is intended mainly for large systems, the user is required to provide

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.