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

Source Code for Module PyFoam.LogAnalysis.LinearSolverLineAnalyzer

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