Package PyFoam :: Package Applications :: Module RunAtMultipleTimes
[hide private]
[frames] | no frames]

Source Code for Module PyFoam.Applications.RunAtMultipleTimes

 1  #  ICE Revision: $Id: /local/openfoam/Python/PyFoam/PyFoam/Applications/RunAtMultipleTimes.py 7358 2011-03-15T17:29:19.750462Z bgschaid  $  
 2  """ 
 3  Application class that implements pyFoamRunAtMultipleTimes 
 4  """ 
 5   
 6  from PyFoamApplication import PyFoamApplication 
 7  from CommonSelectTimesteps import CommonSelectTimesteps 
 8  from CommonReportUsage import CommonReportUsage 
 9  from CommonStandardOutput import CommonStandardOutput 
10  from CommonServer import CommonServer 
11  from CommonParallel import CommonParallel 
12   
13  from PyFoam.Execution.UtilityRunner import UtilityRunner 
14  from PyFoam.RunDictionary.SolutionDirectory import SolutionDirectory 
15   
16  import sys 
17  from os import path 
18   
19 -class RunAtMultipleTimes(PyFoamApplication, 20 CommonReportUsage, 21 CommonSelectTimesteps, 22 CommonParallel, 23 CommonServer, 24 CommonStandardOutput):
25 - def __init__(self,args=None):
26 description=""" 27 Runs a OpenFoam Utility that only supports being run for one or all times 28 to be run at multiple selected times 29 """ 30 PyFoamApplication.__init__(self, 31 exactNr=False, 32 args=args, 33 description=description)
34
35 - def addOptions(self):
36 CommonStandardOutput.addOptions(self,logname="RunAtMultipleTimes") 37 CommonParallel.addOptions(self) 38 CommonServer.addOptions(self) 39 CommonSelectTimesteps.addOptions(self,defaultUnique=True) 40 CommonReportUsage.addOptions(self)
41
42 - def run(self):
43 cName=self.parser.casePath() 44 45 times=self.processTimestepOptions(SolutionDirectory(cName,archive=None)) 46 if len(times)<1: 47 self.warning("Can't continue without time-steps") 48 return 49 50 lam=self.getParallel(SolutionDirectory(cName,archive=None)) 51 52 for i,t in enumerate(times): 53 print " Running for t=",t 54 run=UtilityRunner(argv=self.parser.getArgs()+["-time",t], 55 silent=self.opts.progress, 56 server=self.opts.server, 57 logname="%s.%s.t=%s" % (self.opts.logname,self.parser.getApplication(),t), 58 compressLog=self.opts.compress, 59 noLog=self.opts.noLog, 60 lam=lam) 61 62 self.addToCaseLog(cName,"Starting for t=%s",t) 63 64 run.start() 65 66 self.addToCaseLog(cName,"Ending") 67 68 self.reportUsage(run)
69