class WriteAllTrigger: def __init__(self,sol,writeAll,purge,until): self.control=ParsedParameterFile(path.join(sol.systemDir(),"controlDict"), backup=True, doMacroExpansion=True) self.fresh=True try: if writeAll: self.control["writeControl"]="timeStep" self.control["writeInterval"]="1" if purge!=None: self.control["purgeWrite"]=purge if until!=None: self.control["endTime"]=until self.control.writeFile() except Exception: e = sys.exc_info()[1] # Needed because python 2.5 does not support 'as e' warning("Restoring defaults") self.control.restore() raise e def resetIt(self): if self.fresh: warning("Trigger called: Resetting the controlDict") self.control.restore() self.fresh=False
class SafeTrigger: def __init__(self,sol,factor): self.solution=ParsedParameterFile(path.join(sol.systemDir(),"fvSolution"),backup=True) self.schemes=ParsedParameterFile(path.join(sol.systemDir(),"fvSchemes"),backup=True) self.fresh=True try: relax=self.solution["relaxationFactors"] for var in relax: relax[var]*=factor cExp=re.compile("div\((.+),(.+)\)") conv=self.schemes["divSchemes"] for nm in conv: if cExp.match(nm) or nm=="default": conv[nm]="Gauss upwind" self.solution.writeFile() self.schemes.writeFile() except Exception,e: warning("Restoring defaults") self.solution.restore() self.schemes.restore() raise e
class LibFunctionTrigger: def __init__(self,sol,libs,funs): self.control=ParsedParameterFile(path.join(sol.systemDir(),"controlDict"),backup=True) self.fresh=False try: if libs and ("libs" in self.control): warning("Temporarily removing the libs-entry from the controlDict") del self.control["libs"] self.fresh=True if funs and ("functions" in self.control): warning("Temporarily removing the functions-entry from the controlDict") del self.control["functions"] self.fresh=True if self.fresh: self.control.writeFile() else: self.control.restore() except Exception,e: warning("Restoring defaults") self.control.restore() raise e
class WriteAllTrigger: def __init__(self, sol, writeAll, purge, until): self.control = ParsedParameterFile(path.join(sol.systemDir(), "controlDict"), backup=True, doMacroExpansion=True) self.fresh = True try: if writeAll: self.control["writeControl"] = "timeStep" self.control["writeInterval"] = "1" if purge != None: self.control["purgeWrite"] = purge if until != None: self.control["endTime"] = until self.control.writeFile() except Exception: e = sys.exc_info()[ 1] # Needed because python 2.5 does not support 'as e' warning("Restoring defaults") self.control.restore() raise e def resetIt(self): if self.fresh: warning("Trigger called: Resetting the controlDict") self.control.restore() self.fresh = False
class SafeTrigger: def __init__(self,sol,factor): self.solution=ParsedParameterFile(path.join(sol.systemDir(),"fvSolution"),backup=True) self.schemes=ParsedParameterFile(path.join(sol.systemDir(),"fvSchemes"),backup=True) self.fresh=True try: relax=self.solution["relaxationFactors"] for var in relax: relax[var]*=factor cExp=re.compile("div\((.+),(.+)\)") conv=self.schemes["divSchemes"] for nm in conv: if cExp.match(nm) or nm=="default": conv[nm]="Gauss upwind" self.solution.writeFile() self.schemes.writeFile() except Exception: e = sys.exc_info()[1] # Needed because python 2.5 does not support 'as e' warning("Restoring defaults") self.solution.restore() self.schemes.restore() raise e def resetIt(self): if self.fresh: warning("Trigger called: Resetting fvSchemes and fvSolution") self.solution.restore() self.schemes.restore() self.fresh=False
class WriteAllTrigger: def __init__(self,sol,writeAll,purge,until): self.control=ParsedParameterFile(path.join(sol.systemDir(),"controlDict"),backup=True) self.fresh=True try: if writeAll: self.control["writeControl"]="timeStep" self.control["writeInterval"]="1" if purge!=None: self.control["purgeWrite"]=purge if until!=None: self.control["endTime"]=until self.control.writeFile() except Exception,e: warning("Restoring defaults") self.control.restore() raise e
class LibFunctionTrigger: def __init__(self,sol,libs,funs): self.control=ParsedParameterFile(path.join(sol.systemDir(),"controlDict"), backup=True, doMacroExpansion=True) self.fresh=False try: if libs and ("libs" in self.control): warning("Temporarily removing the libs-entry from the controlDict") del self.control["libs"] self.fresh=True if funs and ("functions" in self.control): warning("Temporarily removing the functions-entry from the controlDict") del self.control["functions"] self.fresh=True if self.fresh: self.control.writeFile() else: self.control.restore() except Exception: e = sys.exc_info()[1] # Needed because python 2.5 does not support 'as e' warning("Restoring defaults") self.control.restore() raise e def resetIt(self): if self.fresh: warning("Trigger called: Resetting controlDict") self.control.restore() self.fresh=False
class SafeTrigger: def __init__(self, sol, factor): self.solution = ParsedParameterFile(path.join(sol.systemDir(), "fvSolution"), backup=True) self.schemes = ParsedParameterFile(path.join(sol.systemDir(), "fvSchemes"), backup=True) self.fresh = True try: relax = self.solution["relaxationFactors"] for var in relax: relax[var] *= factor cExp = re.compile("div\((.+),(.+)\)") conv = self.schemes["divSchemes"] for nm in conv: if cExp.match(nm) or nm == "default": conv[nm] = "Gauss upwind" self.solution.writeFile() self.schemes.writeFile() except Exception: e = sys.exc_info()[ 1] # Needed because python 2.5 does not support 'as e' warning("Restoring defaults") self.solution.restore() self.schemes.restore() raise e def resetIt(self): if self.fresh: warning("Trigger called: Resetting fvSchemes and fvSolution") self.solution.restore() self.schemes.restore() self.fresh = False
class LibFunctionTrigger: def __init__(self, sol, libs, funs): self.control = ParsedParameterFile(path.join(sol.systemDir(), "controlDict"), backup=True, doMacroExpansion=True) self.fresh = False try: if libs and ("libs" in self.control): warning( "Temporarily removing the libs-entry from the controlDict") del self.control["libs"] self.fresh = True if funs and ("functions" in self.control): warning( "Temporarily removing the functions-entry from the controlDict" ) del self.control["functions"] self.fresh = True if self.fresh: self.control.writeFile() else: self.control.restore() except Exception: e = sys.exc_info()[ 1] # Needed because python 2.5 does not support 'as e' warning("Restoring defaults") self.control.restore() raise e def resetIt(self): if self.fresh: warning("Trigger called: Resetting controlDict") self.control.restore() self.fresh = False
class PotentialTrigger: def __init__(self,sol,correctors,tolerance,relTol,pRefValue=None,pRefCell=None): self.solution=ParsedParameterFile(path.join(sol.systemDir(),"fvSolution"),backup=True) self.schemes=ParsedParameterFile(path.join(sol.systemDir(),"fvSchemes"),backup=True) self.control=ParsedParameterFile(path.join(sol.systemDir(),"controlDict"),backup=True) self.controlOrig=ParsedParameterFile(path.join(sol.systemDir(),"controlDict"),backup=False) pre=environ["FOAM_TUTORIALS"] if not oldTutorialStructure(): pre=path.join(pre,"basic") pot=SolutionDirectory(path.join(pre,"potentialFoam","cylinder"),archive=None,paraviewLink=False) self.fresh=True try: if "SIMPLE" not in self.solution: self.solution["SIMPLE"]=ParsedParameterFile(path.join(pot.systemDir(),"fvSolution"),backup=False)["SIMPLE"] if "nNonOrthogonalCorrectors" not in self.solution["SIMPLE"] and correctors==None: correctors=3 warning("Setting number of correctors to default value",correctors) if correctors!=None: self.solution["SIMPLE"]["nNonOrthogonalCorrectors"]=correctors if pRefCell!=None: self.solution["SIMPLE"]["pRefCell"]=pRefCell if pRefValue!=None: self.solution["SIMPLE"]["pRefValue"]=pRefValue if tolerance!=None: try: self.solution["solvers"]["p"][1]["tolerance"]=tolerance except KeyError: # 1.6 format self.solution["solvers"]["p"]["tolerance"]=tolerance if relTol!=None: try: self.solution["solvers"]["p"][1]["relTol"]=relTol except KeyError: # 1.6 format self.solution["solvers"]["p"]["relTol"]=relTol self.schemes.content=ParsedParameterFile(path.join(pot.systemDir(),"fvSchemes"),backup=False).content self.control.content=ParsedParameterFile(path.join(pot.systemDir(),"controlDict"),backup=False).content if "functions" in self.controlOrig: print "Copying functions over" self.control["functions"]=self.controlOrig["functions"] if "libs" in self.controlOrig: print "Copying libs over" self.control["libs"]=self.controlOrig["libs"] self.solution.writeFile() self.schemes.writeFile() self.control.writeFile() except Exception,e: warning("Restoring defaults") self.solution.restore() self.schemes.restore() self.control.restore() raise e
class PotentialTrigger: def __init__(self, sol, correctors, tolerance, relTol, pRefValue=None, pRefCell=None, removeLibs=False, removeFunctions=False): self.solution = ParsedParameterFile(path.join(sol.systemDir(), "fvSolution"), backup=True) self.schemes = ParsedParameterFile(path.join(sol.systemDir(), "fvSchemes"), backup=True) self.control = ParsedParameterFile(path.join(sol.systemDir(), "controlDict"), backup=True) self.controlOrig = ParsedParameterFile(path.join( sol.systemDir(), "controlDict"), backup=False) pre = environ["FOAM_TUTORIALS"] if not oldTutorialStructure(): pre = path.join(pre, "basic") pot = SolutionDirectory(path.join(pre, "potentialFoam", "cylinder"), archive=None, paraviewLink=False) self.fresh = True try: if "SIMPLE" not in self.solution and foamVersion()[0] < 2: self.solution["SIMPLE"] = ParsedParameterFile( path.join(pot.systemDir(), "fvSolution"), backup=False)["SIMPLE"] if foamVersion()[0] < 2: solutionBlock = self.solution["SIMPLE"] else: self.solution["potentialFlow"] = {} solutionBlock = self.solution["potentialFlow"] if "nNonOrthogonalCorrectors" not in solutionBlock and correctors == None: correctors = 3 warning("Setting number of correctors to default value", correctors) if correctors != None: solutionBlock["nNonOrthogonalCorrectors"] = correctors if pRefCell != None: solutionBlock["pRefCell"] = pRefCell if pRefValue != None: solutionBlock["pRefValue"] = pRefValue if tolerance != None: try: self.solution["solvers"]["p"][1]["tolerance"] = tolerance except KeyError: # 1.6 format self.solution["solvers"]["p"]["tolerance"] = tolerance if relTol != None: try: self.solution["solvers"]["p"][1]["relTol"] = relTol except KeyError: # 1.6 format self.solution["solvers"]["p"]["relTol"] = relTol self.schemes.content = ParsedParameterFile(path.join( pot.systemDir(), "fvSchemes"), backup=False).content self.control.content = ParsedParameterFile(path.join( pot.systemDir(), "controlDict"), backup=False).content for k in ["functions", "libs"]: if k in self.control: print_("Remove", k, "from controlDict") del self.control[k] if "functions" in self.controlOrig and not removeFunctions: print_("Copying functions over") self.control["functions"] = self.controlOrig["functions"] if "libs" in self.controlOrig and not removeLibs: print_("Copying libs over") self.control["libs"] = self.controlOrig["libs"] self.solution.writeFile() self.schemes.writeFile() self.control.writeFile() except Exception: e = sys.exc_info()[ 1] # Needed because python 2.5 does not support 'as e' warning("Restoring defaults") self.solution.restore() self.schemes.restore() self.control.restore() raise e def resetIt(self): if self.fresh: warning("Trigger called: Resetting fvSchemes and fvSolution") self.solution.restore() self.schemes.restore() self.control.restore() self.fresh = False
class PotentialTrigger: def __init__(self, sol, correctors, tolerance, relTol, pRefValue=None, pRefCell=None, removeLibs=False, removeFunctions=False): self.solution=ParsedParameterFile(path.join(sol.systemDir(),"fvSolution"),backup=True) self.schemes=ParsedParameterFile(path.join(sol.systemDir(),"fvSchemes"),backup=True) self.control=ParsedParameterFile(path.join(sol.systemDir(),"controlDict"),backup=True) self.controlOrig=ParsedParameterFile(path.join(sol.systemDir(),"controlDict"),backup=False) pre=environ["FOAM_TUTORIALS"] if not oldTutorialStructure(): pre=path.join(pre,"basic") pot=SolutionDirectory(path.join(pre,"potentialFoam","cylinder"),archive=None,paraviewLink=False) self.fresh=True try: if "SIMPLE" not in self.solution and foamVersion()[0]<2: self.solution["SIMPLE"]=ParsedParameterFile(path.join(pot.systemDir(),"fvSolution"),backup=False)["SIMPLE"] if foamVersion()[0]<2: solutionBlock=self.solution["SIMPLE"] else: self.solution["potentialFlow"]={} solutionBlock=self.solution["potentialFlow"] if "nNonOrthogonalCorrectors" not in solutionBlock and correctors==None: correctors=3 warning("Setting number of correctors to default value",correctors) if correctors!=None: solutionBlock["nNonOrthogonalCorrectors"]=correctors if pRefCell!=None: solutionBlock["pRefCell"]=pRefCell if pRefValue!=None: solutionBlock["pRefValue"]=pRefValue if tolerance!=None: try: self.solution["solvers"]["p"][1]["tolerance"]=tolerance except KeyError: # 1.6 format self.solution["solvers"]["p"]["tolerance"]=tolerance if relTol!=None: try: self.solution["solvers"]["p"][1]["relTol"]=relTol except KeyError: # 1.6 format self.solution["solvers"]["p"]["relTol"]=relTol self.schemes.content=ParsedParameterFile(path.join(pot.systemDir(),"fvSchemes"),backup=False).content self.control.content=ParsedParameterFile(path.join(pot.systemDir(),"controlDict"),backup=False).content for k in ["functions","libs"]: if k in self.control: print_("Remove",k,"from controlDict") del self.control[k] if "functions" in self.controlOrig and not removeFunctions: print_("Copying functions over") self.control["functions"]=self.controlOrig["functions"] if "libs" in self.controlOrig and not removeLibs: print_("Copying libs over") self.control["libs"]=self.controlOrig["libs"] self.solution.writeFile() self.schemes.writeFile() self.control.writeFile() except Exception: e = sys.exc_info()[1] # Needed because python 2.5 does not support 'as e' warning("Restoring defaults") self.solution.restore() self.schemes.restore() self.control.restore() raise e def resetIt(self): if self.fresh: warning("Trigger called: Resetting fvSchemes and fvSolution") self.solution.restore() self.schemes.restore() self.control.restore() self.fresh=False