示例#1
0
class TestBoxDMPLEX3D(unittest.TestCase):
    def setUp(self):
        data3D = {
            'lower': [0, 0, 0],
            'upper': [0.6, 0.8, 1],
            "nelem": [3, 4, 5]
        }
        self.dom = DMPlexDom(boxMesh=data3D)
        self.dom.setFemIndexing(3)

    def test_generate_dmplex(self):
        assert self.dom.getDimension() == 3

    def test_cell_start_end(self):
        self.assertEqual(self.dom.cellStart, 0)
        self.assertEqual(self.dom.cellEnd, 3 * 4 * 5)

    def test_cell_corners_coords(self):
        coords_cell_0 = np.array([[0, 0, 0], [0, 0.2, 0], [0.2, 0.2, 0],
                                  [0.2, 0, 0], [0, 0, 0.2], [0.2, 0, 0.2],
                                  [0.2, 0.2, 0.2], [0, 0.2, 0.2]])
        coords_cell_0.shape = 8 * 3
        coord = self.dom.getCellCornersCoords(0)
        np_test.assert_array_almost_equal(coords_cell_0, coord, decimal=13)

    def test_border_names(self):
        borderNames = self.dom.getBordersNames()

        assert len(borderNames) == 6
        for b in borderNames:
            assert b in ['up', 'down', 'left', 'right', 'front', 'back']

    def test_borders_nodes(self):
        totalArc = 28 * 11
        totalFace = 35 * 2
        total = totalArc + totalFace
        bordersNodes = self.dom.getBordersNodes()
        bordersNodes_alt = self.dom.getNodesFromLabel("External Boundary")
        assert type(bordersNodes) == set
        assert len(bordersNodes) == total

        assert type(bordersNodes_alt) == set
        assert len(bordersNodes_alt) == total

        np_test.assert_equal(bordersNodes, bordersNodes_alt)

    def test_border_nodes(self):
        borderNames = self.dom.getBordersNames()
        for b in borderNames:
            if b in ['up', 'down']:
                assert len(self.dom.getBorderNodes(b)) == 7 * 11
            elif b in ['left', 'right']:
                assert len(self.dom.getBorderNodes(b)) == 9 * 11
            else:
                assert len(self.dom.getBorderNodes(b)) == 7 * 9
示例#2
0
class TestBoxDMPLEX2D(unittest.TestCase):

    # Test Roadmap
    ## 1. Separate dmplex from indicesmanager

    def setUp(self):
        data2D = {'lower': [0, 0], 'upper': [0.6, 0.8], "nelem": [3, 4]}
        self.dom = DMPlexDom(boxMesh=data2D)
        self.dom.setFemIndexing(3)

    def test_generate_dmplex(self):
        assert self.dom.getDimension() == 2

    def test_cell_start_end(self):
        self.assertEqual(self.dom.cellStart, 0)
        self.assertEqual(self.dom.cellEnd, 12)

    def test_cell_corners_coords(self):
        coords_cell_0 = np.array([[0, 0], [0.2, 0], [0.2, 0.2], [0, 0.2]])
        coords_cell_0.shape = 8
        coord = self.dom.getCellCornersCoords(0)
        np_test.assert_array_almost_equal(coords_cell_0, coord, decimal=13)

    def test_borders_nodes(self):
        total = 28
        bordersNodes = self.dom.getBordersNodes()
        bordersNodes_alt = self.dom.getNodesFromLabel("External Boundary")
        assert type(bordersNodes) == set
        assert len(bordersNodes) == total

        assert type(bordersNodes_alt) == set
        assert len(bordersNodes_alt) == total

        np_test.assert_equal(bordersNodes, bordersNodes_alt)

    def test_border_nodes(self):
        borderNames = self.dom.getBordersNames()
        for b in borderNames:
            if b in ['up', 'down']:
                assert len(self.dom.getBorderNodes(b)) == 7
            else:
                assert len(self.dom.getBorderNodes(b)) == 9