netgen-mesher 6.2.2506.post35.dev0__cp314-cp314-win_amd64.whl

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 (340) hide show
  1. netgen/NgOCC.py +7 -0
  2. netgen/__init__.py +114 -0
  3. netgen/__init__.pyi +22 -0
  4. netgen/__main__.py +53 -0
  5. netgen/cmake/NetgenConfig.cmake +79 -0
  6. netgen/cmake/netgen-targets-release.cmake +69 -0
  7. netgen/cmake/netgen-targets.cmake +146 -0
  8. netgen/config/__init__.py +1 -0
  9. netgen/config/__init__.pyi +52 -0
  10. netgen/config/__main__.py +4 -0
  11. netgen/config/config.py +68 -0
  12. netgen/config/config.pyi +54 -0
  13. netgen/csg.py +25 -0
  14. netgen/geom2d.py +178 -0
  15. netgen/gui.py +82 -0
  16. netgen/include/core/archive.hpp +1256 -0
  17. netgen/include/core/array.hpp +1760 -0
  18. netgen/include/core/autodiff.hpp +1131 -0
  19. netgen/include/core/autodiffdiff.hpp +733 -0
  20. netgen/include/core/bitarray.hpp +240 -0
  21. netgen/include/core/concurrentqueue.h +3619 -0
  22. netgen/include/core/exception.hpp +145 -0
  23. netgen/include/core/flags.hpp +199 -0
  24. netgen/include/core/hashtable.hpp +1281 -0
  25. netgen/include/core/localheap.hpp +318 -0
  26. netgen/include/core/logging.hpp +117 -0
  27. netgen/include/core/memtracer.hpp +221 -0
  28. netgen/include/core/mpi4py_pycapi.h +245 -0
  29. netgen/include/core/mpi_wrapper.hpp +643 -0
  30. netgen/include/core/ng_mpi.hpp +94 -0
  31. netgen/include/core/ng_mpi_generated_declarations.hpp +155 -0
  32. netgen/include/core/ng_mpi_native.hpp +25 -0
  33. netgen/include/core/ngcore.hpp +32 -0
  34. netgen/include/core/ngcore_api.hpp +152 -0
  35. netgen/include/core/ngstream.hpp +115 -0
  36. netgen/include/core/paje_trace.hpp +279 -0
  37. netgen/include/core/profiler.hpp +382 -0
  38. netgen/include/core/python_ngcore.hpp +457 -0
  39. netgen/include/core/ranges.hpp +109 -0
  40. netgen/include/core/register_archive.hpp +100 -0
  41. netgen/include/core/signal.hpp +82 -0
  42. netgen/include/core/simd.hpp +160 -0
  43. netgen/include/core/simd_arm64.hpp +407 -0
  44. netgen/include/core/simd_avx.hpp +394 -0
  45. netgen/include/core/simd_avx512.hpp +285 -0
  46. netgen/include/core/simd_generic.hpp +1053 -0
  47. netgen/include/core/simd_math.hpp +178 -0
  48. netgen/include/core/simd_sse.hpp +289 -0
  49. netgen/include/core/statushandler.hpp +37 -0
  50. netgen/include/core/symboltable.hpp +153 -0
  51. netgen/include/core/table.hpp +810 -0
  52. netgen/include/core/taskmanager.hpp +1161 -0
  53. netgen/include/core/type_traits.hpp +65 -0
  54. netgen/include/core/utils.hpp +385 -0
  55. netgen/include/core/version.hpp +102 -0
  56. netgen/include/core/xbool.hpp +47 -0
  57. netgen/include/csg/algprim.hpp +563 -0
  58. netgen/include/csg/brick.hpp +150 -0
  59. netgen/include/csg/csg.hpp +43 -0
  60. netgen/include/csg/csgeom.hpp +389 -0
  61. netgen/include/csg/csgparser.hpp +101 -0
  62. netgen/include/csg/curve2d.hpp +67 -0
  63. netgen/include/csg/edgeflw.hpp +112 -0
  64. netgen/include/csg/explicitcurve2d.hpp +113 -0
  65. netgen/include/csg/extrusion.hpp +185 -0
  66. netgen/include/csg/gencyl.hpp +70 -0
  67. netgen/include/csg/geoml.hpp +16 -0
  68. netgen/include/csg/identify.hpp +213 -0
  69. netgen/include/csg/manifold.hpp +29 -0
  70. netgen/include/csg/meshsurf.hpp +46 -0
  71. netgen/include/csg/polyhedra.hpp +121 -0
  72. netgen/include/csg/revolution.hpp +180 -0
  73. netgen/include/csg/singularref.hpp +84 -0
  74. netgen/include/csg/solid.hpp +295 -0
  75. netgen/include/csg/specpoin.hpp +194 -0
  76. netgen/include/csg/spline3d.hpp +99 -0
  77. netgen/include/csg/splinesurface.hpp +85 -0
  78. netgen/include/csg/surface.hpp +394 -0
  79. netgen/include/csg/triapprox.hpp +63 -0
  80. netgen/include/csg/vscsg.hpp +34 -0
  81. netgen/include/general/autodiff.hpp +356 -0
  82. netgen/include/general/autoptr.hpp +39 -0
  83. netgen/include/general/gzstream.h +121 -0
  84. netgen/include/general/hashtabl.hpp +1692 -0
  85. netgen/include/general/myadt.hpp +48 -0
  86. netgen/include/general/mystring.hpp +226 -0
  87. netgen/include/general/netgenout.hpp +205 -0
  88. netgen/include/general/ngarray.hpp +797 -0
  89. netgen/include/general/ngbitarray.hpp +149 -0
  90. netgen/include/general/ngpython.hpp +74 -0
  91. netgen/include/general/optmem.hpp +44 -0
  92. netgen/include/general/parthreads.hpp +138 -0
  93. netgen/include/general/seti.hpp +50 -0
  94. netgen/include/general/sort.hpp +47 -0
  95. netgen/include/general/spbita2d.hpp +59 -0
  96. netgen/include/general/stack.hpp +114 -0
  97. netgen/include/general/table.hpp +280 -0
  98. netgen/include/general/template.hpp +509 -0
  99. netgen/include/geom2d/csg2d.hpp +750 -0
  100. netgen/include/geom2d/geometry2d.hpp +280 -0
  101. netgen/include/geom2d/spline2d.hpp +234 -0
  102. netgen/include/geom2d/vsgeom2d.hpp +28 -0
  103. netgen/include/gprim/adtree.hpp +1392 -0
  104. netgen/include/gprim/geom2d.hpp +858 -0
  105. netgen/include/gprim/geom3d.hpp +749 -0
  106. netgen/include/gprim/geomfuncs.hpp +212 -0
  107. netgen/include/gprim/geomobjects.hpp +544 -0
  108. netgen/include/gprim/geomops.hpp +404 -0
  109. netgen/include/gprim/geomtest3d.hpp +101 -0
  110. netgen/include/gprim/gprim.hpp +33 -0
  111. netgen/include/gprim/spline.hpp +778 -0
  112. netgen/include/gprim/splinegeometry.hpp +73 -0
  113. netgen/include/gprim/transform3d.hpp +216 -0
  114. netgen/include/include/acisgeom.hpp +3 -0
  115. netgen/include/include/csg.hpp +1 -0
  116. netgen/include/include/geometry2d.hpp +1 -0
  117. netgen/include/include/gprim.hpp +1 -0
  118. netgen/include/include/incopengl.hpp +62 -0
  119. netgen/include/include/inctcl.hpp +13 -0
  120. netgen/include/include/incvis.hpp +6 -0
  121. netgen/include/include/linalg.hpp +1 -0
  122. netgen/include/include/meshing.hpp +1 -0
  123. netgen/include/include/myadt.hpp +1 -0
  124. netgen/include/include/mydefs.hpp +70 -0
  125. netgen/include/include/mystdlib.h +59 -0
  126. netgen/include/include/netgen_config.hpp +27 -0
  127. netgen/include/include/netgen_version.hpp +9 -0
  128. netgen/include/include/nginterface_v2_impl.hpp +395 -0
  129. netgen/include/include/ngsimd.hpp +1 -0
  130. netgen/include/include/occgeom.hpp +1 -0
  131. netgen/include/include/opti.hpp +1 -0
  132. netgen/include/include/parallel.hpp +1 -0
  133. netgen/include/include/stlgeom.hpp +1 -0
  134. netgen/include/include/visual.hpp +1 -0
  135. netgen/include/interface/rw_medit.hpp +11 -0
  136. netgen/include/interface/writeuser.hpp +80 -0
  137. netgen/include/linalg/densemat.hpp +414 -0
  138. netgen/include/linalg/linalg.hpp +29 -0
  139. netgen/include/linalg/opti.hpp +142 -0
  140. netgen/include/linalg/polynomial.hpp +47 -0
  141. netgen/include/linalg/vector.hpp +217 -0
  142. netgen/include/meshing/adfront2.hpp +274 -0
  143. netgen/include/meshing/adfront3.hpp +332 -0
  144. netgen/include/meshing/basegeom.hpp +370 -0
  145. netgen/include/meshing/bcfunctions.hpp +53 -0
  146. netgen/include/meshing/bisect.hpp +72 -0
  147. netgen/include/meshing/boundarylayer.hpp +113 -0
  148. netgen/include/meshing/classifyhpel.hpp +1984 -0
  149. netgen/include/meshing/clusters.hpp +46 -0
  150. netgen/include/meshing/curvedelems.hpp +274 -0
  151. netgen/include/meshing/delaunay2d.hpp +73 -0
  152. netgen/include/meshing/fieldlines.hpp +103 -0
  153. netgen/include/meshing/findip.hpp +198 -0
  154. netgen/include/meshing/findip2.hpp +103 -0
  155. netgen/include/meshing/geomsearch.hpp +69 -0
  156. netgen/include/meshing/global.hpp +54 -0
  157. netgen/include/meshing/hpref_hex.hpp +330 -0
  158. netgen/include/meshing/hpref_prism.hpp +3405 -0
  159. netgen/include/meshing/hpref_pyramid.hpp +154 -0
  160. netgen/include/meshing/hpref_quad.hpp +2082 -0
  161. netgen/include/meshing/hpref_segm.hpp +122 -0
  162. netgen/include/meshing/hpref_tet.hpp +4230 -0
  163. netgen/include/meshing/hpref_trig.hpp +848 -0
  164. netgen/include/meshing/hprefinement.hpp +366 -0
  165. netgen/include/meshing/improve2.hpp +178 -0
  166. netgen/include/meshing/improve3.hpp +151 -0
  167. netgen/include/meshing/localh.hpp +223 -0
  168. netgen/include/meshing/meshclass.hpp +1076 -0
  169. netgen/include/meshing/meshfunc.hpp +47 -0
  170. netgen/include/meshing/meshing.hpp +63 -0
  171. netgen/include/meshing/meshing2.hpp +163 -0
  172. netgen/include/meshing/meshing3.hpp +123 -0
  173. netgen/include/meshing/meshtool.hpp +90 -0
  174. netgen/include/meshing/meshtype.hpp +1930 -0
  175. netgen/include/meshing/msghandler.hpp +62 -0
  176. netgen/include/meshing/paralleltop.hpp +172 -0
  177. netgen/include/meshing/python_mesh.hpp +206 -0
  178. netgen/include/meshing/ruler2.hpp +172 -0
  179. netgen/include/meshing/ruler3.hpp +211 -0
  180. netgen/include/meshing/soldata.hpp +141 -0
  181. netgen/include/meshing/specials.hpp +17 -0
  182. netgen/include/meshing/surfacegeom.hpp +73 -0
  183. netgen/include/meshing/topology.hpp +1003 -0
  184. netgen/include/meshing/validate.hpp +21 -0
  185. netgen/include/meshing/visual_interface.hpp +71 -0
  186. netgen/include/mydefs.hpp +70 -0
  187. netgen/include/nginterface.h +474 -0
  188. netgen/include/nginterface_v2.hpp +406 -0
  189. netgen/include/nglib.h +697 -0
  190. netgen/include/nglib_occ.h +50 -0
  191. netgen/include/occ/occ_edge.hpp +47 -0
  192. netgen/include/occ/occ_face.hpp +52 -0
  193. netgen/include/occ/occ_solid.hpp +23 -0
  194. netgen/include/occ/occ_utils.hpp +376 -0
  195. netgen/include/occ/occ_vertex.hpp +30 -0
  196. netgen/include/occ/occgeom.hpp +659 -0
  197. netgen/include/occ/occmeshsurf.hpp +168 -0
  198. netgen/include/occ/vsocc.hpp +33 -0
  199. netgen/include/pybind11/LICENSE +29 -0
  200. netgen/include/pybind11/attr.h +722 -0
  201. netgen/include/pybind11/buffer_info.h +208 -0
  202. netgen/include/pybind11/cast.h +2361 -0
  203. netgen/include/pybind11/chrono.h +228 -0
  204. netgen/include/pybind11/common.h +2 -0
  205. netgen/include/pybind11/complex.h +74 -0
  206. netgen/include/pybind11/conduit/README.txt +15 -0
  207. netgen/include/pybind11/conduit/pybind11_conduit_v1.h +116 -0
  208. netgen/include/pybind11/conduit/pybind11_platform_abi_id.h +87 -0
  209. netgen/include/pybind11/conduit/wrap_include_python_h.h +72 -0
  210. netgen/include/pybind11/critical_section.h +56 -0
  211. netgen/include/pybind11/detail/class.h +823 -0
  212. netgen/include/pybind11/detail/common.h +1348 -0
  213. netgen/include/pybind11/detail/cpp_conduit.h +75 -0
  214. netgen/include/pybind11/detail/descr.h +226 -0
  215. netgen/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h +39 -0
  216. netgen/include/pybind11/detail/exception_translation.h +71 -0
  217. netgen/include/pybind11/detail/function_record_pyobject.h +191 -0
  218. netgen/include/pybind11/detail/init.h +538 -0
  219. netgen/include/pybind11/detail/internals.h +799 -0
  220. netgen/include/pybind11/detail/native_enum_data.h +209 -0
  221. netgen/include/pybind11/detail/pybind11_namespace_macros.h +82 -0
  222. netgen/include/pybind11/detail/struct_smart_holder.h +378 -0
  223. netgen/include/pybind11/detail/type_caster_base.h +1591 -0
  224. netgen/include/pybind11/detail/typeid.h +65 -0
  225. netgen/include/pybind11/detail/using_smart_holder.h +22 -0
  226. netgen/include/pybind11/detail/value_and_holder.h +90 -0
  227. netgen/include/pybind11/eigen/common.h +9 -0
  228. netgen/include/pybind11/eigen/matrix.h +723 -0
  229. netgen/include/pybind11/eigen/tensor.h +521 -0
  230. netgen/include/pybind11/eigen.h +12 -0
  231. netgen/include/pybind11/embed.h +320 -0
  232. netgen/include/pybind11/eval.h +161 -0
  233. netgen/include/pybind11/functional.h +147 -0
  234. netgen/include/pybind11/gil.h +199 -0
  235. netgen/include/pybind11/gil_safe_call_once.h +102 -0
  236. netgen/include/pybind11/gil_simple.h +37 -0
  237. netgen/include/pybind11/iostream.h +265 -0
  238. netgen/include/pybind11/native_enum.h +67 -0
  239. netgen/include/pybind11/numpy.h +2312 -0
  240. netgen/include/pybind11/operators.h +202 -0
  241. netgen/include/pybind11/options.h +92 -0
  242. netgen/include/pybind11/pybind11.h +3645 -0
  243. netgen/include/pybind11/pytypes.h +2680 -0
  244. netgen/include/pybind11/stl/filesystem.h +114 -0
  245. netgen/include/pybind11/stl.h +666 -0
  246. netgen/include/pybind11/stl_bind.h +858 -0
  247. netgen/include/pybind11/subinterpreter.h +299 -0
  248. netgen/include/pybind11/trampoline_self_life_support.h +65 -0
  249. netgen/include/pybind11/type_caster_pyobject_ptr.h +61 -0
  250. netgen/include/pybind11/typing.h +298 -0
  251. netgen/include/pybind11/warnings.h +75 -0
  252. netgen/include/stlgeom/meshstlsurface.hpp +67 -0
  253. netgen/include/stlgeom/stlgeom.hpp +491 -0
  254. netgen/include/stlgeom/stlline.hpp +193 -0
  255. netgen/include/stlgeom/stltool.hpp +331 -0
  256. netgen/include/stlgeom/stltopology.hpp +419 -0
  257. netgen/include/stlgeom/vsstl.hpp +58 -0
  258. netgen/include/visualization/meshdoc.hpp +42 -0
  259. netgen/include/visualization/mvdraw.hpp +325 -0
  260. netgen/include/visualization/vispar.hpp +128 -0
  261. netgen/include/visualization/visual.hpp +28 -0
  262. netgen/include/visualization/visual_api.hpp +10 -0
  263. netgen/include/visualization/vssolution.hpp +399 -0
  264. netgen/lib/libnggui.lib +0 -0
  265. netgen/lib/ngcore.lib +0 -0
  266. netgen/lib/nglib.lib +0 -0
  267. netgen/lib/togl.lib +0 -0
  268. netgen/libnggui.dll +0 -0
  269. netgen/libngguipy.lib +0 -0
  270. netgen/libngguipy.pyd +0 -0
  271. netgen/libngpy/_NgOCC.pyi +1545 -0
  272. netgen/libngpy/__init__.pyi +7 -0
  273. netgen/libngpy/_csg.pyi +259 -0
  274. netgen/libngpy/_geom2d.pyi +323 -0
  275. netgen/libngpy/_meshing.pyi +1111 -0
  276. netgen/libngpy/_stl.pyi +131 -0
  277. netgen/libngpy.lib +0 -0
  278. netgen/libngpy.pyd +0 -0
  279. netgen/meshing.py +65 -0
  280. netgen/ngcore.dll +0 -0
  281. netgen/nglib.dll +0 -0
  282. netgen/occ.py +52 -0
  283. netgen/read_gmsh.py +259 -0
  284. netgen/read_meshio.py +22 -0
  285. netgen/stl.py +2 -0
  286. netgen/togl.dll +0 -0
  287. netgen/version.py +2 -0
  288. netgen/webgui.py +529 -0
  289. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boundarycondition.geo +16 -0
  290. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boxcyl.geo +32 -0
  291. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/circle_on_cube.geo +27 -0
  292. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cone.geo +13 -0
  293. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cube.geo +16 -0
  294. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandring.geo +55 -0
  295. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandspheres.geo +21 -0
  296. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemcyl.geo +18 -0
  297. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemsphere.geo +19 -0
  298. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylinder.geo +12 -0
  299. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylsphere.geo +12 -0
  300. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/doc/ng4.pdf +0 -0
  301. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipsoid.geo +8 -0
  302. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipticcyl.geo +10 -0
  303. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/extrusion.geo +99 -0
  304. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/fichera.geo +24 -0
  305. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/frame.step +11683 -0
  306. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/hinge.stl +8486 -0
  307. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/lshape3d.geo +26 -0
  308. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes.geo +26 -0
  309. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes2.geo +26 -0
  310. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/matrix.geo +27 -0
  311. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ortho.geo +11 -0
  312. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/part1.stl +2662 -0
  313. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/period.geo +33 -0
  314. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/exportNeutral.py +26 -0
  315. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/mesh.py +19 -0
  316. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/shaft.geo +65 -0
  317. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/revolution.geo +18 -0
  318. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/screw.step +1694 -0
  319. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sculpture.geo +13 -0
  320. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shaft.geo +65 -0
  321. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shell.geo +10 -0
  322. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphere.geo +8 -0
  323. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphereincube.geo +17 -0
  324. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/square.in2d +35 -0
  325. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarecircle.in2d +48 -0
  326. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarehole.in2d +47 -0
  327. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/torus.geo +8 -0
  328. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/trafo.geo +57 -0
  329. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twobricks.geo +15 -0
  330. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocubes.geo +18 -0
  331. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocyl.geo +16 -0
  332. netgen_mesher-6.2.2506.post35.dev0.dist-info/METADATA +15 -0
  333. netgen_mesher-6.2.2506.post35.dev0.dist-info/RECORD +340 -0
  334. netgen_mesher-6.2.2506.post35.dev0.dist-info/WHEEL +5 -0
  335. netgen_mesher-6.2.2506.post35.dev0.dist-info/entry_points.txt +2 -0
  336. netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/AUTHORS +1 -0
  337. netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/LICENSE +504 -0
  338. netgen_mesher-6.2.2506.post35.dev0.dist-info/top_level.txt +2 -0
  339. pyngcore/__init__.py +1 -0
  340. pyngcore/pyngcore.cp314-win_amd64.pyd +0 -0
@@ -0,0 +1,245 @@
1
+ /* Author: Lisandro Dalcin */
2
+ /* Contact: dalcinl@gmail.com */
3
+
4
+ #ifndef MPI4PY_PYCAPI_H
5
+ #define MPI4PY_PYCAPI_H
6
+
7
+ #include <mpi.h>
8
+ #include <Python.h>
9
+
10
+ #define _mpi4py_declare_pycapi(Type, star) \
11
+ static PyTypeObject *_mpi4py_PyMPI##Type = NULL; \
12
+ static PyObject *(*_mpi4py_PyMPI##Type##_New)(MPI_##Type star) = NULL; \
13
+ static MPI_##Type *(*_mpi4py_PyMPI##Type##_Get)(PyObject *) = NULL;
14
+
15
+ #ifndef MPI4PY_LIMITED_API_SKIP_DATATYPE
16
+ _mpi4py_declare_pycapi(Datatype,)
17
+ #define PyMPIDatatype_Type (*_mpi4py_PyMPIDatatype)
18
+ #define PyMPIDatatype_New _mpi4py_PyMPIDatatype_New
19
+ #define PyMPIDatatype_Get _mpi4py_PyMPIDatatype_Get
20
+ #endif
21
+
22
+ #ifndef MPI4PY_LIMITED_API_SKIP_STATUS
23
+ _mpi4py_declare_pycapi(Status,*)
24
+ #define PyMPIStatus_Type (*_mpi4py_PyMPIStatus)
25
+ #define PyMPIStatus_New _mpi4py_PyMPIStatus_New
26
+ #define PyMPIStatus_Get _mpi4py_PyMPIStatus_Get
27
+ #endif
28
+
29
+ #ifndef MPI4PY_LIMITED_API_SKIP_REQUEST
30
+ _mpi4py_declare_pycapi(Request,)
31
+ #define PyMPIRequest_Type (*_mpi4py_PyMPIRequest)
32
+ #define PyMPIRequest_New _mpi4py_PyMPIRequest_New
33
+ #define PyMPIRequest_Get _mpi4py_PyMPIRequest_Get
34
+ #endif
35
+
36
+ #ifndef MPI4PY_LIMITED_API_SKIP_MESSAGE
37
+ _mpi4py_declare_pycapi(Message,)
38
+ #define PyMPIMessage_Type (*_mpi4py_PyMPIMessage)
39
+ #define PyMPIMessage_New _mpi4py_PyMPIMessage_New
40
+ #define PyMPIMessage_Get _mpi4py_PyMPIMessage_Get
41
+ #endif
42
+
43
+ #ifndef MPI4PY_LIMITED_API_SKIP_OP
44
+ _mpi4py_declare_pycapi(Op,)
45
+ #define PyMPIOp_Type (*_mpi4py_PyMPIOp)
46
+ #define PyMPIOp_New _mpi4py_PyMPIOp_New
47
+ #define PyMPIOp_Get _mpi4py_PyMPIOp_Get
48
+ #endif
49
+
50
+ #ifndef MPI4PY_LIMITED_API_SKIP_GROUP
51
+ _mpi4py_declare_pycapi(Group,)
52
+ #define PyMPIGroup_Type (*_mpi4py_PyMPIGroup)
53
+ #define PyMPIGroup_New _mpi4py_PyMPIGroup_New
54
+ #define PyMPIGroup_Get _mpi4py_PyMPIGroup_Get
55
+ #endif
56
+
57
+ #ifndef MPI4PY_LIMITED_API_SKIP_INFO
58
+ _mpi4py_declare_pycapi(Info,)
59
+ #define PyMPIInfo_Type (*_mpi4py_PyMPIInfo)
60
+ #define PyMPIInfo_New _mpi4py_PyMPIInfo_New
61
+ #define PyMPIInfo_Get _mpi4py_PyMPIInfo_Get
62
+ #endif
63
+
64
+ #ifndef MPI4PY_LIMITED_API_SKIP_ERRHANDLER
65
+ _mpi4py_declare_pycapi(Errhandler,)
66
+ #define PyMPIErrhandler_Type (*_mpi4py_PyMPIErrhandler)
67
+ #define PyMPIErrhandler_New _mpi4py_PyMPIErrhandler_New
68
+ #define PyMPIErrhandler_Get _mpi4py_PyMPIErrhandler_Get
69
+ #endif
70
+
71
+ #ifndef MPI4PY_LIMITED_API_SKIP_SESSION
72
+ _mpi4py_declare_pycapi(Session,)
73
+ #define PyMPISession_Type (*_mpi4py_PyMPISession)
74
+ #define PyMPISession_New _mpi4py_PyMPISession_New
75
+ #define PyMPISession_Get _mpi4py_PyMPISession_Get
76
+ #endif
77
+
78
+ #ifndef MPI4PY_LIMITED_API_SKIP_COMM
79
+ _mpi4py_declare_pycapi(Comm,)
80
+ #define PyMPIComm_Type (*_mpi4py_PyMPIComm)
81
+ #define PyMPIComm_New _mpi4py_PyMPIComm_New
82
+ #define PyMPIComm_Get _mpi4py_PyMPIComm_Get
83
+ #endif
84
+
85
+ #ifndef MPI4PY_LIMITED_API_SKIP_WIN
86
+ _mpi4py_declare_pycapi(Win,)
87
+ #define PyMPIWin_Type (*_mpi4py_PyMPIWin)
88
+ #define PyMPIWin_New _mpi4py_PyMPIWin_New
89
+ #define PyMPIWin_Get _mpi4py_PyMPIWin_Get
90
+ #endif
91
+
92
+ #ifndef MPI4PY_LIMITED_API_SKIP_FILE
93
+ _mpi4py_declare_pycapi(File,)
94
+ #define PyMPIFile_Type (*_mpi4py_PyMPIFile)
95
+ #define PyMPIFile_New _mpi4py_PyMPIFile_New
96
+ #define PyMPIFile_Get _mpi4py_PyMPIFile_Get
97
+ #endif
98
+
99
+ #undef _mpi4py_define_pycapi
100
+
101
+ static int _mpi4py_ImportType(PyObject *module,
102
+ const char *type_name,
103
+ PyTypeObject **type)
104
+ {
105
+ PyObject *attr = NULL;
106
+ attr = PyObject_GetAttrString(module, type_name);
107
+ if (!attr)
108
+ goto fn_fail;
109
+ if (!PyType_Check(attr)) {
110
+ PyErr_Format(PyExc_TypeError,
111
+ "%.200s.%.200s is not a type object",
112
+ PyModule_GetName(module), type_name);
113
+ goto fn_fail;
114
+ }
115
+ *type = (PyTypeObject *)attr;
116
+ return 0;
117
+ fn_fail:
118
+ Py_DecRef(attr);
119
+ return -1;
120
+ }
121
+
122
+ static int _mpi4py_ImportFunc(PyObject *module,
123
+ const char *func_name,
124
+ const char *signature,
125
+ void (**func)(void))
126
+ {
127
+ PyObject *pyxcapi = NULL;
128
+ PyObject *capsule = NULL;
129
+ union { void *obj; void (*fcn)(void); } ptr;
130
+ pyxcapi = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
131
+ if (!pyxcapi)
132
+ goto fn_fail;
133
+
134
+ capsule = PyDict_GetItemString(pyxcapi, func_name);
135
+ if (!capsule) {
136
+ PyErr_Format(PyExc_ImportError,
137
+ "%.200s does not export expected C function %.200s",
138
+ PyModule_GetName(module), func_name);
139
+ goto fn_fail;
140
+ }
141
+ if (!PyCapsule_CheckExact(capsule)) {
142
+ PyErr_Format(PyExc_TypeError,
143
+ "%.200s.%.200s is not a capsule",
144
+ PyModule_GetName(module), func_name);
145
+ }
146
+ if (!signature) {
147
+ signature = PyCapsule_GetName(capsule);
148
+ }
149
+ if (!PyCapsule_IsValid(capsule, signature)) {
150
+ PyErr_Format(PyExc_TypeError,
151
+ "C function %.200s.%.200s has wrong signature "
152
+ "(expected %.500s, got %.500s)",
153
+ PyModule_GetName(module), func_name,
154
+ signature, PyCapsule_GetName(capsule));
155
+ goto fn_fail;
156
+ }
157
+ ptr.obj = PyCapsule_GetPointer(capsule, signature);
158
+ if (!ptr.obj)
159
+ goto fn_fail;
160
+ *func = ptr.fcn;
161
+ Py_DecRef(pyxcapi);
162
+ return 0;
163
+ fn_fail:
164
+ Py_DecRef(pyxcapi);
165
+ return -1;
166
+ }
167
+
168
+ static int import_mpi4py_MPI(void)
169
+ {
170
+ PyObject *module = PyImport_ImportModule("mpi4py.MPI");
171
+ if (!module)
172
+ goto fn_fail;
173
+
174
+ #define _mpi4py_import_pycapi(Type) do { \
175
+ if (_mpi4py_ImportType(module, #Type, &_mpi4py_PyMPI##Type) < 0) \
176
+ goto fn_fail; \
177
+ if (_mpi4py_ImportFunc(module, "PyMPI" #Type "_New", NULL, \
178
+ (void (**)(void))&_mpi4py_PyMPI##Type##_New) < 0) \
179
+ goto fn_fail; \
180
+ if (_mpi4py_ImportFunc(module, "PyMPI" #Type "_Get", NULL, \
181
+ (void (**)(void))&_mpi4py_PyMPI##Type##_Get) < 0) \
182
+ goto fn_fail; \
183
+ } while (0)
184
+
185
+ #ifndef MPI4PY_LIMITED_API_SKIP_DATATYPE
186
+ _mpi4py_import_pycapi(Datatype);
187
+ #endif
188
+
189
+ #ifndef MPI4PY_LIMITED_API_SKIP_STATUS
190
+ _mpi4py_import_pycapi(Status);
191
+ #endif
192
+
193
+ #ifndef MPI4PY_LIMITED_API_SKIP_REQUEST
194
+ _mpi4py_import_pycapi(Request);
195
+ #endif
196
+
197
+ #ifndef MPI4PY_LIMITED_API_SKIP_MESSAGE
198
+ _mpi4py_import_pycapi(Message);
199
+ #endif
200
+
201
+ #ifndef MPI4PY_LIMITED_API_SKIP_OP
202
+ _mpi4py_import_pycapi(Op);
203
+ #endif
204
+
205
+ #ifndef MPI4PY_LIMITED_API_SKIP_GROUP
206
+ _mpi4py_import_pycapi(Group);
207
+ #endif
208
+
209
+ #ifndef MPI4PY_LIMITED_API_SKIP_INFO
210
+ _mpi4py_import_pycapi(Info);
211
+ #endif
212
+
213
+ #ifndef MPI4PY_LIMITED_API_SKIP_ERRHANDLER
214
+ _mpi4py_import_pycapi(Errhandler);
215
+ #endif
216
+
217
+ #ifndef MPI4PY_LIMITED_API_SKIP_SESSION
218
+ _mpi4py_import_pycapi(Session);
219
+ #endif
220
+
221
+ #ifndef MPI4PY_LIMITED_API_SKIP_COMM
222
+ _mpi4py_import_pycapi(Comm);
223
+ #endif
224
+
225
+ #ifndef MPI4PY_LIMITED_API_SKIP_WIN
226
+ _mpi4py_import_pycapi(Win);
227
+ #endif
228
+
229
+ #ifndef MPI4PY_LIMITED_API_SKIP_FILE
230
+ _mpi4py_import_pycapi(File);
231
+ #endif
232
+
233
+ #undef _mpi4py_import_pycapi
234
+
235
+ Py_DecRef(module);
236
+ return 0;
237
+ fn_fail:
238
+ Py_DecRef(module);
239
+ return -1;
240
+ }
241
+
242
+ #define __PYX_HAVE_API__mpi4py__MPI
243
+ #define import_mpi4py__MPI import_mpi4py_MPI
244
+
245
+ #endif /* MPI4PY_PYCAPI_H */