def testMakeDictionaryProxyBool(self): d=DictProxy() d["b"]=True d["a"]=False g=FoamFileGenerator(d) self.assertEqual(str(g),"b yes;\na no;\n") self.assertEqual(g.makeString(firstLevel=True),"b yes;\na no;\n")
def testBool(self): g=FoamFileGenerator({'a':True}) self.assertEqual(str(g),"a yes;\n") g=FoamFileGenerator({'a':False}) self.assertEqual(str(g),"a no;\n") g=FoamFileGenerator({'a':BoolProxy(True)}) self.assertEqual(str(g),"a yes;\n") g=FoamFileGenerator({'a':BoolProxy(True,textual="on")}) self.assertEqual(str(g),"a yes;\n")
def __str__(self): """Generates a string from the contents in memory Used to be called makeString""" string="// -*- C++ -*-\n// File generated by PyFoam - sorry for the ugliness\n\n" generator=FoamFileGenerator(self.content, header=self.header, longListThreshold=self.longListOutputThreshold) string+=generator.makeString(firstLevel=True) return string
def testMakeLongList(self): g=FoamFileGenerator([i for i in range(20)]) testString="(\n 0" self.assertEqual(str(g)[0:len(testString)],testString) g=FoamFileGenerator([i for i in range(21)]) testString="21\n(\n 0" self.assertEqual(str(g)[0:len(testString)],testString) g=FoamFileGenerator([i for i in range(20)],longListThreshold=10) testString="20\n(\n 0" self.assertEqual(str(g)[0:len(testString)],testString) g=FoamFileGenerator([i for i in range(21)],longListThreshold=None) testString="(\n 0" self.assertEqual(str(g)[0:len(testString)],testString)
def __str__(self): """Generates a string from the contents in memory Used to be called makeString""" string="// -*- C++ -*-\n// File generated by PyFoam - sorry for the ugliness\n\n" generator=FoamFileGenerator(self.content, header=self.header if not self.noHeader else None, longListThreshold=self.longListOutputThreshold) string+=generator.makeString(firstLevel=True) if len(self.lastDecoration)>0: string+="\n\n"+self.lastDecoration return string
def testMakeNone(self): g=FoamFileGenerator(None) try: self.assertEqual(str(g),"") self.fail() except FoamFileGeneratorError: pass
def testMakeDictionaryProxy(self): d=DictProxy() d["b"]=2 d["a"]=1 g=FoamFileGenerator(d) self.assertEqual(str(g),"b 2;\na 1;\n") d=DictProxy() d["a"]=1 d["b"]=2 g=FoamFileGenerator(d) self.assertEqual(str(g),"a 1;\nb 2;\n") d=DictProxy() d[u("a")]=1 d["b"]=u("2") g=FoamFileGenerator(d) self.assertEqual(str(g),"a 1;\nb 2;\n")
def __str__(self): """Generates a string from the contents in memory Used to be called makeString""" string = "// -*- C++ -*-\n// File generated by PyFoam - sorry for the ugliness\n\n" generator = FoamFileGenerator( self.content, header=self.header if not self.noHeader else None, longListThreshold=self.longListOutputThreshold) string += generator.makeString(firstLevel=True) if len(self.lastDecoration) > 0: string += "\n\n" + self.lastDecoration return string
def testReadTutorial(self): test=ParsedParameterFile(self.theFile,listLengthUnparsed=100) data1=deepcopy(test.content) open(self.theFile,"w").write(str(FoamFileGenerator(data1,header=test.header))) del test test2=ParsedParameterFile(self.theFile,listLengthUnparsed=100) self.assertEqual(data1,test2.content)
def testReadTutorialWithMacros(self): test=ParsedParameterFile(self.theFile, listLengthUnparsed=100, doMacroExpansion=True) data1=deepcopy(test.content) open(self.theFile,"w").write(str(FoamFileGenerator(data1,header=test.header))) del test test2=ParsedParameterFile(self.theFile,listLengthUnparsed=100,doMacroExpansion=True) self.compareData(data1,test2.content)
def testBasicInclude(self): if foamVersionNumber()<(2,): return test=ParsedParameterFile(self.theFile) data1=deepcopy(test.content) open(self.theFile,"w").write(str(FoamFileGenerator(data1,header=test.header))) del test test2=ParsedParameterFile(self.theFile) self.assertEqual(data1,test2.content)
def testReadTutorial(self): test=ParsedParameterFile(self.theFile) data1=deepcopy(test.content) open(self.theFile,"w").write(str(FoamFileGenerator(data1,header=test.header))) del test test2=ParsedParameterFile(self.theFile) self.assertEqual(data1,test2.content) test3=ParsedParameterFile(self.theFile+".gz") self.assertEqual(data1,test3.content)
def testReadTutorial(self): if foamVersionNumber()>=(2,): # there is no appropriate volSymmTensorField-file in 2.x return test=ParsedParameterFile(self.theFile) data1=deepcopy(test.content) open(self.theFile,"w").write(str(FoamFileGenerator(data1,header=test.header))) del test test2=ParsedParameterFile(self.theFile) self.assertEqual(data1,test2.content)
def testMakePrimitives(self): g=FoamFileGenerator(1) self.assertEqual(str(g),"1") g=FoamFileGenerator("1") self.assertEqual(str(g),"1") g=FoamFileGenerator(u("1")) self.assertEqual(str(g),"1") g=FoamFileGenerator(1.2) self.assertEqual(str(g),"1.2") g=FoamFileGenerator(long(1)) self.assertEqual(str(g),"1") g=FoamFileGenerator(True) self.assertEqual(str(g),"yes") g=FoamFileGenerator(False) self.assertEqual(str(g),"no")
def testMakeList(self): g=FoamFileGenerator([1,2,3,4]) self.assertEqual(str(g),"(\n 1\n 2\n 3\n 4\n)\n") g=FoamFileGenerator([1,2,3]) self.assertEqual(str(g),"(1 2 3)") g=FoamFileGenerator(list(range(9))) self.assertEqual(str(g),"(0 1 2 3 4 5 6 7 8)") g=FoamFileGenerator(list(range(6))) self.assertEqual(str(g),"(0 1 2 3 4 5)") g=FoamFileGenerator([1,2,[3,4],4]) self.assertEqual(str(g),"(\n 1\n 2\n\n (\n 3\n 4\n )\n 4\n)\n") g=FoamFileGenerator([1,2,[3,4]]) self.assertEqual(str(g),"(\n 1\n 2\n\n (\n 3\n 4\n )\n)\n") g=FoamFileGenerator(["1",u("2")]) self.assertEqual(str(g),"(\n 1\n 2\n)\n")
def __str__(self): string = "// File generated by PyFoam - sorry for the ugliness\n\n" temp = [] for k, v in iteritems(self.content): temp.append((k, v)) temp.sort(key=lambda x: int(x[1]["startFace"])) temp2 = [] for b in temp: temp2.append(b[0]) temp2.append(b[1]) generator = FoamFileGenerator(temp2, header=self.header) string += str(generator) return string
def __str__(self): return str(FoamFileGenerator(self.data))
def testUnknownType(self): with pytest.raises(FatalErrorPyFoamException): g=FoamFileGenerator(set()) self.assertEqual(str(g),"yes")
def run(self): decomposeParWithRegion = (foamVersion() >= (1, 6)) if self.opts.keeppseudo and (not self.opts.regions and self.opts.region == None): warning( "Option --keep-pseudocases only makes sense for multi-region-cases" ) if decomposeParWithRegion and self.opts.keeppseudo: warning( "Option --keep-pseudocases doesn't make sense since OpenFOAM 1.6 because decomposePar supports regions" ) nr = int(self.parser.getArgs()[1]) if nr < 2: error("Number of processors", nr, "too small (at least 2)") case = path.abspath(self.parser.getArgs()[0]) method = self.opts.method result = {} result["numberOfSubdomains"] = nr result["method"] = method coeff = {} result[method + "Coeffs"] = coeff if self.opts.globalFaceZones != None: try: fZones = eval(self.opts.globalFaceZones) except SyntaxError: fZones = FoamStringParser(self.opts.globalFaceZones, listDict=True).data result["globalFaceZones"] = fZones if method in ["metis", "scotch", "parMetis"]: if self.opts.processorWeights != None: weigh = eval(self.opts.processorWeights) if nr != len(weigh): error("Number of processors", nr, "and length of", weigh, "differ") coeff["processorWeights"] = weigh elif method == "manual": if self.opts.dataFile == None: error("Missing required option dataFile") else: coeff["dataFile"] = "\"" + self.opts.dataFile + "\"" elif method == "simple" or method == "hierarchical": if self.opts.n == None or self.opts.delta == None: error("Missing required option n or delta") n = eval(self.opts.n) if len(n) != 3: error("Needs to be three elements, not", n) if nr != n[0] * n[1] * n[2]: error("Subdomains", n, "inconsistent with processor number", nr) coeff["n"] = "(%d %d %d)" % (n[0], n[1], n[2]) coeff["delta"] = float(self.opts.delta) if method == "hierarchical": if self.opts.order == None: error("Missing reuired option order") if len(self.opts.order) != 3: error("Order needs to be three characters") coeff["order"] = self.opts.order else: error("Method", method, "not yet implementes") gen = FoamFileGenerator(result) if self.opts.test: print_(str(gen)) return -1 else: f = open(path.join(case, "system", "decomposeParDict"), "w") writeDictionaryHeader(f) f.write(str(gen)) f.close() if self.opts.clear: print_("Clearing processors") for p in glob(path.join(case, "processor*")): print_("Removing", p) rmtree(p, ignore_errors=True)
def testUnparsedList(self): text="Das ist nicht geparst" g=FoamFileGenerator([Unparsed(text),"nix"]) self.assertEqual(str(g),"(\n "+text+"\n nix\n)\n")
def testUnparsedDict(self): text="Das ist nicht geparst" g=FoamFileGenerator({"a":Unparsed(text),"b":"nix"}) self.assertEqual(str(g),"a "+text+";\nb nix;\n")
def testUnparsed(self): text="Das ist nicht geparst" g=FoamFileGenerator(Unparsed(text)) self.assertEqual(str(g),text)
def testUnparsedList(self): content="1\n2\n3\n4\n5\n6" g=FoamFileGenerator(UnparsedList(6,content)) self.assertEqual(str(g),"6 ("+content+"\n)\n")
def testUnparsedListDict(self): content="1\n2\n3\n4\n5\n6" g=FoamFileGenerator({"a":UnparsedList(6,content),"b":"nix"}) self.assertEqual(str(g),"a\n 6 ("+content+"\n );\nb nix;\n")
def testMakeDictionary(self): g=FoamFileGenerator({'a':1,'b':2}) self.assertEqual(str(g),"a 1;\nb 2;\n")
def testUnparsedListList(self): content="1\n2\n3\n4\n5\n6" g=FoamFileGenerator([UnparsedList(6,content),"nix"]) self.assertEqual(str(g),"(\n\n 6 ("+content+"\n )\n nix\n)\n")
def testMakeEmpty(self): g=FoamFileGenerator({'a':None}) self.assertEqual(str(g),"a /* empty */ ;\n")