This commit is contained in:
Rowan Cockett
2015-11-07 18:34:50 -08:00
parent fb18d8a5d8
commit 91284e2286
4 changed files with 2926 additions and 83 deletions
+49 -52
View File
@@ -12,44 +12,41 @@ class TestSimpleQuadTree(unittest.TestCase):
def test_counts(self):
T = Tree([8,8])
T._refineCell([0,0,0])
T._refineCell([4,4,1])
T._refineCell([0,0,1])
T._refineCell([2,2,2])
T.number()
T.plotGrid(showIt=True)
assert sorted(T._treeInds) == [2, 34, 66, 99, 107, 115, 123, 129, 257, 386, 418, 450, 482]
assert len(T._hangingFacesX) == 7
assert T.nFx == 18
assert T.vol.sum() == 1.0
M = Tree([8,8])
M._refineCell([0,0,0])
M._refineCell([0,0,1])
M.number()
# M.plotGrid(showIt=True)
# assert sorted(M._cells) == [2, 34, 66, 99, 107, 115, 123, 129, 257, 386, 418, 450, 482]
assert M.nhFx == 2
assert M.nFx == 9
assert M.vol.sum() == 1.0
def test_connectivity(self):
T = Tree([8,8])
T._refineCell([0,0,0])
T._refineCell([4,4,1])
T._refineCell([0,0,1])
T._refineCell([2,2,2])
T.number()
assert T._getNextCell([4,0,1]) is None
assert T._getNextCell([0,4,1]) == [T._index([4,4,2]), T._index([4,6,2])]
assert T._getNextCell([0,2,2]) == [T._index([2,2,3]), T._index([2,3,3])]
assert T._getNextCell([4,4,2]) == T._index([6,4,2])
assert T._getNextCell([6,4,2]) is None
assert T._getNextCell([2,0,2]) == T._index([4,0,1])
assert T._getNextCell([4,0,1], positive=False) == [T._index([2,0,2]), [T._index([3,2,3]), T._index([3,3,3])]]
assert T._getNextCell([3,3,3]) == T._index([4,0,1])
assert T._getNextCell([3,2,3]) == T._index([4,0,1])
assert T._getNextCell([2,2,3]) == T._index([3,2,3])
assert T._getNextCell([3,2,3], positive=False) == T._index([2,2,3])
# def test_connectivity(self):
# T = Tree([8,8])
# T._refineCell([0,0,0])
# T._refineCell([4,4,1])
# T._refineCell([0,0,1])
# T._refineCell([2,2,2])
# T.number()
# assert T._getNextCell([4,0,1]) is None
# assert T._getNextCell([0,4,1]) == [T._index([4,4,2]), T._index([4,6,2])]
# assert T._getNextCell([0,2,2]) == [T._index([2,2,3]), T._index([2,3,3])]
# assert T._getNextCell([4,4,2]) == T._index([6,4,2])
# assert T._getNextCell([6,4,2]) is None
# assert T._getNextCell([2,0,2]) == T._index([4,0,1])
# assert T._getNextCell([4,0,1], positive=False) == [T._index([2,0,2]), [T._index([3,2,3]), T._index([3,3,3])]]
# assert T._getNextCell([3,3,3]) == T._index([4,0,1])
# assert T._getNextCell([3,2,3]) == T._index([4,0,1])
# assert T._getNextCell([2,2,3]) == T._index([3,2,3])
# assert T._getNextCell([3,2,3], positive=False) == T._index([2,2,3])
assert T._getNextCell([0,0,2], direction=1) == T._index([0,2,2])
assert T._getNextCell([0,2,2], direction=1, positive=False) == T._index([0,0,2])
assert T._getNextCell([0,2,2], direction=1) == T._index([0,4,1])
assert T._getNextCell([0,4,1], direction=1, positive=False) == [T._index([0,2,2]), [T._index([2,3,3]), T._index([3,3,3])]]
# assert T._getNextCell([0,0,2], direction=1) == T._index([0,2,2])
# assert T._getNextCell([0,2,2], direction=1, positive=False) == T._index([0,0,2])
# assert T._getNextCell([0,2,2], direction=1) == T._index([0,4,1])
# assert T._getNextCell([0,4,1], direction=1, positive=False) == [T._index([0,2,2]), [T._index([2,3,3]), T._index([3,3,3])]]
class TestOperatorsQuadTree(unittest.TestCase):
@@ -81,29 +78,29 @@ class TestOperatorsQuadTree(unittest.TestCase):
class TestOperatorsOcTree(unittest.TestCase):
def test_counts(self):
def test_faceDiv(self):
hx, hy, hz = np.r_[1.,2,3,4], np.r_[5.,6,7,8], np.r_[9.,10,11,12]
T = Tree([hx, hy, hz], levels=2)
T.refine(lambda xc:2)
# T.plotGrid(showIt=True)
M = Mesh.TensorMesh([hx, hy, hz])
assert M.nC == T.nC
assert M.nF == T.nF
assert M.nFx == T.nFx
assert M.nFy == T.nFy
# assert M.nE == T.nE
# assert M.nEx == T.nEx
# assert M.nEy == T.nEy
assert np.allclose(M.area, T.permuteF*T.area)
# assert np.allclose(M.edge, T.permuteE*T.edge)
assert np.allclose(M.vol, T.permuteCC*T.vol)
M = Tree([hx, hy, hz], levels=2)
M.refine(lambda xc:2)
# M.plotGrid(showIt=True)
Mr = Mesh.TensorMesh([hx, hy, hz])
assert M.nC == Mr.nC
assert M.nF == Mr.nF
assert M.nFx == Mr.nFx
assert M.nFy == Mr.nFy
assert M.nE == Mr.nE
assert M.nEx == Mr.nEx
assert M.nEy == Mr.nEy
assert np.allclose(Mr.area, M.permuteF*M.area)
assert np.allclose(Mr.edge, M.permuteE*M.edge)
assert np.allclose(Mr.vol, M.permuteCC*M.vol)
# plt.subplot(211).spy(M.faceDiv)
# plt.subplot(212).spy(T.permuteCC.T*T.faceDiv*T.permuteF)
# plt.subplot(211).spy(Mr.faceDiv)
# plt.subplot(212).spy(M.permuteCC.T*M.faceDiv*M.permuteF)
# plt.show()
assert (M.faceDiv - T.permuteCC*T.faceDiv*T.permuteF.T).nnz == 0
assert (Mr.faceDiv - M.permuteCC*M.faceDiv*M.permuteF.T).nnz == 0