Source code for PyFoam.LogAnalysis.SteadyConvergedLineAnalyzer

#  ICE Revision: $Id$
"""Analyze Steady Solver"""

import re

from .LogLineAnalyzer import LogLineAnalyzer

[docs]class SteadyConvergedLineAnalyzer(LogLineAnalyzer): """ Checks whether a Steady-solver has converged Convergence is assumed if all the linear solvers have their initial residual below their threshold """ linearRegExp="^(.+): Solving for (.+), Initial residual = (.+), Final residual = (.+), No Iterations (.+)$" def __init__(self): LogLineAnalyzer.__init__(self) self.exp=re.compile(self.linearRegExp) self.registerRegexp(self.exp) self.firstTime=True self.lastTime="" self.isConverged=False self.counter=0
[docs] def doAnalysis(self,line): """Counts the number of linear solvers that have not converged""" time=self.parent.getTime() if time!=self.lastTime: if self.firstTime: self.firstTime=False else: if self.counter==0: self.isConverged=True else: self.isConverged=False self.counter=0 self.lastTime=time m=self.exp.match(line.strip()) if m!=None: if int(m.group(5))>0: self.counter+=1
[docs] def goOn(self): """Converged :return: False if converged""" return not self.isConverged
# Should work with Python3 and Python2