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

Source Code for Module PyFoam.Applications.CommonWriteAllTrigger

 1  """Implements a trigger that manipulates the controlDict in 
 2  such a way that every time-step is written to disk""" 
 3   
 4  import re 
 5  from os import path 
 6  from PyFoam.RunDictionary.ParsedParameterFile import ParsedParameterFile 
 7  from PyFoam.Error import warning 
 8   
9 -class CommonWriteAllTrigger(object):
10 """ The class that does the actual triggering 11 """ 12
13 - def addOptions(self):
14 self.ensureGeneralOptions() 15 self.generalOpts.add_option("--write-all-timesteps", 16 action="store_true", 17 dest="writeAll", 18 default=False, 19 help="Write all the timesteps to disk") 20 self.generalOpts.add_option("--purge-write", 21 action="store", 22 type="int", 23 dest="purgeWrite", 24 default=None, 25 help="Together with write-all-timesteps determines the number of time-steps that is kept on disc. All will be kept if unset")
26
27 - def addWriteAllTrigger(self,run,sol):
28 if self.opts.writeAll: 29 warning("Adding Trigger and resetting to safer start-settings") 30 trig=WriteAllTrigger(sol,self.opts.purgeWrite) 31 run.addEndTrigger(trig.resetIt) 32 elif self.opts.purgeWrite!=None: 33 warning("purgeWrite of",self.opts.purgeWrite,"ignored because write-all-timesteps unused")
34
35 -class WriteAllTrigger:
36 - def __init__(self,sol,purge):
37 self.control=ParsedParameterFile(path.join(sol.systemDir(),"controlDict"),backup=True) 38 39 self.fresh=True 40 41 try: 42 self.control["writeControl"]="timeStep" 43 self.control["writeInterval"]="1" 44 if purge!=None: 45 self.control["purgeWrite"]=purge 46 47 self.control.writeFile() 48 except Exception,e: 49 warning("Restoring defaults") 50 self.control.restore() 51 raise e
52
53 - def resetIt(self):
54 if self.fresh: 55 warning("Trigger called: Resetting the controlDict") 56 self.control.restore() 57 self.fresh=False
58