Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_cuboids_union():
c0 = pygalmesh.Cuboid([0, 0, -0.5], [3, 3, 0.5])
c1 = pygalmesh.Cuboid([1, 1, -2], [2, 2, 2])
u = pygalmesh.Union([c0, c1])
mesh = pygalmesh.generate_mesh(u, cell_size=0.2, edge_size=0.2, verbose=False)
# filter the vertices that belong to cells
verts = mesh.points[numpy.unique(mesh.cells["tetra"])]
tol = 1.0e-2
assert abs(max(verts[:, 0]) - 3.0) < tol
assert abs(min(verts[:, 0]) - 0.0) < tol
assert abs(max(verts[:, 1]) - 3.0) < tol
assert abs(min(verts[:, 1]) - 0.0) < tol
assert abs(max(verts[:, 2]) - 2.0) < tol
assert abs(min(verts[:, 2]) + 2.0) < tol
vol = sum(helpers.compute_volumes(mesh.points, mesh.cells["tetra"]))
def test_translation():
s0 = pygalmesh.Translate(pygalmesh.Cuboid([0, 0, 0], [1, 2, 3]), [1.0, 0.0, 0.0])
mesh = pygalmesh.generate_mesh(s0, cell_size=0.1, edge_size=0.1, verbose=False)
tol = 1.0e-2
assert abs(max(mesh.points[:, 0]) - 2.0) < tol
assert abs(min(mesh.points[:, 0]) - 1.0) < tol
assert abs(max(mesh.points[:, 1]) - 2.0) < tol
assert abs(min(mesh.points[:, 1]) + 0.0) < tol
assert abs(max(mesh.points[:, 2]) - 3.0) < tol
assert abs(min(mesh.points[:, 2]) + 0.0) < tol
vol = sum(helpers.compute_volumes(mesh.points, mesh.cells["tetra"]))
assert abs(vol - 6.0) < tol
return
def test_cuboids_intersection():
c0 = pygalmesh.Cuboid([0, 0, -0.5], [3, 3, 0.5])
c1 = pygalmesh.Cuboid([1, 1, -2], [2, 2, 2])
u = pygalmesh.Intersection([c0, c1])
# In CGAL, feature edges must not intersect, and that's a problem here: The
# intersection edges of the cuboids share eight points with the edges of
# the tall and skinny cuboid.
# eps = 1.0e-2
# extra_features = [
# [[1.0, 1.0 + eps, 0.5], [1.0, 2.0 - eps, 0.5]],
# [[1.0 + eps, 2.0, 0.5], [2.0 - eps, 2.0, 0.5]],
# [[2.0, 2.0 - eps, 0.5], [2.0, 1.0 + eps, 0.5]],
# [[2.0 - eps, 1.0, 0.5], [1.0 + eps, 1.0, 0.5]],
# ]
mesh = pygalmesh.generate_mesh(u, cell_size=0.1, edge_size=0.1, verbose=False)
def test_halfspace():
c = pygalmesh.Cuboid([0, 0, 0], [1, 1, 1])
s = pygalmesh.HalfSpace([1.0, 2.0, 3.0], 1.0, 2.0)
u = pygalmesh.Intersection([c, s])
mesh = pygalmesh.generate_mesh(u, cell_size=0.2, edge_size=0.2, verbose=False)
vol = sum(helpers.compute_volumes(mesh.points, mesh.cells["tetra"]))
assert abs(vol - 1 / 750) < 1.0e-3
return
def test_cuboids_union():
c0 = pygalmesh.Cuboid([0, 0, -0.5], [3, 3, 0.5])
c1 = pygalmesh.Cuboid([1, 1, -2], [2, 2, 2])
u = pygalmesh.Union([c0, c1])
mesh = pygalmesh.generate_mesh(u, cell_size=0.2, edge_size=0.2, verbose=False)
# filter the vertices that belong to cells
verts = mesh.points[numpy.unique(mesh.cells["tetra"])]
tol = 1.0e-2
assert abs(max(verts[:, 0]) - 3.0) < tol
assert abs(min(verts[:, 0]) - 0.0) < tol
assert abs(max(verts[:, 1]) - 3.0) < tol
assert abs(min(verts[:, 1]) - 0.0) < tol
assert abs(max(verts[:, 2]) - 2.0) < tol
assert abs(min(verts[:, 2]) + 2.0) < tol
def test_rotation():
s0 = pygalmesh.Rotate(
pygalmesh.Cuboid([0, 0, 0], [1, 2, 3]), [1.0, 0.0, 0.0], numpy.pi / 12.0
)
mesh = pygalmesh.generate_mesh(s0, cell_size=0.1, edge_size=0.1, verbose=False)
tol = 1.0e-2
vol = sum(helpers.compute_volumes(mesh.points, mesh.cells["tetra"]))
assert abs(vol - 6.0) < tol
return
def test_cuboids_intersection():
c0 = pygalmesh.Cuboid([0, 0, -0.5], [3, 3, 0.5])
c1 = pygalmesh.Cuboid([1, 1, -2], [2, 2, 2])
u = pygalmesh.Intersection([c0, c1])
# In CGAL, feature edges must not intersect, and that's a problem here: The
# intersection edges of the cuboids share eight points with the edges of
# the tall and skinny cuboid.
# eps = 1.0e-2
# extra_features = [
# [[1.0, 1.0 + eps, 0.5], [1.0, 2.0 - eps, 0.5]],
# [[1.0 + eps, 2.0, 0.5], [2.0 - eps, 2.0, 0.5]],
# [[2.0, 2.0 - eps, 0.5], [2.0, 1.0 + eps, 0.5]],
# [[2.0 - eps, 1.0, 0.5], [1.0 + eps, 1.0, 0.5]],
# ]
mesh = pygalmesh.generate_mesh(u, cell_size=0.1, edge_size=0.1, verbose=False)
# filter the vertices that belong to cells