[cig-commits] r14641 - in mc/3D/CitcomS/trunk: CitcomS CitcomS/Solver bin lib module

tan2 at geodynamics.org tan2 at geodynamics.org
Wed Apr 8 16:38:52 PDT 2009


Author: tan2
Date: 2009-04-08 16:38:51 -0700 (Wed, 08 Apr 2009)
New Revision: 14641

Modified:
   mc/3D/CitcomS/trunk/CitcomS/Controller.py
   mc/3D/CitcomS/trunk/CitcomS/Solver/CoupledSolver.py
   mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py
   mc/3D/CitcomS/trunk/bin/Citcom.c
   mc/3D/CitcomS/trunk/lib/Citcom_init.c
   mc/3D/CitcomS/trunk/lib/Parallel_util.c
   mc/3D/CitcomS/trunk/lib/citcom_init.h
   mc/3D/CitcomS/trunk/lib/parallel_related.h
   mc/3D/CitcomS/trunk/module/bindings.c
   mc/3D/CitcomS/trunk/module/initial_conditions.c
   mc/3D/CitcomS/trunk/module/misc.c
   mc/3D/CitcomS/trunk/module/misc.h
   mc/3D/CitcomS/trunk/module/outputs.c
   mc/3D/CitcomS/trunk/module/outputs.h
Log:
Added a function citcom_finalize() to close files and MPI before exit. Return 0 when the code is finished normally. Rearrang post_processing and stokes_flow_only.


Modified: mc/3D/CitcomS/trunk/CitcomS/Controller.py
===================================================================
--- mc/3D/CitcomS/trunk/CitcomS/Controller.py	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/CitcomS/Controller.py	2009-04-08 23:38:51 UTC (rev 14641)
@@ -73,7 +73,6 @@
         if not self.solver.inventory.ic.inventory.restart:
             self.checkpoint()
 
-        ### XXX: if stokes: advection tracers and terminate
         return
 
 

Modified: mc/3D/CitcomS/trunk/CitcomS/Solver/CoupledSolver.py
===================================================================
--- mc/3D/CitcomS/trunk/CitcomS/Solver/CoupledSolver.py	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/CitcomS/Solver/CoupledSolver.py	2009-04-08 23:38:51 UTC (rev 14641)
@@ -120,7 +120,9 @@
         self._avgCPUTime()
         # write even if not sync'd
         output(self.all_variables, self.step)
-        self.finalize()
+
+        from CitcomSLib import citcom_finalize
+        citcom_finalize(self.all_variables, 0)
         return
 
 

Modified: mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py
===================================================================
--- mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py	2009-04-08 23:38:51 UTC (rev 14641)
@@ -128,6 +128,8 @@
 
             # the program will finish after post_processing
             postProcessing(self.all_variables)
+            self.save(1)
+            self.endSimulation()
             return
 
         if self.inventory.ic.inventory.restart:
@@ -139,6 +141,13 @@
             ic.launch()
 
             self.solveVelocities()
+
+        # stop the computation if only computes stokes' problem
+        if self.inventory.stokes_flow_only:
+            self.advectTracers()
+            self.save(1)
+            self.endSimulation()
+
         return
 
 
@@ -204,7 +213,8 @@
 
     def endSimulation(self):
         self._avgCPUTime()
-        self.finalize()
+        from CitcomSLib import citcom_finalize
+        citcom_finalize(self.all_variables, 0)
         return
 
 
@@ -264,12 +274,6 @@
         return
 
 
-    def finalize(self):
-        from CitcomSLib import output_finalize
-        output_finalize(self.all_variables)
-        return
-
-
     class Inventory(Component.Inventory):
 
         import pyre.inventory as inv

Modified: mc/3D/CitcomS/trunk/bin/Citcom.c
===================================================================
--- mc/3D/CitcomS/trunk/bin/Citcom.c	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/bin/Citcom.c	2009-04-08 23:38:51 UTC (rev 14641)
@@ -33,6 +33,7 @@
 #include "element_definitions.h"
 #include "global_defs.h"
 #include "citcom_init.h"
+#include "interuption.h"
 #include "output.h"
 #include "parallel_related.h"
 #include "checkpoints.h"
@@ -117,7 +118,8 @@
       /* the program will finish after post_processing */
       post_processing(E);
       (E->problem_output)(E, E->monitor.solution_cycles);
-      parallel_process_termination();
+
+      citcom_finalize(E, 0);
   }
 
   if (E->control.restart) {
@@ -155,6 +157,18 @@
           general_stokes_solver(E);
   }
 
+  /* stop the computation if only computes stokes' problem */
+  if (E->control.stokes)  {
+
+    if(E->control.tracer==1)
+      tracer_advection(E);
+
+    (E->problem_output)(E, E->monitor.solution_cycles);
+
+    citcom_finalize(E, 0);
+  }
+
+
   (E->problem_output)(E, E->monitor.solution_cycles);
 
   /* information about simulation time and wall clock time */
@@ -165,17 +179,7 @@
 				   allow reusing directories */
     output_checkpoint(E);
 
-  /* this section stops the computation if only computes stokes' problem
-   * no counterpart in pyre */
-  if (E->control.stokes)  {
 
-    if(E->control.tracer==1)
-      tracer_advection(E);
-
-    parallel_process_termination();
-  }
-
-
  
 
   /* this section advances the time step;
@@ -280,8 +284,7 @@
 	    cpu_time_on_vp_it/((float)(E->monitor.solution_cycles-E->control.restart)));
   }
 
-  output_finalize(E);
-  parallel_process_termination();
+  citcom_finalize(E, 0);
 
   return(0);
 

Modified: mc/3D/CitcomS/trunk/lib/Citcom_init.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Citcom_init.c	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/lib/Citcom_init.c	2009-04-08 23:38:51 UTC (rev 14641)
@@ -26,6 +26,7 @@
  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
 
+#include <stdlib.h>
 #include "global_defs.h"
 #include "citcom_init.h"
 
@@ -57,3 +58,14 @@
 
   return(E);
 }
+
+
+void citcom_finalize(struct All_variables *E, int status)
+{
+    void output_finalize(struct All_variables*);
+    void parallel_process_finalize();
+
+    output_finalize(E);
+    parallel_process_finalize();
+    exit(status);
+}

Modified: mc/3D/CitcomS/trunk/lib/Parallel_util.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Parallel_util.c	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/lib/Parallel_util.c	2009-04-08 23:38:51 UTC (rev 14641)
@@ -34,6 +34,15 @@
 /* ============================================ */
 /* ============================================ */
 
+void parallel_process_finalize()
+{
+  MPI_Finalize();
+  return;
+}
+
+/* ============================================ */
+/* ============================================ */
+
 void parallel_process_termination()
 {
 

Modified: mc/3D/CitcomS/trunk/lib/citcom_init.h
===================================================================
--- mc/3D/CitcomS/trunk/lib/citcom_init.h	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/lib/citcom_init.h	2009-04-08 23:38:51 UTC (rev 14641)
@@ -36,6 +36,7 @@
 #endif
 
 extern struct All_variables* citcom_init(MPI_Comm *world);
+    void citcom_finalize(struct All_variables *E, int status);
 
 #ifdef __cplusplus
 }

Modified: mc/3D/CitcomS/trunk/lib/parallel_related.h
===================================================================
--- mc/3D/CitcomS/trunk/lib/parallel_related.h	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/lib/parallel_related.h	2009-04-08 23:38:51 UTC (rev 14641)
@@ -33,10 +33,10 @@
 extern "C" {
 #endif
 
+void parallel_process_finalize();
 void parallel_process_termination();
 void parallel_process_sync(struct All_variables *E);
 double CPU_time0();
-void set_communication_sphereh(struct All_variables *E);
 
 #ifdef __cplusplus
 }

Modified: mc/3D/CitcomS/trunk/module/bindings.c
===================================================================
--- mc/3D/CitcomS/trunk/module/bindings.c	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/module/bindings.c	2009-04-08 23:38:51 UTC (rev 14641)
@@ -65,6 +65,11 @@
      METH_VARARGS,
      pyCitcom_citcom_init__doc__},
 
+    {pyCitcom_citcom_finalize__name__,
+     pyCitcom_citcom_finalize,
+     METH_VARARGS,
+     pyCitcom_citcom_finalize__doc__},
+
     {pyCitcom_full_solver_init__name__,
      pyCitcom_full_solver_init,
      METH_VARARGS,
@@ -228,11 +233,6 @@
      METH_VARARGS,
      pyCitcom_output__doc__},
 
-    {pyCitcom_output_finalize__name__,
-     pyCitcom_output_finalize,
-     METH_VARARGS,
-     pyCitcom_output_finalize__doc__},
-
     {pyCitcom_output_time__name__,
      pyCitcom_output_time,
      METH_VARARGS,

Modified: mc/3D/CitcomS/trunk/module/initial_conditions.c
===================================================================
--- mc/3D/CitcomS/trunk/module/initial_conditions.c	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/module/initial_conditions.c	2009-04-08 23:38:51 UTC (rev 14641)
@@ -38,7 +38,6 @@
 void initial_pressure(struct All_variables*);
 void initial_velocity(struct All_variables*);
 void initial_viscosity(struct All_variables*);
-void parallel_process_termination();
 void post_processing(struct All_variables*);
 void report(struct All_variables*, char* str);
 void read_checkpoint(struct All_variables*);
@@ -211,8 +210,6 @@
     E = (struct All_variables*)(PyCObject_AsVoidPtr(obj));
 
     post_processing(E);
-    (E->problem_output)(E, E->monitor.solution_cycles);
-    parallel_process_termination();
 
     Py_INCREF(Py_None);
     return Py_None;

Modified: mc/3D/CitcomS/trunk/module/misc.c
===================================================================
--- mc/3D/CitcomS/trunk/module/misc.c	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/module/misc.c	2009-04-08 23:38:51 UTC (rev 14641)
@@ -129,6 +129,27 @@
 }
 
 
+char pyCitcom_citcom_finalize__doc__[] = "";
+char pyCitcom_citcom_finalize__name__[] = "citcom_finalize";
+
+PyObject * pyCitcom_citcom_finalize(PyObject *self, PyObject *args)
+{
+    PyObject *obj;
+    struct All_variables* E;
+    int status;
+
+    if (!PyArg_ParseTuple(args, "Oi:citcom_finalize", &obj, &status))
+        return NULL;
+
+    E = (struct All_variables*)(PyCObject_AsVoidPtr(obj));
+
+    citcom_finalize(E, status);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+
 char pyCitcom_full_solver_init__doc__[] = "";
 char pyCitcom_full_solver_init__name__[] = "full_solver_init";
 

Modified: mc/3D/CitcomS/trunk/module/misc.h
===================================================================
--- mc/3D/CitcomS/trunk/module/misc.h	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/module/misc.h	2009-04-08 23:38:51 UTC (rev 14641)
@@ -48,6 +48,11 @@
 PyObject * pyCitcom_citcom_init(PyObject *, PyObject *);
 
 
+extern char pyCitcom_citcom_finalize__doc__[];
+extern char pyCitcom_citcom_finalize__name__[];
+PyObject * pyCitcom_citcom_finalize(PyObject *, PyObject *);
+
+
 extern char pyCitcom_full_solver_init__doc__[];
 extern char pyCitcom_full_solver_init__name__[];
 PyObject * pyCitcom_full_solver_init(PyObject *, PyObject *);

Modified: mc/3D/CitcomS/trunk/module/outputs.c
===================================================================
--- mc/3D/CitcomS/trunk/module/outputs.c	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/module/outputs.c	2009-04-08 23:38:51 UTC (rev 14641)
@@ -34,9 +34,6 @@
 #include "output.h"
 
 
-void output_finalize(struct  All_variables *E);
-
-
 char pyCitcom_output__doc__[] = "";
 char pyCitcom_output__name__[] = "output";
 
@@ -59,27 +56,6 @@
 }
 
 
-char pyCitcom_output_finalize__doc__[] = "";
-char pyCitcom_output_finalize__name__[] = "output_finalize";
-
-PyObject * pyCitcom_output_finalize(PyObject *self, PyObject *args)
-{
-    PyObject *obj;
-    struct All_variables* E;
-    int cycles;
-
-    if (!PyArg_ParseTuple(args, "O:output_finalize", &obj))
-        return NULL;
-
-    E = (struct All_variables*)(PyCObject_AsVoidPtr(obj));
-
-    output_finalize(E);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
 char pyCitcom_output_time__doc__[] = "";
 char pyCitcom_output_time__name__[] = "output_time";
 

Modified: mc/3D/CitcomS/trunk/module/outputs.h
===================================================================
--- mc/3D/CitcomS/trunk/module/outputs.h	2009-04-08 23:34:43 UTC (rev 14640)
+++ mc/3D/CitcomS/trunk/module/outputs.h	2009-04-08 23:38:51 UTC (rev 14641)
@@ -32,10 +32,6 @@
 extern char pyCitcom_output__doc__[];
 PyObject * pyCitcom_output(PyObject *, PyObject *);
 
-extern char pyCitcom_output_finalize__name__[];
-extern char pyCitcom_output_finalize__doc__[];
-PyObject * pyCitcom_output_finalize(PyObject *, PyObject *);
-
 extern char pyCitcom_output_time__name__[];
 extern char pyCitcom_output_time__doc__[];
 PyObject * pyCitcom_output_time(PyObject *, PyObject *);



More information about the CIG-COMMITS mailing list