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)