Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
tet_mesh = meshio.Mesh(
numpy.array(
[
[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[1.0, 1.0, 0.0],
[0.0, 1.0, 0.0],
[0.5, 0.5, 0.5],
]
)
/ 3.0,
[("tetra", numpy.array([[0, 1, 2, 4], [0, 2, 3, 4]]))],
)
tet10_mesh = meshio.Mesh(
numpy.array(
[
[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[1.0, 1.0, 0.0],
[0.5, 0.5, 0.5],
#
[0.5, 0.0, 0.1],
[1.0, 0.5, 0.1],
[0.5, 0.5, 0.1],
[0.25, 0.3, 0.25],
[0.8, 0.25, 0.25],
[0.7, 0.7, 0.3],
]
)
/ 3.0,
def test_cells_dict():
mesh = copy.deepcopy(helpers.tri_mesh)
assert len(mesh.cells_dict) == 1
assert numpy.array_equal(mesh.cells_dict["triangle"], [[0, 1, 2], [0, 2, 3]])
# two cells groups
mesh = meshio.Mesh(
numpy.array(
[[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [1.0, 1.0, 0.0], [0.0, 1.0, 0.0]]
)
/ 3,
[
("triangle", numpy.array([[0, 1, 2]])),
("triangle", numpy.array([[0, 2, 3]])),
],
cell_data={"a": [[0.5], [1.3]]},
)
assert len(mesh.cells_dict) == 1
assert numpy.array_equal(mesh.cells_dict["triangle"], [[0, 1, 2], [0, 2, 3]])
assert numpy.array_equal(mesh.cell_data_dict["a"]["triangle"], [0.5, 1.3])
import meshio
TEST_DIR = Path(__file__).resolve().parent
MESHES_DIR = TEST_DIR / "meshes"
# In general:
# Use values with an infinite decimal representation to test precision.
line_mesh = meshio.Mesh(
numpy.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [1.0, 1.0, 0.0], [0.0, 1.0, 0.0]])
/ 3,
[("line", numpy.array([[0, 1], [0, 2], [0, 3], [1, 2], [2, 3]]))],
)
tri_mesh_2d = meshio.Mesh(
numpy.array([[0.0, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0]]) / 3,
[("triangle", numpy.array([[0, 1, 2], [0, 2, 3]]))],
)
tri_mesh = meshio.Mesh(
numpy.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [1.0, 1.0, 0.0], [0.0, 1.0, 0.0]])
/ 3,
[("triangle", numpy.array([[0, 1, 2], [0, 2, 3]]))],
)
line_tri_mesh = meshio.Mesh(line_mesh.points, line_mesh.cells + tri_mesh.cells)
triangle6_mesh = meshio.Mesh(
numpy.array(
[
[0.0, 0.0, 0.0],
geo_object.add_physical([surf1], label=1)
geo_object.add_physical([surf2], label=2)
surf_diff = geo_object.boolean_difference([surf1], [surf2], delete_other=False)
geo_object.boolean_union([surf_diff, surf2])
mesh = pygmsh.generate_mesh(geo_object)
assert np.abs((compute_volume(mesh) - 1) / 1) < 1e-3
surf = 1 - 0.1 ** 2 * np.pi
outer_mask = np.where(mesh.cell_data_dict["gmsh:physical"]["triangle"] == 1)[0]
outer_cells = {}
outer_cells["triangle"] = mesh.cells_dict["triangle"][outer_mask]
inner_mask = np.where(mesh.cell_data_dict["gmsh:physical"]["triangle"] == 2)[0]
inner_cells = {}
inner_cells["triangle"] = mesh.cells_dict["triangle"][inner_mask]
value = compute_volume(meshio.Mesh(mesh.points, outer_cells))
assert np.abs(value - surf) < 1e-2 * surf
numpy.array(
[
[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[2.0, 0.0, 0.0],
[2.0, 1.0, 0.0],
[1.0, 1.0, 0.0],
[0.0, 1.0, 0.0],
]
)
/ 3.0,
[("quad", numpy.array([[0, 1, 4, 5], [1, 2, 3, 4]]))],
)
d = 0.1
quad8_mesh = meshio.Mesh(
numpy.array(
[
[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[1.0, 1.0, 0.0],
[0.0, 1.0, 0.0],
[0.5, d, 0.0],
[1 - d, 0.5, 0.0],
[0.5, 1 - d, 0.0],
[d, 0.5, 0.0],
[2.0, 0.0, 0.0],
[2.0, 1.0, 0.0],
[1.5, -d, 0.0],
[2 + d, 0.5, 0.0],
[1.5, 1 + d, 0.0],
]
[1.0, 1.0, 0.0],
[0.5, 0.5, 0.5],
#
[0.5, 0.0, 0.1],
[1.0, 0.5, 0.1],
[0.5, 0.5, 0.1],
[0.25, 0.3, 0.25],
[0.8, 0.25, 0.25],
[0.7, 0.7, 0.3],
]
)
/ 3.0,
[("tetra10", numpy.array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]))],
)
hex_mesh = meshio.Mesh(
numpy.array(
[
[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[1.0, 1.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 1.0],
[1.0, 0.0, 1.0],
[1.0, 1.0, 1.0],
[0.0, 1.0, 1.0],
]
),
[("hexahedron", numpy.array([[0, 1, 2, 3, 4, 5, 6, 7]]))],
)
hex20_mesh = meshio.Mesh(
point_data = _read_data(vtk_mesh.GetPointData())
field_data = _read_data(vtk_mesh.GetFieldData())
cell_data = _read_data(vtk_mesh.GetCellData())
# split cell_data by the cell type
cd = {}
index = 0
for cell_type in cells:
num_cells = len(cells[cell_type])
cd[cell_type] = {}
for name, array in cell_data.items():
cd[cell_type][name] = array[index : index + num_cells]
index += num_cells
cell_data = cd
return Mesh(
points, cells, point_data=point_data, cell_data=cell_data, field_data=field_data
)
def test_elset():
points = numpy.array(
[[1.0, 0.0, 0.0], [1.0, 1.0, 0.0], [2.0, 0.5, 0.0], [0.0, 0.5, 0.0]]
)
cells = [
("triangle", numpy.array([[0, 1, 2]])),
("triangle", numpy.array([[0, 1, 3]])),
]
cell_sets = {
"right": [numpy.array([0]), numpy.array([])],
"left": [numpy.array([]), numpy.array([1])],
}
mesh_ref = meshio.Mesh(points, cells, cell_sets=cell_sets)
with tempfile.TemporaryDirectory() as temp_dir:
filepath = os.path.join(temp_dir, "test.inp")
meshio.abaqus.write(filepath, mesh_ref)
mesh = meshio.abaqus.read(filepath)
assert numpy.allclose(mesh_ref.points, mesh.points)
assert len(mesh_ref.cells) == len(mesh.cells)
for ic, cell in enumerate(mesh_ref.cells):
assert cell.type == mesh.cells[ic].type
assert numpy.allclose(cell.data, mesh.cells[ic].data)
assert sorted(mesh_ref.cell_sets.keys()) == sorted(mesh.cell_sets.keys())
for k, v in mesh_ref.cell_sets.items():
for ic in range(len(mesh_ref.cells)):
# vtk requires a different ordering
t = self.t[[0, 3, 6, 2, 1, 5, 7, 4]]
if point_data is not None:
if not isinstance(point_data, dict):
raise ValueError("point_data should be "
"a dictionary of ndarrays.")
if cell_data is not None:
if not isinstance(cell_data, dict):
raise ValueError("cell_data should be "
"a dictionary of ndarrays.")
cells = {'hexahedron': t.T}
mesh = meshio.Mesh(self.p.T, cells, point_data, cell_data)
meshio.write(filename, mesh)
cells = mesh.get_cells_type("triangle")
X, cells = optimesh.cvt.quasi_newton_uniform_full(
X, cells, 1.0e-10, 100, verbose=True
)
return X, cells
if __name__ == "__main__":
X, cells = create_logo2(y=0.08)
mesh = meshio.Mesh(X, {"triangle": cells})
meshio.svg.write("logo.svg", mesh, force_width=300)
X = numpy.column_stack([X[:, 0], X[:, 1], numpy.zeros(X.shape[0])])
meshio.write("logo.vtk", meshio.Mesh(X, {"triangle": cells}))