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

becker at geodynamics.org becker at geodynamics.org
Fri Nov 20 16:15:58 PST 2009


Author: becker
Date: 2009-11-20 16:15:57 -0800 (Fri, 20 Nov 2009)
New Revision: 16022

Modified:
   mc/3D/CitcomS/trunk/lib/Instructions.c
   mc/3D/CitcomS/trunk/lib/Stokes_flow_Incomp.c
   mc/3D/CitcomS/trunk/lib/global_defs.h
Log:
Exit criterion for incompressibility iteration allowed for velocity and pressure
convergence at finite compressibility > accuracy. Changed criterion to loop while
(convergence < 2) OR  (compressibility < imp) 

Please review


Also modified the sloppy iteration branch, where pressure isn't checked.



Modified: mc/3D/CitcomS/trunk/lib/Instructions.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Instructions.c	2009-11-20 23:51:08 UTC (rev 16021)
+++ mc/3D/CitcomS/trunk/lib/Instructions.c	2009-11-21 00:15:57 UTC (rev 16022)
@@ -604,6 +604,8 @@
   input_int("down_heavy",&(E->control.down_heavy),"1,0,nomax",m);
   input_int("up_heavy",&(E->control.up_heavy),"1,0,nomax",m);
   input_double("accuracy",&(E->control.accuracy),"1.0e-4,0.0,1.0",m);
+
+
   input_boolean("only_check_vel_convergence",&(E->control.only_check_vel_convergence),"off",m);
 
   input_int("vhighstep",&(E->control.v_steps_high),"1,0,nomax",m);

Modified: mc/3D/CitcomS/trunk/lib/Stokes_flow_Incomp.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Stokes_flow_Incomp.c	2009-11-20 23:51:08 UTC (rev 16021)
+++ mc/3D/CitcomS/trunk/lib/Stokes_flow_Incomp.c	2009-11-21 00:15:57 UTC (rev 16022)
@@ -289,8 +289,8 @@
     r0dotz0 = 0;
 
     while( (count < *steps_max) &&
-           (E->monitor.incompressibility > imp) &&
-           (converging < 2) ) {
+           ((E->monitor.incompressibility > imp) ||
+	    (converging < 2) )) {
         /* require two consecutive converging iterations to quit the while-loop */
 
         /* preconditioner BPI ~= inv(K), z1 = BPI*r1 */
@@ -383,13 +383,15 @@
 	if(!valid){
 	  converging = 0;
 	}else{
+	 
+
 	  if(E->control.only_check_vel_convergence){
 	    /* disregard pressure and div check */
 	    if(dvelocity < imp)
 	      converging++;
 	    else
 	      converging = 0;
-	    E->monitor.incompressibility = dvelocity;
+	    
 	  }else{
 	    /* how many consecutive converging iterations? */
 	    if(dvelocity < imp && dpressure < imp)
@@ -397,6 +399,7 @@
 	    else
 	      converging = 0;
 	  }
+	  
 	}
 
         /* shift array pointers */
@@ -542,8 +545,8 @@
     r0dotrt = alpha = omega = 0;
 
     while( (count < *steps_max) &&
-           (E->monitor.incompressibility > imp) &&
-           (converging < 2) ) {
+           ((E->monitor.incompressibility > imp) ||
+	    (converging < 2) )) {
         /* require two consecutive converging iterations to quit the while-loop */
 
         /* r1dotrt = <r1, rt> */
@@ -685,12 +688,11 @@
 	       
 	    override pressure and compressibility check
 	    
-	    */
+	      */
 	    if(dvelocity < imp)
 	      converging++;
 	    else
 	      converging =0;
-	    E->monitor.incompressibility = dvelocity;
 	  }else{
 	    /* how many consecutive converging iterations? */
 	    if(dvelocity < imp && dpressure < imp)

Modified: mc/3D/CitcomS/trunk/lib/global_defs.h
===================================================================
--- mc/3D/CitcomS/trunk/lib/global_defs.h	2009-11-20 23:51:08 UTC (rev 16021)
+++ mc/3D/CitcomS/trunk/lib/global_defs.h	2009-11-21 00:15:57 UTC (rev 16022)
@@ -381,6 +381,7 @@
 
     double momentum_residual;
     double incompressibility;
+
     double fdotf;
     double vdotv;
     double pdotp;



More information about the CIG-COMMITS mailing list