DEME 2.1.9__tar.gz → 2.2.1__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 (443) hide show
  1. {deme-2.1.9/deme.egg-info → deme-2.2.1}/PKG-INFO +1 -1
  2. {deme-2.1.9 → deme-2.2.1}/README.md +1 -0
  3. {deme-2.1.9 → deme-2.2.1}/cmake/CudaSupportedArchitectures.cmake +11 -2
  4. {deme-2.1.9 → deme-2.2.1/deme.egg-info}/PKG-INFO +1 -1
  5. {deme-2.1.9 → deme-2.2.1}/setup.py +1 -1
  6. {deme-2.1.9 → deme-2.2.1}/src/DEM/APIPrivate.cpp +6 -2
  7. {deme-2.1.9 → deme-2.2.1}/src/DEM/HostSideHelpers.hpp +4 -4
  8. {deme-2.1.9 → deme-2.2.1}/src/DEM/PyDEME.cpp +8 -0
  9. {deme-2.1.9 → deme-2.2.1}/src/DEM/kT.cpp +6 -7
  10. {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMCubWrappers.cu +14 -14
  11. {deme-2.1.9 → deme-2.2.1}/src/core/utils/JitHelper.cpp +27 -0
  12. {deme-2.1.9 → deme-2.2.1}/src/core/utils/ManagedMemory.hpp +27 -1
  13. {deme-2.1.9 → deme-2.2.1}/src/kernel/CUDAMathHelpers.cuh +62 -14
  14. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMHelperKernels.cuh +11 -57
  15. {deme-2.1.9 → deme-2.2.1}/CMakeLists.txt +0 -0
  16. {deme-2.1.9 → deme-2.2.1}/LICENSE.md +0 -0
  17. {deme-2.1.9 → deme-2.2.1}/MANIFEST.in +0 -0
  18. {deme-2.1.9 → deme-2.2.1}/cmake/CxxStdAutodetect.cmake +0 -0
  19. {deme-2.1.9 → deme-2.2.1}/cmake/DEMEConfig.cmake.in +0 -0
  20. {deme-2.1.9 → deme-2.2.1}/cmake/FixNinjaColors.cmake +0 -0
  21. {deme-2.1.9 → deme-2.2.1}/data/clumps/3_clump.csv +0 -0
  22. {deme-2.1.9 → deme-2.2.1}/data/clumps/6_clump.csv +0 -0
  23. {deme-2.1.9 → deme-2.2.1}/data/clumps/ContactChain_initial.csv +0 -0
  24. {deme-2.1.9 → deme-2.2.1}/data/clumps/TeddyBear.csv +0 -0
  25. {deme-2.1.9 → deme-2.2.1}/data/clumps/ViperWheelSimple.csv +0 -0
  26. {deme-2.1.9 → deme-2.2.1}/data/clumps/ellipsoid_2_1_1.csv +0 -0
  27. {deme-2.1.9 → deme-2.2.1}/data/clumps/molecule.csv +0 -0
  28. {deme-2.1.9 → deme-2.2.1}/data/clumps/spiky_sphere.csv +0 -0
  29. {deme-2.1.9 → deme-2.2.1}/data/clumps/triangular_flat.csv +0 -0
  30. {deme-2.1.9 → deme-2.2.1}/data/clumps/triangular_flat_6comp.csv +0 -0
  31. {deme-2.1.9 → deme-2.2.1}/data/mesh/GPBR_Vessel_Fine.obj +0 -0
  32. {deme-2.1.9 → deme-2.2.1}/data/mesh/cone.obj +0 -0
  33. {deme-2.1.9 → deme-2.2.1}/data/mesh/cube.obj +0 -0
  34. {deme-2.1.9 → deme-2.2.1}/data/mesh/cyl_r1_h2.obj +0 -0
  35. {deme-2.1.9 → deme-2.2.1}/data/mesh/excavator.obj +0 -0
  36. {deme-2.1.9 → deme-2.2.1}/data/mesh/funnel.obj +0 -0
  37. {deme-2.1.9 → deme-2.2.1}/data/mesh/funnel_left.obj +0 -0
  38. {deme-2.1.9 → deme-2.2.1}/data/mesh/hourglass.obj +0 -0
  39. {deme-2.1.9 → deme-2.2.1}/data/mesh/hourglass_cap.obj +0 -0
  40. {deme-2.1.9 → deme-2.2.1}/data/mesh/internal_mixer.obj +0 -0
  41. {deme-2.1.9 → deme-2.2.1}/data/mesh/plane_20by20.obj +0 -0
  42. {deme-2.1.9 → deme-2.2.1}/data/mesh/rover_wheels/curiosity_wheel.obj +0 -0
  43. {deme-2.1.9 → deme-2.2.1}/data/mesh/rover_wheels/curiosity_wheel_surface.obj +0 -0
  44. {deme-2.1.9 → deme-2.2.1}/data/mesh/rover_wheels/viper_wheel_right.obj +0 -0
  45. {deme-2.1.9 → deme-2.2.1}/data/mesh/silo.obj +0 -0
  46. {deme-2.1.9 → deme-2.2.1}/data/mesh/sphere.obj +0 -0
  47. {deme-2.1.9 → deme-2.2.1}/data/mesh/thin_plate.obj +0 -0
  48. {deme-2.1.9 → deme-2.2.1}/data/sim_data/example_cnt_pairs.csv +0 -0
  49. {deme-2.1.9 → deme-2.2.1}/deme.egg-info/SOURCES.txt +0 -0
  50. {deme-2.1.9 → deme-2.2.1}/deme.egg-info/dependency_links.txt +0 -0
  51. {deme-2.1.9 → deme-2.2.1}/deme.egg-info/not-zip-safe +0 -0
  52. {deme-2.1.9 → deme-2.2.1}/deme.egg-info/requires.txt +0 -0
  53. {deme-2.1.9 → deme-2.2.1}/deme.egg-info/top_level.txt +0 -0
  54. {deme-2.1.9 → deme-2.2.1}/packaging_instructions.txt +0 -0
  55. {deme-2.1.9 → deme-2.2.1}/pyproject.toml +0 -0
  56. {deme-2.1.9 → deme-2.2.1}/setup.cfg +0 -0
  57. {deme-2.1.9 → deme-2.2.1}/src/.format_all +0 -0
  58. {deme-2.1.9 → deme-2.2.1}/src/DEM/API.h +0 -0
  59. {deme-2.1.9 → deme-2.2.1}/src/DEM/APIPublic.cpp +0 -0
  60. {deme-2.1.9 → deme-2.2.1}/src/DEM/AuxClasses.cpp +0 -0
  61. {deme-2.1.9 → deme-2.2.1}/src/DEM/AuxClasses.h +0 -0
  62. {deme-2.1.9 → deme-2.2.1}/src/DEM/BdrsAndObjs.h +0 -0
  63. {deme-2.1.9 → deme-2.2.1}/src/DEM/CMakeLists.txt +0 -0
  64. {deme-2.1.9 → deme-2.2.1}/src/DEM/Defines.h +0 -0
  65. {deme-2.1.9 → deme-2.2.1}/src/DEM/MeshUtils.cpp +0 -0
  66. {deme-2.1.9 → deme-2.2.1}/src/DEM/Models.h +0 -0
  67. {deme-2.1.9 → deme-2.2.1}/src/DEM/Structs.h +0 -0
  68. {deme-2.1.9 → deme-2.2.1}/src/DEM/VariableTypes.h +0 -0
  69. {deme-2.1.9 → deme-2.2.1}/src/DEM/dT.cpp +0 -0
  70. {deme-2.1.9 → deme-2.2.1}/src/DEM/dT.h +0 -0
  71. {deme-2.1.9 → deme-2.2.1}/src/DEM/kT.h +0 -0
  72. {deme-2.1.9 → deme-2.2.1}/src/DEM/utils/Samplers.hpp +0 -0
  73. {deme-2.1.9 → deme-2.2.1}/src/algorithms/CMakeLists.txt +0 -0
  74. {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMCubContactDetection.cu +0 -0
  75. {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMCubForceCollection.cu +0 -0
  76. {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMCubInstantiations.cu +0 -0
  77. {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMDynamicMisc.cu +0 -0
  78. {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMStaticDeviceSubroutines.h +0 -0
  79. {deme-2.1.9 → deme-2.2.1}/src/algorithms/DEMStaticDeviceUtilities.cuh +0 -0
  80. {deme-2.1.9 → deme-2.2.1}/src/core/ApiVersion.h.in +0 -0
  81. {deme-2.1.9 → deme-2.2.1}/src/core/CMakeLists.txt +0 -0
  82. {deme-2.1.9 → deme-2.2.1}/src/core/DebugInfo.cpp +0 -0
  83. {deme-2.1.9 → deme-2.2.1}/src/core/utils/CudaAllocator.hpp +0 -0
  84. {deme-2.1.9 → deme-2.2.1}/src/core/utils/DEMEPaths.cpp +0 -0
  85. {deme-2.1.9 → deme-2.2.1}/src/core/utils/DEMEPaths.h +0 -0
  86. {deme-2.1.9 → deme-2.2.1}/src/core/utils/DataMigrationHelper.hpp +0 -0
  87. {deme-2.1.9 → deme-2.2.1}/src/core/utils/GpuError.h +0 -0
  88. {deme-2.1.9 → deme-2.2.1}/src/core/utils/GpuManager.cpp +0 -0
  89. {deme-2.1.9 → deme-2.2.1}/src/core/utils/GpuManager.h +0 -0
  90. {deme-2.1.9 → deme-2.2.1}/src/core/utils/HeaderGenerator.h +0 -0
  91. {deme-2.1.9 → deme-2.2.1}/src/core/utils/JitHelper.h +0 -0
  92. {deme-2.1.9 → deme-2.2.1}/src/core/utils/RuntimeData.cpp.in +0 -0
  93. {deme-2.1.9 → deme-2.2.1}/src/core/utils/RuntimeData.h +0 -0
  94. {deme-2.1.9 → deme-2.2.1}/src/core/utils/ThreadManager.h +0 -0
  95. {deme-2.1.9 → deme-2.2.1}/src/core/utils/Timer.hpp +0 -0
  96. {deme-2.1.9 → deme-2.2.1}/src/core/utils/WavefrontMeshLoader.hpp +0 -0
  97. {deme-2.1.9 → deme-2.2.1}/src/core/utils/csv.hpp +0 -0
  98. {deme-2.1.9 → deme-2.2.1}/src/demo/CMakeLists.txt +0 -0
  99. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_BallDrop.cpp +0 -0
  100. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_BallDrop2D.cpp +0 -0
  101. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Centrifuge.cpp +0 -0
  102. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_ConePenetration.cpp +0 -0
  103. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_ContactChain.cpp +0 -0
  104. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Electrostatic.cpp +0 -0
  105. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_FlexibleMesh.cpp +0 -0
  106. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Fracture_Box.cpp +0 -0
  107. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_GRCPrep_Part1.cpp +0 -0
  108. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_GRCPrep_Part2.cpp +0 -0
  109. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_GRCPrep_Part3.cpp +0 -0
  110. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_GameOfLife.cpp +0 -0
  111. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Hopper_Sphere_Cylinder.cpp +0 -0
  112. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Indentation.cpp +0 -0
  113. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Mixer.cpp +0 -0
  114. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Plow.cpp +0 -0
  115. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Repose.cpp +0 -0
  116. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Repose2D.cpp +0 -0
  117. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_RotatingDrum.cpp +0 -0
  118. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Shake.cpp +0 -0
  119. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_Sieve.cpp +0 -0
  120. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_SingleSphereCollide.cpp +0 -0
  121. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_SolarSystem.cpp +0 -0
  122. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_TestPack.cpp +0 -0
  123. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_WheelDP.cpp +0 -0
  124. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_WheelDPSimplified.cpp +0 -0
  125. {deme-2.1.9 → deme-2.2.1}/src/demo/DEMdemo_WheelSlopeSlip.cpp +0 -0
  126. {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_BallDrop.py +0 -0
  127. {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_BallDrop2D.py +0 -0
  128. {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_Centrifuge.py +0 -0
  129. {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_ConePenetration.py +0 -0
  130. {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_Electrostatic.py +0 -0
  131. {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_FlexibleMesh.py +0 -0
  132. {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_GRCPrep_Part1.py +0 -0
  133. {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_GameOfLife.py +0 -0
  134. {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_Mixer.py +0 -0
  135. {deme-2.1.9 → deme-2.2.1}/src/demo/pyDEME_WheelDPSimplified.py +0 -0
  136. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMBinSphereKernels.cu +0 -0
  137. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMBinTriangleKernels.cu +0 -0
  138. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCalcForceKernels.cu +0 -0
  139. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCollectForceKernels.cu +0 -0
  140. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCollectForceKernels_Compact.cu +0 -0
  141. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCollisionKernels.cu +0 -0
  142. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMContactKernels_SphereSphere.cu +0 -0
  143. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMContactKernels_SphereTriangle.cu +0 -0
  144. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/AnalyticalCompDefJitify.cu +0 -0
  145. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ClumpCompAcqStratAllFlatten.cu +0 -0
  146. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ClumpCompAcqStratAllJitify.cu +0 -0
  147. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ClumpCompAcqStratPartialJitify.cu +0 -0
  148. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ClumpCompDefJitify.cu +0 -0
  149. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ContactInfoWriteBack.cu +0 -0
  150. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/ForceInKernelReductionStrat.cu +0 -0
  151. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/FrictionlessHertzianForceModel.cu +0 -0
  152. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/FullHertzianForceModel.cu +0 -0
  153. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/IntegrationVelPassOnCenteredDiff.cu +0 -0
  154. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/IntegrationVelPassOnExtendedTaylor.cu +0 -0
  155. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/IntegrationVelPassOnForwardEuler.cu +0 -0
  156. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MOIAcqStratFlatten.cu +0 -0
  157. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MOIAcqStratJitify.cu +0 -0
  158. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MOIDefJitify.cu +0 -0
  159. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MassAcqStratFlatten.cu +0 -0
  160. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MassAcqStratJitify.cu +0 -0
  161. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMCustomizablePolicies/MassDefJitify.cu +0 -0
  162. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMHistoryMappingKernels.cu +0 -0
  163. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMIntegrationKernels.cu +0 -0
  164. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMMiscKernels.cu +0 -0
  165. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMModeratorKernels.cu +0 -0
  166. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMOwnerQueryKernels.cu +0 -0
  167. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMPrepForceKernels.cu +0 -0
  168. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMSphereQueryKernels.cu +0 -0
  169. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMTriangleBoxIntersect.cu +0 -0
  170. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModel2D.cu +0 -0
  171. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelMooring.cu +0 -0
  172. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelMooringPosition.cu +0 -0
  173. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelWithCohesion.cu +0 -0
  174. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelWithElectrostatic.cu +0 -0
  175. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelWithFractureModel.cu +0 -0
  176. {deme-2.1.9 → deme-2.2.1}/src/kernel/DEMUserScripts/ForceModelWithGravity.cu +0 -0
  177. {deme-2.1.9 → deme-2.2.1}/src/kernel/hello.cu +0 -0
  178. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/.clang-format +0 -0
  179. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/.git +0 -0
  180. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/.gitignore +0 -0
  181. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/Doxyfile +0 -0
  182. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/LICENSE +0 -0
  183. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/Makefile +0 -0
  184. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/README.md +0 -0
  185. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/example_headers/class_arg_kernel.cuh +0 -0
  186. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/example_headers/constant_header.cuh +0 -0
  187. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/example_headers/my_header1.cuh +0 -0
  188. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/example_headers/my_header2.cuh +0 -0
  189. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/example_headers/my_header3.cuh +0 -0
  190. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/jitify.hpp +0 -0
  191. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/jitify_example.cpp +0 -0
  192. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/jitify_test.cu +0 -0
  193. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/nvrtc_cli.cpp +0 -0
  194. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/nvrtc_cli_test.sh +0 -0
  195. {deme-2.1.9 → deme-2.2.1}/thirdparty/jitify/stringify.cpp +0 -0
  196. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.appveyor.yml +0 -0
  197. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.clang-format +0 -0
  198. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.clang-tidy +0 -0
  199. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.cmake-format.yaml +0 -0
  200. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.codespell-ignore-lines +0 -0
  201. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.git +0 -0
  202. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.gitattributes +0 -0
  203. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/CODEOWNERS +0 -0
  204. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/CONTRIBUTING.md +0 -0
  205. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  206. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -0
  207. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/dependabot.yml +0 -0
  208. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/labeler.yml +0 -0
  209. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/labeler_merged.yml +0 -0
  210. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/matchers/pylint.json +0 -0
  211. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/pull_request_template.md +0 -0
  212. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/ci.yml +0 -0
  213. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/configure.yml +0 -0
  214. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/format.yml +0 -0
  215. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/labeler.yml +0 -0
  216. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/pip.yml +0 -0
  217. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.github/workflows/upstream.yml +0 -0
  218. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.gitignore +0 -0
  219. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.pre-commit-config.yaml +0 -0
  220. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/.readthedocs.yml +0 -0
  221. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/CMakeLists.txt +0 -0
  222. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/LICENSE +0 -0
  223. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/MANIFEST.in +0 -0
  224. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/README.rst +0 -0
  225. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/Doxyfile +0 -0
  226. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/Makefile +0 -0
  227. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/_static/css/custom.css +0 -0
  228. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/chrono.rst +0 -0
  229. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/custom.rst +0 -0
  230. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/eigen.rst +0 -0
  231. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/functional.rst +0 -0
  232. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/index.rst +0 -0
  233. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/overview.rst +0 -0
  234. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/stl.rst +0 -0
  235. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/cast/strings.rst +0 -0
  236. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/classes.rst +0 -0
  237. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/embedding.rst +0 -0
  238. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/exceptions.rst +0 -0
  239. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/functions.rst +0 -0
  240. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/misc.rst +0 -0
  241. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/pycpp/index.rst +0 -0
  242. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/pycpp/numpy.rst +0 -0
  243. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/pycpp/object.rst +0 -0
  244. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/pycpp/utilities.rst +0 -0
  245. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/advanced/smart_ptrs.rst +0 -0
  246. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/basics.rst +0 -0
  247. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/benchmark.py +0 -0
  248. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/benchmark.rst +0 -0
  249. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/changelog.rst +0 -0
  250. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/classes.rst +0 -0
  251. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/cmake/index.rst +0 -0
  252. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/compiling.rst +0 -0
  253. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/conf.py +0 -0
  254. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/faq.rst +0 -0
  255. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/index.rst +0 -0
  256. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/installing.rst +0 -0
  257. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/limitations.rst +0 -0
  258. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/pybind11-logo.png +0 -0
  259. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  260. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python1.svg +0 -0
  261. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  262. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/pybind11_vs_boost_python2.svg +0 -0
  263. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/reference.rst +0 -0
  264. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/release.rst +0 -0
  265. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/requirements.txt +0 -0
  266. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/docs/upgrade.rst +0 -0
  267. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/attr.h +0 -0
  268. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/buffer_info.h +0 -0
  269. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/cast.h +0 -0
  270. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/chrono.h +0 -0
  271. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/common.h +0 -0
  272. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/complex.h +0 -0
  273. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/class.h +0 -0
  274. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/common.h +0 -0
  275. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/descr.h +0 -0
  276. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/init.h +0 -0
  277. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/internals.h +0 -0
  278. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/type_caster_base.h +0 -0
  279. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/detail/typeid.h +0 -0
  280. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/eigen/matrix.h +0 -0
  281. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/eigen/tensor.h +0 -0
  282. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/eigen.h +0 -0
  283. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/embed.h +0 -0
  284. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/eval.h +0 -0
  285. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/functional.h +0 -0
  286. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/gil.h +0 -0
  287. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/iostream.h +0 -0
  288. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/numpy.h +0 -0
  289. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/operators.h +0 -0
  290. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/options.h +0 -0
  291. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/pybind11.h +0 -0
  292. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/pytypes.h +0 -0
  293. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/stl/filesystem.h +0 -0
  294. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/stl.h +0 -0
  295. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/include/pybind11/stl_bind.h +0 -0
  296. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/noxfile.py +0 -0
  297. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/__init__.py +0 -0
  298. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/__main__.py +0 -0
  299. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/_version.py +0 -0
  300. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/commands.py +0 -0
  301. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/py.typed +0 -0
  302. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pybind11/setup_helpers.py +0 -0
  303. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/pyproject.toml +0 -0
  304. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/setup.cfg +0 -0
  305. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/setup.py +0 -0
  306. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/CMakeLists.txt +0 -0
  307. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/conftest.py +0 -0
  308. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/constructor_stats.h +0 -0
  309. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/cross_module_gil_utils.cpp +0 -0
  310. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/cross_module_interleaved_error_already_set.cpp +0 -0
  311. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/eigen_tensor_avoid_stl_array.cpp +0 -0
  312. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/env.py +0 -0
  313. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/extra_python_package/pytest.ini +0 -0
  314. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/extra_python_package/test_files.py +0 -0
  315. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  316. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -0
  317. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/local_bindings.h +0 -0
  318. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/object.h +0 -0
  319. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/pybind11_cross_module_tests.cpp +0 -0
  320. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/pybind11_tests.cpp +0 -0
  321. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/pybind11_tests.h +0 -0
  322. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/pytest.ini +0 -0
  323. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/requirements.txt +0 -0
  324. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_async.cpp +0 -0
  325. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_async.py +0 -0
  326. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_buffers.cpp +0 -0
  327. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_buffers.py +0 -0
  328. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_builtin_casters.cpp +0 -0
  329. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_builtin_casters.py +0 -0
  330. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_call_policies.cpp +0 -0
  331. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_call_policies.py +0 -0
  332. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_callbacks.cpp +0 -0
  333. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_callbacks.py +0 -0
  334. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_chrono.cpp +0 -0
  335. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_chrono.py +0 -0
  336. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_class.cpp +0 -0
  337. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_class.py +0 -0
  338. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -0
  339. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/embed.cpp +0 -0
  340. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -0
  341. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -0
  342. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -0
  343. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/main.cpp +0 -0
  344. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -0
  345. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -0
  346. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -0
  347. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_cmake_build/test.py +0 -0
  348. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_const_name.cpp +0 -0
  349. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_const_name.py +0 -0
  350. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_constants_and_functions.cpp +0 -0
  351. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_constants_and_functions.py +0 -0
  352. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_copy_move.cpp +0 -0
  353. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_copy_move.py +0 -0
  354. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_custom_type_casters.cpp +0 -0
  355. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_custom_type_casters.py +0 -0
  356. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_custom_type_setup.cpp +0 -0
  357. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_custom_type_setup.py +0 -0
  358. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_docstring_options.cpp +0 -0
  359. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_docstring_options.py +0 -0
  360. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eigen_matrix.cpp +0 -0
  361. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eigen_matrix.py +0 -0
  362. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eigen_tensor.cpp +0 -0
  363. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eigen_tensor.inl +0 -0
  364. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eigen_tensor.py +0 -0
  365. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/CMakeLists.txt +0 -0
  366. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/catch.cpp +0 -0
  367. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/external_module.cpp +0 -0
  368. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/test_interpreter.cpp +0 -0
  369. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/test_interpreter.py +0 -0
  370. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_embed/test_trampoline.py +0 -0
  371. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_enum.cpp +0 -0
  372. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_enum.py +0 -0
  373. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eval.cpp +0 -0
  374. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eval.py +0 -0
  375. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_eval_call.py +0 -0
  376. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_exceptions.cpp +0 -0
  377. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_exceptions.h +0 -0
  378. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_exceptions.py +0 -0
  379. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_factory_constructors.cpp +0 -0
  380. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_factory_constructors.py +0 -0
  381. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_gil_scoped.cpp +0 -0
  382. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_gil_scoped.py +0 -0
  383. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_iostream.cpp +0 -0
  384. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_iostream.py +0 -0
  385. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_kwargs_and_defaults.cpp +0 -0
  386. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_kwargs_and_defaults.py +0 -0
  387. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_local_bindings.cpp +0 -0
  388. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_local_bindings.py +0 -0
  389. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_methods_and_attributes.cpp +0 -0
  390. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_methods_and_attributes.py +0 -0
  391. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_modules.cpp +0 -0
  392. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_modules.py +0 -0
  393. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_multiple_inheritance.cpp +0 -0
  394. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_multiple_inheritance.py +0 -0
  395. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_array.cpp +0 -0
  396. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_array.py +0 -0
  397. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_dtypes.cpp +0 -0
  398. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_dtypes.py +0 -0
  399. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_vectorize.cpp +0 -0
  400. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_numpy_vectorize.py +0 -0
  401. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_opaque_types.cpp +0 -0
  402. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_opaque_types.py +0 -0
  403. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_operator_overloading.cpp +0 -0
  404. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_operator_overloading.py +0 -0
  405. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_pickling.cpp +0 -0
  406. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_pickling.py +0 -0
  407. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_pytypes.cpp +0 -0
  408. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_pytypes.py +0 -0
  409. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_sequences_and_iterators.cpp +0 -0
  410. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_sequences_and_iterators.py +0 -0
  411. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_smart_ptr.cpp +0 -0
  412. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_smart_ptr.py +0 -0
  413. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_stl.cpp +0 -0
  414. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_stl.py +0 -0
  415. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_stl_binders.cpp +0 -0
  416. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_stl_binders.py +0 -0
  417. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_tagbased_polymorphic.cpp +0 -0
  418. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_tagbased_polymorphic.py +0 -0
  419. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_thread.cpp +0 -0
  420. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_thread.py +0 -0
  421. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_union.cpp +0 -0
  422. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_union.py +0 -0
  423. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_virtual_functions.cpp +0 -0
  424. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/test_virtual_functions.py +0 -0
  425. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/valgrind-numpy-scipy.supp +0 -0
  426. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tests/valgrind-python.supp +0 -0
  427. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/FindCatch.cmake +0 -0
  428. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/FindEigen3.cmake +0 -0
  429. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/FindPythonLibsNew.cmake +0 -0
  430. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/JoinPaths.cmake +0 -0
  431. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/check-style.sh +0 -0
  432. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/cmake_uninstall.cmake.in +0 -0
  433. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/codespell_ignore_lines_from_errors.py +0 -0
  434. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/libsize.py +0 -0
  435. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/make_changelog.py +0 -0
  436. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pybind11.pc.in +0 -0
  437. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pybind11Common.cmake +0 -0
  438. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pybind11Config.cmake.in +0 -0
  439. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pybind11NewTools.cmake +0 -0
  440. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pybind11Tools.cmake +0 -0
  441. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/pyproject.toml +0 -0
  442. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/setup_global.py.in +0 -0
  443. {deme-2.1.9 → deme-2.2.1}/thirdparty/pybind11/tools/setup_main.py.in +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deme
3
- Version: 2.1.9
3
+ Version: 2.2.1
4
4
  Summary: PyBind Wrapper Library for DEM-Engine
5
5
  Author: Ruochun Zhang
6
6
  Author-email: ruochunz@gmail.com
@@ -177,6 +177,7 @@ After the build process is done, you can start trying out the demos. On Windows,
177
177
 
178
178
  Some additional troubleshooting tips for running the demos:
179
179
 
180
+ - If the program silently exits while creating the `DEMSolver` object, check if your NVIDIA driver supports your current CUDA version (`nvidia-smi`).
180
181
  - If errors similar to `CUDA_ERROR_UNSUPPORTED_PTX_VERSION` are encountered while you run the demos, or (rarely) the simulations proceed without detecting any contacts, then please make sure the CUDA installation is the same version as when the code is compiled.
181
182
  - Another cause for the simulations proceeding without detecting any contacts, could be the force kernel silently failed. This could also lead to a **too-many-geometries-in-bin** crash. The cause is usually that the force kernel was launched with too many threads per block, therefore not enough registers can be leveraged. This can be avoided by calling `SetForceCalcThreadsPerBlock` prior to the start of simulation with the argument being smaller choices like 128. **Note that you should only try this if you are using a custom force model**.
182
183
  - Used your own force model but got runtime compilation error like `expression must have pointer-to-object type but it has type "float"`, or `unknown variable "delta_time"`? Check out what we did in demo `DEMdemo_Electrostatic`. You may need to manually specify what material properties are pairwise and what contact wildcards you have using `SetMustPairwiseMatProp` and `SetPerContactWildcards`.
@@ -20,7 +20,6 @@
20
20
  # version of the CUDA Toolkit
21
21
  #
22
22
  # Minimum CUDA version: 7.0
23
- # Maximum CUDA version: 11.6
24
23
 
25
24
  function(cuda_supported_architectures)
26
25
 
@@ -31,7 +30,9 @@ function(cuda_supported_architectures)
31
30
  set(cu10 30 35 50 52 60 61 70 72 75)
32
31
  set(cu11 35 50 52 60 61 70 72 75 80)
33
32
  set(cu11_x 35 50 52 60 61 70 72 75 80 86)
34
- set(cu12_x 50 52 60 61 70 72 75 80 86)
33
+ set(cu12_x 50 52 60 61 70 72 75 80 86 89)
34
+ set(cu12_8 50 52 60 61 70 72 75 80 86 89 120)
35
+ set(cu13_x 75 80 86 89 90 100 120 121)
35
36
 
36
37
  if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 7)
37
38
  set(CUDASUP_ARCHITECTURES ${cu7} CACHE INTERNAL "")
@@ -61,6 +62,14 @@ function(cuda_supported_architectures)
61
62
  set(CUDASUP_ARCHITECTURES ${cu12_x} CACHE INTERNAL "")
62
63
  endif()
63
64
 
65
+ if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 12.8)
66
+ set(CUDASUP_ARCHITECTURES ${cu12_8} CACHE INTERNAL "")
67
+ endif()
68
+
69
+ if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 13)
70
+ set(CUDASUP_ARCHITECTURES ${cu13_x} CACHE INTERNAL "")
71
+ endif()
72
+
64
73
  if (NOT DEFINED CUDASUP_ARCHITECTURES)
65
74
  message(SEND_ERROR "[CUDASUP] Could not determine device architectures supported by the CUDA toolkit!")
66
75
  endif()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deme
3
- Version: 2.1.9
3
+ Version: 2.2.1
4
4
  Summary: PyBind Wrapper Library for DEM-Engine
5
5
  Author: Ruochun Zhang
6
6
  Author-email: ruochunz@gmail.com
@@ -152,7 +152,7 @@ class CMakeBuild(build_ext):
152
152
  # logic and declaration, and simpler if you include description/version in a file.
153
153
  setup(
154
154
  name="deme",
155
- version="2.1.9",
155
+ version="2.2.1",
156
156
  author="Ruochun Zhang",
157
157
  author_email="ruochunz@gmail.com",
158
158
  description="PyBind Wrapper Library for DEM-Engine",
@@ -2138,8 +2138,12 @@ inline void DEMSolver::equipKernelIncludes(std::unordered_map<std::string, std::
2138
2138
  // It's put here as ApiVersion.h.in (which sets DEME_CUDA_TOOLKIT_HEADERS) is a CMake-in configuration file, we don't
2139
2139
  // want to include it anywhere in the h headers in case DEM-Engine is included by some parent project.
2140
2140
  void DEMSolver::setDefaultSolverParams() {
2141
- m_jitify_options = {"-I" + (JitHelper::KERNEL_INCLUDE_DIR).string(), "-I" + (JitHelper::KERNEL_DIR).string(),
2142
- "-I" + std::string(DEME_CUDA_TOOLKIT_HEADERS), "-diag-suppress=550", "-diag-suppress=177"};
2141
+ m_jitify_options = {"-I" + (JitHelper::KERNEL_INCLUDE_DIR).string(),
2142
+ "-I" + (JitHelper::KERNEL_DIR).string(),
2143
+ "-I" + std::string(DEME_CUDA_TOOLKIT_HEADERS),
2144
+ "-std=c++17",
2145
+ "-diag-suppress=550",
2146
+ "-diag-suppress=177"};
2143
2147
  }
2144
2148
 
2145
2149
  } // namespace deme
@@ -588,7 +588,7 @@ inline std::vector<double> FrameTransformLocalToGlobal(const std::vector<double>
588
588
  const std::vector<double>& vec,
589
589
  const std::vector<double>& rot_Q) {
590
590
  double3 deme_pos, deme_vec;
591
- double4 deme_Q;
591
+ double4_vec deme_Q;
592
592
  deme_pos.x = pos[0];
593
593
  deme_pos.y = pos[1];
594
594
  deme_pos.z = pos[2];
@@ -599,7 +599,7 @@ inline std::vector<double> FrameTransformLocalToGlobal(const std::vector<double>
599
599
  deme_Q.y = rot_Q[1];
600
600
  deme_Q.z = rot_Q[2];
601
601
  deme_Q.w = rot_Q[3];
602
- applyFrameTransformLocalToGlobal<double3, double3, double4>(deme_pos, deme_vec, deme_Q);
602
+ applyFrameTransformLocalToGlobal<double3, double3, double4_vec>(deme_pos, deme_vec, deme_Q);
603
603
  return {deme_pos.x, deme_pos.y, deme_pos.z};
604
604
  }
605
605
 
@@ -618,7 +618,7 @@ inline std::vector<double> FrameTransformGlobalToLocal(const std::vector<double>
618
618
  const std::vector<double>& vec,
619
619
  const std::vector<double>& rot_Q) {
620
620
  double3 deme_pos, deme_vec;
621
- double4 deme_Q;
621
+ double4_vec deme_Q;
622
622
  deme_pos.x = pos[0];
623
623
  deme_pos.y = pos[1];
624
624
  deme_pos.z = pos[2];
@@ -629,7 +629,7 @@ inline std::vector<double> FrameTransformGlobalToLocal(const std::vector<double>
629
629
  deme_Q.y = rot_Q[1];
630
630
  deme_Q.z = rot_Q[2];
631
631
  deme_Q.w = rot_Q[3];
632
- applyFrameTransformGlobalToLocal<double3, double3, double4>(deme_pos, deme_vec, deme_Q);
632
+ applyFrameTransformGlobalToLocal<double3, double3, double4_vec>(deme_pos, deme_vec, deme_Q);
633
633
  return {deme_pos.x, deme_pos.y, deme_pos.z};
634
634
  }
635
635
 
@@ -1250,6 +1250,14 @@ PYBIND11_MODULE(DEME, obj) {
1250
1250
  &deme::DEMClumpBatch::AddGeometryWildcard))
1251
1251
  .def("AddGeometryWildcard", static_cast<void (deme::DEMClumpBatch::*)(const std::string&, float)>(
1252
1252
  &deme::DEMClumpBatch::AddGeometryWildcard))
1253
+ .def("SetOriQ",
1254
+ static_cast<void (deme::DEMClumpBatch::*)(const std::vector<float4>&)>(&deme::DEMClumpBatch::SetOriQ))
1255
+ .def("SetOriQ",
1256
+ static_cast<void (deme::DEMClumpBatch::*)(float4)>(&deme::DEMClumpBatch::SetOriQ))
1257
+ .def("SetOriQ",
1258
+ static_cast<void (deme::DEMClumpBatch::*)(const std::vector<float>&)>(&deme::DEMClumpBatch::SetOriQ))
1259
+ .def("SetOriQ", static_cast<void (deme::DEMClumpBatch::*)(const std::vector<std::vector<float>>&)>(
1260
+ &deme::DEMClumpBatch::SetOriQ))
1253
1261
  .def("GetNumContacts", &deme::DEMClumpBatch::GetNumContacts);
1254
1262
 
1255
1263
  py::class_<deme::DEMExternObj, deme::DEMInitializer, std::shared_ptr<deme::DEMExternObj>>(obj, "DEMExternObj")
@@ -83,14 +83,13 @@ void DEMKinematicThread::calibrateParams() {
83
83
  } else {
84
84
  simParams->binSize /= (1. - stateParams.binCurrentChangeRate);
85
85
  }
86
- // Register the new bin size
87
- stateParams.numBins =
88
- hostCalcBinNum(simParams->nbX, simParams->nbY, simParams->nbZ, simParams->voxelSize, simParams->binSize,
89
- simParams->nvXp2, simParams->nvYp2, simParams->nvZp2);
90
-
91
- DEME_DEBUG_PRINTF("Bin size is now: %.7g", simParams->binSize);
92
- DEME_DEBUG_PRINTF("Total num of bins is now: %zu", stateParams.numBins);
93
86
  }
87
+ // Register the new bin size
88
+ stateParams.numBins = hostCalcBinNum(simParams->nbX, simParams->nbY, simParams->nbZ, simParams->voxelSize,
89
+ simParams->binSize, simParams->nvXp2, simParams->nvYp2, simParams->nvZp2);
90
+
91
+ DEME_DEBUG_PRINTF("Bin size is now: %.7g", simParams->binSize);
92
+ DEME_DEBUG_PRINTF("Total num of bins is now: %zu", stateParams.numBins);
94
93
  DEME_DEBUG_PRINTF("kT runtime per step: %.7gs", CDAccumTimer.GetPrevTime());
95
94
  }
96
95
  // binSize is now calculated, we need to migrate that to device
@@ -8,6 +8,14 @@
8
8
  #include <DEM/Structs.h>
9
9
  #include <core/utils/GpuError.h>
10
10
 
11
+ #if CUDART_VERSION >= 13000
12
+ #define DEME_CUB_SUM_OP(T) \
13
+ cuda::std::plus<T> {}
14
+ #else
15
+ #define DEME_CUB_SUM_OP(T) \
16
+ cub::Sum {}
17
+ #endif
18
+
11
19
  namespace deme {
12
20
 
13
21
  // Functor type for selecting values less than some criteria
@@ -75,10 +83,11 @@ inline void cubDEMPrefixScan(T1* d_in,
75
83
  // let you know when it happens. I made a trick: use ExclusiveScan and (T2)0 as the initial value, and this forces
76
84
  // cub to store results as T2 type.
77
85
  size_t cub_scratch_bytes = 0;
78
- cub::DeviceScan::ExclusiveScan(NULL, cub_scratch_bytes, d_in, d_out, cub::Sum(), (T2)0, n, this_stream);
86
+ cub::DeviceScan::ExclusiveScan(NULL, cub_scratch_bytes, d_in, d_out, DEME_CUB_SUM_OP(T2), (T2)0, n, this_stream);
79
87
  DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
80
88
  void* d_scratch_space = (void*)scratchPad.allocateScratchSpace(cub_scratch_bytes);
81
- cub::DeviceScan::ExclusiveScan(d_scratch_space, cub_scratch_bytes, d_in, d_out, cub::Sum(), (T2)0, n, this_stream);
89
+ cub::DeviceScan::ExclusiveScan(d_scratch_space, cub_scratch_bytes, d_in, d_out, DEME_CUB_SUM_OP(T2), (T2)0, n,
90
+ this_stream);
82
91
  DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
83
92
  }
84
93
 
@@ -156,23 +165,14 @@ inline void cubDEMReduceByKeys(T1* d_keys_in,
156
165
  template <typename T1, typename T2>
157
166
  void cubDEMSum(T1* d_in, T2* d_out, size_t n, cudaStream_t& this_stream, DEMSolverScratchData& scratchPad) {
158
167
  size_t cub_scratch_bytes = 0;
159
- cub::DeviceReduce::Reduce(NULL, cub_scratch_bytes, d_in, d_out, n, cub::Sum(), (T2)0, this_stream);
168
+ cub::DeviceReduce::Reduce(NULL, cub_scratch_bytes, d_in, d_out, n, DEME_CUB_SUM_OP(T2), (T2)0, this_stream);
160
169
  DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
161
170
  void* d_scratch_space = (void*)scratchPad.allocateScratchSpace(cub_scratch_bytes);
162
- cub::DeviceReduce::Reduce(d_scratch_space, cub_scratch_bytes, d_in, d_out, n, cub::Sum(), (T2)0, this_stream);
171
+ cub::DeviceReduce::Reduce(d_scratch_space, cub_scratch_bytes, d_in, d_out, n, DEME_CUB_SUM_OP(T2), (T2)0,
172
+ this_stream);
163
173
  DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
164
174
  }
165
175
 
166
- // template <typename T1>
167
- // void cubDEMSum(T1* d_in, T1* d_out, size_t n, cudaStream_t& this_stream, DEMSolverScratchData& scratchPad) {
168
- // size_t cub_scratch_bytes = 0;
169
- // cub::DeviceReduce::Sum(NULL, cub_scratch_bytes, d_in, d_out, n, this_stream);
170
- // DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
171
- // void* d_scratch_space = (void*)scratchPad.allocateScratchSpace(cub_scratch_bytes);
172
- // cub::DeviceReduce::Sum(d_scratch_space, cub_scratch_bytes, d_in, d_out, n, this_stream);
173
- // DEME_GPU_CALL(cudaStreamSynchronize(this_stream));
174
- // }
175
-
176
176
  template <typename T1>
177
177
  void cubDEMMax(T1* d_in, T1* d_out, size_t n, cudaStream_t& this_stream, DEMSolverScratchData& scratchPad) {
178
178
  size_t cub_scratch_bytes = 0;
@@ -7,6 +7,10 @@
7
7
  #include <filesystem>
8
8
  #include <string>
9
9
  #include <regex>
10
+ #include <vector>
11
+ #include <sstream>
12
+ #include <algorithm>
13
+ #include <cstdlib>
10
14
 
11
15
  #include <core/ApiVersion.h>
12
16
  #include "RuntimeData.h"
@@ -41,6 +45,29 @@ jitify::Program JitHelper::buildProgram(
41
45
  std::unordered_map<std::string, std::string> substitutions,
42
46
  // std::vector<JitHelper::Header> headers, // THIS PARAMETER PROBABLY WON'T EVER BE USED
43
47
  std::vector<std::string> flags) {
48
+ // Double ensure include paths for runtime headers + CUDA/CCCL (cuda::std)
49
+ auto add_inc = [&](const std::filesystem::path& p) {
50
+ if (p.empty())
51
+ return;
52
+ std::error_code ec;
53
+ if (!std::filesystem::exists(p, ec))
54
+ return;
55
+ const std::string inc_flag = "-I" + p.string();
56
+ if (std::find(flags.begin(), flags.end(), inc_flag) == flags.end())
57
+ flags.push_back(inc_flag);
58
+ };
59
+
60
+ // Project/runtime includes
61
+ add_inc(KERNEL_INCLUDE_DIR);
62
+
63
+ // Common fallbacks
64
+ if (const char* cuda_home = std::getenv("CUDA_HOME")) {
65
+ add_inc(std::filesystem::path(cuda_home) / "include");
66
+ add_inc(std::filesystem::path(cuda_home) / "include" / "cccl");
67
+ }
68
+ add_inc("/usr/local/cuda/include");
69
+ add_inc("/usr/local/cuda/include/cccl");
70
+
44
71
  std::string code = name + "\n";
45
72
 
46
73
  code.append(JitHelper::loadSourceFile(source));
@@ -13,10 +13,27 @@
13
13
  // Convenience functions to help with Managed Memory (allocated using ManagedAllocator, typically)
14
14
  namespace deme {
15
15
 
16
+ #if CUDART_VERSION >= 13000
17
+ inline cudaMemLocation make_device_location(int device) {
18
+ cudaMemLocation loc{};
19
+ loc.type = cudaMemLocationTypeDevice;
20
+ loc.id = device;
21
+ return loc;
22
+ }
23
+ #endif
24
+
16
25
  // Underlying implementation
17
26
  template <class T>
18
27
  inline void __migrate_impl(T* data, std::size_t size, int device, cudaStream_t stream = 0) {
28
+ #if CUDART_VERSION >= 13000
29
+ // CUDA 13.0+: cudaMemPrefetchAsync(const void*, size_t, cudaMemLocation, unsigned int flags, cudaStream_t)
30
+ auto loc = make_device_location(device);
31
+ unsigned int flags = 0;
32
+ cudaMemPrefetchAsync(static_cast<void*>(data), size * sizeof(T), loc, flags, stream);
33
+ #else
34
+ // CUDA <= 12.x: cudaMemPrefetchAsync(const void*, size_t, int dstDevice, cudaStream_t)
19
35
  cudaMemPrefetchAsync(static_cast<void*>(data), size * sizeof(T), device, stream);
36
+ #endif
20
37
  }
21
38
 
22
39
  // Pointer syntax, basically the same as cudaMemPrefetchAsync(...)
@@ -68,7 +85,16 @@ enum class ManagedAdvice {
68
85
  // Underlying implementation
69
86
  template <class T>
70
87
  void __advise_impl(const T* data, std::size_t size, ManagedAdvice advice, int device) {
71
- cudaMemAdvise(data, size * sizeof(T), (cudaMemoryAdvise)advice, device);
88
+ #if CUDART_VERSION >= 13000
89
+ cudaMemLocation loc{};
90
+ loc.type = cudaMemLocationTypeDevice;
91
+ loc.id = device;
92
+ // CUDA 13.0+: cudaMemAdvise(const void*, size_t, cudaMemoryAdvise, cudaMemLocation)
93
+ cudaMemAdvise(static_cast<const void*>(data), size * sizeof(T), static_cast<cudaMemoryAdvise>(advice), loc);
94
+ #else
95
+ // Older toolkits: cudaMemAdvise(const void*, size_t, cudaMemoryAdvise, int)
96
+ cudaMemAdvise(static_cast<const void*>(data), size * sizeof(T), static_cast<cudaMemoryAdvise>(advice), device);
97
+ #endif
72
98
  }
73
99
 
74
100
  // Advice for raw pointer
@@ -69,6 +69,17 @@ inline float rsqrtf(float x) {
69
69
  }
70
70
  #endif
71
71
 
72
+ #if defined(CUDART_VERSION) && CUDART_VERSION >= 13000
73
+ ///////////////////////////////////////////////////
74
+ // New Toolkits
75
+ using double4_vec = double4_16a; // or double4_32a, but 32 byte alignment is not good for GPUs before Blackwell
76
+ // (128bit --> 256 bit register)
77
+ #else
78
+ ////////////////////////////////////////////////////
79
+ // Old Toolkits
80
+ using double4_vec = double4;
81
+ #endif
82
+
72
83
  ////////////////////////////////////////////////////////////////////////////////
73
84
  // constructors
74
85
  ////////////////////////////////////////////////////////////////////////////////
@@ -914,9 +925,12 @@ inline __host__ __device__ uint4 max(uint4 a, uint4 b) {
914
925
  // logical
915
926
  ////////////////////////////////////////////////////////////////////////////////
916
927
 
917
- inline __host__ __device__ bool floatNear(const float& a, const float& b, float tol = 1e-6f) {
928
+ inline __host__ __device__ bool float_near(const float& a, const float& b, float tol = 1e-6f) {
918
929
  return fabs(a - b) < tol;
919
930
  }
931
+ inline __host__ __device__ bool float3_near(const float3& a, const float3& b, float tol = 1e-6f) {
932
+ return float_near(a.x, b.x, tol) && float_near(a.y, b.y, tol) && float_near(a.z, b.z, tol);
933
+ }
920
934
 
921
935
  ////////////////////////////////////////////////////////////////////////////////
922
936
  // lerp
@@ -1055,6 +1069,15 @@ inline __host__ __device__ float length(float3 v) {
1055
1069
  inline __host__ __device__ float length(float4 v) {
1056
1070
  return sqrtf(dot(v, v));
1057
1071
  }
1072
+ inline __host__ __device__ float length2(float2 v) {
1073
+ return dot(v, v);
1074
+ }
1075
+ inline __host__ __device__ float length2(float3 v) {
1076
+ return dot(v, v);
1077
+ }
1078
+ inline __host__ __device__ float length2(float4 v) {
1079
+ return dot(v, v);
1080
+ }
1058
1081
 
1059
1082
  ////////////////////////////////////////////////////////////////////////////////
1060
1083
  // normalize
@@ -1199,19 +1222,25 @@ inline __host__ __device__ float dot(double3 a, float3 b) {
1199
1222
  return a.x * b.x + a.y * b.y + a.z * b.z;
1200
1223
  }
1201
1224
 
1202
- inline __host__ __device__ double dot(double4 a, double4 b) {
1225
+ inline __host__ __device__ double dot(double4_vec a, double4_vec b) {
1203
1226
  return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
1204
1227
  }
1205
- inline __host__ __device__ float dot(double4 a, float4 b) {
1228
+ inline __host__ __device__ float dot(double4_vec a, float4 b) {
1206
1229
  return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
1207
1230
  }
1208
1231
 
1209
1232
  inline __host__ __device__ double length(double3 v) {
1210
1233
  return sqrt(dot(v, v));
1211
1234
  }
1212
- inline __host__ __device__ double length(double4 v) {
1235
+ inline __host__ __device__ double length(double4_vec v) {
1213
1236
  return sqrt(dot(v, v));
1214
1237
  }
1238
+ inline __host__ __device__ double length2(double3 v) {
1239
+ return dot(v, v);
1240
+ }
1241
+ inline __host__ __device__ double length2(double4_vec v) {
1242
+ return dot(v, v);
1243
+ }
1215
1244
 
1216
1245
  // Addition and subtraction
1217
1246
 
@@ -1343,14 +1372,27 @@ inline __host__ __device__ void operator/=(double3& a, double b) {
1343
1372
  inline __host__ __device__ float4 operator/(float4 a, double b) {
1344
1373
  return make_float4(a.x / b, a.y / b, a.z / b, a.w / b);
1345
1374
  }
1346
-
1375
+ #if defined(CUDART_VERSION) && CUDART_VERSION >= 13000
1376
+ ///////////////////////////////////////////////////
1377
+ // New Toolkits
1378
+ inline __host__ __device__ double4_vec operator/(double4_vec a, float b) {
1379
+ return make_double4_16a(a.x / b, a.y / b, a.z / b, a.w / b);
1380
+ }
1381
+ inline __host__ __device__ double4_vec operator/(double4_vec a, double b) {
1382
+ return make_double4_16a(a.x / b, a.y / b, a.z / b, a.w / b);
1383
+ }
1384
+ #else
1385
+ ////////////////////////////////////////////////////
1386
+ // Old Toolkits
1347
1387
  inline __host__ __device__ double4 operator/(double4 a, float b) {
1348
1388
  return make_double4(a.x / b, a.y / b, a.z / b, a.w / b);
1349
1389
  }
1350
1390
  inline __host__ __device__ double4 operator/(double4 a, double b) {
1351
1391
  return make_double4(a.x / b, a.y / b, a.z / b, a.w / b);
1352
1392
  }
1353
- inline __host__ __device__ void operator/=(double4& a, float b) {
1393
+ #endif
1394
+
1395
+ inline __host__ __device__ void operator/=(double4_vec& a, float b) {
1354
1396
  a.x /= b;
1355
1397
  a.y /= b;
1356
1398
  a.z /= b;
@@ -1362,17 +1404,23 @@ inline __host__ __device__ double3 normalize(double3 v) {
1362
1404
  return v * invLen;
1363
1405
  }
1364
1406
 
1407
+ // Lexicographic comparator
1408
+ template <typename T>
1409
+ inline __host__ __device__ bool lex_less(T a, T b) {
1410
+ if (a.x != b.x)
1411
+ return a.x < b.x;
1412
+ if (a.y != b.y)
1413
+ return a.y < b.y;
1414
+ return a.z < b.z;
1415
+ }
1416
+
1365
1417
  // Float3 < is an element-wise comparison where x, y, z components are assigned priorities in that order.
1366
1418
  // Must be in global namespace for std::less to pick it up.
1367
1419
  inline __host__ __device__ bool operator<(const float3& a, const float3& b) {
1368
- if (floatNear(a.x, b.x)) // x component being different
1369
- return a.x < b.x;
1370
- else if (floatNear(a.y, b.y)) // x comp. same but y different
1371
- return a.y < b.y;
1372
- else if (floatNear(a.z, b.z)) // y comp. same but z different
1373
- return a.z < b.z;
1374
- else // all components same
1375
- return false; // for constructing a set
1420
+ return lex_less(a, b);
1421
+ }
1422
+ inline __host__ __device__ bool operator<(const double3& a, const double3& b) {
1423
+ return lex_less(a, b);
1376
1424
  }
1377
1425
 
1378
1426
  // Assignment
@@ -454,58 +454,6 @@ inline __host__ __device__ void matProxy2ContactParam(T1& E_eff,
454
454
  E_eff = (T1)1 / invE;
455
455
  }
456
456
 
457
- /*
458
- // This version of checkSphereEntityOverlap is not used anymore for code clarity, and the fact that every use case now
459
- // requires overlapDepth.
460
- template <typename T1, typename T2>
461
- inline __device__ deme::contact_t checkSphereEntityOverlap(const T1& A,
462
- const T2& radA,
463
- const deme::objType_t& typeB,
464
- const T1& B,
465
- const float3& dirB,
466
- const float& size1B,
467
- const float& size2B,
468
- const float& size3B,
469
- const float& normal_sign,
470
- const float& beta4Entity) {
471
- deme::contact_t contactType;
472
- switch (typeB) {
473
- case (deme::ANAL_OBJ_TYPE_PLANE): {
474
- const T1 plane2sph = A - B;
475
- // Plane is directional, and the direction is given by plane rotation
476
- const double dist = dot(plane2sph, dirB);
477
- const double overlapDepth = (radA + beta4Entity - dist);
478
- if (overlapDepth < 0.0) {
479
- contactType = deme::NOT_A_CONTACT;
480
- } else {
481
- contactType = deme::SPHERE_PLANE_CONTACT;
482
- }
483
- return contactType;
484
- }
485
- case (deme::ANAL_OBJ_TYPE_PLATE): {
486
- return deme::NOT_A_CONTACT;
487
- }
488
- case (deme::ANAL_OBJ_TYPE_CYL_INF): {
489
- T1 sph2cyl = B - A;
490
- // Projection along cyl axis direction
491
- const double proj_dist = dot(sph2cyl, dirB);
492
- // Radial vector from cylinder center to sphere center, along inward direction
493
- sph2cyl -= proj_dist * dirB;
494
- const double dist_delta_r = length(sph2cyl);
495
- const double overlapDepth = radA - abs(size1B - dist_delta_r - beta4Entity);
496
- if (overlapDepth <= DEME_TINY_FLOAT) {
497
- contactType = deme::NOT_A_CONTACT;
498
- } else {
499
- contactType = deme::SPHERE_CYL_CONTACT;
500
- }
501
- return contactType;
502
- }
503
- default:
504
- return deme::NOT_A_CONTACT;
505
- }
506
- }
507
- */
508
-
509
457
  // Check whether a sphere and an analytical boundary are in contact, and gives overlap depth, contact point and contact
510
458
  // normal.
511
459
  template <typename T1, typename T2, typename T3>
@@ -550,15 +498,21 @@ inline __host__ __device__ deme::contact_t checkSphereEntityOverlap(const T1& A,
550
498
  // Radial vector from cylinder center to sphere center, along inward direction
551
499
  sph2cyl -= proj_dist * dirB;
552
500
  const T3 dist_delta_r = length(sph2cyl);
553
- overlapDepth = radA - abs(size1B - dist_delta_r - beta4Entity);
554
- if (overlapDepth <= DEME_TINY_FLOAT) {
501
+ // We can think the existence of beta4Entity simply enlarges or shrinks the rad of cyl
502
+ float cyl_rad = size1B - normal_sign * beta4Entity;
503
+ overlapDepth = radA - normal_sign * (cyl_rad - dist_delta_r);
504
+ if (overlapDepth < (T3)0.0) {
555
505
  contactType = deme::NOT_A_CONTACT;
556
506
  } else {
557
507
  contactType = deme::SPHERE_CYL_CONTACT;
558
508
  }
559
- // dist_delta_r is 0 only when cylinder is thinner than sphere rad...
560
- cntNormal = to_real3<T1, float3>(normal_sign / dist_delta_r * sph2cyl);
561
- CP = A - to_real3<float3, T1>(cntNormal * (radA - overlapDepth / 2.0));
509
+ if (dist_delta_r >= (T3)DEME_TINY_FLOAT) {
510
+ cntNormal = to_real3<T1, float3>(normal_sign / dist_delta_r * sph2cyl);
511
+ CP = A - to_real3<float3, T1>(cntNormal * (radA - overlapDepth / 2.0));
512
+ } else {
513
+ cntNormal = dirB;
514
+ CP = A;
515
+ }
562
516
  return contactType;
563
517
  }
564
518
  default:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes