[cig-commits] r3982 - in mc/3D/CitcomS/trunk: CitcomS CitcomS/Solver module/Regional

tan2 at geodynamics.org tan2 at geodynamics.org
Fri Jul 7 14:36:33 PDT 2006


Author: tan2
Date: 2006-07-07 14:36:32 -0700 (Fri, 07 Jul 2006)
New Revision: 3982

Modified:
   mc/3D/CitcomS/trunk/CitcomS/Controller.py
   mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py
   mc/3D/CitcomS/trunk/module/Regional/bindings.cc
   mc/3D/CitcomS/trunk/module/Regional/misc.cc
   mc/3D/CitcomS/trunk/module/Regional/misc.h
Log:
A quick fix to issue35 "inconsistent times in C and Pyre"


Modified: mc/3D/CitcomS/trunk/CitcomS/Controller.py
===================================================================
--- mc/3D/CitcomS/trunk/CitcomS/Controller.py	2006-07-07 20:45:42 UTC (rev 3981)
+++ mc/3D/CitcomS/trunk/CitcomS/Controller.py	2006-07-07 21:36:32 UTC (rev 3982)
@@ -42,6 +42,7 @@
 
         self.step = 0
         self.clock = 0.0
+        self.dt = 0.0
         self.done = False
         self.solver = None
         return
@@ -82,13 +83,14 @@
             #self.applyBoundaryConditions()
 
             # compute an acceptable timestep
-            dt = self.stableTimestep()
+            self.dt = self.stableTimestep()
 
             # advance
-            self.advance(dt)
+            self.advance(self.dt)
 
-            # update smulation clock and step number
-            self.clock += dt
+            # update simulation clock and step number
+            from builtin_CitcomS import return_times
+            self.clock, self.dt = return_times(self.solver.all_variables)
             self.step += 1
 
             # notify solver we finished a timestep
@@ -132,7 +134,7 @@
 
     def save(self):
         step = self.step
-        self.solver.timesave(self.clock, step)
+        self.solver.timesave(self.clock, self.dt, step)
         self.solver.save(step, self.inventory.monitoringFrequency)
         return
 

Modified: mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py
===================================================================
--- mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py	2006-07-07 20:45:42 UTC (rev 3981)
+++ mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py	2006-07-07 21:36:32 UTC (rev 3982)
@@ -47,7 +47,6 @@
 
 	self.start_cpu_time = 0
         self.cpu_time = 0
-        self.model_time = 0
         self.fptime = None
         return
 
@@ -257,18 +256,19 @@
         return
 
 
-    def timesave(self, t, steps):
-        # output time information
+    def timesave(self, t, dt, steps):
+        '''output time information
+        '''
+
         time = CPU_time()
         msg = "%d %.4e %.4e %.4e %.4e" % (steps,
                                           t,
-                                          t - self.model_time,
+                                          dt,
                                           time - self.start_cpu_time,
                                           time - self.cpu_time)
         print >> self.fptime, msg
         self.fptime.flush()
 
-        self.model_time = t
         self.cpu_time = time
         return
 

Modified: mc/3D/CitcomS/trunk/module/Regional/bindings.cc
===================================================================
--- mc/3D/CitcomS/trunk/module/Regional/bindings.cc	2006-07-07 20:45:42 UTC (rev 3981)
+++ mc/3D/CitcomS/trunk/module/Regional/bindings.cc	2006-07-07 21:36:32 UTC (rev 3982)
@@ -122,6 +122,11 @@
      METH_VARARGS,
      pyCitcom_Visc_update_material__doc__},
 
+    {pyCitcom_return_times__name__,
+     pyCitcom_return_times,
+     METH_VARARGS,
+     pyCitcom_return_times__doc__},
+
     // from advdiffu.h
 
     {pyCitcom_PG_timestep_init__name__,

Modified: mc/3D/CitcomS/trunk/module/Regional/misc.cc
===================================================================
--- mc/3D/CitcomS/trunk/module/Regional/misc.cc	2006-07-07 20:45:42 UTC (rev 3981)
+++ mc/3D/CitcomS/trunk/module/Regional/misc.cc	2006-07-07 21:36:32 UTC (rev 3982)
@@ -308,8 +308,22 @@
 }
 
 
+char pyCitcom_return_times__doc__[] = "";
+char pyCitcom_return_times__name__[] = "return_times";
 
+PyObject * pyCitcom_return_times(PyObject *self, PyObject *args)
+{
+    PyObject *obj;
 
+    if (!PyArg_ParseTuple(args, "O:return_times", &obj))
+        return NULL;
+
+    struct All_variables* E = static_cast<struct All_variables*>(PyCObject_AsVoidPtr(obj));
+
+    return Py_BuildValue("ff", E->monitor.elapsed_time, E->advection.timestep);
+}
+
+
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 

Modified: mc/3D/CitcomS/trunk/module/Regional/misc.h
===================================================================
--- mc/3D/CitcomS/trunk/module/Regional/misc.h	2006-07-07 20:45:42 UTC (rev 3981)
+++ mc/3D/CitcomS/trunk/module/Regional/misc.h	2006-07-07 21:36:32 UTC (rev 3982)
@@ -111,6 +111,12 @@
 PyObject * pyCitcom_Visc_update_material(PyObject *, PyObject *);
 
 
+extern char pyCitcom_return_times__name__[];
+extern char pyCitcom_return_times__doc__[];
+extern "C"
+PyObject * pyCitcom_return_times(PyObject *, PyObject *);
+
+
 #endif
 
 // version



More information about the cig-commits mailing list