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. ]])
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
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
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)
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))