def test_Rectangle_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 = Rectangle(order, 3, 3 * ranks, 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-"))
def test_Rectangle_XY_system(self): ranks = getMPISizeWorld() for expanded in (True, False): for order in range(2, 11): dom = Rectangle(order, 3, 3 * ranks, l0=6, l1=6, d1=ranks) Y = Data(1, (2, ), Function(dom), expanded) X = Data(0, (2, 2), Function(dom), expanded) X[0, 0] = dom.getX()[0] X[1, 1] = dom.getX()[1] f = Data(0, (2, ), 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 f *= whereNegative(dom.getX()[0] - 6) * whereNegative(dom.getX()[1] - 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-"))
def test_Rectangle_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 = Rectangle(order, 3, 3*ranks, 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-"))
def test_Rectangle_XY_single(self): ranks = getMPISizeWorld() for expanded in (True, False): for order in range(2,11): dom = Rectangle(order, 3, 3*ranks, d1=ranks, l0=6, l1=6) Y = Data(2, Function(dom), expanded) X = Data(0, (2,), Function(dom), expanded) X[0] = dom.getX()[0] X[1] = dom.getX()[1] f = Data(0, 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(2): 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-"))