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
10 """ The class that does the actual triggering
11 """
12
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
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
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
54 if self.fresh:
55 warning("Trigger called: Resetting the controlDict")
56 self.control.restore()
57 self.fresh=False
58