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.
Files changed (454) hide show
  1. meshioplusplus-6.0.5/.clang-format +19 -0
  2. meshioplusplus-6.0.5/.codecov.yml +1 -0
  3. meshioplusplus-6.0.5/.flake8 +6 -0
  4. meshioplusplus-6.0.5/.gitattributes +18 -0
  5. meshioplusplus-6.0.5/.github/FUNDING.yml +15 -0
  6. meshioplusplus-6.0.5/.github/ISSUE_TEMPLATE/bug_report.md +23 -0
  7. meshioplusplus-6.0.5/.github/ISSUE_TEMPLATE/feature_request.md +21 -0
  8. meshioplusplus-6.0.5/.github/ISSUE_TEMPLATE/new_format.md +18 -0
  9. meshioplusplus-6.0.5/.github/workflows/ci.yml +130 -0
  10. meshioplusplus-6.0.5/.github/workflows/docs.yml +46 -0
  11. meshioplusplus-6.0.5/.github/workflows/wasm.yml +77 -0
  12. meshioplusplus-6.0.5/.github/workflows/wheels.yml +117 -0
  13. meshioplusplus-6.0.5/.gitignore +48 -0
  14. meshioplusplus-6.0.5/.gitmodules +3 -0
  15. meshioplusplus-6.0.5/.pre-commit-config.yaml +16 -0
  16. meshioplusplus-6.0.5/.vscode/tasks.json +69 -0
  17. meshioplusplus-6.0.5/CHANGELOG.md +113 -0
  18. meshioplusplus-6.0.5/CITATION.cff +21 -0
  19. meshioplusplus-6.0.5/CLAUDE.md +113 -0
  20. meshioplusplus-6.0.5/CMakeLists.txt +318 -0
  21. meshioplusplus-6.0.5/CODE_OF_CONDUCT.md +77 -0
  22. meshioplusplus-6.0.5/CONTRIBUTING.md +17 -0
  23. meshioplusplus-6.0.5/LICENSE +22 -0
  24. meshioplusplus-6.0.5/MANIFEST.in +6 -0
  25. meshioplusplus-6.0.5/PKG-INFO +334 -0
  26. meshioplusplus-6.0.5/README.md +278 -0
  27. meshioplusplus-6.0.5/benchmark/01_benchmark.ipynb +1431 -0
  28. meshioplusplus-6.0.5/benchmark/README.md +27 -0
  29. meshioplusplus-6.0.5/benchmark/bench.py +158 -0
  30. meshioplusplus-6.0.5/benchmark/bench_hotpath.py +99 -0
  31. meshioplusplus-6.0.5/benchmark/inputs.py +82 -0
  32. meshioplusplus-6.0.5/benchmark/plots/benchmark_scaling.png +0 -0
  33. meshioplusplus-6.0.5/benchmark/plots/benchmark_scaling.svg +2546 -0
  34. meshioplusplus-6.0.5/benchmark/plots/benchmark_speedup.png +0 -0
  35. meshioplusplus-6.0.5/benchmark/plots/benchmark_speedup.svg +1515 -0
  36. meshioplusplus-6.0.5/benchmark/plots/benchmark_speedup_cube.png +0 -0
  37. meshioplusplus-6.0.5/benchmark/plots/benchmark_speedup_cube.svg +1679 -0
  38. meshioplusplus-6.0.5/benchmark/plots/benchmark_times.png +0 -0
  39. meshioplusplus-6.0.5/benchmark/plots/benchmark_times.svg +2185 -0
  40. meshioplusplus-6.0.5/benchmark/plots/benchmark_times_cube.png +0 -0
  41. meshioplusplus-6.0.5/benchmark/plots/benchmark_times_cube.svg +2081 -0
  42. meshioplusplus-6.0.5/benchmark/results.csv +14 -0
  43. meshioplusplus-6.0.5/bindings/_core.cpp +533 -0
  44. meshioplusplus-6.0.5/bindings/np_conversions.hpp +524 -0
  45. meshioplusplus-6.0.5/bindings_js/js_bindings.cpp +579 -0
  46. meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/byteswap.hpp +145 -0
  47. meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/hdf5_util.hpp +554 -0
  48. meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/map_order.hpp +56 -0
  49. meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/value_io.hpp +191 -0
  50. meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/vtk_cells.hpp +269 -0
  51. meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/vtu_binary.hpp +385 -0
  52. meshioplusplus-6.0.5/cpp/include/meshioplusplus/detail/xdmf_common.hpp +184 -0
  53. meshioplusplus-6.0.5/cpp/include/meshioplusplus/exceptions.hpp +66 -0
  54. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/abaqus.hpp +92 -0
  55. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/ansys.hpp +100 -0
  56. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/ansysinp.hpp +121 -0
  57. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/avsucd.hpp +87 -0
  58. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/cgns.hpp +89 -0
  59. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/dolfin.hpp +82 -0
  60. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/exodus.hpp +99 -0
  61. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/flac3d.hpp +107 -0
  62. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/flux.hpp +86 -0
  63. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/freefem.hpp +85 -0
  64. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/gmsh.hpp +131 -0
  65. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/h5m.hpp +96 -0
  66. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/hmf.hpp +94 -0
  67. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/med.hpp +198 -0
  68. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/medit.hpp +88 -0
  69. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/mfm.hpp +89 -0
  70. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/mphtxt.hpp +88 -0
  71. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/nastran.hpp +100 -0
  72. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/netgen.hpp +107 -0
  73. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/obj_off.hpp +117 -0
  74. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/openfoam.hpp +117 -0
  75. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/permas.hpp +103 -0
  76. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/ply.hpp +95 -0
  77. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/stl.hpp +89 -0
  78. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/su2.hpp +86 -0
  79. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/tecplot.hpp +94 -0
  80. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/tetgen.hpp +92 -0
  81. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/ugrid.hpp +100 -0
  82. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/unv.hpp +100 -0
  83. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/vtk.hpp +114 -0
  84. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/vtu.hpp +103 -0
  85. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/wkt.hpp +75 -0
  86. meshioplusplus-6.0.5/cpp/include/meshioplusplus/formats/xdmf.hpp +115 -0
  87. meshioplusplus-6.0.5/cpp/include/meshioplusplus/log.hpp +244 -0
  88. meshioplusplus-6.0.5/cpp/include/meshioplusplus/mesh.hpp +148 -0
  89. meshioplusplus-6.0.5/cpp/include/meshioplusplus/ndarray.hpp +337 -0
  90. meshioplusplus-6.0.5/cpp/include/meshioplusplus/parallel.hpp +330 -0
  91. meshioplusplus-6.0.5/cpp/include/meshioplusplus/types.hpp +221 -0
  92. meshioplusplus-6.0.5/cpp/include/meshioplusplus/vtk_common.hpp +209 -0
  93. meshioplusplus-6.0.5/cpp/src/formats/abaqus.cpp +310 -0
  94. meshioplusplus-6.0.5/cpp/src/formats/ansys.cpp +424 -0
  95. meshioplusplus-6.0.5/cpp/src/formats/ansysinp.cpp +620 -0
  96. meshioplusplus-6.0.5/cpp/src/formats/avsucd.cpp +392 -0
  97. meshioplusplus-6.0.5/cpp/src/formats/cgns.cpp +174 -0
  98. meshioplusplus-6.0.5/cpp/src/formats/dolfin.cpp +255 -0
  99. meshioplusplus-6.0.5/cpp/src/formats/exodus.cpp +611 -0
  100. meshioplusplus-6.0.5/cpp/src/formats/flac3d.cpp +476 -0
  101. meshioplusplus-6.0.5/cpp/src/formats/flux.cpp +269 -0
  102. meshioplusplus-6.0.5/cpp/src/formats/freefem.cpp +187 -0
  103. meshioplusplus-6.0.5/cpp/src/formats/gmsh.cpp +1157 -0
  104. meshioplusplus-6.0.5/cpp/src/formats/h5m.cpp +274 -0
  105. meshioplusplus-6.0.5/cpp/src/formats/hmf.cpp +142 -0
  106. meshioplusplus-6.0.5/cpp/src/formats/med.cpp +589 -0
  107. meshioplusplus-6.0.5/cpp/src/formats/medit.cpp +293 -0
  108. meshioplusplus-6.0.5/cpp/src/formats/mfm.cpp +207 -0
  109. meshioplusplus-6.0.5/cpp/src/formats/mphtxt.cpp +231 -0
  110. meshioplusplus-6.0.5/cpp/src/formats/nastran.cpp +364 -0
  111. meshioplusplus-6.0.5/cpp/src/formats/netgen.cpp +437 -0
  112. meshioplusplus-6.0.5/cpp/src/formats/obj.cpp +225 -0
  113. meshioplusplus-6.0.5/cpp/src/formats/off.cpp +127 -0
  114. meshioplusplus-6.0.5/cpp/src/formats/openfoam.cpp +785 -0
  115. meshioplusplus-6.0.5/cpp/src/formats/permas.cpp +266 -0
  116. meshioplusplus-6.0.5/cpp/src/formats/ply.cpp +500 -0
  117. meshioplusplus-6.0.5/cpp/src/formats/stl.cpp +292 -0
  118. meshioplusplus-6.0.5/cpp/src/formats/su2.cpp +374 -0
  119. meshioplusplus-6.0.5/cpp/src/formats/tecplot.cpp +469 -0
  120. meshioplusplus-6.0.5/cpp/src/formats/tetgen.cpp +347 -0
  121. meshioplusplus-6.0.5/cpp/src/formats/ugrid.cpp +663 -0
  122. meshioplusplus-6.0.5/cpp/src/formats/unv.cpp +308 -0
  123. meshioplusplus-6.0.5/cpp/src/formats/vtk.cpp +357 -0
  124. meshioplusplus-6.0.5/cpp/src/formats/vtk_read.cpp +390 -0
  125. meshioplusplus-6.0.5/cpp/src/formats/vtu.cpp +246 -0
  126. meshioplusplus-6.0.5/cpp/src/formats/vtu_read.cpp +277 -0
  127. meshioplusplus-6.0.5/cpp/src/formats/wkt.cpp +202 -0
  128. meshioplusplus-6.0.5/cpp/src/formats/xdmf.cpp +551 -0
  129. meshioplusplus-6.0.5/cpp/tests/mesh_fixtures.hpp +421 -0
  130. meshioplusplus-6.0.5/cpp/tests/test_ansysinp.cpp +102 -0
  131. meshioplusplus-6.0.5/cpp/tests/test_core.cpp +126 -0
  132. meshioplusplus-6.0.5/cpp/tests/test_feconv_formats.cpp +62 -0
  133. meshioplusplus-6.0.5/cpp/tests/test_gmsh.cpp +57 -0
  134. meshioplusplus-6.0.5/cpp/tests/test_hdf5_formats.cpp +126 -0
  135. meshioplusplus-6.0.5/cpp/tests/test_mfm.cpp +64 -0
  136. meshioplusplus-6.0.5/cpp/tests/test_misc_formats.cpp +95 -0
  137. meshioplusplus-6.0.5/cpp/tests/test_netcdf_formats.cpp +36 -0
  138. meshioplusplus-6.0.5/cpp/tests/test_obj_off.cpp +45 -0
  139. meshioplusplus-6.0.5/cpp/tests/test_openfoam.cpp +98 -0
  140. meshioplusplus-6.0.5/cpp/tests/test_parallel.cpp +84 -0
  141. meshioplusplus-6.0.5/cpp/tests/test_stl.cpp +63 -0
  142. meshioplusplus-6.0.5/cpp/tests/test_text_formats.cpp +114 -0
  143. meshioplusplus-6.0.5/cpp/tests/test_vtk.cpp +51 -0
  144. meshioplusplus-6.0.5/cpp/tests/test_vtu.cpp +53 -0
  145. meshioplusplus-6.0.5/cpp/tests/test_xdmf.cpp +50 -0
  146. meshioplusplus-6.0.5/cpp/third_party/pugixml/pugiconfig.hpp +77 -0
  147. meshioplusplus-6.0.5/cpp/third_party/pugixml/pugixml.cpp +13226 -0
  148. meshioplusplus-6.0.5/cpp/third_party/pugixml/pugixml.hpp +1516 -0
  149. meshioplusplus-6.0.5/doc/.gitignore +4 -0
  150. meshioplusplus-6.0.5/doc/.vitepress/config.mts +115 -0
  151. meshioplusplus-6.0.5/doc/benchmarks.md +115 -0
  152. meshioplusplus-6.0.5/doc/cell_types.md +150 -0
  153. meshioplusplus-6.0.5/doc/cell_types.tex +414 -0
  154. meshioplusplus-6.0.5/doc/cli.md +123 -0
  155. meshioplusplus-6.0.5/doc/extending.md +113 -0
  156. meshioplusplus-6.0.5/doc/formats/abaqus.md +112 -0
  157. meshioplusplus-6.0.5/doc/formats/ansys.md +120 -0
  158. meshioplusplus-6.0.5/doc/formats/ansysinp.md +142 -0
  159. meshioplusplus-6.0.5/doc/formats/avsucd.md +105 -0
  160. meshioplusplus-6.0.5/doc/formats/cgns.md +73 -0
  161. meshioplusplus-6.0.5/doc/formats/dolfin.md +100 -0
  162. meshioplusplus-6.0.5/doc/formats/exodus.md +103 -0
  163. meshioplusplus-6.0.5/doc/formats/flac3d.md +113 -0
  164. meshioplusplus-6.0.5/doc/formats/flux.md +112 -0
  165. meshioplusplus-6.0.5/doc/formats/freefem.md +78 -0
  166. meshioplusplus-6.0.5/doc/formats/gmsh.md +137 -0
  167. meshioplusplus-6.0.5/doc/formats/h5m.md +99 -0
  168. meshioplusplus-6.0.5/doc/formats/hmf.md +73 -0
  169. meshioplusplus-6.0.5/doc/formats/mdpa.md +162 -0
  170. meshioplusplus-6.0.5/doc/formats/med.md +237 -0
  171. meshioplusplus-6.0.5/doc/formats/medit.md +120 -0
  172. meshioplusplus-6.0.5/doc/formats/mfm.md +94 -0
  173. meshioplusplus-6.0.5/doc/formats/mphtxt.md +98 -0
  174. meshioplusplus-6.0.5/doc/formats/nastran.md +125 -0
  175. meshioplusplus-6.0.5/doc/formats/netgen.md +127 -0
  176. meshioplusplus-6.0.5/doc/formats/neuroglancer.md +67 -0
  177. meshioplusplus-6.0.5/doc/formats/obj.md +73 -0
  178. meshioplusplus-6.0.5/doc/formats/off.md +60 -0
  179. meshioplusplus-6.0.5/doc/formats/openfoam.md +151 -0
  180. meshioplusplus-6.0.5/doc/formats/permas.md +113 -0
  181. meshioplusplus-6.0.5/doc/formats/ply.md +91 -0
  182. meshioplusplus-6.0.5/doc/formats/stl.md +86 -0
  183. meshioplusplus-6.0.5/doc/formats/su2.md +94 -0
  184. meshioplusplus-6.0.5/doc/formats/svg.md +84 -0
  185. meshioplusplus-6.0.5/doc/formats/tecplot.md +109 -0
  186. meshioplusplus-6.0.5/doc/formats/tetgen.md +88 -0
  187. meshioplusplus-6.0.5/doc/formats/ugrid.md +109 -0
  188. meshioplusplus-6.0.5/doc/formats/unv.md +135 -0
  189. meshioplusplus-6.0.5/doc/formats/vtk.md +108 -0
  190. meshioplusplus-6.0.5/doc/formats/vtu.md +111 -0
  191. meshioplusplus-6.0.5/doc/formats/wkt.md +73 -0
  192. meshioplusplus-6.0.5/doc/formats/xdmf.md +131 -0
  193. meshioplusplus-6.0.5/doc/formats.md +218 -0
  194. meshioplusplus-6.0.5/doc/index.md +51 -0
  195. meshioplusplus-6.0.5/doc/installation.md +116 -0
  196. meshioplusplus-6.0.5/doc/mesh_data_model.md +118 -0
  197. meshioplusplus-6.0.5/doc/package.json +14 -0
  198. meshioplusplus-6.0.5/doc/paraview_plugin.md +40 -0
  199. meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_scaling.png +0 -0
  200. meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_scaling.svg +2546 -0
  201. meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_speedup.png +0 -0
  202. meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_speedup.svg +1515 -0
  203. meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_times.png +0 -0
  204. meshioplusplus-6.0.5/doc/public/benchmarks/benchmark_times.svg +2185 -0
  205. meshioplusplus-6.0.5/doc/public/logo-icon.png +0 -0
  206. meshioplusplus-6.0.5/doc/public/logo-icon.svg +592 -0
  207. meshioplusplus-6.0.5/doc/public/logo.svg +641 -0
  208. meshioplusplus-6.0.5/doc/quickstart.md +94 -0
  209. meshioplusplus-6.0.5/doc/wasm.md +134 -0
  210. meshioplusplus-6.0.5/doc/xdmf_time_series.md +71 -0
  211. meshioplusplus-6.0.5/example/01_read_and_visualize.ipynb +309 -0
  212. meshioplusplus-6.0.5/example/02_convert_and_inspect.ipynb +267 -0
  213. meshioplusplus-6.0.5/example/README.md +30 -0
  214. meshioplusplus-6.0.5/example/example.stp +4131 -0
  215. meshioplusplus-6.0.5/example/example.stp.mesh.json +15 -0
  216. meshioplusplus-6.0.5/justfile +29 -0
  217. meshioplusplus-6.0.5/logo/.gitignore +5 -0
  218. meshioplusplus-6.0.5/logo/README.md +34 -0
  219. meshioplusplus-6.0.5/logo/_mesh_icon.tex +590 -0
  220. meshioplusplus-6.0.5/logo/build.sh +79 -0
  221. meshioplusplus-6.0.5/logo/gen_logo_tikz.py +145 -0
  222. meshioplusplus-6.0.5/logo/logo-icon.pdf +0 -0
  223. meshioplusplus-6.0.5/logo/logo-icon.png +0 -0
  224. meshioplusplus-6.0.5/logo/logo-icon.svg +592 -0
  225. meshioplusplus-6.0.5/logo/logo-icon.tex +10 -0
  226. meshioplusplus-6.0.5/logo/logo-with-text.svg +641 -0
  227. meshioplusplus-6.0.5/logo/logo.pdf +0 -0
  228. meshioplusplus-6.0.5/logo/logo.png +0 -0
  229. meshioplusplus-6.0.5/logo/logo.py +92 -0
  230. meshioplusplus-6.0.5/logo/logo.svg +641 -0
  231. meshioplusplus-6.0.5/logo/logo.tex +25 -0
  232. meshioplusplus-6.0.5/pyproject.toml +79 -0
  233. meshioplusplus-6.0.5/src/meshioplusplus/__about__.py +16 -0
  234. meshioplusplus-6.0.5/src/meshioplusplus/__init__.py +104 -0
  235. meshioplusplus-6.0.5/src/meshioplusplus/_cli/__init__.py +3 -0
  236. meshioplusplus-6.0.5/src/meshioplusplus/_cli/_ascii.py +62 -0
  237. meshioplusplus-6.0.5/src/meshioplusplus/_cli/_binary.py +60 -0
  238. meshioplusplus-6.0.5/src/meshioplusplus/_cli/_compress.py +81 -0
  239. meshioplusplus-6.0.5/src/meshioplusplus/_cli/_convert.py +75 -0
  240. meshioplusplus-6.0.5/src/meshioplusplus/_cli/_decompress.py +50 -0
  241. meshioplusplus-6.0.5/src/meshioplusplus/_cli/_info.py +40 -0
  242. meshioplusplus-6.0.5/src/meshioplusplus/_cli/_main.py +63 -0
  243. meshioplusplus-6.0.5/src/meshioplusplus/_common.py +169 -0
  244. meshioplusplus-6.0.5/src/meshioplusplus/_cxml/__init__.py +3 -0
  245. meshioplusplus-6.0.5/src/meshioplusplus/_cxml/etree.py +60 -0
  246. meshioplusplus-6.0.5/src/meshioplusplus/_exceptions.py +10 -0
  247. meshioplusplus-6.0.5/src/meshioplusplus/_files.py +16 -0
  248. meshioplusplus-6.0.5/src/meshioplusplus/_helpers.py +204 -0
  249. meshioplusplus-6.0.5/src/meshioplusplus/_mesh.py +446 -0
  250. meshioplusplus-6.0.5/src/meshioplusplus/_vtk_common.py +205 -0
  251. meshioplusplus-6.0.5/src/meshioplusplus/abaqus/__init__.py +47 -0
  252. meshioplusplus-6.0.5/src/meshioplusplus/abaqus/_abaqus.py +453 -0
  253. meshioplusplus-6.0.5/src/meshioplusplus/ansys/__init__.py +31 -0
  254. meshioplusplus-6.0.5/src/meshioplusplus/ansys/_ansys.py +461 -0
  255. meshioplusplus-6.0.5/src/meshioplusplus/ansysInp/__init__.py +33 -0
  256. meshioplusplus-6.0.5/src/meshioplusplus/ansysInp/_ansysInp.py +365 -0
  257. meshioplusplus-6.0.5/src/meshioplusplus/avsucd/__init__.py +31 -0
  258. meshioplusplus-6.0.5/src/meshioplusplus/avsucd/_avsucd.py +243 -0
  259. meshioplusplus-6.0.5/src/meshioplusplus/cgns/__init__.py +34 -0
  260. meshioplusplus-6.0.5/src/meshioplusplus/cgns/_cgns.py +97 -0
  261. meshioplusplus-6.0.5/src/meshioplusplus/dolfin/__init__.py +31 -0
  262. meshioplusplus-6.0.5/src/meshioplusplus/dolfin/_dolfin.py +235 -0
  263. meshioplusplus-6.0.5/src/meshioplusplus/exodus/__init__.py +34 -0
  264. meshioplusplus-6.0.5/src/meshioplusplus/exodus/_exodus.py +369 -0
  265. meshioplusplus-6.0.5/src/meshioplusplus/flac3d/__init__.py +33 -0
  266. meshioplusplus-6.0.5/src/meshioplusplus/flac3d/_flac3d.py +607 -0
  267. meshioplusplus-6.0.5/src/meshioplusplus/flux/__init__.py +31 -0
  268. meshioplusplus-6.0.5/src/meshioplusplus/flux/_flux.py +185 -0
  269. meshioplusplus-6.0.5/src/meshioplusplus/freefem/__init__.py +33 -0
  270. meshioplusplus-6.0.5/src/meshioplusplus/freefem/_freefem.py +124 -0
  271. meshioplusplus-6.0.5/src/meshioplusplus/gmsh/__init__.py +68 -0
  272. meshioplusplus-6.0.5/src/meshioplusplus/gmsh/_gmsh22.py +411 -0
  273. meshioplusplus-6.0.5/src/meshioplusplus/gmsh/_gmsh40.py +400 -0
  274. meshioplusplus-6.0.5/src/meshioplusplus/gmsh/_gmsh41.py +769 -0
  275. meshioplusplus-6.0.5/src/meshioplusplus/gmsh/common.py +293 -0
  276. meshioplusplus-6.0.5/src/meshioplusplus/gmsh/main.py +105 -0
  277. meshioplusplus-6.0.5/src/meshioplusplus/h5m/__init__.py +39 -0
  278. meshioplusplus-6.0.5/src/meshioplusplus/h5m/_h5m.py +267 -0
  279. meshioplusplus-6.0.5/src/meshioplusplus/hmf/__init__.py +36 -0
  280. meshioplusplus-6.0.5/src/meshioplusplus/hmf/_hmf.py +145 -0
  281. meshioplusplus-6.0.5/src/meshioplusplus/mdpa/__init__.py +3 -0
  282. meshioplusplus-6.0.5/src/meshioplusplus/mdpa/_mdpa.py +2443 -0
  283. meshioplusplus-6.0.5/src/meshioplusplus/med/__init__.py +76 -0
  284. meshioplusplus-6.0.5/src/meshioplusplus/med/_med.py +1127 -0
  285. meshioplusplus-6.0.5/src/meshioplusplus/med/_med41.py +202 -0
  286. meshioplusplus-6.0.5/src/meshioplusplus/med/_medmulti.py +533 -0
  287. meshioplusplus-6.0.5/src/meshioplusplus/medit/__init__.py +43 -0
  288. meshioplusplus-6.0.5/src/meshioplusplus/medit/_medit.py +526 -0
  289. meshioplusplus-6.0.5/src/meshioplusplus/medit/_medit_internal.py +224 -0
  290. meshioplusplus-6.0.5/src/meshioplusplus/mfm/__init__.py +31 -0
  291. meshioplusplus-6.0.5/src/meshioplusplus/mfm/_mfm.py +123 -0
  292. meshioplusplus-6.0.5/src/meshioplusplus/mphtxt/__init__.py +31 -0
  293. meshioplusplus-6.0.5/src/meshioplusplus/mphtxt/_mphtxt.py +179 -0
  294. meshioplusplus-6.0.5/src/meshioplusplus/nastran/__init__.py +45 -0
  295. meshioplusplus-6.0.5/src/meshioplusplus/nastran/_nastran.py +540 -0
  296. meshioplusplus-6.0.5/src/meshioplusplus/netgen/__init__.py +43 -0
  297. meshioplusplus-6.0.5/src/meshioplusplus/netgen/_netgen.py +454 -0
  298. meshioplusplus-6.0.5/src/meshioplusplus/neuroglancer/__init__.py +3 -0
  299. meshioplusplus-6.0.5/src/meshioplusplus/neuroglancer/_neuroglancer.py +80 -0
  300. meshioplusplus-6.0.5/src/meshioplusplus/obj/__init__.py +35 -0
  301. meshioplusplus-6.0.5/src/meshioplusplus/obj/_obj.py +136 -0
  302. meshioplusplus-6.0.5/src/meshioplusplus/off/__init__.py +31 -0
  303. meshioplusplus-6.0.5/src/meshioplusplus/off/_off.py +95 -0
  304. meshioplusplus-6.0.5/src/meshioplusplus/openfoam/__init__.py +17 -0
  305. meshioplusplus-6.0.5/src/meshioplusplus/openfoam/_openfoam.py +730 -0
  306. meshioplusplus-6.0.5/src/meshioplusplus/permas/__init__.py +33 -0
  307. meshioplusplus-6.0.5/src/meshioplusplus/permas/_permas.py +284 -0
  308. meshioplusplus-6.0.5/src/meshioplusplus/ply/__init__.py +31 -0
  309. meshioplusplus-6.0.5/src/meshioplusplus/ply/_ply.py +531 -0
  310. meshioplusplus-6.0.5/src/meshioplusplus/stl/__init__.py +37 -0
  311. meshioplusplus-6.0.5/src/meshioplusplus/stl/_stl.py +259 -0
  312. meshioplusplus-6.0.5/src/meshioplusplus/su2/__init__.py +31 -0
  313. meshioplusplus-6.0.5/src/meshioplusplus/su2/_su2.py +373 -0
  314. meshioplusplus-6.0.5/src/meshioplusplus/svg/__init__.py +3 -0
  315. meshioplusplus-6.0.5/src/meshioplusplus/svg/_svg.py +108 -0
  316. meshioplusplus-6.0.5/src/meshioplusplus/tecplot/__init__.py +31 -0
  317. meshioplusplus-6.0.5/src/meshioplusplus/tecplot/_tecplot.py +508 -0
  318. meshioplusplus-6.0.5/src/meshioplusplus/tetgen/__init__.py +31 -0
  319. meshioplusplus-6.0.5/src/meshioplusplus/tetgen/_tetgen.py +164 -0
  320. meshioplusplus-6.0.5/src/meshioplusplus/ugrid/__init__.py +31 -0
  321. meshioplusplus-6.0.5/src/meshioplusplus/ugrid/_ugrid.py +284 -0
  322. meshioplusplus-6.0.5/src/meshioplusplus/unv/__init__.py +34 -0
  323. meshioplusplus-6.0.5/src/meshioplusplus/unv/_unv.py +335 -0
  324. meshioplusplus-6.0.5/src/meshioplusplus/vtk/__init__.py +65 -0
  325. meshioplusplus-6.0.5/src/meshioplusplus/vtk/_main.py +37 -0
  326. meshioplusplus-6.0.5/src/meshioplusplus/vtk/_vtk_42.py +764 -0
  327. meshioplusplus-6.0.5/src/meshioplusplus/vtk/_vtk_51.py +655 -0
  328. meshioplusplus-6.0.5/src/meshioplusplus/vtu/__init__.py +55 -0
  329. meshioplusplus-6.0.5/src/meshioplusplus/vtu/_vtu.py +912 -0
  330. meshioplusplus-6.0.5/src/meshioplusplus/wkt/__init__.py +31 -0
  331. meshioplusplus-6.0.5/src/meshioplusplus/wkt/_wkt.py +100 -0
  332. meshioplusplus-6.0.5/src/meshioplusplus/xdmf/__init__.py +45 -0
  333. meshioplusplus-6.0.5/src/meshioplusplus/xdmf/common.py +175 -0
  334. meshioplusplus-6.0.5/src/meshioplusplus/xdmf/main.py +546 -0
  335. meshioplusplus-6.0.5/src/meshioplusplus/xdmf/time_series.py +484 -0
  336. meshioplusplus-6.0.5/tests/__init__.py +0 -0
  337. meshioplusplus-6.0.5/tests/helpers.py +759 -0
  338. meshioplusplus-6.0.5/tests/input/mdpa/test_edge_cases.mdpa +47 -0
  339. meshioplusplus-6.0.5/tests/input/mdpa/test_elements_permutations.mdpa +44 -0
  340. meshioplusplus-6.0.5/tests/input/mdpa/test_geometries_minimal.mdpa +14 -0
  341. meshioplusplus-6.0.5/tests/input/mdpa/test_geometries_read.mdpa +35 -0
  342. meshioplusplus-6.0.5/tests/input/mdpa/test_mesh_blocks.mdpa +68 -0
  343. meshioplusplus-6.0.5/tests/input/mdpa/test_submodelparts_hierarchical.mdpa +82 -0
  344. meshioplusplus-6.0.5/tests/input/mdpa/test_tables_varied.mdpa +27 -0
  345. meshioplusplus-6.0.5/tests/legacy_reader.py +184 -0
  346. meshioplusplus-6.0.5/tests/legacy_writer.py +226 -0
  347. meshioplusplus-6.0.5/tests/meshes/abaqus/README.md +2 -0
  348. meshioplusplus-6.0.5/tests/meshes/abaqus/UUea.inp +3 -0
  349. meshioplusplus-6.0.5/tests/meshes/abaqus/element_elset.inp +3 -0
  350. meshioplusplus-6.0.5/tests/meshes/abaqus/nle1xf3c.inp +3 -0
  351. meshioplusplus-6.0.5/tests/meshes/abaqus/wInclude_bulk.inp +3 -0
  352. meshioplusplus-6.0.5/tests/meshes/abaqus/wInclude_main.inp +3 -0
  353. meshioplusplus-6.0.5/tests/meshes/flac3d/flac3d_mesh_ex.f3grid +3 -0
  354. meshioplusplus-6.0.5/tests/meshes/flac3d/flac3d_mesh_ex_bin.f3grid +3 -0
  355. meshioplusplus-6.0.5/tests/meshes/mdpa/test_elements_and_conditions.mdpa +196 -0
  356. meshioplusplus-6.0.5/tests/meshes/mdpa/test_geometries.mdpa +27 -0
  357. meshioplusplus-6.0.5/tests/meshes/mdpa/test_small_cube.mdpa +25 -0
  358. meshioplusplus-6.0.5/tests/meshes/mdpa/test_submodelpart.mdpa +44 -0
  359. meshioplusplus-6.0.5/tests/meshes/med/README.md +54 -0
  360. meshioplusplus-6.0.5/tests/meshes/med/box.med +3 -0
  361. meshioplusplus-6.0.5/tests/meshes/med/cylinder.med +3 -0
  362. meshioplusplus-6.0.5/tests/meshes/med/input_code_aster.med +3 -0
  363. meshioplusplus-6.0.5/tests/meshes/med/voronoi_hex.med +3 -0
  364. meshioplusplus-6.0.5/tests/meshes/medit/cube86.mesh +3 -0
  365. meshioplusplus-6.0.5/tests/meshes/medit/hch_strct.4.be.meshb +3 -0
  366. meshioplusplus-6.0.5/tests/meshes/medit/hch_strct.4.meshb +3 -0
  367. meshioplusplus-6.0.5/tests/meshes/medit/sphere_mixed.1.meshb +3 -0
  368. meshioplusplus-6.0.5/tests/meshes/msh/Makefile +5 -0
  369. meshioplusplus-6.0.5/tests/meshes/msh/README.md +5 -0
  370. meshioplusplus-6.0.5/tests/meshes/nastran/README.md +1 -0
  371. meshioplusplus-6.0.5/tests/meshes/nastran/cylinder.fem +3 -0
  372. meshioplusplus-6.0.5/tests/meshes/nastran/cylinder_cells_first.fem +3 -0
  373. meshioplusplus-6.0.5/tests/meshes/netgen/periodic_1d.vol +3 -0
  374. meshioplusplus-6.0.5/tests/meshes/netgen/periodic_2d.vol +3 -0
  375. meshioplusplus-6.0.5/tests/meshes/netgen/periodic_3d.vol +3 -0
  376. meshioplusplus-6.0.5/tests/meshes/neuroglancer/simple1 +0 -0
  377. meshioplusplus-6.0.5/tests/meshes/obj/elephav.obj +3 -0
  378. meshioplusplus-6.0.5/tests/meshes/ply/bun_zipper_res4.ply +3 -0
  379. meshioplusplus-6.0.5/tests/meshes/ply/tet.ply +3 -0
  380. meshioplusplus-6.0.5/tests/meshes/su2/README.md +2 -0
  381. meshioplusplus-6.0.5/tests/meshes/su2/mixgrid.su2 +3 -0
  382. meshioplusplus-6.0.5/tests/meshes/su2/square.su2 +3 -0
  383. meshioplusplus-6.0.5/tests/meshes/tecplot/quad_zone_comma.tec +3 -0
  384. meshioplusplus-6.0.5/tests/meshes/tecplot/quad_zone_multivar.tec +3 -0
  385. meshioplusplus-6.0.5/tests/meshes/tecplot/quad_zone_space.tec +3 -0
  386. meshioplusplus-6.0.5/tests/meshes/tetgen/mesh.ele +3 -0
  387. meshioplusplus-6.0.5/tests/meshes/tetgen/mesh.node +3 -0
  388. meshioplusplus-6.0.5/tests/meshes/ugrid/hch_strct.4.lb8.ugrid +3 -0
  389. meshioplusplus-6.0.5/tests/meshes/ugrid/pyra_cube.ugrid +3 -0
  390. meshioplusplus-6.0.5/tests/meshes/ugrid/sphere_mixed.1.lb8.ugrid +3 -0
  391. meshioplusplus-6.0.5/tests/meshes/vtk/00_image.vtk +3 -0
  392. meshioplusplus-6.0.5/tests/meshes/vtk/01_image.vtk +3 -0
  393. meshioplusplus-6.0.5/tests/meshes/vtk/02_structured.vtk +3 -0
  394. meshioplusplus-6.0.5/tests/meshes/vtk/03_rectilinear.vtk +3 -0
  395. meshioplusplus-6.0.5/tests/meshes/vtk/04_rectilinear.vtk +3 -0
  396. meshioplusplus-6.0.5/tests/meshes/vtk/05_rectilinear.vtk +3 -0
  397. meshioplusplus-6.0.5/tests/meshes/vtk/06_color_scalars.vtk +3 -0
  398. meshioplusplus-6.0.5/tests/meshes/vtk/06_unstructured.vtk +3 -0
  399. meshioplusplus-6.0.5/tests/meshes/vtk/gh-935.vtk +3 -0
  400. meshioplusplus-6.0.5/tests/meshes/vtk/rbc_001.vtk +3 -0
  401. meshioplusplus-6.0.5/tests/meshes/vtu/00_raw_binary.vtu +3 -0
  402. meshioplusplus-6.0.5/tests/meshes/vtu/01_raw_binary_int64.vtu +3 -0
  403. meshioplusplus-6.0.5/tests/meshes/vtu/02_raw_compressed.vtu +3 -0
  404. meshioplusplus-6.0.5/tests/meshes/wkt/simple.wkt +1 -0
  405. meshioplusplus-6.0.5/tests/meshes/wkt/whitespaced.wkt +4 -0
  406. meshioplusplus-6.0.5/tests/performance.py +372 -0
  407. meshioplusplus-6.0.5/tests/test_abaqus.py +80 -0
  408. meshioplusplus-6.0.5/tests/test_ansys.py +27 -0
  409. meshioplusplus-6.0.5/tests/test_ansysInp.py +482 -0
  410. meshioplusplus-6.0.5/tests/test_avsucd.py +27 -0
  411. meshioplusplus-6.0.5/tests/test_cgns.py +18 -0
  412. meshioplusplus-6.0.5/tests/test_cli.py +80 -0
  413. meshioplusplus-6.0.5/tests/test_dolfin.py +30 -0
  414. meshioplusplus-6.0.5/tests/test_exodus.py +39 -0
  415. meshioplusplus-6.0.5/tests/test_flac3d.py +67 -0
  416. meshioplusplus-6.0.5/tests/test_flux.py +32 -0
  417. meshioplusplus-6.0.5/tests/test_freefem.py +32 -0
  418. meshioplusplus-6.0.5/tests/test_gmsh.py +181 -0
  419. meshioplusplus-6.0.5/tests/test_helpers.py +46 -0
  420. meshioplusplus-6.0.5/tests/test_hmf.py +43 -0
  421. meshioplusplus-6.0.5/tests/test_mdpa.py +1966 -0
  422. meshioplusplus-6.0.5/tests/test_med.py +1598 -0
  423. meshioplusplus-6.0.5/tests/test_medit.py +139 -0
  424. meshioplusplus-6.0.5/tests/test_mesh.py +108 -0
  425. meshioplusplus-6.0.5/tests/test_mfm.py +33 -0
  426. meshioplusplus-6.0.5/tests/test_moab.py +29 -0
  427. meshioplusplus-6.0.5/tests/test_mphtxt.py +31 -0
  428. meshioplusplus-6.0.5/tests/test_nastran.py +73 -0
  429. meshioplusplus-6.0.5/tests/test_netgen.py +119 -0
  430. meshioplusplus-6.0.5/tests/test_neuroglancer.py +35 -0
  431. meshioplusplus-6.0.5/tests/test_obj.py +43 -0
  432. meshioplusplus-6.0.5/tests/test_off.py +24 -0
  433. meshioplusplus-6.0.5/tests/test_openfoam.py +1169 -0
  434. meshioplusplus-6.0.5/tests/test_permas.py +35 -0
  435. meshioplusplus-6.0.5/tests/test_ply.py +66 -0
  436. meshioplusplus-6.0.5/tests/test_public.py +6 -0
  437. meshioplusplus-6.0.5/tests/test_stl.py +24 -0
  438. meshioplusplus-6.0.5/tests/test_su2.py +46 -0
  439. meshioplusplus-6.0.5/tests/test_svg.py +19 -0
  440. meshioplusplus-6.0.5/tests/test_tecplot.py +82 -0
  441. meshioplusplus-6.0.5/tests/test_tetgen.py +36 -0
  442. meshioplusplus-6.0.5/tests/test_ugrid.py +255 -0
  443. meshioplusplus-6.0.5/tests/test_unv.py +47 -0
  444. meshioplusplus-6.0.5/tests/test_vtk.py +123 -0
  445. meshioplusplus-6.0.5/tests/test_vtu.py +82 -0
  446. meshioplusplus-6.0.5/tests/test_wkt.py +39 -0
  447. meshioplusplus-6.0.5/tests/test_xdmf.py +123 -0
  448. meshioplusplus-6.0.5/tools/paraview-meshioplusplus-plugin.py +195 -0
  449. meshioplusplus-6.0.5/tox.ini +41 -0
  450. meshioplusplus-6.0.5/wasm/README.md +41 -0
  451. meshioplusplus-6.0.5/wasm/index.d.ts +99 -0
  452. meshioplusplus-6.0.5/wasm/package.json +46 -0
  453. meshioplusplus-6.0.5/wasm/src/index.mjs +65 -0
  454. 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,6 @@
1
+ [flake8]
2
+ exclude = venv, .tox
3
+ ignore = E203, E266, E501, W503, C901, E741
4
+ max-line-length = 88
5
+ max-complexity = 18
6
+ select = B,C,E,F,W,T4,B9
@@ -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,3 @@
1
+ [submodule "cpp/third_party/eigen"]
2
+ path = cpp/third_party/eigen
3
+ url = https://gitlab.com/libeigen/eigen.git
@@ -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
+ }