[cig-commits] commit: Add a stopping criterion

Mercurial hg at geodynamics.org
Fri Feb 10 16:00:06 PST 2012


changeset:   8:e97eff318ea1
user:        Walter Landry <wlandry at caltech.edu>
date:        Thu Aug 04 07:08:18 2011 -0700
files:       main.cxx
description:
Add a stopping criterion


diff -r aa1b9fba90b4 -r e97eff318ea1 main.cxx
--- a/main.cxx	Thu Aug 04 06:54:40 2011 -0700
+++ b/main.cxx	Thu Aug 04 07:08:18 2011 -0700
@@ -29,6 +29,7 @@ int main()
   const double pi(atan(1.0)*4);
   const double theta_mom=1.0;
   const double theta_c=1.0;
+  const double tolerance=1.0e-6;
 
   Model model(Model::solKz);
 
@@ -127,6 +128,7 @@ int main()
 
   /* Smoothing sweeps */
 
+  double max_x_previous(0), max_y_previous(0), max_p_previous(0);
   for(int sweep=0;sweep<n_sweeps;++sweep)
     {
 
@@ -410,6 +412,22 @@ int main()
                   << max_p << " "
                   << "\n";
 
+      if(fabs(max_x-max_x_previous)/max_x < tolerance
+         && fabs(max_y-max_y_previous)/max_y < tolerance
+         && fabs(max_p-max_p_previous)/max_p < tolerance)
+        {
+          std::cout << "Solved "
+                    << sweep << " "
+                    << tolerance << " "
+                    << fabs(max_x-max_x_previous)/max_x << " "
+                    << fabs(max_y-max_y_previous)/max_y << " "
+                    << fabs(max_p-max_p_previous)/max_p << " "
+                    << "\n";
+          break;
+        }
+      max_x_previous=max_x;
+      max_y_previous=max_y;
+      max_p_previous=max_p;
     }
 
   {



More information about the CIG-COMMITS mailing list