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 self.generalOpts.add_option("--run-until", 27 action="store", 28 type="float", 29 dest="runUntil", 30 default=None, 31 help="Change the endTime so that the case only runs until this time")
32
33 - def addWriteAllTrigger(self,run,sol):
34 if self.opts.purgeWrite!=None and not self.opts.writeAll: 35 warning("purgeWrite of",self.opts.purgeWrite,"ignored because write-all-timesteps unused") 36 37 if self.opts.writeAll or self.opts.runUntil!=None: 38 warning("Adding Trigger and resetting to safer start-settings") 39 trig=WriteAllTrigger(sol, 40 self.opts.writeAll, 41 self.opts.purgeWrite, 42 self.opts.runUntil) 43 run.addEndTrigger(trig.resetIt)
44
45 -class WriteAllTrigger:
46 - def __init__(self,sol,writeAll,purge,until):
47 self.control=ParsedParameterFile(path.join(sol.systemDir(),"controlDict"),backup=True) 48 49 self.fresh=True 50 51 try: 52 if writeAll: 53 self.control["writeControl"]="timeStep" 54 self.control["writeInterval"]="1" 55 if purge!=None: 56 self.control["purgeWrite"]=purge 57 58 if until!=None: 59 self.control["endTime"]=until 60 61 self.control.writeFile() 62 except Exception,e: 63 warning("Restoring defaults") 64 self.control.restore() 65 raise e
66
67 - def resetIt(self):
68 if self.fresh: 69 warning("Trigger called: Resetting the controlDict") 70 self.control.restore() 71 self.fresh=False
72