[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