def test_comma_space(filename): this_dir = pathlib.Path(__file__).resolve().parent filename = this_dir / "meshes" / "tecplot" / filename mesh = meshio.read(filename) helpers.write_read(meshio.tecplot.write, meshio.tecplot.read, mesh, 1.0e-15)
def test_xdmf3_legacy_reader(mesh): # test with legacy reader def lr(filename): return legacy_reader.read("xdmf3", filename) helpers.write_read(meshio.xdmf_io.write, lr, mesh, 1.0e-15) return
def test_gmsh40(mesh, write_binary): writer = partial(meshio.msh_io.write, fmt_version="4.0", write_binary=write_binary) helpers.write_read(writer, meshio.msh_io.read, mesh, 1.0e-15) return
def test_io(mesh): helpers.write_read( meshio.medit_io.write, meshio.medit_io.read, mesh, 1.0e-15 ) return
def test_xdmf3_legacy_writer(mesh): # test with legacy writer def lw(*args, **kwargs): return legacy_writer.write("xdmf3", *args, **kwargs) helpers.write_read(lw, meshio.xdmf_io.read, mesh, 1.0e-15) return
def test(mesh): helpers.write_read(meshio._tetgen.write, meshio._tetgen.read, mesh, 1.0e-15, extension=".node") return
def test_gmsh2(mesh, write_binary): writer = partial(meshio._msh.write, fmt_version="2", write_binary=write_binary) helpers.write_read(writer, meshio._msh.read, mesh, 1.0e-15) return
def test(mesh): helpers.write_read( meshio.netgen.write, meshio.netgen.read, mesh, 1.0e-13, extension=".vol" ) helpers.write_read( meshio.netgen.write, meshio.netgen.read, mesh, 1.0e-13, extension=".vol.gz" )
def test_obj(mesh): def writer(*args, **kwargs): return meshio.obj.write(*args, **kwargs) for k, c in enumerate(mesh.cells): mesh.cells[k] = meshio.CellBlock(c.type, c.data.astype(numpy.int32)) helpers.write_read(writer, meshio.obj.read, mesh, 1.0e-12)
def test_obj(mesh): def writer(*args, **kwargs): return meshio.obj.write(*args, **kwargs) for key in mesh.cells: mesh.cells[key] = mesh.cells[key].astype(numpy.int32) helpers.write_read(writer, meshio.obj.read, mesh, 1.0e-12)
def test(mesh, write_binary): def writer(*args, **kwargs): return meshio.ansys_io.write(*args, write_binary=write_binary, **kwargs) helpers.write_read(writer, meshio.ansys_io.read, mesh, 1.0e-15) return
def test_compression(mesh): def write(*args, **kwargs): return meshio.xdmf.write(*args, data_format="HDF", compression="gzip", **kwargs) helpers.write_read(write, meshio.xdmf.read, mesh, 1.0e-14)
def test_ply(mesh, binary): def writer(*args, **kwargs): return meshio.ply.write(*args, binary=binary, **kwargs) for k, c in enumerate(mesh.cells): mesh.cells[k] = meshio.CellBlock(c.type, c.data.astype(np.int32)) helpers.write_read(writer, meshio.ply.read, mesh, 1.0e-12)
def test_ply(mesh, binary): def writer(*args, **kwargs): return meshio.ply.write(*args, binary=binary, **kwargs) for key in mesh.cells: mesh.cells[key] = mesh.cells[key].astype(numpy.int32) helpers.write_read(writer, meshio.ply.read, mesh, 1.0e-12)
def test_legacy_writer(mesh): # test with legacy writer def lw(*args, **kwargs): return legacy_writer.write('exodus', *args, **kwargs) # The legacy writer only writes with low precision. helpers.write_read(lw, meshio.exodus_io.read, mesh, 1.0e-15) return
def test_legacy_writer(mesh, write_binary): # test with legacy writer def lw(*args, **kwargs): mode = "vtk-binary" if write_binary else "vtk-ascii" return legacy_writer.write(mode, *args, **kwargs) # The legacy writer only writes with low precision. helpers.write_read(lw, meshio.vtk_io.read, mesh, 1.0e-11) return
def test_gmsh4(mesh, write_binary): def writer(*args, **kwargs): return meshio.msh_io.write(*args, "4", write_binary=write_binary, **kwargs) helpers.write_read(writer, meshio.msh_io.read, mesh, 1.0e-15) return
def test(mesh, data_type): binary, compression = data_type def writer(*args, **kwargs): return meshio.vtu.write(*args, binary=binary, compression=compression, **kwargs) # ASCII files are only meant for debugging, VTK stores only 11 digits # <https://gitlab.kitware.com/vtk/vtk/issues/17038#note_264052> tol = 1.0e-15 if binary else 1.0e-10 helpers.write_read(writer, meshio.vtu.read, mesh, tol)
def test_legacy_writer(mesh, write_binary): # test with legacy writer def lw(*args, **kwargs): mode = 'vtu-binary' if write_binary else 'vtu-ascii' return legacy_writer.write(mode, *args, **kwargs) # The legacy writer only writes with low precision. tol = 1.0e-15 if write_binary else 1.0e-11 helpers.write_read(lw, meshio.vtu_io.read, mesh, tol) return
def test(mesh, binary, data): if data: mesh = copy.deepcopy(mesh) mesh.cell_data["flac3d:zone"] = [numpy.array(data)] helpers.write_read( lambda f, m: meshio.flac3d.write(f, m, binary=binary), meshio.flac3d.read, mesh, 1.0e-15, )
def test_reference_file(filename, ref_sum, ref_num_cells, binary): this_dir = os.path.dirname(os.path.abspath(__file__)) filename = os.path.join(this_dir, "meshes", "vtk", filename) mesh = meshio.read(filename) tol = 1.0e-2 s = numpy.sum(mesh.points) assert abs(s - ref_sum) < tol * ref_sum assert len(mesh.cells["triangle"]) == ref_num_cells writer = partial(meshio._vtk.write, binary=binary) helpers.write_read(writer, meshio._vtk.read, mesh, 1.0e-15)
def test_legacy_reader(mesh, write_binary): def writer(*args, **kwargs): return meshio.vtk_io.write(*args, write_binary=write_binary, **kwargs) # test with legacy reader def lr(filename): mode = "vtk-binary" if write_binary else "vtk-ascii" return legacy_reader.read(mode, filename) helpers.write_read(writer, lr, mesh, 1.0e-15) return
def test_reference_file(filename, md5, ref_sum, ref_num_cells, write_binary): filename = helpers.download(filename, md5) mesh = meshio.read(filename) tol = 1.0e-2 s = numpy.sum(mesh.points) assert abs(s - ref_sum) < tol * ref_sum assert len(mesh.cells["triangle"]) == ref_num_cells writer = partial(meshio.vtk_io.write, write_binary=write_binary) helpers.write_read(writer, meshio.vtk_io.read, mesh, 1.0e-15) return
def test_reference_file(filename, ref_sum, ref_num_cells, binary): this_dir = pathlib.Path(__file__).resolve().parent filename = this_dir / "meshes" / "vtk" / filename mesh = meshio.read(filename) tol = 1.0e-2 s = numpy.sum(mesh.points) assert abs(s - ref_sum) < tol * ref_sum assert mesh.cells[0].type == "triangle" assert len(mesh.cells[0].data) == ref_num_cells writer = partial(meshio.vtk.write, binary=binary) helpers.write_read(writer, meshio.vtk.read, mesh, 1.0e-15)
def test_reference_file(filename, md5, ref_sum_points, ref_num_cells, ref_sum_point_tags, ref_sum_cell_tags): filename = helpers.download(filename, md5) mesh = meshio.read(filename) tol = 1.0e-2 s = mesh.points.sum() assert abs(s - ref_sum_points) < tol * ref_sum_points assert {k: len(v) for k, v in mesh.cells.items()} == ref_num_cells assert mesh.point_data["point_tags"].sum() == ref_sum_point_tags assert {k: v["cell_tags"].sum() for k, v in mesh.cell_data.items()} == ref_sum_cell_tags helpers.write_read(meshio.med_io.write, meshio.med_io.read, mesh, 1.0e-15)
def test_xdmf2_legacy_writer(mesh): # test with legacy writer def lw(*args, **kwargs): return legacy_writer.write('xdmf2', *args, **kwargs) helpers.write_read( lw, meshio.xdmf_io.read, # The legacy writer stores data in only single precision # <https://gitlab.kitware.com/vtk/vtk/issues/17037> mesh, 1.0e-6) return
def test_legacy_reader(mesh, write_binary): def writer(*args, **kwargs): return meshio.vtu_io.write(*args, write_binary=write_binary, **kwargs) # test with legacy reader def lr(filename): mode = "vtu-binary" if write_binary else "vtu-ascii" return legacy_reader.read(mode, filename) # the legacy reader only reads at low precision tol = 1.0e-15 if write_binary else 1.0e-11 helpers.write_read(writer, lr, mesh, tol) return
def test_reference_file(filename, ref_sum, ref_num_cells, binary): this_dir = os.path.dirname(os.path.abspath(__file__)) filename = os.path.join(this_dir, "meshes", "msh", filename) mesh = meshio.read(filename) tol = 1.0e-2 s = mesh.points.sum() assert abs(s - ref_sum) < tol * ref_sum assert {k: len(v) for k, v in mesh.cells.items()} == ref_num_cells assert {k: len(v["gmsh:physical"]) for k, v in mesh.cell_data.items()} == ref_num_cells writer = partial(meshio.gmsh.write, fmt_version="2", binary=binary) helpers.write_read(writer, meshio.gmsh.read, mesh, 1.0e-15)
def test(mesh, write_binary): def writer(*args, **kwargs): return meshio.vtu_io.write( *args, write_binary=write_binary, # don't use pretty xml to increase test coverage pretty_xml=False, **kwargs) # ASCII files are only meant for debugging, VTK stores only 11 digits # <https://gitlab.kitware.com/vtk/vtk/issues/17038#note_264052> tol = 1.0e-15 if write_binary else 1.0e-11 helpers.write_read(writer, meshio.vtu_io.read, mesh, tol) return
def test_reference_file(filename, ref_sum, ref_num_cells, binary): this_dir = os.path.dirname(os.path.abspath(__file__)) filename = os.path.join(this_dir, "meshes", "msh", filename) mesh = meshio.read(filename) tol = 1.0e-2 s = mesh.points.sum() assert abs(s - ref_sum) < tol * ref_sum assert [c.type for c in mesh.cells] == ["line", "triangle"] assert [len(c.data) for c in mesh.cells] == ref_num_cells assert list(map(len, mesh.cell_data["gmsh:geometrical"])) == ref_num_cells assert list(map(len, mesh.cell_data["gmsh:physical"])) == ref_num_cells writer = partial(meshio.gmsh.write, fmt_version="2", binary=binary) helpers.write_read(writer, meshio.gmsh.read, mesh, 1.0e-15)
def test_reference_file(filename, md5, ref_sum, ref_num_cells, write_binary): filename = helpers.download(filename, md5) mesh = meshio.read(filename) tol = 1.0e-2 s = mesh.points.sum() assert abs(s - ref_sum) < tol * ref_sum assert {k: len(v) for k, v in mesh.cells.items()} == ref_num_cells assert { k: len(v["gmsh:physical"]) for k, v in mesh.cell_data.items() } == ref_num_cells writer = partial(meshio.msh_io.write, fmt_version="2", write_binary=write_binary) helpers.write_read(writer, meshio.msh_io.read, mesh, 1.0e-15)
def test(mesh, write_binary): def writer(*args, **kwargs): return meshio.vtu_io.write( *args, write_binary=write_binary, # don't use pretty xml to increase test coverage pretty_xml=False, **kwargs ) # ASCII files are only meant for debugging, VTK stores only 11 digits # <https://gitlab.kitware.com/vtk/vtk/issues/17038#note_264052> tol = 1.0e-15 if write_binary else 1.0e-11 helpers.write_read(writer, meshio.vtu_io.read, mesh, tol) return
def test_reference_file_with_point_cell_data(): filename = "med/box.med" md5 = "0867fb11bd14b83ad11ab20e2b1fd57d" filename = helpers.download(filename, md5) mesh = meshio.read(filename) # Points assert numpy.isclose(mesh.points.sum(), 12) # Cells assert {k: len(v) for k, v in mesh.cells.items()} == {"hexahedron": 1} # Point data data_u = mesh.point_data["resu____DEPL"] assert data_u.shape == (8, 3) assert numpy.isclose(data_u.sum(), 12) # Cell data # ELNO (1 data point for every node of each element) data_eps = mesh.cell_data["hexahedron"]["resu____EPSI_ELNO"] assert data_eps.shape == (1, 8, 6) # (n_cells, n_nodes_per_element, n_components) data_eps_mean = numpy.mean(data_eps, axis=1)[0] eps_ref = numpy.array([1, 0, 0, 0.5, 0.5, 0]) assert numpy.allclose(data_eps_mean, eps_ref) data_sig = mesh.cell_data["hexahedron"]["resu____SIEF_ELNO"] assert data_sig.shape == (1, 8, 6) # (n_cells, n_nodes_per_element, n_components) data_sig_mean = numpy.mean(data_sig, axis=1)[0] sig_ref = numpy.array( [7328.44611253, 2645.87030114, 2034.06063679, 1202.6, 569.752, 0] ) assert numpy.allclose(data_sig_mean, sig_ref) data_psi = mesh.cell_data["hexahedron"]["resu____ENEL_ELNO"] assert data_psi.shape == (1, 8) # (n_cells, n_nodes_per_element, ) with 1 cut off # ELEM (1 data point for each element) data_psi_elem = mesh.cell_data["hexahedron"]["resu____ENEL_ELEM"] assert numpy.isclose(numpy.mean(data_psi, axis=1)[0], data_psi_elem[0]) helpers.write_read(meshio.med_io.write, meshio.med_io.read, mesh, 1.0e-15)
def test_reference_file_with_mixed_cells(): filename = "med/cylinder.med" md5 = "e36b365542c72ef470b83fc21f4dad58" filename = helpers.download(filename, md5) mesh = meshio.read(filename) # Points assert numpy.isclose(mesh.points.sum(), 16.53169892762988) # Cells ref_num_cells = {"pyramid": 18, "quad": 18, "line": 17, "tetra": 63, "triangle": 4} assert {k: len(v) for k, v in mesh.cells.items()} == ref_num_cells # Point tags assert mesh.point_data["point_tags"].sum() == 52 ref_point_tags_info = {2: ["Side"], 3: ["Side", "Top"], 4: ["Top"]} assert mesh.point_tags == ref_point_tags_info # Cell tags ref_sum_cell_tags = { "pyramid": -116, "quad": -75, "line": -48, "tetra": -24, "triangle": -30, } assert { k: v["cell_tags"].sum() for k, v in mesh.cell_data.items() } == ref_sum_cell_tags ref_cell_tags_info = { -6: ["Top circle"], -7: ["Top", "Top and down"], -8: ["Top and down"], -9: ["A", "B"], -10: ["B"], -11: ["B", "C"], -12: ["C"], } assert mesh.cell_tags == ref_cell_tags_info helpers.write_read(meshio.med_io.write, meshio.med_io.read, mesh, 1.0e-15)
def test_stl(mesh, write_binary, tol): def writer(*args, **kwargs): return meshio.stl_io.write(*args, write_binary=write_binary, **kwargs) helpers.write_read(writer, meshio.stl_io.read, mesh, tol) return
def test_xdmf3(mesh, data_format): def write(*args, **kwargs): return meshio.xdmf_io.write(*args, data_format=data_format, **kwargs) helpers.write_read(write, meshio.xdmf_io.read, mesh, 1.0e-15) return
def test(mesh): def writer(*args, **kwargs): return meshio.abaqus_io.write(*args, **kwargs) helpers.write_read(writer, meshio.abaqus_io.read, mesh, 1.0e-15) return
def test(mesh, write_binary): def writer(*args, **kwargs): return meshio.vtk_io.write(*args, write_binary=write_binary, **kwargs) helpers.write_read(writer, meshio.vtk_io.read, mesh, 1.0e-15) return
def test_gmsh4(mesh, write_binary): writer = partial(meshio.msh_io.write, fmt_version="4", write_binary=write_binary) helpers.write_read(writer, meshio.msh_io.read, mesh, 1.0e-15) return
def test_io(mesh): helpers.write_read(meshio.med_io.write, meshio.med_io.read, mesh, 1.0e-15) return