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

tan2 at geodynamics.org tan2 at geodynamics.org
Fri Feb 8 15:56:39 PST 2008


Author: tan2
Date: 2008-02-08 15:56:39 -0800 (Fri, 08 Feb 2008)
New Revision: 9270

Modified:
   mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py
   mc/3D/CitcomS/trunk/bin/Citcom.c
   mc/3D/CitcomS/trunk/module/bindings.c
   mc/3D/CitcomS/trunk/module/initial_conditions.c
   mc/3D/CitcomS/trunk/module/initial_conditions.h
Log:
Added binding for post_processing(). Exit program after post processing and saving results.


Modified: mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py
===================================================================
--- mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py	2008-02-08 23:54:36 UTC (rev 9269)
+++ mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py	2008-02-08 23:56:39 UTC (rev 9270)
@@ -122,12 +122,17 @@
 
 
     def launch(self, application):
+        if self.inventory.ic.inventory.post_p:
+            from CitcomSLib import readCheckpoint, postProcessing
+            readCheckpoint(self.all_variables)
+
+            # the program will finish after post_processing
+            postProcessing(self.all_variables)
+            return
+
         if self.inventory.ic.inventory.restart:
             from CitcomSLib import readCheckpoint
             readCheckpoint(self.all_variables)
-
-            # XXX: if post_processing
-            # calling post_processing() and terminate
         else:
             # initial conditions
             ic = self.inventory.ic

Modified: mc/3D/CitcomS/trunk/bin/Citcom.c
===================================================================
--- mc/3D/CitcomS/trunk/bin/Citcom.c	2008-02-08 23:54:36 UTC (rev 9269)
+++ mc/3D/CitcomS/trunk/bin/Citcom.c	2008-02-08 23:56:39 UTC (rev 9270)
@@ -107,16 +107,20 @@
 
   /* this section sets the initial condition;
    * replaced by CitcomS.Controller.launch() */
-  if (E->control.restart || E->control.post_p) {
+  if (E->control.post_p) {
       /* the initial condition is from previous checkpoint */
-
       read_checkpoint(E);
 
-      if (E->control.post_p) {
-          post_processing(E);
-          parallel_process_termination();
-      }
+      /* the program will finish after post_processing */
+      post_processing(E);
+      (E->problem_output)(E, E->monitor.solution_cycles);
+      parallel_process_termination();
   }
+
+  if (E->control.restart) {
+      /* the initial condition is from previous checkpoint */
+      read_checkpoint(E);
+  }
   else {
       /* regular init, or read T from file only */
 

Modified: mc/3D/CitcomS/trunk/module/bindings.c
===================================================================
--- mc/3D/CitcomS/trunk/module/bindings.c	2008-02-08 23:54:36 UTC (rev 9269)
+++ mc/3D/CitcomS/trunk/module/bindings.c	2008-02-08 23:56:39 UTC (rev 9270)
@@ -204,6 +204,11 @@
      METH_VARARGS,
      pyCitcom_ic_readCheckpoint__doc__},
 
+    {pyCitcom_ic_postProcessing__name__,
+     pyCitcom_ic_postProcessing,
+     METH_VARARGS,
+     pyCitcom_ic_postProcessing__doc__},
+
     /* from mesher.h */
 
     {pyCitcom_full_sphere_launch__name__,

Modified: mc/3D/CitcomS/trunk/module/initial_conditions.c
===================================================================
--- mc/3D/CitcomS/trunk/module/initial_conditions.c	2008-02-08 23:54:36 UTC (rev 9269)
+++ mc/3D/CitcomS/trunk/module/initial_conditions.c	2008-02-08 23:56:39 UTC (rev 9270)
@@ -38,10 +38,11 @@
 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*);
 
-
 char pyCitcom_ic_initialize_material__doc__[] = "";
 char pyCitcom_ic_initialize_material__name__[] = "initialize_material";
 
@@ -196,7 +197,29 @@
 }
 
 
+char pyCitcom_ic_postProcessing__doc__[] = "";
+char pyCitcom_ic_postProcessing__name__[] = "postProcessing";
 
+PyObject * pyCitcom_ic_postProcessing(PyObject *self, PyObject *args)
+{
+    PyObject *obj;
+    struct All_variables* E;
+
+    if (!PyArg_ParseTuple(args, "O:postProcessing", &obj))
+        return NULL;
+
+    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;
+}
+
+
+
 /* $Id$ */
 
 /* End of file */

Modified: mc/3D/CitcomS/trunk/module/initial_conditions.h
===================================================================
--- mc/3D/CitcomS/trunk/module/initial_conditions.h	2008-02-08 23:54:36 UTC (rev 9269)
+++ mc/3D/CitcomS/trunk/module/initial_conditions.h	2008-02-08 23:56:39 UTC (rev 9270)
@@ -64,6 +64,11 @@
 PyObject * pyCitcom_ic_readCheckpoint(PyObject *, PyObject *);
 
 
+extern char pyCitcom_ic_postProcessing__name__[];
+extern char pyCitcom_ic_postProcessing__doc__[];
+PyObject * pyCitcom_ic_postProcessing(PyObject *, PyObject *);
+
+
 #endif
 
 /* $Id$ */



More information about the cig-commits mailing list