[cig-commits] r13997 - cs/portal/trunk/northridge/backend

leif at geodynamics.org leif at geodynamics.org
Wed Jan 28 15:26:08 PST 2009


Author: leif
Date: 2009-01-28 15:26:08 -0800 (Wed, 28 Jan 2009)
New Revision: 13997

Modified:
   cs/portal/trunk/northridge/backend/mineos.py
Log:
Incorporate the "job index" into the filenames of the generated "*.in"
input files, so that the green/syndat processes don't step on each
other.  (This is the "numbering bug" I referred to earlier [r13865].)


Modified: cs/portal/trunk/northridge/backend/mineos.py
===================================================================
--- cs/portal/trunk/northridge/backend/mineos.py	2009-01-28 19:25:10 UTC (rev 13996)
+++ cs/portal/trunk/northridge/backend/mineos.py	2009-01-28 23:26:08 UTC (rev 13997)
@@ -42,13 +42,14 @@
 
 class Mineos(object):
 
-    def __init__(self, model, event, stations):
+    def __init__(self, model, event, stations, jobIndex):
         self.bin = prefix + "/bin"
         self.model = model
         self.event = event
         self.stations = stations
-        self.green_out = None
-        self.syndat_out = None
+        self.jobIndex = jobIndex
+        self.green_out = "green-%04d" % jobIndex
+        self.syndat_out = "syndat-%04d" % jobIndex
         return
 
 
@@ -96,12 +97,8 @@
         return
 
 
-    def green(self, fmin, fmax, nsamples, db_list):
-        s = open("db_list", "w")
-        for dbname in db_list:
-            print >>s, dbname
-        s.close()
-        green_in = "green.in"
+    def green(self, fmin, fmax, nsamples):
+        green_in = "green_%04d.in" % self.jobIndex
         s = open(green_in, "w")
         print >>s, self.stations
         print >>s, "db_list"
@@ -119,7 +116,7 @@
 
 
     def syndat(self, plane, datatype):
-        syndat_in = "syndat.in"
+        syndat_in = "syndat_%04d.in" % self.jobIndex
         s = open(syndat_in, "w")
         print >>s, self.event
         print >>s, plane # error in documentation!
@@ -292,7 +289,7 @@
         inputFiles = [self.model, self.event] + [self.stations + suffix for suffix in [".site", ".sitechan"]]
         for inputFile in inputFiles:
             os.rename(inputFile, join(archiveDirName, inputFile))
-        
+
         self._info.log("running Mineos program suite for model '%s'" % self.model)
 
         # Compute eigenfunctions and eigenfrequencies.  For
@@ -306,9 +303,17 @@
         job.arguments.extend(["--context=launchEigen", "--nodes=%d" % job.nodes])
         self.scheduleJob(job)
         
-        # compute seismograms
         jobDir = os.getcwd()
         os.chdir(archiveDirName)
+        
+        # generate "db_list" input file
+        db_list = [mode.id for mode in enabledModes]
+        s = open("db_list", "w")
+        for dbname in db_list:
+            print >>s, dbname
+        s.close()
+        
+        # compute seismograms
         nStations = lineCount(self.stations + ".site")
         job = self.prepareJob(self.seismoJob, *args, **kwds)
         job.nodes = nStations
@@ -405,7 +410,7 @@
         os.chdir(archiveDirName)
         self.redirectOutput(self.indexedName("output_eigen", jobIndex) + ".txt")
 
-        mineos = Mineos(self.model, self.event, self.stations)
+        mineos = Mineos(self.model, self.event, self.stations, jobIndex)
 
         mode = modes[jobIndex - 1]
         if not getattr(self, mode.id):
@@ -440,16 +445,13 @@
         self.redirectOutput(self.indexedName("output_green_syndat", jobIndex) + ".txt")
         
         stations = self.indexedStationsName(jobIndex)
-        mineos = Mineos(self.model, self.event, stations)
-        mineos.green_out = self.indexedName("green", jobIndex)
-        mineos.syndat_out = self.indexedName("syndat", jobIndex)
+        mineos = Mineos(self.model, self.event, stations, jobIndex)
 
         # green
         self._info.log("running program 'green'")
         fmin = self.fmin / mHz
         fmax = self.fmax / mHz
-        db_list = [mode.id for mode in self.enabledModes()]
-        mineos.green(fmin, fmax, self.nsamples, db_list)
+        mineos.green(fmin, fmax, self.nsamples)
 
         # creat_origin
         self._info.log("running program 'creat_origin'")



More information about the CIG-COMMITS mailing list