예제 #1
0
    def setUp(self):
        g = simplex.StructuredTetrahedralGrid([1, 1, 1])
        g.compute_geometry()
        self.g = g

        # The ordering of faces may differ depending on the test system (presumably version of scipy or similar). Below are hard-coded combination of face-nodes, and the corresponding faces and face_areas.
        self.fn = np.array(
            [[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 5],
             [1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 3, 4, 5, 5, 6, 5, 6],
             [2, 4, 4, 3, 4, 6, 5, 6, 5, 6, 6, 6, 6, 6, 7, 7, 6, 7]])
        self.face_areas = np.array([
            0.5, 0.5, 0.5, 0.5, 0.8660254, 0.70710678, 0.5, 0.70710678, 0.5,
            0.70710678, 0.70710678, 0.5, 0.5, 0.8660254, 0.5, 0.5, 0.5, 0.5
        ])
        self.face_center = np.array(
            [[
                0.33333333, 0.33333333, 0., 0.66666667, 0.33333333, 0.33333333,
                1., 0.66666667, 0.66666667, 0.33333333, 0.66666667, 0.33333333,
                0., 0.66666667, 1., 0.66666667, 0.33333333, 0.66666667
            ],
             [
                 0.33333333, 0., 0.33333333, 0.66666667, 0.33333333,
                 0.66666667, 0.33333333, 0.66666667, 0., 0.33333333,
                 0.33333333, 1., 0.66666667, 0.66666667, 0.66666667, 1.,
                 0.33333333, 0.66666667
             ],
             [
                 0., 0.33333333, 0.33333333, 0., 0.33333333, 0.33333333,
                 0.33333333, 0.33333333, 0.66666667, 0.66666667, 0.66666667,
                 0.33333333, 0.66666667, 0.66666667, 0.66666667, 0.66666667,
                 1., 1.
             ]])
예제 #2
0
def make_grid(grid, grid_dims, domain, dim):
    if grid.lower() == "cart" or grid.lower() == "cartesian":
        return structured.CartGrid(grid_dims, domain)
    elif (grid.lower() == "simplex" and dim == 2) or grid.lower() == "triangular":
        return simplex.StructuredTriangleGrid(grid_dims, domain)
    elif grid.lower() == "tetrahedral":
        g = simplex.StructuredTetrahedralGrid(grid_dims, domain)
        return g
예제 #3
0
def make_grid(grid, grid_dims, domain, dim):
    if grid.lower() == 'cart' or grid.lower() == 'cartesian':
        return structured.CartGrid(grid_dims, domain)
    elif (grid.lower() == 'simplex' and dim == 2) \
            or grid.lower() == 'triangular':
        return simplex.StructuredTriangleGrid(grid_dims, domain)
    elif grid.lower() == 'tetrahedral':
        g =simplex.StructuredTetrahedralGrid(grid_dims, domain)
        return g
예제 #4
0
 def test_coverage_tets(self):
     domain = np.array([2, 3, 0.7])
     grid_size = np.array([3, 5, 2])
     g = simplex.StructuredTetrahedralGrid(grid_size, domain)
     g.compute_geometry()
     self.assertTrue(np.abs(domain.prod() - np.sum(g.cell_volumes)) < 1e-10)
예제 #5
0
    def test_tag_3d_simplex(self):
        g = simplex.StructuredTetrahedralGrid([2] * 3, [1] * 3)

        self.assertTrue(
            np.array_equal(g.tags["fracture_faces"], [False] * g.num_faces))
        self.assertTrue(
            np.array_equal(g.tags["fracture_nodes"], [False] * g.num_nodes))
        self.assertTrue(
            np.array_equal(g.tags["tip_faces"], [False] * g.num_faces))
        self.assertTrue(
            np.array_equal(g.tags["tip_nodes"], [False] * g.num_nodes))
        known = np.array(
            [
                True,
                True,
                True,
                True,
                True,
                True,
                False,
                False,
                False,
                False,
                True,
                False,
                False,
                True,
                False,
                False,
                True,
                False,
                True,
                False,
                False,
                True,
                False,
                True,
                True,
                True,
                False,
                True,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                True,
                False,
                False,
                True,
                False,
                False,
                True,
                False,
                False,
                False,
                True,
                True,
                True,
                False,
                False,
                True,
                False,
                True,
                True,
                False,
                True,
                True,
                False,
                True,
                False,
                False,
                False,
                False,
                False,
                True,
                False,
                False,
                False,
                False,
                False,
                True,
                False,
                True,
                False,
                False,
                False,
                False,
                True,
                True,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                False,
                True,
                False,
                False,
                True,
                False,
                False,
                False,
                True,
                True,
                True,
                False,
                False,
                True,
                False,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
            ],
            dtype=bool,
        )
        self.assertTrue(np.array_equal(g.tags["domain_boundary_faces"], known))
        known = np.array(
            [
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                False,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
                True,
            ],
            dtype=bool,
        )
        self.assertTrue(np.array_equal(g.tags["domain_boundary_nodes"], known))