[cig-commits] r8226 - mc/3D/CitcomS/trunk/lib

tan2 at geodynamics.org tan2 at geodynamics.org
Wed Nov 7 11:51:56 PST 2007


Author: tan2
Date: 2007-11-07 11:51:56 -0800 (Wed, 07 Nov 2007)
New Revision: 8226

Modified:
   mc/3D/CitcomS/trunk/lib/Stokes_flow_Incomp.c
Log:
Print a warning when matrix eqn solver not converging

Modified: mc/3D/CitcomS/trunk/lib/Stokes_flow_Incomp.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Stokes_flow_Incomp.c	2007-11-07 19:48:27 UTC (rev 8225)
+++ mc/3D/CitcomS/trunk/lib/Stokes_flow_Incomp.c	2007-11-07 19:51:56 UTC (rev 8226)
@@ -241,10 +241,9 @@
     }
 
 
-    valid = 1;
     r0dotz0 = 0;
 
-    while( (valid) && (count < *steps_max) &&
+    while( (count < *steps_max) &&
            (E->monitor.incompressibility >= E->control.tole_comp) &&
            (dpressure >= imp) && (dvelocity >= imp) )  {
 
@@ -277,6 +276,10 @@
         /* solve K*u1 = grad(s2) for u1 */
         assemble_grad_p(E, s2, F, lev);
         valid = solve_del2_u(E, E->u1, F, imp*v_res, lev);
+        if(!valid && (E->parallel.me==0)) {
+            fputs("Warning: solver not converging! 1\n", stderr);
+            fputs("Warning: solver not converging! 1\n", E->fp);
+        }
         strip_bcs_from_residual(E, E->u1, lev);
 
 
@@ -458,7 +461,7 @@
     valid = 1;
     r0dotrt = alpha = omega = 0;
 
-    while( (valid) && (count < *steps_max) &&
+    while( (count < *steps_max) &&
            ((E->monitor.incompressibility >= E->control.tole_comp) &&
             (dpressure >= imp) && (dvelocity >= imp)) )  {
 
@@ -498,7 +501,10 @@
         /* solve K*u0 = grad(pt) for u1 */
         assemble_grad_p(E, pt, F, lev);
         valid = solve_del2_u(E, u0, F, imp*v_res, lev);
-        if(!valid) fprintf(stderr, "not valid 1\n");
+        if(!valid && (E->parallel.me==0)) {
+            fputs("Warning: solver not converging! 1\n", stderr);
+            fputs("Warning: solver not converging! 1\n", E->fp);
+        }
         strip_bcs_from_residual(E, u0, lev);
 
 
@@ -525,7 +531,10 @@
         /* solve K*u1 = grad(st) for u1 */
         assemble_grad_p(E, st, F, lev);
         valid = solve_del2_u(E, E->u1, F, imp*v_res, lev);
-        if(!valid) fprintf(stderr, "not valid 2\n");
+        if(!valid && (E->parallel.me==0)) {
+            fputs("Warning: solver not converging! 2\n", stderr);
+            fputs("Warning: solver not converging! 2\n", E->fp);
+        }
         strip_bcs_from_residual(E, E->u1, lev);
 
 
@@ -714,7 +723,7 @@
     int neq = E->lmesh.neq;
     int gneq = E->mesh.neq;
     int lev = E->mesh.levmax;
-    int i, m;
+    int i, m, valid;
     double v_res;
 
     v_res = sqrt(global_vdot(E, F, F, lev) / gneq);
@@ -742,7 +751,11 @@
 
 
     /* solve K*u1 = F for u1 */
-    solve_del2_u(E, E->u1, F, imp*v_res, lev);
+    valid = solve_del2_u(E, E->u1, F, imp*v_res, lev);
+    if(!valid && (E->parallel.me==0)) {
+        fputs("Warning: solver not converging! 0\n", stderr);
+        fputs("Warning: solver not converging! 0\n", E->fp);
+    }
     strip_bcs_from_residual(E, E->u1, lev);
 
 



More information about the cig-commits mailing list