meshioplusplus 6.0.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- meshioplusplus-6.0.5/.clang-format +19 -0
- meshioplusplus-6.0.5/.codecov.yml +1 -0
- meshioplusplus-6.0.5/.flake8 +6 -0
- meshioplusplus-6.0.5/.gitattributes +18 -0
- meshioplusplus-6.0.5/.github/FUNDING.yml +15 -0
- meshioplusplus-6.0.5/.github/ISSUE_TEMPLATE/bug_report.md +23 -0
- meshioplusplus-6.0.5/.github/ISSUE_TEMPLATE/feature_request.md +21 -0
- meshioplusplus-6.0.5/.github/ISSUE_TEMPLATE/new_format.md +18 -0
- meshioplusplus-6.0.5/.github/workflows/ci.yml +130 -0
- meshioplusplus-6.0.5/.github/workflows/docs.yml +46 -0
- meshioplusplus-6.0.5/.github/workflows/wasm.yml +77 -0
- meshioplusplus-6.0.5/.github/workflows/wheels.yml +117 -0
- meshioplusplus-6.0.5/.gitignore +48 -0
- meshioplusplus-6.0.5/.gitmodules +3 -0
- meshioplusplus-6.0.5/.pre-commit-config.yaml +16 -0
- meshioplusplus-6.0.5/.vscode/tasks.json +69 -0
- meshioplusplus-6.0.5/CHANGELOG.md +113 -0
- meshioplusplus-6.0.5/CITATION.cff +21 -0
- meshioplusplus-6.0.5/CLAUDE.md +113 -0
- meshioplusplus-6.0.5/CMakeLists.txt +318 -0
- meshioplusplus-6.0.5/CODE_OF_CONDUCT.md +77 -0
- meshioplusplus-6.0.5/CONTRIBUTING.md +17 -0
- meshioplusplus-6.0.5/LICENSE +22 -0
- meshioplusplus-6.0.5/MANIFEST.in +6 -0
- meshioplusplus-6.0.5/PKG-INFO +334 -0
- meshioplusplus-6.0.5/README.md +278 -0
- meshioplusplus-6.0.5/benchmark/01_benchmark.ipynb +1431 -0
- meshioplusplus-6.0.5/benchmark/README.md +27 -0
- meshioplusplus-6.0.5/benchmark/bench.py +158 -0
- meshioplusplus-6.0.5/benchmark/bench_hotpath.py +99 -0
- meshioplusplus-6.0.5/benchmark/inputs.py +82 -0
- meshioplusplus-6.0.5/benchmark/plots/benchmark_scaling.png +0 -0
- meshioplusplus-6.0.5/benchmark/plots/benchmark_scaling.svg +2546 -0
- meshioplusplus-6.0.5/benchmark/plots/benchmark_speedup.png +0 -0
- meshioplusplus-6.0.5/benchmark/plots/benchmark_speedup.svg +1515 -0
- meshioplusplus-6.0.5/benchmark/plots/benchmark_speedup_cube.png +0 -0
- meshioplusplus-6.0.5/benchmark/plots/benchmark_speedup_cube.svg +1679 -0
- meshioplusplus-6.0.5/benchmark/plots/benchmark_times.png +0 -0
- meshioplusplus-6.0.5/benchmark/plots/benchmark_times.svg +2185 -0
- meshioplusplus-6.0.5/benchmark/plots/benchmark_times_cube.png +0 -0
- meshioplusplus-6.0.5/benchmark/plots/benchmark_times_cube.svg +2081 -0
- meshioplusplus-6.0.5/benchmark/results.csv +14 -0
- meshioplusplus-6.0.5/bindings/_core.cpp +533 -0
- meshioplusplus-6.0.5/bindings/np_conversions.hpp +524 -0
- meshioplusplus-6.0.5/bindings_js/js_bindings.cpp +579 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/byteswap.hpp +145 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/hdf5_util.hpp +554 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/map_order.hpp +56 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/value_io.hpp +191 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/vtk_cells.hpp +269 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/vtu_binary.hpp +385 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/xdmf_common.hpp +184 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/exceptions.hpp +66 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/abaqus.hpp +92 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/ansys.hpp +100 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/ansysinp.hpp +121 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/avsucd.hpp +87 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/cgns.hpp +89 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/dolfin.hpp +82 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/exodus.hpp +99 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/flac3d.hpp +107 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/flux.hpp +86 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/freefem.hpp +85 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/gmsh.hpp +131 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/h5m.hpp +96 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/hmf.hpp +94 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/med.hpp +198 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/medit.hpp +88 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/mfm.hpp +89 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/mphtxt.hpp +88 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/nastran.hpp +100 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/netgen.hpp +107 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/obj_off.hpp +117 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/openfoam.hpp +117 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/permas.hpp +103 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/ply.hpp +95 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/stl.hpp +89 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/su2.hpp +86 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/tecplot.hpp +94 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/tetgen.hpp +92 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/ugrid.hpp +100 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/unv.hpp +100 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/vtk.hpp +114 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/vtu.hpp +103 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/wkt.hpp +75 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/xdmf.hpp +115 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/log.hpp +244 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/mesh.hpp +148 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/ndarray.hpp +337 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/parallel.hpp +330 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/types.hpp +221 -0
- meshioplusplus-6.0.5/cpp/include/meshioplusplus/vtk_common.hpp +209 -0
- meshioplusplus-6.0.5/cpp/src/formats/abaqus.cpp +310 -0
- meshioplusplus-6.0.5/cpp/src/formats/ansys.cpp +424 -0
- meshioplusplus-6.0.5/cpp/src/formats/ansysinp.cpp +620 -0
- meshioplusplus-6.0.5/cpp/src/formats/avsucd.cpp +392 -0
- meshioplusplus-6.0.5/cpp/src/formats/cgns.cpp +174 -0
- meshioplusplus-6.0.5/cpp/src/formats/dolfin.cpp +255 -0
- meshioplusplus-6.0.5/cpp/src/formats/exodus.cpp +611 -0
- meshioplusplus-6.0.5/cpp/src/formats/flac3d.cpp +476 -0
- meshioplusplus-6.0.5/cpp/src/formats/flux.cpp +269 -0
- meshioplusplus-6.0.5/cpp/src/formats/freefem.cpp +187 -0
- meshioplusplus-6.0.5/cpp/src/formats/gmsh.cpp +1157 -0
- meshioplusplus-6.0.5/cpp/src/formats/h5m.cpp +274 -0
- meshioplusplus-6.0.5/cpp/src/formats/hmf.cpp +142 -0
- meshioplusplus-6.0.5/cpp/src/formats/med.cpp +589 -0
- meshioplusplus-6.0.5/cpp/src/formats/medit.cpp +293 -0
- meshioplusplus-6.0.5/cpp/src/formats/mfm.cpp +207 -0
- meshioplusplus-6.0.5/cpp/src/formats/mphtxt.cpp +231 -0
- meshioplusplus-6.0.5/cpp/src/formats/nastran.cpp +364 -0
- meshioplusplus-6.0.5/cpp/src/formats/netgen.cpp +437 -0
- meshioplusplus-6.0.5/cpp/src/formats/obj.cpp +225 -0
- meshioplusplus-6.0.5/cpp/src/formats/off.cpp +127 -0
- meshioplusplus-6.0.5/cpp/src/formats/openfoam.cpp +785 -0
- meshioplusplus-6.0.5/cpp/src/formats/permas.cpp +266 -0
- meshioplusplus-6.0.5/cpp/src/formats/ply.cpp +500 -0
- meshioplusplus-6.0.5/cpp/src/formats/stl.cpp +292 -0
- meshioplusplus-6.0.5/cpp/src/formats/su2.cpp +374 -0
- meshioplusplus-6.0.5/cpp/src/formats/tecplot.cpp +469 -0
- meshioplusplus-6.0.5/cpp/src/formats/tetgen.cpp +347 -0
- meshioplusplus-6.0.5/cpp/src/formats/ugrid.cpp +663 -0
- meshioplusplus-6.0.5/cpp/src/formats/unv.cpp +308 -0
- meshioplusplus-6.0.5/cpp/src/formats/vtk.cpp +357 -0
- meshioplusplus-6.0.5/cpp/src/formats/vtk_read.cpp +390 -0
- meshioplusplus-6.0.5/cpp/src/formats/vtu.cpp +246 -0
- meshioplusplus-6.0.5/cpp/src/formats/vtu_read.cpp +277 -0
- meshioplusplus-6.0.5/cpp/src/formats/wkt.cpp +202 -0
- meshioplusplus-6.0.5/cpp/src/formats/xdmf.cpp +551 -0
- meshioplusplus-6.0.5/cpp/tests/mesh_fixtures.hpp +421 -0
- meshioplusplus-6.0.5/cpp/tests/test_ansysinp.cpp +102 -0
- meshioplusplus-6.0.5/cpp/tests/test_core.cpp +126 -0
- meshioplusplus-6.0.5/cpp/tests/test_feconv_formats.cpp +62 -0
- meshioplusplus-6.0.5/cpp/tests/test_gmsh.cpp +57 -0
- meshioplusplus-6.0.5/cpp/tests/test_hdf5_formats.cpp +126 -0
- meshioplusplus-6.0.5/cpp/tests/test_mfm.cpp +64 -0
- meshioplusplus-6.0.5/cpp/tests/test_misc_formats.cpp +95 -0
- meshioplusplus-6.0.5/cpp/tests/test_netcdf_formats.cpp +36 -0
- meshioplusplus-6.0.5/cpp/tests/test_obj_off.cpp +45 -0
- meshioplusplus-6.0.5/cpp/tests/test_openfoam.cpp +98 -0
- meshioplusplus-6.0.5/cpp/tests/test_parallel.cpp +84 -0
- meshioplusplus-6.0.5/cpp/tests/test_stl.cpp +63 -0
- meshioplusplus-6.0.5/cpp/tests/test_text_formats.cpp +114 -0
- meshioplusplus-6.0.5/cpp/tests/test_vtk.cpp +51 -0
- meshioplusplus-6.0.5/cpp/tests/test_vtu.cpp +53 -0
- meshioplusplus-6.0.5/cpp/tests/test_xdmf.cpp +50 -0
- meshioplusplus-6.0.5/cpp/third_party/pugixml/pugiconfig.hpp +77 -0
- meshioplusplus-6.0.5/cpp/third_party/pugixml/pugixml.cpp +13226 -0
- meshioplusplus-6.0.5/cpp/third_party/pugixml/pugixml.hpp +1516 -0
- meshioplusplus-6.0.5/doc/.gitignore +4 -0
- meshioplusplus-6.0.5/doc/.vitepress/config.mts +115 -0
- meshioplusplus-6.0.5/doc/benchmarks.md +115 -0
- meshioplusplus-6.0.5/doc/cell_types.md +150 -0
- meshioplusplus-6.0.5/doc/cell_types.tex +414 -0
- meshioplusplus-6.0.5/doc/cli.md +123 -0
- meshioplusplus-6.0.5/doc/extending.md +113 -0
- meshioplusplus-6.0.5/doc/formats/abaqus.md +112 -0
- meshioplusplus-6.0.5/doc/formats/ansys.md +120 -0
- meshioplusplus-6.0.5/doc/formats/ansysinp.md +142 -0
- meshioplusplus-6.0.5/doc/formats/avsucd.md +105 -0
- meshioplusplus-6.0.5/doc/formats/cgns.md +73 -0
- meshioplusplus-6.0.5/doc/formats/dolfin.md +100 -0
- meshioplusplus-6.0.5/doc/formats/exodus.md +103 -0
- meshioplusplus-6.0.5/doc/formats/flac3d.md +113 -0
- meshioplusplus-6.0.5/doc/formats/flux.md +112 -0
- meshioplusplus-6.0.5/doc/formats/freefem.md +78 -0
- meshioplusplus-6.0.5/doc/formats/gmsh.md +137 -0
- meshioplusplus-6.0.5/doc/formats/h5m.md +99 -0
- meshioplusplus-6.0.5/doc/formats/hmf.md +73 -0
- meshioplusplus-6.0.5/doc/formats/mdpa.md +162 -0
- meshioplusplus-6.0.5/doc/formats/med.md +237 -0
- meshioplusplus-6.0.5/doc/formats/medit.md +120 -0
- meshioplusplus-6.0.5/doc/formats/mfm.md +94 -0
- meshioplusplus-6.0.5/doc/formats/mphtxt.md +98 -0
- meshioplusplus-6.0.5/doc/formats/nastran.md +125 -0
- meshioplusplus-6.0.5/doc/formats/netgen.md +127 -0
- meshioplusplus-6.0.5/doc/formats/neuroglancer.md +67 -0
- meshioplusplus-6.0.5/doc/formats/obj.md +73 -0
- meshioplusplus-6.0.5/doc/formats/off.md +60 -0
- meshioplusplus-6.0.5/doc/formats/openfoam.md +151 -0
- meshioplusplus-6.0.5/doc/formats/permas.md +113 -0
- meshioplusplus-6.0.5/doc/formats/ply.md +91 -0
- meshioplusplus-6.0.5/doc/formats/stl.md +86 -0
- meshioplusplus-6.0.5/doc/formats/su2.md +94 -0
- meshioplusplus-6.0.5/doc/formats/svg.md +84 -0
- meshioplusplus-6.0.5/doc/formats/tecplot.md +109 -0
- meshioplusplus-6.0.5/doc/formats/tetgen.md +88 -0
- meshioplusplus-6.0.5/doc/formats/ugrid.md +109 -0
- meshioplusplus-6.0.5/doc/formats/unv.md +135 -0
- meshioplusplus-6.0.5/doc/formats/vtk.md +108 -0
- meshioplusplus-6.0.5/doc/formats/vtu.md +111 -0
- meshioplusplus-6.0.5/doc/formats/wkt.md +73 -0
- meshioplusplus-6.0.5/doc/formats/xdmf.md +131 -0
- meshioplusplus-6.0.5/doc/formats.md +218 -0
- meshioplusplus-6.0.5/doc/index.md +51 -0
- meshioplusplus-6.0.5/doc/installation.md +116 -0
- meshioplusplus-6.0.5/doc/mesh_data_model.md +118 -0
- meshioplusplus-6.0.5/doc/package.json +14 -0
- meshioplusplus-6.0.5/doc/paraview_plugin.md +40 -0
- meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_scaling.png +0 -0
- meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_scaling.svg +2546 -0
- meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_speedup.png +0 -0
- meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_speedup.svg +1515 -0
- meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_times.png +0 -0
- meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_times.svg +2185 -0
- meshioplusplus-6.0.5/doc/public/logo-icon.png +0 -0
- meshioplusplus-6.0.5/doc/public/logo-icon.svg +592 -0
- meshioplusplus-6.0.5/doc/public/logo.svg +641 -0
- meshioplusplus-6.0.5/doc/quickstart.md +94 -0
- meshioplusplus-6.0.5/doc/wasm.md +134 -0
- meshioplusplus-6.0.5/doc/xdmf_time_series.md +71 -0
- meshioplusplus-6.0.5/example/01_read_and_visualize.ipynb +309 -0
- meshioplusplus-6.0.5/example/02_convert_and_inspect.ipynb +267 -0
- meshioplusplus-6.0.5/example/README.md +30 -0
- meshioplusplus-6.0.5/example/example.stp +4131 -0
- meshioplusplus-6.0.5/example/example.stp.mesh.json +15 -0
- meshioplusplus-6.0.5/justfile +29 -0
- meshioplusplus-6.0.5/logo/.gitignore +5 -0
- meshioplusplus-6.0.5/logo/README.md +34 -0
- meshioplusplus-6.0.5/logo/_mesh_icon.tex +590 -0
- meshioplusplus-6.0.5/logo/build.sh +79 -0
- meshioplusplus-6.0.5/logo/gen_logo_tikz.py +145 -0
- meshioplusplus-6.0.5/logo/logo-icon.pdf +0 -0
- meshioplusplus-6.0.5/logo/logo-icon.png +0 -0
- meshioplusplus-6.0.5/logo/logo-icon.svg +592 -0
- meshioplusplus-6.0.5/logo/logo-icon.tex +10 -0
- meshioplusplus-6.0.5/logo/logo-with-text.svg +641 -0
- meshioplusplus-6.0.5/logo/logo.pdf +0 -0
- meshioplusplus-6.0.5/logo/logo.png +0 -0
- meshioplusplus-6.0.5/logo/logo.py +92 -0
- meshioplusplus-6.0.5/logo/logo.svg +641 -0
- meshioplusplus-6.0.5/logo/logo.tex +25 -0
- meshioplusplus-6.0.5/pyproject.toml +79 -0
- meshioplusplus-6.0.5/src/meshioplusplus/__about__.py +16 -0
- meshioplusplus-6.0.5/src/meshioplusplus/__init__.py +104 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_cli/__init__.py +3 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_cli/_ascii.py +62 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_cli/_binary.py +60 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_cli/_compress.py +81 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_cli/_convert.py +75 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_cli/_decompress.py +50 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_cli/_info.py +40 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_cli/_main.py +63 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_common.py +169 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_cxml/__init__.py +3 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_cxml/etree.py +60 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_exceptions.py +10 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_files.py +16 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_helpers.py +204 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_mesh.py +446 -0
- meshioplusplus-6.0.5/src/meshioplusplus/_vtk_common.py +205 -0
- meshioplusplus-6.0.5/src/meshioplusplus/abaqus/__init__.py +47 -0
- meshioplusplus-6.0.5/src/meshioplusplus/abaqus/_abaqus.py +453 -0
- meshioplusplus-6.0.5/src/meshioplusplus/ansys/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/ansys/_ansys.py +461 -0
- meshioplusplus-6.0.5/src/meshioplusplus/ansysInp/__init__.py +33 -0
- meshioplusplus-6.0.5/src/meshioplusplus/ansysInp/_ansysInp.py +365 -0
- meshioplusplus-6.0.5/src/meshioplusplus/avsucd/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/avsucd/_avsucd.py +243 -0
- meshioplusplus-6.0.5/src/meshioplusplus/cgns/__init__.py +34 -0
- meshioplusplus-6.0.5/src/meshioplusplus/cgns/_cgns.py +97 -0
- meshioplusplus-6.0.5/src/meshioplusplus/dolfin/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/dolfin/_dolfin.py +235 -0
- meshioplusplus-6.0.5/src/meshioplusplus/exodus/__init__.py +34 -0
- meshioplusplus-6.0.5/src/meshioplusplus/exodus/_exodus.py +369 -0
- meshioplusplus-6.0.5/src/meshioplusplus/flac3d/__init__.py +33 -0
- meshioplusplus-6.0.5/src/meshioplusplus/flac3d/_flac3d.py +607 -0
- meshioplusplus-6.0.5/src/meshioplusplus/flux/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/flux/_flux.py +185 -0
- meshioplusplus-6.0.5/src/meshioplusplus/freefem/__init__.py +33 -0
- meshioplusplus-6.0.5/src/meshioplusplus/freefem/_freefem.py +124 -0
- meshioplusplus-6.0.5/src/meshioplusplus/gmsh/__init__.py +68 -0
- meshioplusplus-6.0.5/src/meshioplusplus/gmsh/_gmsh22.py +411 -0
- meshioplusplus-6.0.5/src/meshioplusplus/gmsh/_gmsh40.py +400 -0
- meshioplusplus-6.0.5/src/meshioplusplus/gmsh/_gmsh41.py +769 -0
- meshioplusplus-6.0.5/src/meshioplusplus/gmsh/common.py +293 -0
- meshioplusplus-6.0.5/src/meshioplusplus/gmsh/main.py +105 -0
- meshioplusplus-6.0.5/src/meshioplusplus/h5m/__init__.py +39 -0
- meshioplusplus-6.0.5/src/meshioplusplus/h5m/_h5m.py +267 -0
- meshioplusplus-6.0.5/src/meshioplusplus/hmf/__init__.py +36 -0
- meshioplusplus-6.0.5/src/meshioplusplus/hmf/_hmf.py +145 -0
- meshioplusplus-6.0.5/src/meshioplusplus/mdpa/__init__.py +3 -0
- meshioplusplus-6.0.5/src/meshioplusplus/mdpa/_mdpa.py +2443 -0
- meshioplusplus-6.0.5/src/meshioplusplus/med/__init__.py +76 -0
- meshioplusplus-6.0.5/src/meshioplusplus/med/_med.py +1127 -0
- meshioplusplus-6.0.5/src/meshioplusplus/med/_med41.py +202 -0
- meshioplusplus-6.0.5/src/meshioplusplus/med/_medmulti.py +533 -0
- meshioplusplus-6.0.5/src/meshioplusplus/medit/__init__.py +43 -0
- meshioplusplus-6.0.5/src/meshioplusplus/medit/_medit.py +526 -0
- meshioplusplus-6.0.5/src/meshioplusplus/medit/_medit_internal.py +224 -0
- meshioplusplus-6.0.5/src/meshioplusplus/mfm/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/mfm/_mfm.py +123 -0
- meshioplusplus-6.0.5/src/meshioplusplus/mphtxt/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/mphtxt/_mphtxt.py +179 -0
- meshioplusplus-6.0.5/src/meshioplusplus/nastran/__init__.py +45 -0
- meshioplusplus-6.0.5/src/meshioplusplus/nastran/_nastran.py +540 -0
- meshioplusplus-6.0.5/src/meshioplusplus/netgen/__init__.py +43 -0
- meshioplusplus-6.0.5/src/meshioplusplus/netgen/_netgen.py +454 -0
- meshioplusplus-6.0.5/src/meshioplusplus/neuroglancer/__init__.py +3 -0
- meshioplusplus-6.0.5/src/meshioplusplus/neuroglancer/_neuroglancer.py +80 -0
- meshioplusplus-6.0.5/src/meshioplusplus/obj/__init__.py +35 -0
- meshioplusplus-6.0.5/src/meshioplusplus/obj/_obj.py +136 -0
- meshioplusplus-6.0.5/src/meshioplusplus/off/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/off/_off.py +95 -0
- meshioplusplus-6.0.5/src/meshioplusplus/openfoam/__init__.py +17 -0
- meshioplusplus-6.0.5/src/meshioplusplus/openfoam/_openfoam.py +730 -0
- meshioplusplus-6.0.5/src/meshioplusplus/permas/__init__.py +33 -0
- meshioplusplus-6.0.5/src/meshioplusplus/permas/_permas.py +284 -0
- meshioplusplus-6.0.5/src/meshioplusplus/ply/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/ply/_ply.py +531 -0
- meshioplusplus-6.0.5/src/meshioplusplus/stl/__init__.py +37 -0
- meshioplusplus-6.0.5/src/meshioplusplus/stl/_stl.py +259 -0
- meshioplusplus-6.0.5/src/meshioplusplus/su2/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/su2/_su2.py +373 -0
- meshioplusplus-6.0.5/src/meshioplusplus/svg/__init__.py +3 -0
- meshioplusplus-6.0.5/src/meshioplusplus/svg/_svg.py +108 -0
- meshioplusplus-6.0.5/src/meshioplusplus/tecplot/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/tecplot/_tecplot.py +508 -0
- meshioplusplus-6.0.5/src/meshioplusplus/tetgen/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/tetgen/_tetgen.py +164 -0
- meshioplusplus-6.0.5/src/meshioplusplus/ugrid/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/ugrid/_ugrid.py +284 -0
- meshioplusplus-6.0.5/src/meshioplusplus/unv/__init__.py +34 -0
- meshioplusplus-6.0.5/src/meshioplusplus/unv/_unv.py +335 -0
- meshioplusplus-6.0.5/src/meshioplusplus/vtk/__init__.py +65 -0
- meshioplusplus-6.0.5/src/meshioplusplus/vtk/_main.py +37 -0
- meshioplusplus-6.0.5/src/meshioplusplus/vtk/_vtk_42.py +764 -0
- meshioplusplus-6.0.5/src/meshioplusplus/vtk/_vtk_51.py +655 -0
- meshioplusplus-6.0.5/src/meshioplusplus/vtu/__init__.py +55 -0
- meshioplusplus-6.0.5/src/meshioplusplus/vtu/_vtu.py +912 -0
- meshioplusplus-6.0.5/src/meshioplusplus/wkt/__init__.py +31 -0
- meshioplusplus-6.0.5/src/meshioplusplus/wkt/_wkt.py +100 -0
- meshioplusplus-6.0.5/src/meshioplusplus/xdmf/__init__.py +45 -0
- meshioplusplus-6.0.5/src/meshioplusplus/xdmf/common.py +175 -0
- meshioplusplus-6.0.5/src/meshioplusplus/xdmf/main.py +546 -0
- meshioplusplus-6.0.5/src/meshioplusplus/xdmf/time_series.py +484 -0
- meshioplusplus-6.0.5/tests/__init__.py +0 -0
- meshioplusplus-6.0.5/tests/helpers.py +759 -0
- meshioplusplus-6.0.5/tests/input/mdpa/test_edge_cases.mdpa +47 -0
- meshioplusplus-6.0.5/tests/input/mdpa/test_elements_permutations.mdpa +44 -0
- meshioplusplus-6.0.5/tests/input/mdpa/test_geometries_minimal.mdpa +14 -0
- meshioplusplus-6.0.5/tests/input/mdpa/test_geometries_read.mdpa +35 -0
- meshioplusplus-6.0.5/tests/input/mdpa/test_mesh_blocks.mdpa +68 -0
- meshioplusplus-6.0.5/tests/input/mdpa/test_submodelparts_hierarchical.mdpa +82 -0
- meshioplusplus-6.0.5/tests/input/mdpa/test_tables_varied.mdpa +27 -0
- meshioplusplus-6.0.5/tests/legacy_reader.py +184 -0
- meshioplusplus-6.0.5/tests/legacy_writer.py +226 -0
- meshioplusplus-6.0.5/tests/meshes/abaqus/README.md +2 -0
- meshioplusplus-6.0.5/tests/meshes/abaqus/UUea.inp +3 -0
- meshioplusplus-6.0.5/tests/meshes/abaqus/element_elset.inp +3 -0
- meshioplusplus-6.0.5/tests/meshes/abaqus/nle1xf3c.inp +3 -0
- meshioplusplus-6.0.5/tests/meshes/abaqus/wInclude_bulk.inp +3 -0
- meshioplusplus-6.0.5/tests/meshes/abaqus/wInclude_main.inp +3 -0
- meshioplusplus-6.0.5/tests/meshes/flac3d/flac3d_mesh_ex.f3grid +3 -0
- meshioplusplus-6.0.5/tests/meshes/flac3d/flac3d_mesh_ex_bin.f3grid +3 -0
- meshioplusplus-6.0.5/tests/meshes/mdpa/test_elements_and_conditions.mdpa +196 -0
- meshioplusplus-6.0.5/tests/meshes/mdpa/test_geometries.mdpa +27 -0
- meshioplusplus-6.0.5/tests/meshes/mdpa/test_small_cube.mdpa +25 -0
- meshioplusplus-6.0.5/tests/meshes/mdpa/test_submodelpart.mdpa +44 -0
- meshioplusplus-6.0.5/tests/meshes/med/README.md +54 -0
- meshioplusplus-6.0.5/tests/meshes/med/box.med +3 -0
- meshioplusplus-6.0.5/tests/meshes/med/cylinder.med +3 -0
- meshioplusplus-6.0.5/tests/meshes/med/input_code_aster.med +3 -0
- meshioplusplus-6.0.5/tests/meshes/med/voronoi_hex.med +3 -0
- meshioplusplus-6.0.5/tests/meshes/medit/cube86.mesh +3 -0
- meshioplusplus-6.0.5/tests/meshes/medit/hch_strct.4.be.meshb +3 -0
- meshioplusplus-6.0.5/tests/meshes/medit/hch_strct.4.meshb +3 -0
- meshioplusplus-6.0.5/tests/meshes/medit/sphere_mixed.1.meshb +3 -0
- meshioplusplus-6.0.5/tests/meshes/msh/Makefile +5 -0
- meshioplusplus-6.0.5/tests/meshes/msh/README.md +5 -0
- meshioplusplus-6.0.5/tests/meshes/nastran/README.md +1 -0
- meshioplusplus-6.0.5/tests/meshes/nastran/cylinder.fem +3 -0
- meshioplusplus-6.0.5/tests/meshes/nastran/cylinder_cells_first.fem +3 -0
- meshioplusplus-6.0.5/tests/meshes/netgen/periodic_1d.vol +3 -0
- meshioplusplus-6.0.5/tests/meshes/netgen/periodic_2d.vol +3 -0
- meshioplusplus-6.0.5/tests/meshes/netgen/periodic_3d.vol +3 -0
- meshioplusplus-6.0.5/tests/meshes/neuroglancer/simple1 +0 -0
- meshioplusplus-6.0.5/tests/meshes/obj/elephav.obj +3 -0
- meshioplusplus-6.0.5/tests/meshes/ply/bun_zipper_res4.ply +3 -0
- meshioplusplus-6.0.5/tests/meshes/ply/tet.ply +3 -0
- meshioplusplus-6.0.5/tests/meshes/su2/README.md +2 -0
- meshioplusplus-6.0.5/tests/meshes/su2/mixgrid.su2 +3 -0
- meshioplusplus-6.0.5/tests/meshes/su2/square.su2 +3 -0
- meshioplusplus-6.0.5/tests/meshes/tecplot/quad_zone_comma.tec +3 -0
- meshioplusplus-6.0.5/tests/meshes/tecplot/quad_zone_multivar.tec +3 -0
- meshioplusplus-6.0.5/tests/meshes/tecplot/quad_zone_space.tec +3 -0
- meshioplusplus-6.0.5/tests/meshes/tetgen/mesh.ele +3 -0
- meshioplusplus-6.0.5/tests/meshes/tetgen/mesh.node +3 -0
- meshioplusplus-6.0.5/tests/meshes/ugrid/hch_strct.4.lb8.ugrid +3 -0
- meshioplusplus-6.0.5/tests/meshes/ugrid/pyra_cube.ugrid +3 -0
- meshioplusplus-6.0.5/tests/meshes/ugrid/sphere_mixed.1.lb8.ugrid +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtk/00_image.vtk +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtk/01_image.vtk +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtk/02_structured.vtk +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtk/03_rectilinear.vtk +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtk/04_rectilinear.vtk +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtk/05_rectilinear.vtk +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtk/06_color_scalars.vtk +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtk/06_unstructured.vtk +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtk/gh-935.vtk +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtk/rbc_001.vtk +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtu/00_raw_binary.vtu +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtu/01_raw_binary_int64.vtu +3 -0
- meshioplusplus-6.0.5/tests/meshes/vtu/02_raw_compressed.vtu +3 -0
- meshioplusplus-6.0.5/tests/meshes/wkt/simple.wkt +1 -0
- meshioplusplus-6.0.5/tests/meshes/wkt/whitespaced.wkt +4 -0
- meshioplusplus-6.0.5/tests/performance.py +372 -0
- meshioplusplus-6.0.5/tests/test_abaqus.py +80 -0
- meshioplusplus-6.0.5/tests/test_ansys.py +27 -0
- meshioplusplus-6.0.5/tests/test_ansysInp.py +482 -0
- meshioplusplus-6.0.5/tests/test_avsucd.py +27 -0
- meshioplusplus-6.0.5/tests/test_cgns.py +18 -0
- meshioplusplus-6.0.5/tests/test_cli.py +80 -0
- meshioplusplus-6.0.5/tests/test_dolfin.py +30 -0
- meshioplusplus-6.0.5/tests/test_exodus.py +39 -0
- meshioplusplus-6.0.5/tests/test_flac3d.py +67 -0
- meshioplusplus-6.0.5/tests/test_flux.py +32 -0
- meshioplusplus-6.0.5/tests/test_freefem.py +32 -0
- meshioplusplus-6.0.5/tests/test_gmsh.py +181 -0
- meshioplusplus-6.0.5/tests/test_helpers.py +46 -0
- meshioplusplus-6.0.5/tests/test_hmf.py +43 -0
- meshioplusplus-6.0.5/tests/test_mdpa.py +1966 -0
- meshioplusplus-6.0.5/tests/test_med.py +1598 -0
- meshioplusplus-6.0.5/tests/test_medit.py +139 -0
- meshioplusplus-6.0.5/tests/test_mesh.py +108 -0
- meshioplusplus-6.0.5/tests/test_mfm.py +33 -0
- meshioplusplus-6.0.5/tests/test_moab.py +29 -0
- meshioplusplus-6.0.5/tests/test_mphtxt.py +31 -0
- meshioplusplus-6.0.5/tests/test_nastran.py +73 -0
- meshioplusplus-6.0.5/tests/test_netgen.py +119 -0
- meshioplusplus-6.0.5/tests/test_neuroglancer.py +35 -0
- meshioplusplus-6.0.5/tests/test_obj.py +43 -0
- meshioplusplus-6.0.5/tests/test_off.py +24 -0
- meshioplusplus-6.0.5/tests/test_openfoam.py +1169 -0
- meshioplusplus-6.0.5/tests/test_permas.py +35 -0
- meshioplusplus-6.0.5/tests/test_ply.py +66 -0
- meshioplusplus-6.0.5/tests/test_public.py +6 -0
- meshioplusplus-6.0.5/tests/test_stl.py +24 -0
- meshioplusplus-6.0.5/tests/test_su2.py +46 -0
- meshioplusplus-6.0.5/tests/test_svg.py +19 -0
- meshioplusplus-6.0.5/tests/test_tecplot.py +82 -0
- meshioplusplus-6.0.5/tests/test_tetgen.py +36 -0
- meshioplusplus-6.0.5/tests/test_ugrid.py +255 -0
- meshioplusplus-6.0.5/tests/test_unv.py +47 -0
- meshioplusplus-6.0.5/tests/test_vtk.py +123 -0
- meshioplusplus-6.0.5/tests/test_vtu.py +82 -0
- meshioplusplus-6.0.5/tests/test_wkt.py +39 -0
- meshioplusplus-6.0.5/tests/test_xdmf.py +123 -0
- meshioplusplus-6.0.5/tools/paraview-meshioplusplus-plugin.py +195 -0
- meshioplusplus-6.0.5/tox.ini +41 -0
- meshioplusplus-6.0.5/wasm/README.md +41 -0
- meshioplusplus-6.0.5/wasm/index.d.ts +99 -0
- meshioplusplus-6.0.5/wasm/package.json +46 -0
- meshioplusplus-6.0.5/wasm/src/index.mjs +65 -0
- meshioplusplus-6.0.5/wasm/test/smoke.mjs +118 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Codifies the C++ style already in use across cpp/, bindings/, bindings_js/
|
|
3
|
+
# (K&R braces, 4-space indent, no tabs). Does not apply to cpp/third_party
|
|
4
|
+
# (vendored dependencies) or any fetched build directory.
|
|
5
|
+
BasedOnStyle: Google
|
|
6
|
+
Language: Cpp
|
|
7
|
+
IndentWidth: 4
|
|
8
|
+
UseTab: Never
|
|
9
|
+
ColumnLimit: 100
|
|
10
|
+
BreakBeforeBraces: Attach
|
|
11
|
+
AccessModifierOffset: -4
|
|
12
|
+
NamespaceIndentation: None
|
|
13
|
+
PointerAlignment: Left
|
|
14
|
+
ReferenceAlignment: Left
|
|
15
|
+
AllowShortFunctionsOnASingleLine: Inline
|
|
16
|
+
AllowShortIfStatementsOnASingleLine: false
|
|
17
|
+
AllowShortLoopsOnASingleLine: false
|
|
18
|
+
SortIncludes: Never
|
|
19
|
+
DerivePointerAlignment: false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
comment: no
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
|
2
|
+
*.f3grid filter=lfs diff=lfs merge=lfs -text
|
|
3
|
+
*.fem filter=lfs diff=lfs merge=lfs -text
|
|
4
|
+
*.inp filter=lfs diff=lfs merge=lfs -text
|
|
5
|
+
*.med filter=lfs diff=lfs merge=lfs -text
|
|
6
|
+
*.msh filter=lfs diff=lfs merge=lfs -text
|
|
7
|
+
*.obj filter=lfs diff=lfs merge=lfs -text
|
|
8
|
+
*.ply filter=lfs diff=lfs merge=lfs -text
|
|
9
|
+
*.vtk filter=lfs diff=lfs merge=lfs -text
|
|
10
|
+
*.vtu filter=lfs diff=lfs merge=lfs -text
|
|
11
|
+
*.ugrid filter=lfs diff=lfs merge=lfs -text
|
|
12
|
+
*.mesh filter=lfs diff=lfs merge=lfs -text
|
|
13
|
+
*.meshb filter=lfs diff=lfs merge=lfs -text
|
|
14
|
+
*.tec filter=lfs diff=lfs merge=lfs -text
|
|
15
|
+
*.su2 filter=lfs diff=lfs merge=lfs -text
|
|
16
|
+
*.ele filter=lfs diff=lfs merge=lfs -text
|
|
17
|
+
*.node filter=lfs diff=lfs merge=lfs -text
|
|
18
|
+
*.vol filter=lfs diff=lfs merge=lfs -text
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# These are supported funding model platforms
|
|
2
|
+
|
|
3
|
+
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
|
4
|
+
patreon: # Replace with a single Patreon username
|
|
5
|
+
open_collective: # Replace with a single Open Collective username
|
|
6
|
+
ko_fi: vicentemataixferrandiz # Replace with a single Ko-fi username
|
|
7
|
+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
|
8
|
+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
|
9
|
+
liberapay: # Replace with a single Liberapay username
|
|
10
|
+
issuehunt: # Replace with a single IssueHunt username
|
|
11
|
+
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
|
12
|
+
polar: # Replace with a single Polar username
|
|
13
|
+
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
|
|
14
|
+
thanks_dev: # Replace with a single thanks.dev username
|
|
15
|
+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: "[BUG]"
|
|
5
|
+
labels: Needs triage
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
**Describe the bug**
|
|
10
|
+
A clear and concise description of what the bug is.
|
|
11
|
+
|
|
12
|
+
**To Reproduce**
|
|
13
|
+
A minimal code example that reproduces the problem would be a big help if you can provide it. Attach a small mesh file if necessary.
|
|
14
|
+
|
|
15
|
+
**Diagnose**
|
|
16
|
+
I may ask you to cut and paste the output of the following command.
|
|
17
|
+
```
|
|
18
|
+
pip freeze | grep meshioplusplus
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Did I help?**
|
|
22
|
+
|
|
23
|
+
If I was able to resolve your problem, consider [sponsoring](https://github.com/sponsors/nschloe) my work on meshio++, or [buy me a coffee](https://ko-fi.com/nschloe) to say thanks.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: "[REQUEST]"
|
|
5
|
+
labels: Needs triage
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Consider posting in https://github.com/<org>/meshioplusplus/discussions for feedback before raising a feature request.
|
|
10
|
+
|
|
11
|
+
**How would you improve meshio++?**
|
|
12
|
+
|
|
13
|
+
Give as much detail as you can. Example code of how you would like it to work would help.
|
|
14
|
+
|
|
15
|
+
**What problem does it solved for you?**
|
|
16
|
+
|
|
17
|
+
What problem do you have that this feature would solve? I may be able to suggest an existing way of solving it.
|
|
18
|
+
|
|
19
|
+
**Did I help**
|
|
20
|
+
|
|
21
|
+
If I was able to resolve your problem, consider [sponsoring](https://github.com/sponsors/nschloe) my work on meshio++, or [buy me a coffee](https://ko-fi.com/nschloe) to say thanks.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: New Format
|
|
3
|
+
about: Suggest support for a new mesh format
|
|
4
|
+
labels: new format
|
|
5
|
+
assignees: ''
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Would you like support for a new mesh format in meshio++? First check the existing issues, there are a number of format requests already. It's often easy to get rudimentary support for a format, so don't be afraid to start a PR!
|
|
9
|
+
|
|
10
|
+
Consider posting in https://github.com/<org>/meshioplusplus/discussions for feedback before raising a feature request.
|
|
11
|
+
|
|
12
|
+
**Format specification?**
|
|
13
|
+
|
|
14
|
+
Most formats have a detailed specification somewhere online. Make sure to post a link to that.
|
|
15
|
+
|
|
16
|
+
**Did I help**
|
|
17
|
+
|
|
18
|
+
If I was able to resolve your problem, consider [sponsoring](https://github.com/sponsors/nschloe) my work on meshio++, or [buy me a coffee](https://ko-fi.com/nschloe) to say thanks.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
# Cancel superseded runs on the same ref.
|
|
10
|
+
concurrency:
|
|
11
|
+
group: ci-${{ github.ref }}
|
|
12
|
+
cancel-in-progress: true
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
lint:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
- uses: pre-commit/action@v3.0.1
|
|
23
|
+
|
|
24
|
+
cpp-tests:
|
|
25
|
+
name: C++ tests (GoogleTest / CTest)
|
|
26
|
+
needs: [lint]
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
lfs: true
|
|
32
|
+
submodules: recursive # vendored Eigen (MED transpose)
|
|
33
|
+
- uses: actions/setup-python@v5
|
|
34
|
+
with:
|
|
35
|
+
python-version: "3.12"
|
|
36
|
+
- name: Install native libraries
|
|
37
|
+
run: |
|
|
38
|
+
sudo apt-get update
|
|
39
|
+
sudo apt-get install -y libhdf5-dev libnetcdf-dev zlib1g-dev libtbb-dev
|
|
40
|
+
- name: Install build tools
|
|
41
|
+
run: python -m pip install --upgrade pip pybind11 cmake ninja
|
|
42
|
+
- name: Configure (STL parallel backend + TBB)
|
|
43
|
+
run: >-
|
|
44
|
+
cmake -S . -B build -G Ninja
|
|
45
|
+
-DMESHIOPLUSPLUS_BUILD_TESTS=ON
|
|
46
|
+
-DMESHIOPLUSPLUS_PARALLEL_BACKEND=STL
|
|
47
|
+
-DPython_EXECUTABLE=$(which python)
|
|
48
|
+
-Dpybind11_DIR=$(python -c "import pybind11; print(pybind11.get_cmake_dir())")
|
|
49
|
+
- name: Build
|
|
50
|
+
run: cmake --build build
|
|
51
|
+
- name: Run C++ tests
|
|
52
|
+
run: ctest --test-dir build --output-on-failure
|
|
53
|
+
- name: Configure (OpenMP parallel backend)
|
|
54
|
+
run: >-
|
|
55
|
+
cmake -S . -B build-omp -G Ninja
|
|
56
|
+
-DMESHIOPLUSPLUS_BUILD_TESTS=ON
|
|
57
|
+
-DMESHIOPLUSPLUS_PARALLEL_BACKEND=OPENMP
|
|
58
|
+
-DPython_EXECUTABLE=$(which python)
|
|
59
|
+
-Dpybind11_DIR=$(python -c "import pybind11; print(pybind11.get_cmake_dir())")
|
|
60
|
+
- name: Build (OpenMP)
|
|
61
|
+
run: cmake --build build-omp
|
|
62
|
+
- name: Run C++ tests (OpenMP)
|
|
63
|
+
run: ctest --test-dir build-omp --output-on-failure
|
|
64
|
+
|
|
65
|
+
test:
|
|
66
|
+
needs: [lint]
|
|
67
|
+
runs-on: ${{ matrix.os }}
|
|
68
|
+
strategy:
|
|
69
|
+
fail-fast: false
|
|
70
|
+
matrix:
|
|
71
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
72
|
+
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@v4
|
|
75
|
+
with:
|
|
76
|
+
lfs: true
|
|
77
|
+
submodules: recursive # vendored Eigen (MED transpose)
|
|
78
|
+
|
|
79
|
+
- uses: actions/setup-python@v5
|
|
80
|
+
with:
|
|
81
|
+
python-version: ${{ matrix.python-version }}
|
|
82
|
+
|
|
83
|
+
# System HDF5/netCDF/zlib light up the native C++ paths. When they are
|
|
84
|
+
# absent (Windows), the h5py/netCDF4 Python wheels and the stdlib zlib
|
|
85
|
+
# keep every format working via the fallback shims, so the suite still
|
|
86
|
+
# passes -- this is the same story users get on a plain `pip install`.
|
|
87
|
+
- name: Install native libraries (Linux)
|
|
88
|
+
if: runner.os == 'Linux'
|
|
89
|
+
run: |
|
|
90
|
+
sudo apt-get update
|
|
91
|
+
sudo apt-get install -y libhdf5-dev libnetcdf-dev zlib1g-dev liblzma-dev libtbb-dev
|
|
92
|
+
|
|
93
|
+
- name: Install native libraries (macOS)
|
|
94
|
+
if: runner.os == 'macOS'
|
|
95
|
+
# libomp lets the AUTO parallel backend use OpenMP on Apple clang
|
|
96
|
+
# (libc++ has no parallel STL).
|
|
97
|
+
run: brew install hdf5 netcdf libomp
|
|
98
|
+
|
|
99
|
+
# macOS 13.3+ deployment target: required for std::format (its
|
|
100
|
+
# floating-point formatting symbols live in the OS libc++ dylib).
|
|
101
|
+
- name: Set macOS deployment target
|
|
102
|
+
if: runner.os == 'macOS'
|
|
103
|
+
shell: bash
|
|
104
|
+
run: echo 'MACOSX_DEPLOYMENT_TARGET=13.3' >> "$GITHUB_ENV"
|
|
105
|
+
|
|
106
|
+
- name: Configure build (Linux/macOS - native paths on)
|
|
107
|
+
if: runner.os != 'Windows'
|
|
108
|
+
shell: bash
|
|
109
|
+
run: echo 'CMAKE_ARGS=-DMESHIOPLUSPLUS_WITH_HDF5=ON -DMESHIOPLUSPLUS_WITH_NETCDF=ON -DMESHIOPLUSPLUS_WITH_ZLIB=ON' >> "$GITHUB_ENV"
|
|
110
|
+
|
|
111
|
+
- name: Configure build (Windows - Python fallbacks)
|
|
112
|
+
if: runner.os == 'Windows'
|
|
113
|
+
shell: pwsh
|
|
114
|
+
run: echo "CMAKE_ARGS=-DMESHIOPLUSPLUS_WITH_HDF5=OFF -DMESHIOPLUSPLUS_WITH_NETCDF=OFF -DMESHIOPLUSPLUS_WITH_ZLIB=OFF" >> $env:GITHUB_ENV
|
|
115
|
+
|
|
116
|
+
- name: Install meshio++ and test deps
|
|
117
|
+
run: |
|
|
118
|
+
python -m pip install --upgrade pip
|
|
119
|
+
pip install pytest pytest-codeblocks pytest-cov h5py netCDF4
|
|
120
|
+
pip install . --verbose
|
|
121
|
+
|
|
122
|
+
- name: Run tests
|
|
123
|
+
run: pytest tests/ --codeblocks --cov meshioplusplus --cov-report xml --cov-report term
|
|
124
|
+
|
|
125
|
+
- name: Upload coverage
|
|
126
|
+
if: matrix.python-version == '3.12' && runner.os == 'Linux'
|
|
127
|
+
uses: codecov/codecov-action@v4
|
|
128
|
+
with:
|
|
129
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
130
|
+
continue-on-error: true
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
# Allow the GITHUB_TOKEN to deploy to GitHub Pages.
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
pages: write
|
|
12
|
+
id-token: write
|
|
13
|
+
|
|
14
|
+
# One concurrent Pages deployment; don't cancel an in-progress deploy.
|
|
15
|
+
concurrency:
|
|
16
|
+
group: pages
|
|
17
|
+
cancel-in-progress: false
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
build:
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
- uses: actions/setup-node@v4
|
|
25
|
+
with:
|
|
26
|
+
node-version: 20
|
|
27
|
+
- name: Install and build (VitePress)
|
|
28
|
+
run: |
|
|
29
|
+
cd doc
|
|
30
|
+
npm install
|
|
31
|
+
npm run docs:build
|
|
32
|
+
- uses: actions/configure-pages@v5
|
|
33
|
+
- uses: actions/upload-pages-artifact@v3
|
|
34
|
+
with:
|
|
35
|
+
path: doc/.vitepress/dist
|
|
36
|
+
|
|
37
|
+
deploy:
|
|
38
|
+
needs: build
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
environment:
|
|
41
|
+
name: github-pages
|
|
42
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
43
|
+
steps:
|
|
44
|
+
- name: Deploy to GitHub Pages
|
|
45
|
+
id: deployment
|
|
46
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
name: wasm
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
tags: ["v*"]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [main]
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
# Cancel superseded runs on the same ref.
|
|
12
|
+
concurrency:
|
|
13
|
+
group: wasm-${{ github.ref }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
build-wasm:
|
|
18
|
+
name: Build + smoke-test (Emscripten)
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
# No submodules: this build always configures with
|
|
23
|
+
# -DMESHIOPLUSPLUS_WITH_HDF5=OFF (see build/configure-wasm.sh), so the
|
|
24
|
+
# vendored Eigen submodule (only used by MED, which needs HDF5) would
|
|
25
|
+
# sit unused -- CMake's EXISTS guard degrades gracefully when it's
|
|
26
|
+
# absent, same as any other source checkout without submodules.
|
|
27
|
+
|
|
28
|
+
- name: Set up Emscripten
|
|
29
|
+
uses: mymindstorm/setup-emsdk@v14
|
|
30
|
+
with:
|
|
31
|
+
# Pinned to the version verified locally; bump deliberately.
|
|
32
|
+
version: "6.0.3"
|
|
33
|
+
|
|
34
|
+
- name: Configure + build (WASM)
|
|
35
|
+
run: ./build/configure-wasm.sh --build
|
|
36
|
+
|
|
37
|
+
- uses: actions/setup-node@v4
|
|
38
|
+
with:
|
|
39
|
+
node-version: "20"
|
|
40
|
+
|
|
41
|
+
- name: Smoke test
|
|
42
|
+
run: node wasm/test/smoke.mjs
|
|
43
|
+
|
|
44
|
+
- name: Package sanity check (npm pack --dry-run)
|
|
45
|
+
working-directory: wasm
|
|
46
|
+
run: npm pack --dry-run
|
|
47
|
+
|
|
48
|
+
- uses: actions/upload-artifact@v4
|
|
49
|
+
with:
|
|
50
|
+
name: wasm-package
|
|
51
|
+
path: wasm/
|
|
52
|
+
if-no-files-found: error
|
|
53
|
+
|
|
54
|
+
publish-npm:
|
|
55
|
+
name: Publish to npm
|
|
56
|
+
needs: build-wasm
|
|
57
|
+
runs-on: ubuntu-latest
|
|
58
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
59
|
+
environment:
|
|
60
|
+
name: npm
|
|
61
|
+
url: https://www.npmjs.com/package/@meshioplusplus/wasm
|
|
62
|
+
steps:
|
|
63
|
+
- uses: actions/download-artifact@v4
|
|
64
|
+
with:
|
|
65
|
+
name: wasm-package
|
|
66
|
+
path: wasm
|
|
67
|
+
|
|
68
|
+
- uses: actions/setup-node@v4
|
|
69
|
+
with:
|
|
70
|
+
node-version: "20"
|
|
71
|
+
registry-url: "https://registry.npmjs.org"
|
|
72
|
+
|
|
73
|
+
- name: Publish to npm
|
|
74
|
+
working-directory: wasm
|
|
75
|
+
run: npm publish --access public
|
|
76
|
+
env:
|
|
77
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
name: wheels
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ["v*"]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build_wheels:
|
|
10
|
+
name: Wheels on ${{ matrix.os }}
|
|
11
|
+
runs-on: ${{ matrix.os }}
|
|
12
|
+
strategy:
|
|
13
|
+
fail-fast: false
|
|
14
|
+
matrix:
|
|
15
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
submodules: recursive # vendored Eigen (MED transpose)
|
|
20
|
+
|
|
21
|
+
- name: Build wheels
|
|
22
|
+
# v2.21's manylinux alias table predates _2_34, and it hardcodes cp38 for its
|
|
23
|
+
# own before_all bootstrapping - manylinux_2_34 (AlmaLinux 9) doesn't ship
|
|
24
|
+
# cp38 (EOL'd Oct 2024), so that probe failed with "No such file or
|
|
25
|
+
# directory" before the actual build ever started. v3.1.0 added _2_34 alias
|
|
26
|
+
# support and v4.0.0 dropped cibuildwheel's own cp38 dependency; neither
|
|
27
|
+
# change affects us since CIBW_BUILD never targets cp38 wheels.
|
|
28
|
+
uses: pypa/cibuildwheel@v4.1.0
|
|
29
|
+
env:
|
|
30
|
+
# Portable wheels: the optional HDF5/netCDF/zlib native paths are
|
|
31
|
+
# turned OFF, so the only build requirement is a C++20 compiler.
|
|
32
|
+
# HDF5/netCDF formats and VTU zlib work through the h5py/netCDF4
|
|
33
|
+
# runtime extras and the stdlib, exactly as the fallback shims intend.
|
|
34
|
+
# The parallel backend is AUTO -> OpenMP (MSVC's built-in OpenMP on Windows,
|
|
35
|
+
# libomp on macOS; delvewheel/delocate bundle it automatically). Linux wheels
|
|
36
|
+
# are forced to SEQ instead - see the manylinux_2_34 comment below.
|
|
37
|
+
# macOS 13.3+ is required for std::format (its floating-point
|
|
38
|
+
# formatting symbols live in the OS libc++ dylib).
|
|
39
|
+
CIBW_BUILD: "cp39-* cp310-* cp311-* cp312-*"
|
|
40
|
+
CIBW_SKIP: "*-musllinux* *_i686 *-win32"
|
|
41
|
+
CIBW_ARCHS_MACOS: "x86_64 arm64"
|
|
42
|
+
# macOS: libomp gives Apple clang an OpenMP runtime (libc++ has no PSTL).
|
|
43
|
+
CIBW_BEFORE_ALL_MACOS: "brew install libomp"
|
|
44
|
+
# manylinux2014's stock compiler (devtoolset-10, GCC 10) has no <format>
|
|
45
|
+
# (needs GCC 13+ per the C++20 std::format requirement above).
|
|
46
|
+
# manylinux_2_28 (AlmaLinux 8, glibc 2.28) + gcc-toolset-13 was tried first and
|
|
47
|
+
# never fully worked: even with MESHIOPLUSPLUS_STATIC_RUNTIME, auditwheel still
|
|
48
|
+
# rejected the wheel for GLIBC_2.32-2.38 symbols pulled directly from
|
|
49
|
+
# libc.so.6/libm.so.6 - gcc-toolset-13's own runtime calls glibc functions
|
|
50
|
+
# newer than AlmaLinux 8 ships, and unlike libstdc++, glibc can't be statically
|
|
51
|
+
# linked out of a normal .so. manylinux_2_34 (AlmaLinux 9, glibc 2.34) is a
|
|
52
|
+
# much closer match to what gcc-toolset-13 actually targets, but even there
|
|
53
|
+
# MESHIOPLUSPLUS_STATIC_RUNTIME is still required for the GLIBCXX/CXXABI side
|
|
54
|
+
# (libstdc++'s SONAME version tracks the compiler, not the target glibc, so
|
|
55
|
+
# gcc-toolset-13 always wants GLIBCXX_3.4.32 regardless of image).
|
|
56
|
+
# Verified end-to-end in a real manylinux_2_34 container (build -> `ldd`/
|
|
57
|
+
# `objdump -T` show zero libstdc++/GLIBCXX/CXXABI deps and GLIBC capped at
|
|
58
|
+
# 2.34 -> `auditwheel -v repair` succeeds -> installed the repaired wheel into
|
|
59
|
+
# a clean venv and ran the full pytest suite: 1018 passed).
|
|
60
|
+
# cibuildwheel v2.21's built-in alias table doesn't include manylinux_2_34
|
|
61
|
+
# yet (it tried to pull the literal image name "manylinux_2_34" from Docker
|
|
62
|
+
# Hub and failed) - the full quay.io reference works regardless of alias table.
|
|
63
|
+
CIBW_MANYLINUX_X86_64_IMAGE: "quay.io/pypa/manylinux_2_34_x86_64"
|
|
64
|
+
CIBW_MANYLINUX_AARCH64_IMAGE: "quay.io/pypa/manylinux_2_34_aarch64"
|
|
65
|
+
CIBW_BEFORE_ALL_LINUX: "yum install -y gcc-toolset-13-gcc gcc-toolset-13-gcc-c++"
|
|
66
|
+
# AUTO's OpenMP preference is forced to SEQ here too: gcc-toolset-13's libgomp
|
|
67
|
+
# has no static-link option GCC recognizes ("-static-libgomp" isn't a real GCC
|
|
68
|
+
# flag, unlike -static-libgcc/-static-libstdc++), so it would stay a dynamic
|
|
69
|
+
# dependency and could still hit a versioned-symbol rejection. These wheels
|
|
70
|
+
# already trade native HDF5/netCDF/zlib for portability (see above) - SEQ
|
|
71
|
+
# keeps that trade consistent; TBB/OpenMP builds remain available from source.
|
|
72
|
+
CIBW_ENVIRONMENT_LINUX: >-
|
|
73
|
+
CC="/opt/rh/gcc-toolset-13/root/usr/bin/gcc"
|
|
74
|
+
CXX="/opt/rh/gcc-toolset-13/root/usr/bin/g++"
|
|
75
|
+
CMAKE_ARGS="-DMESHIOPLUSPLUS_WITH_HDF5=OFF -DMESHIOPLUSPLUS_WITH_NETCDF=OFF -DMESHIOPLUSPLUS_WITH_ZLIB=OFF -DMESHIOPLUSPLUS_PARALLEL_BACKEND=SEQ -DMESHIOPLUSPLUS_STATIC_RUNTIME=ON"
|
|
76
|
+
# -v surfaces which specific symbol/library trips the manylinux policy check,
|
|
77
|
+
# instead of auditwheel's generic "too-recent versioned symbols" message.
|
|
78
|
+
CIBW_REPAIR_WHEEL_COMMAND_LINUX: "auditwheel -v repair -w {dest_dir} {wheel}"
|
|
79
|
+
CIBW_ENVIRONMENT: >-
|
|
80
|
+
CMAKE_ARGS="-DMESHIOPLUSPLUS_WITH_HDF5=OFF -DMESHIOPLUSPLUS_WITH_NETCDF=OFF -DMESHIOPLUSPLUS_WITH_ZLIB=OFF"
|
|
81
|
+
MACOSX_DEPLOYMENT_TARGET="13.3"
|
|
82
|
+
CIBW_TEST_REQUIRES: "pytest h5py"
|
|
83
|
+
CIBW_TEST_COMMAND: "python -c \"import meshioplusplus; print(meshioplusplus.__version__, meshioplusplus._core.__parallel_backend__)\""
|
|
84
|
+
|
|
85
|
+
- uses: actions/upload-artifact@v4
|
|
86
|
+
with:
|
|
87
|
+
name: wheels-${{ matrix.os }}
|
|
88
|
+
path: ./wheelhouse/*.whl
|
|
89
|
+
|
|
90
|
+
build_sdist:
|
|
91
|
+
name: Source distribution
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
steps:
|
|
94
|
+
- uses: actions/checkout@v4
|
|
95
|
+
- name: Build sdist
|
|
96
|
+
run: pipx run build --sdist
|
|
97
|
+
- uses: actions/upload-artifact@v4
|
|
98
|
+
with:
|
|
99
|
+
name: sdist
|
|
100
|
+
path: dist/*.tar.gz
|
|
101
|
+
|
|
102
|
+
publish:
|
|
103
|
+
name: Publish to PyPI
|
|
104
|
+
needs: [build_wheels, build_sdist]
|
|
105
|
+
runs-on: ubuntu-latest
|
|
106
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
107
|
+
environment:
|
|
108
|
+
name: pypi
|
|
109
|
+
url: https://pypi.org/p/meshioplusplus
|
|
110
|
+
permissions:
|
|
111
|
+
id-token: write # OIDC trusted publishing
|
|
112
|
+
steps:
|
|
113
|
+
- uses: actions/download-artifact@v4
|
|
114
|
+
with:
|
|
115
|
+
path: dist
|
|
116
|
+
merge-multiple: true
|
|
117
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
*.bin
|
|
2
|
+
*.dat
|
|
3
|
+
*.dato
|
|
4
|
+
*.e
|
|
5
|
+
*.geo
|
|
6
|
+
*.h5
|
|
7
|
+
*.h5m
|
|
8
|
+
*.msh
|
|
9
|
+
*.off
|
|
10
|
+
*.pvtu
|
|
11
|
+
*.pyc
|
|
12
|
+
*.xdmf
|
|
13
|
+
*.xmf
|
|
14
|
+
*.xml
|
|
15
|
+
# The compiled pybind11 extension (built in-place by `pip install -e .` /
|
|
16
|
+
# scikit-build-core editable installs) - a stray committed copy of this once
|
|
17
|
+
# got bundled into every manylinux wheel via wheel.packages, silently
|
|
18
|
+
# reintroducing whatever toolchain built it regardless of the actual CI build.
|
|
19
|
+
src/meshioplusplus/*.so
|
|
20
|
+
src/meshioplusplus/*.pyd
|
|
21
|
+
.cache/
|
|
22
|
+
MANIFEST
|
|
23
|
+
README.rst
|
|
24
|
+
# Ignore build artifacts but keep the tracked configure scripts
|
|
25
|
+
# (an ignored *directory* cannot have re-included children, so use build/*).
|
|
26
|
+
build/*
|
|
27
|
+
!build/configure.sh
|
|
28
|
+
!build/configure.bat
|
|
29
|
+
!build/configure-wasm.sh
|
|
30
|
+
build-tests/
|
|
31
|
+
build-omp/
|
|
32
|
+
build-tbb/
|
|
33
|
+
# Emscripten build output copied into the npm package staging dir -- built by
|
|
34
|
+
# build/configure-wasm.sh, not committed (mirrors build/* above).
|
|
35
|
+
wasm/dist/
|
|
36
|
+
# CMake FetchContent downloads (e.g. GoogleTest) land here inside a build dir
|
|
37
|
+
_deps/
|
|
38
|
+
dist/
|
|
39
|
+
doc/_build/
|
|
40
|
+
*.egg-info/
|
|
41
|
+
.pytest_cache/
|
|
42
|
+
.coverage
|
|
43
|
+
.tox/
|
|
44
|
+
foo.vtk
|
|
45
|
+
.vscode/*
|
|
46
|
+
!.vscode/tasks.json
|
|
47
|
+
# Jupyter
|
|
48
|
+
.ipynb_checkpoints/
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/PyCQA/isort
|
|
3
|
+
rev: 5.13.2
|
|
4
|
+
hooks:
|
|
5
|
+
- id: isort
|
|
6
|
+
|
|
7
|
+
- repo: https://github.com/psf/black
|
|
8
|
+
rev: 24.1.1
|
|
9
|
+
hooks:
|
|
10
|
+
- id: black
|
|
11
|
+
language_version: python3
|
|
12
|
+
|
|
13
|
+
- repo: https://github.com/PyCQA/flake8
|
|
14
|
+
rev: 7.0.0
|
|
15
|
+
hooks:
|
|
16
|
+
- id: flake8
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
|
3
|
+
// for the documentation about the tasks.json format
|
|
4
|
+
"version": "2.0.0",
|
|
5
|
+
"tasks": [
|
|
6
|
+
{
|
|
7
|
+
"label": "Build: Python extension (editable install)",
|
|
8
|
+
"detail": "Rebuild meshioplusplus._core in-place (uv venv, HDF5+zlib on; netCDF off — this machine's static libnetcdf.a fails to link against OpenMPI HDF5).",
|
|
9
|
+
"type": "shell",
|
|
10
|
+
"command": "CMAKE_ARGS=\"-DMESHIOPLUSPLUS_WITH_HDF5=ON -DMESHIOPLUSPLUS_WITH_NETCDF=OFF -DMESHIOPLUSPLUS_WITH_ZLIB=ON\" uv pip install --python .venv --no-build-isolation -e .",
|
|
11
|
+
"options": {
|
|
12
|
+
"cwd": "${workspaceFolder}"
|
|
13
|
+
},
|
|
14
|
+
"group": {
|
|
15
|
+
"kind": "build",
|
|
16
|
+
"isDefault": true
|
|
17
|
+
},
|
|
18
|
+
"problemMatcher": ["$gcc"]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"label": "Test: pytest (all)",
|
|
22
|
+
"detail": "Run the full Python test suite.",
|
|
23
|
+
"type": "shell",
|
|
24
|
+
"command": ".venv/bin/pytest tests/ -q",
|
|
25
|
+
"options": {
|
|
26
|
+
"cwd": "${workspaceFolder}"
|
|
27
|
+
},
|
|
28
|
+
"group": {
|
|
29
|
+
"kind": "test",
|
|
30
|
+
"isDefault": true
|
|
31
|
+
},
|
|
32
|
+
"problemMatcher": []
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"label": "Test: pytest (current file)",
|
|
36
|
+
"detail": "Run pytest on the file open in the active editor.",
|
|
37
|
+
"type": "shell",
|
|
38
|
+
"command": ".venv/bin/pytest '${file}' -q",
|
|
39
|
+
"options": {
|
|
40
|
+
"cwd": "${workspaceFolder}"
|
|
41
|
+
},
|
|
42
|
+
"group": "test",
|
|
43
|
+
"problemMatcher": []
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"label": "C++: Configure + build tests",
|
|
47
|
+
"detail": "Configure (OpenMP backend, netCDF off — see Python build task note) and build the GoogleTest suite into build/cpp-release.",
|
|
48
|
+
"type": "shell",
|
|
49
|
+
"command": "./build/configure.sh --backend OPENMP --tests --build --without-netcdf",
|
|
50
|
+
"options": {
|
|
51
|
+
"cwd": "${workspaceFolder}"
|
|
52
|
+
},
|
|
53
|
+
"group": "build",
|
|
54
|
+
"problemMatcher": ["$gcc"]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"label": "C++: Run tests (ctest)",
|
|
58
|
+
"detail": "Run the GoogleTest/CTest suite (requires 'C++: Configure + build tests' first).",
|
|
59
|
+
"type": "shell",
|
|
60
|
+
"command": "ctest --test-dir build/cpp-release --output-on-failure",
|
|
61
|
+
"options": {
|
|
62
|
+
"cwd": "${workspaceFolder}"
|
|
63
|
+
},
|
|
64
|
+
"group": "test",
|
|
65
|
+
"problemMatcher": [],
|
|
66
|
+
"dependsOn": ["C++: Configure + build tests"]
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|