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

Source Code for Module PyFoam.LogAnalysis.LinearSolverLineAnalyzer

 1  #  ICE Revision: $Id: LinearSolverLineAnalyzer.py 8144 2007-11-05 09:18:04Z 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,doTimelines=True,doFiles=True):
20 GeneralLineAnalyzer.__init__(self,titles=["Initial","Final","Iterations"],doTimelines=doTimelines,doFiles=doFiles) 21 self.exp=re.compile(linearRegExp) 22 23 if self.doTimelines: 24 self.lines.setDefault(1.) 25 self.lines.setExtend(True)
26
27 - def addToFiles(self,match):
28 solver=match.groups()[0] 29 name=match.groups()[1] 30 rest=match.groups()[2:] 31 self.files.write("linear_"+name,self.getTime(),rest)
32
33 - def addToTimelines(self,match):
34 name=match.groups()[1] 35 resid=match.groups()[2] 36 final=match.groups()[3] 37 iter=match.groups()[4] 38 39 self.lines.setValue(name,resid) 40 41 self.lines.setAccumulator(name+"_final","last") 42 self.lines.setValue(name+"_final",final) 43 44 self.lines.setAccumulator(name+"_iterations","sum") 45 self.lines.setValue(name+"_iterations",iter)
46
47 -class GeneralLinearSolverIterationsLineAnalyzer(GeneralLinearSolverLineAnalyzer):
48 """Parses information about the linear solver and collects the iterations""" 49
50 - def __init__(self,doTimelines=True,doFiles=True):
51 GeneralLinearSolverLineAnalyzer.__init__(self,doTimelines=doTimelines,doFiles=doFiles)
52
53 - def addToFiles(self,match):
54 pass
55
56 - def addToTimelines(self,match):
57 name=match.groups()[1] 58 iter=match.groups()[4] 59 60 self.lines.setAccumulator(name,"sum") 61 self.lines.setValue(name,iter)
62 63
64 -class LinearSolverLineAnalyzer(GeneralLinearSolverLineAnalyzer):
65 """Parses for information about the linear solver 66 67 Files of the form linear_<var> are written, where <var> is the 68 variable for which the solver was used""" 69
70 - def __init__(self):
71 GeneralLinearSolverLineAnalyzer.__init__(self,doTimelines=False)
72
73 -class TimeLineLinearSolverLineAnalyzer(GeneralLinearSolverLineAnalyzer):
74 """Parses for imformation about the linear solver and collects the residuals in timelines""" 75
76 - def __init__(self):
78
79 -class TimeLineLinearIterationsSolverLineAnalyzer(GeneralLinearSolverIterationsLineAnalyzer):
80 """Parses for information about the linear solver and collects the iterations in timelines""" 81
82 - def __init__(self):
84