示例#1
0
    def test_freeRefineSubspaceIsotropic(self):
        """Refine the isotropic middle subspace"""
        alpha = DataVector(self.grid.getSize())
        alpha.setAll(1.0)
        for i in [13, 14, 15, 16]:
            alpha[i] = 2.
        #refinement  stuff
        refinement = HashRefinement()
        decorator = SubspaceRefinement(refinement)
        # refine a single grid point each time
        functor = SurplusRefinementFunctor(alpha, 1)
        decorator.free_refine(self.HashGridStorage, functor)
        for i in range(self.grid.getSize()):
            HashGridPoint = self.HashGridStorage.getPoint(i)

        self.assertEqual(self.grid.getSize(), 33)

        for i in range(self.grid.getSize()):
            HashGridPoint = self.HashGridStorage.getPoint(i)
            levelIndex = eval(HashGridPoint.toString())
            self.assertFalse(levelIndex[0] == 4 or levelIndex[2] == 4)
    def test_1(self):

        storage = self.grid.getStorage()
        gridSize = self.grid.getSize()
        numDim = storage.getDimension()

        print("######")
        print("Expected result:")
        print("######")

        expected = {}

        for j in range(gridSize):

            HashGridPoint = storage.getPoint(j)
            HashGridPoint.setLeaf(False)

            print("Point: ", j, " (", HashGridPoint.toString(), ")")

            for d in range(numDim):

                #
                # Get left and right child
                #

                leftChild = HashGridPoint(HashGridPoint)
                rightChild = HashGridPoint(HashGridPoint)

                storage.left_child(leftChild, d)
                storage.right_child(rightChild, d)

                #
                # Check if point is refinable
                #

                if storage.isContaining(leftChild) or storage.isContaining(
                        rightChild):
                    continue

                #
                # Insert children temporarily
                #

                storage.insert(leftChild)
                storage.insert(rightChild)

                val1 = self.calc_indicator_value(leftChild)
                val2 = self.calc_indicator_value(rightChild)

                storage.deleteLast()
                storage.deleteLast()

                print("Dimension: ", d)
                print("Left Child: ", val1)
                print("Right Child: ", val2)
                print("")

                expected[(j, d)] = val1 + val2

            print("")

        for k, v in list(expected.items()):
            print((k, v))

        print("######")
        print("Actual result:")
        print("######")

        actual = refinement_map({})
        self.strategy.collectRefinablePoints(storage, 10, actual)

        for k, v in list(actual.items()):
            print((k, v))

        #
        # Assertions
        #

        for k, v in list(expected.items()):
            self.assertEqual(actual[k], v)