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

becker at geodynamics.org becker at geodynamics.org
Mon Feb 21 20:13:21 PST 2011


Author: becker
Date: 2011-02-21 20:13:21 -0800 (Mon, 21 Feb 2011)
New Revision: 17935

Modified:
   mc/3D/CitcomS/trunk/lib/Drive_solvers.c
   mc/3D/CitcomS/trunk/lib/Instructions.c
   mc/3D/CitcomS/trunk/lib/global_defs.h
Log:
Added a flag force_iteration which if on (off by default), will
enforce an iterative solution to the velocity fields even if linear
rheologies were chosen. This is useful for debugging/robustness tests.



Modified: mc/3D/CitcomS/trunk/lib/Drive_solvers.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Drive_solvers.c	2011-02-22 01:47:12 UTC (rev 17934)
+++ mc/3D/CitcomS/trunk/lib/Drive_solvers.c	2011-02-22 04:13:21 UTC (rev 17935)
@@ -172,22 +172,26 @@
   }
 }
 int need_to_iterate(struct All_variables *E){
+  if(E->control.force_iteration){
+    return 1;
+  }else{
 #ifdef CITCOM_ALLOW_ANISOTROPIC_VISC
   /* anisotropic viscosity */
   if(E->viscosity.allow_anisotropic_viscosity){
     if(E->viscosity.anivisc_start_from_iso) /* first step will be
 					       solved isotropically at
 					       first  */
-      return TRUE;
+      return 1;
     else
-      return (E->viscosity.SDEPV || E->viscosity.PDEPV)?(TRUE):(FALSE);
+      return (E->viscosity.SDEPV || E->viscosity.PDEPV)?(1):(0);
   }else{
 #endif
   /* regular operation */
-  return ((E->viscosity.SDEPV || E->viscosity.PDEPV)?(TRUE):(FALSE));
+  return ((E->viscosity.SDEPV || E->viscosity.PDEPV)?(1):(0));
 #ifdef CITCOM_ALLOW_ANISOTROPIC_VISC
   }
 #endif
+  }
 }
 void general_stokes_solver_pseudo_surf(struct All_variables *E)
 {

Modified: mc/3D/CitcomS/trunk/lib/Instructions.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Instructions.c	2011-02-22 01:47:12 UTC (rev 17934)
+++ mc/3D/CitcomS/trunk/lib/Instructions.c	2011-02-22 04:13:21 UTC (rev 17935)
@@ -635,6 +635,8 @@
   input_double("accuracy",&(E->control.accuracy),"1.0e-4,0.0,1.0",m);
   input_double("inner_accuracy_scale",&(E->control.inner_accuracy_scale),"1.0,0.000001,1.0",m);
 
+  input_boolean("force_iteration",&(E->control.force_iteration),"off",m);
+
   input_boolean("check_continuity_convergence",&(E->control.check_continuity_convergence),"on",m);
   input_boolean("check_pressure_convergence",&(E->control.check_pressure_convergence),"on",m);
 

Modified: mc/3D/CitcomS/trunk/lib/global_defs.h
===================================================================
--- mc/3D/CitcomS/trunk/lib/global_defs.h	2011-02-22 01:47:12 UTC (rev 17934)
+++ mc/3D/CitcomS/trunk/lib/global_defs.h	2011-02-22 04:13:21 UTC (rev 17935)
@@ -540,6 +540,7 @@
     double accuracy,inner_accuracy_scale;
     int check_continuity_convergence;
     int check_pressure_convergence;
+    int force_iteration;
     char velocity_boundary_file[1000];
     char temperature_boundary_file[1000];
     char mat_file[1000];



More information about the CIG-COMMITS mailing list