1 """
2 Class that implements the common functionality for reporting the data that was submitted to the runner
3 """
4
5 from PyFoam.Basics.RestructuredTextHelper import ReSTTable,RestructuredTextHelper
6
7 from PyFoam.ThirdParty.six import print_,iteritems
8
10 """ The class that reports the resource usage
11 """
12
14 self.ensureGeneralOptions()
15 self.generalOpts.add_option("--report-runner-data",
16 action="store_true",
17 default=False,
18 dest="reportRunnerData",
19 help="After the execution the data collected by the runner (except for the analyzed data) is printed to the screen")
20 self.generalOpts.add_option("--report-analyzed-data",
21 action="store_true",
22 default=False,
23 dest="reportAnalyzedData",
24 help="After the execution the analyzed data collected by the runner is printed to the screen")
25 self.generalOpts.add_option("--dump-runner-data",
26 action="store_true",
27 default=False,
28 dest="dumpRunnerData",
29 help="After the execution the data collected by the runner is dumped")
30
32 if self.opts.reportRunnerData:
33 try:
34 data=run.data["analyzed"]
35 except KeyError:
36 self.error("No analyzed data")
37
38 print_("\n Analyzed data:")
39 print_()
40
41 helper=RestructuredTextHelper(RestructuredTextHelper.LevelSubSubSection)
42
43 for n,d in iteritems(data):
44 table=helper.table()
45 heads=["Descrition","value"]
46 table[0]=heads
47 table.addLine(head=True)
48 lNr=1
49
50 for k,v in iteritems(d):
51 table[(lNr,0)]=k
52 table[(lNr,1)]=v
53 lNr+=1
54
55 print_(helper.heading(n),table)
56
57 if self.opts.reportRunnerData:
58 table=ReSTTable()
59 heads=["Descrition","value"]
60 table[0]=heads
61 table.addLine(head=True)
62 lNr=1
63 done=["analyzed"]
64
65 def addLine(key,description):
66 if key in run.data:
67 table[(lNr,0)]=description
68 table[(lNr,1)]=run.data[key]
69 done.append(key)
70 return lNr+1
71 return lNr
72
73 lNr=addLine("time","Last simulation time")
74 lNr=addLine("stepNr","Number of timesteps")
75 lNr=addLine("lines","Lines written to stdout")
76 lNr=addLine("warnings","Number of warnings")
77
78 table.addLine()
79
80 for k,v in iteritems(run.data):
81 if k not in done:
82 table[(lNr,0)]=k
83 table[(lNr,1)]=v
84 lNr+=1
85
86 print_("\n Runner data:")
87 print_()
88 print_(table)
89
90 if self.opts.dumpRunnerData:
91 print_("\n Runner data:",run.data)
92
93
94