Ejemplo n.º 1
0
 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")
Ejemplo n.º 2
0
 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")
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
 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
Ejemplo n.º 6
0
 def testMakeNone(self):
     g=FoamFileGenerator(None)
     try:
         self.assertEqual(str(g),"")
         self.fail()
     except FoamFileGeneratorError:
         pass
Ejemplo n.º 7
0
 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
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
 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)
Ejemplo n.º 13
0
    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)
Ejemplo n.º 14
0
 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")
Ejemplo n.º 15
0
 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))
Ejemplo n.º 18
0
 def testUnknownType(self):
     with pytest.raises(FatalErrorPyFoamException):
         g=FoamFileGenerator(set())
         self.assertEqual(str(g),"yes")
Ejemplo n.º 19
0
    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)
Ejemplo n.º 20
0
 def testUnparsedList(self):
     text="Das ist nicht geparst"
     g=FoamFileGenerator([Unparsed(text),"nix"])
     self.assertEqual(str(g),"(\n  "+text+"\n  nix\n)\n")
Ejemplo n.º 21
0
 def testUnparsedDict(self):
     text="Das ist nicht geparst"
     g=FoamFileGenerator({"a":Unparsed(text),"b":"nix"})
     self.assertEqual(str(g),"a "+text+";\nb nix;\n")
Ejemplo n.º 22
0
 def testUnparsed(self):
     text="Das ist nicht geparst"
     g=FoamFileGenerator(Unparsed(text))
     self.assertEqual(str(g),text)
Ejemplo n.º 23
0
 def testUnparsedList(self):
     content="1\n2\n3\n4\n5\n6"
     g=FoamFileGenerator(UnparsedList(6,content))
     self.assertEqual(str(g),"6 ("+content+"\n)\n")
Ejemplo n.º 24
0
 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")
Ejemplo n.º 25
0
 def testMakeDictionary(self):
     g=FoamFileGenerator({'a':1,'b':2})
     self.assertEqual(str(g),"a 1;\nb 2;\n")
Ejemplo n.º 26
0
 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")
Ejemplo n.º 27
0
 def testMakeEmpty(self):
     g=FoamFileGenerator({'a':None})
     self.assertEqual(str(g),"a /* empty */ ;\n")