Package PyFoam :: Package LogAnalysis :: Module LinearSolverLineAnalyzer
[hide private]
[frames] | no frames]

Source Code for Module PyFoam.LogAnalysis.LinearSolverLineAnalyzer

  1  """Analyze information from the linear solver""" 
  2   
  3  import re 
  4   
  5  linearRegExp="^(.+):  Solving for (.+), Initial residual = (.+), Final residual = (.+), No Iterations (.+)$" 
  6       
  7  # from FileLineAnalyzer import FileLineAnalyzer 
  8  # from TimeLineLineAnalyzer import TimeLineLineAnalyzer 
  9   
 10  from GeneralLineAnalyzer import GeneralLineAnalyzer 
 11   
12 -class GeneralLinearSolverLineAnalyzer(GeneralLineAnalyzer):
13 """Parses for information about the linear solver 14 15 Files of the form linear_<var> are written, where <var> is the 16 variable for which the solver was used""" 17
18 - def __init__(self,doTimelines=True,doFiles=True):
19 GeneralLineAnalyzer.__init__(self,titles=["Initial","Final","Iterations"],doTimelines=doTimelines,doFiles=doFiles) 20 self.exp=re.compile(linearRegExp) 21 22 if self.doTimelines: 23 self.lines.setDefault(1.) 24 self.lines.setExtend(True)
25
26 - def addToFiles(self,match):
27 solver=match.groups()[0] 28 name=match.groups()[1] 29 rest=match.groups()[2:] 30 self.files.write("linear_"+name,self.getTime(),rest)
31
32 - def addToTimelines(self,match):
33 name=match.groups()[1] 34 resid=match.groups()[2] 35 final=match.groups()[3] 36 iter=match.groups()[4] 37 38 self.lines.setValue(name,resid) 39 self.lines.setValue(name+"_final",final) 40 self.lines.setValue(name+"_iterations",iter)
41
42 -class GeneralLinearSolverIterationsLineAnalyzer(GeneralLinearSolverLineAnalyzer):
43 """Parses information about the linear solver and collects the iterations""" 44
45 - def __init__(self,doTimelines=True,doFiles=True):
46 GeneralLinearSolverLineAnalyzer.__init__(self,doTimelines=doTimelines,doFiles=doFiles)
47
48 - def addToFiles(self,match):
49 pass
50
51 - def addToTimelines(self,match):
52 name=match.groups()[1] 53 resid=match.groups()[4] 54 55 self.lines.setValue(name,resid)
56 57
58 -class LinearSolverLineAnalyzer(GeneralLinearSolverLineAnalyzer):
59 """Parses for information about the linear solver 60 61 Files of the form linear_<var> are written, where <var> is the 62 variable for which the solver was used""" 63
64 - def __init__(self):
65 GeneralLinearSolverLineAnalyzer.__init__(self,doTimelines=False)
66 67 ## self.exp=re.compile(linearRegExp) 68 69 ## def doAnalysis(self,line): 70 ## m=self.exp.match(line) 71 ## if m!=None: 72 ## solver=m.groups()[0] 73 ## name=m.groups()[1] 74 ## rest=m.groups()[2:] 75 ## self.files.write("linear_"+name,self.getTime(),rest) 76
77 -class TimeLineLinearSolverLineAnalyzer(GeneralLinearSolverLineAnalyzer):
78 """Parses for imformation about the linear solver and collects the residuals in timelines""" 79
80 - def __init__(self):
81 GeneralLinearSolverLineAnalyzer.__init__(self,doFiles=False)
82 83 ## self.lines.setDefault(1.) 84 ## self.lines.setExtend(True) 85 ## self.exp=re.compile(linearRegExp) 86 87 ## def doAnalysis(self,line): 88 ## m=self.exp.match(line) 89 ## if m!=None: 90 ## name=m.groups()[1] 91 ## resid=m.groups()[2] 92 93 ## self.lines.setValue(name,resid) 94
95 -class TimeLineLinearIterationsSolverLineAnalyzer(GeneralLinearSolverIterationsLineAnalyzer):
96 """Parses for imformation about the linear solver and collects the iterations in timelines""" 97
98 - def __init__(self):
100 101 ## self.lines.setDefault(1.) 102 ## self.lines.setExtend(True) 103 ## self.exp=re.compile(linearRegExp) 104 105 ## def doAnalysis(self,line): 106 ## m=self.exp.match(line) 107 ## if m!=None: 108 ## name=m.groups()[1] 109 ## iter=m.groups()[4] 110 111 ## self.lines.setValue(name,iter) 112