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"]))
assert abs(vol - 12.0) < 0.1
def test_balls_union():
radius = 1.0
displacement = 0.5
s0 = pygalmesh.Ball([displacement, 0, 0], radius)
s1 = pygalmesh.Ball([-displacement, 0, 0], radius)
u = pygalmesh.Union([s0, s1])
a = numpy.sqrt(radius ** 2 - displacement ** 2)
edge_size = 0.1
n = int(2 * numpy.pi * a / edge_size)
circ = [
[0.0, a * numpy.cos(i * 2 * numpy.pi / n), a * numpy.sin(i * 2 * numpy.pi / n)]
for i in range(n)
]
circ.append(circ[0])
mesh = pygalmesh.generate_mesh(
u, feature_edges=[circ], cell_size=0.15, edge_size=edge_size, verbose=False
)
assert abs(max(mesh.points[:, 0]) - (radius + displacement)) < 0.02
assert abs(min(mesh.points[:, 0]) + (radius + displacement)) < 0.02