Esempio n. 1
0
    def test_Brick_XY_system(self):
        ranks = getMPISizeWorld()
        for expanded in (True, False):
            for order in range(2, 11):
                dom = Brick(order, 3, 3 * ranks, 3, l0=6, l1=6, l2=6, d1=ranks)
                Y = Data(1, (3, ), Function(dom), expanded)
                X = Data(0, (3, 3), Function(dom), expanded)
                X[0, 0] = dom.getX()[0]
                X[1, 1] = dom.getX()[1]
                X[2, 2] = dom.getX()[2]

                f = Data(0, (3, ), Solution(dom), expanded)

                dom.addToRHS(f, [("Y", Y)],
                             dom.createAssembler("DefaultAssembler", []))
                dom.addToRHS(f, [("X", X)],
                             dom.createAssembler("DefaultAssembler", []))
                #nuke the boundary back to zero since it's not dealt with here
                for dim in range(3):
                    f *= whereNegative(dom.getX()[dim] - 6)
                res = Lsup(f)
                self.assertLess(
                    res, self.TOLERANCE,
                    ("assembly for {0}expanded order %d failed with %e >= %e" %
                     (order, res,
                      self.TOLERANCE)).format("" if expanded else "un-"))
Esempio n. 2
0
    def test_Brick_Du_Y_system(self):
        #solves for u in Du = Y, where D = [1,2], Y = [2,4]
        ranks = getMPISizeWorld()
        for expanded in (True, False):
            for order in range(2, 11):
                dom = Brick(order, 3, 3 * ranks, 3, d1=ranks)
                D = Data(1, (2, ), ContinuousFunction(dom), expanded)
                D[1] = 2
                Y = Data(2, (2, ), ContinuousFunction(dom), expanded)
                Y[1] = 4

                Y = interpolate(Y, Function(dom))
                D = interpolate(D, Function(dom))

                rhs = Data(0, (2, ), Solution(dom), expanded)
                lhs = Data(0, (2, ), Solution(dom), expanded)

                dom.addToRHS(rhs, [("Y", Y)],
                             dom.createAssembler("DefaultAssembler", []))
                dom.addToRHS(lhs, [("D", D)],
                             dom.createAssembler("DefaultAssembler", []))

                res = Lsup((rhs / lhs) - 2)
                self.assertLess(
                    res, self.TOLERANCE,
                    ("assembly for {0}expanded order %d failed with %e >= %e" %
                     (order, res,
                      self.TOLERANCE)).format("" if expanded else "un-"))