[cig-commits] [commit] master: set initial guess for inner solvers to zero (44716eb)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Fri Jan 16 11:08:25 PST 2015


Repository : https://github.com/geodynamics/aspect

On branch  : master
Link       : https://github.com/geodynamics/aspect/compare/3f763d389177ff99232a1c757ea52153b3f81be0...a402e9ee11ecde97fdd49aecc0a7604d514d446a

>---------------------------------------------------------------

commit 44716eb73999c6f12adcfc9e241c86ac0549d37b
Author: Timo Heister <timo.heister at gmail.com>
Date:   Fri Jan 16 08:16:25 2015 -0500

    set initial guess for inner solvers to zero


>---------------------------------------------------------------

44716eb73999c6f12adcfc9e241c86ac0549d37b
 doc/modules/changes.h      | 5 +++++
 source/simulator/solver.cc | 4 +++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/doc/modules/changes.h b/doc/modules/changes.h
index 01b1eb8..1607308 100644
--- a/doc/modules/changes.h
+++ b/doc/modules/changes.h
@@ -6,6 +6,11 @@
  *
  *
  * <ol>
+ * <li> Fixed: the inner solvers for the Stokes block preconditioner now start
+ * with a zero initial guess. This should make the solvers more robust.
+ * <br>
+ * (Timo Heister, 2015/01/16)
+
  * <li> ASPECT now requires deal.II version 8.2 or later.
  * <br>
  * (Timo Heister, 2015/01/13)
diff --git a/source/simulator/solver.cc b/source/simulator/solver.cc
index fe76c5b..71e6412 100644
--- a/source/simulator/solver.cc
+++ b/source/simulator/solver.cc
@@ -280,10 +280,11 @@ namespace aspect
         // convergence without
         // iterating. We simply skip
         // solving in this case.
-        if (src.block(1).l2_norm() > 1e-50 || dst.block(1).l2_norm() > 1e-50)
+        if (src.block(1).l2_norm() > 1e-50)
           {
             try
               {
+                dst.block(1) = 0.0;
                 solver.solve(stokes_preconditioner_matrix.block(1,1),
                              dst.block(1), src.block(1),
                              mp_preconditioner);
@@ -328,6 +329,7 @@ namespace aspect
 #endif
           try
             {
+              dst.block(0) = 0.0;
               solver.solve(stokes_matrix.block(0,0), dst.block(0), utmp,
                            a_preconditioner);
               n_iterations_A_ += solver_control.last_step();



More information about the CIG-COMMITS mailing list