loadpath 0.1.1__tar.gz → 0.1.2__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 (297) hide show
  1. {loadpath-0.1.1 → loadpath-0.1.2}/PKG-INFO +55 -54
  2. {loadpath-0.1.1 → loadpath-0.1.2}/README.md +54 -53
  3. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath.egg-info/PKG-INFO +55 -54
  4. {loadpath-0.1.1 → loadpath-0.1.2}/pyproject.toml +1 -1
  5. {loadpath-0.1.1 → loadpath-0.1.2}/LICENSE +0 -0
  6. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/README.md +0 -0
  7. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/SKILL.md +0 -0
  8. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/__init__.py +0 -0
  9. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/__main__.py +0 -0
  10. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/am.py +0 -0
  11. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/amgfast.py +0 -0
  12. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/assembly.py +0 -0
  13. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/__init__.py +0 -0
  14. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/beams.py +0 -0
  15. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/cases/ge-bracket.json +0 -0
  16. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/evaluate.py +0 -0
  17. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/mechanisms.py +0 -0
  18. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/problems.py +0 -0
  19. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/reference/bridge-3d.top3d.npz +0 -0
  20. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/reference/cantilever-3d.top3d.npz +0 -0
  21. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/reference/lbracket-2d.top88-ft2.npz +0 -0
  22. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/reference/mbb-2d.top88-ft1.npz +0 -0
  23. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/reference/mbb-2d.top88-ft2.npz +0 -0
  24. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/reference.py +0 -0
  25. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/benchmarks/run.py +0 -0
  26. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/brep.py +0 -0
  27. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/bucklingopt.py +0 -0
  28. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/buildsim.py +0 -0
  29. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/cadimport.py +0 -0
  30. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/calibration.py +0 -0
  31. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/cavities.py +0 -0
  32. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/checks/__init__.py +0 -0
  33. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/checks/dfm.py +0 -0
  34. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/checks/exchanger.py +0 -0
  35. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/checks/fea.py +0 -0
  36. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/checks/fit.py +0 -0
  37. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/checks/networks.py +0 -0
  38. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/checks/opening.py +0 -0
  39. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/checks/sdf_kit.py +0 -0
  40. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/conjugate.py +0 -0
  41. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/constrained.py +0 -0
  42. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/contact.py +0 -0
  43. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/coopt.py +0 -0
  44. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/cores.py +0 -0
  45. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/crease.py +0 -0
  46. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/critic.py +0 -0
  47. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/crosscheck.py +0 -0
  48. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/cutcell.py +0 -0
  49. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/data/lattice_buckling.json +0 -0
  50. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/data/lattice_tensors.json +0 -0
  51. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/data/published_experiments.json +0 -0
  52. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/decimate.py +0 -0
  53. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/delivery.py +0 -0
  54. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/directions.py +0 -0
  55. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/domain.py +0 -0
  56. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/drains.py +0 -0
  57. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/durability.py +0 -0
  58. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/editor.html +0 -0
  59. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/editor.py +0 -0
  60. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/escape.py +0 -0
  61. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/__init__.py +0 -0
  62. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/baselines/coarse.json +0 -0
  63. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/baselines/full.json +0 -0
  64. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/brief_kinds/__init__.py +0 -0
  65. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/brief_kinds/heatx.py +0 -0
  66. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/brief_kinds/lattice.py +0 -0
  67. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/brief_kinds/multimat.py +0 -0
  68. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/assets/bracket.step +0 -0
  69. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/assets/desk_arm.urdf +0 -0
  70. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/assets/elbow-gearbox.stl +0 -0
  71. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/assets/motor-body.stl +0 -0
  72. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/assets/sketch.png +0 -0
  73. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/base-adapter-fdm.json +0 -0
  74. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/bell-crank-lpbf.json +0 -0
  75. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/belt-tensioner-fdm.json +0 -0
  76. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/camera-boom-mjf.json +0 -0
  77. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/camera-mount-pla.json +0 -0
  78. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/coolant-isolator-petg.json +0 -0
  79. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/elbow-bearing-bracket-sls.json +0 -0
  80. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/elbow-gearbox-forearm-mjf.json +0 -0
  81. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/elbow-link-fatigue-fdm.json +0 -0
  82. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/elbow-stop-pad-tpu.json +0 -0
  83. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/forearm-fdm.json +0 -0
  84. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/forearm-servo-link-fdm.json +0 -0
  85. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/grip-pad-finger-mm.json +0 -0
  86. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/gripper-bracket-creep-fdm.json +0 -0
  87. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/gripper-finger-fdm.json +0 -0
  88. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/gripper-jaw-fatigue-mjf.json +0 -0
  89. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/gripper-palm-fdm.json +0 -0
  90. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/hot-stepper-mount-asa-fdm.json +0 -0
  91. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/hpu-oil-cooler-lpbf.json +0 -0
  92. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/isolated-camera-mount-mm.json +0 -0
  93. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/kart-charge-cooler-lpbf.json +0 -0
  94. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/lighten-step-bracket.json +0 -0
  95. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/nema17-mount-stl.json +0 -0
  96. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/pillow-block-sls.json +0 -0
  97. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/polyjet-fingertip-mm.json +0 -0
  98. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/rod-hook-pla.json +0 -0
  99. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/sensor-arm-resin.json +0 -0
  100. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/shelf-bracket-pla.json +0 -0
  101. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/shoulder-riser-mjf.json +0 -0
  102. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/sketch-clevis.json +0 -0
  103. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/spring-bracket-pacf.json +0 -0
  104. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/tool-flange-ti64.json +0 -0
  105. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/tray-arm-lattice-fdm.json +0 -0
  106. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/turret-fdm.json +0 -0
  107. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/upper-arm-sls.json +0 -0
  108. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/urdf-forearm.json +0 -0
  109. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/wrist-link-mjf.json +0 -0
  110. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs/wrist-yoke-mjf.json +0 -0
  111. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/briefs.py +0 -0
  112. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/arm-link-cast.json +0 -0
  113. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/arm-link-driven.json +0 -0
  114. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/arm-link-sandwich.json +0 -0
  115. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/arm-link.json +0 -0
  116. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/bell-crank.json +0 -0
  117. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/grip-turret.json +0 -0
  118. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/grip-upper-arm.json +0 -0
  119. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/grip-wrist-link-mjf.json +0 -0
  120. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/grip-wrist-yoke.json +0 -0
  121. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/lpbf-intercooler-core.json +0 -0
  122. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/mbb-beam.json +0 -0
  123. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/motor-body.stl +0 -0
  124. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/motor-mount.json +0 -0
  125. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/printed-hook.json +0 -0
  126. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/wall-bracket-fasteners.json +0 -0
  127. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/cases/wall-bracket.json +0 -0
  128. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/corpus.py +0 -0
  129. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/pareto.py +0 -0
  130. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/evals/run.py +0 -0
  131. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/arm-link.json +0 -0
  132. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/bumpered-bracket-compression.json +0 -0
  133. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/bumpered-bracket-lattice.json +0 -0
  134. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/bumpered-bracket.json +0 -0
  135. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/gripper-finger-mm.json +0 -0
  136. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/heat-exchanger-counterflow.json +0 -0
  137. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/heat-exchanger-crossflow-tuned.json +0 -0
  138. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/heat-exchanger-crossflow.json +0 -0
  139. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/pedal-lattice.json +0 -0
  140. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/pressure-plenum.json +0 -0
  141. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/examples/shelf-bracket.json +0 -0
  142. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/exchanger.py +0 -0
  143. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/fasteners.py +0 -0
  144. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/fem.py +0 -0
  145. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/femops.py +0 -0
  146. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/fieldjit.py +0 -0
  147. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/fieldops.py +0 -0
  148. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/fields.py +0 -0
  149. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/fieldtorch.py +0 -0
  150. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/flow.py +0 -0
  151. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/flowtopo.py +0 -0
  152. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/gpu.py +0 -0
  153. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/heatx.py +0 -0
  154. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/heatx_thermal.py +0 -0
  155. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/homogenized.py +0 -0
  156. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/ibrep.py +0 -0
  157. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/impact.py +0 -0
  158. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/infill.py +0 -0
  159. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/interface_library.py +0 -0
  160. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/interlock.py +0 -0
  161. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/isolator.py +0 -0
  162. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/knn.py +0 -0
  163. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/lattice.py +0 -0
  164. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/lattice3mf.py +0 -0
  165. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/lattice_buckling.py +0 -0
  166. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/lattice_grade.py +0 -0
  167. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/lattice_orient.py +0 -0
  168. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/lattice_print.py +0 -0
  169. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/lattice_tensors.py +0 -0
  170. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/latticestep.py +0 -0
  171. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/manufacture.py +0 -0
  172. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/material_library.py +0 -0
  173. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/materials.py +0 -0
  174. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/mcp_server.py +0 -0
  175. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/mechanism.py +0 -0
  176. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/mechanism_nl.py +0 -0
  177. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/meshops.py +0 -0
  178. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/mg.py +0 -0
  179. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/mma.py +0 -0
  180. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/modal.py +0 -0
  181. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/multimat.py +0 -0
  182. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/narrowband.py +0 -0
  183. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/nlkernel.py +0 -0
  184. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/nonlinear.py +0 -0
  185. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/orient.py +0 -0
  186. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/porous.py +0 -0
  187. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/pressure.py +0 -0
  188. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/preview.py +0 -0
  189. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/printcheck.py +0 -0
  190. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/printsetup.py +0 -0
  191. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/processcheck.py +0 -0
  192. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/quick.py +0 -0
  193. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/recall.py +0 -0
  194. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/reconstruct.py +0 -0
  195. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/render.py +0 -0
  196. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/resolved.py +0 -0
  197. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/schema.py +0 -0
  198. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/sdf_kit.py +0 -0
  199. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/selfx.py +0 -0
  200. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/shapes.py +0 -0
  201. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/sharp.py +0 -0
  202. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/simp.py +0 -0
  203. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/sizing.py +0 -0
  204. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/slicer.py +0 -0
  205. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/spec.py +0 -0
  206. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/step.py +0 -0
  207. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/struts.py +0 -0
  208. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/study.py +0 -0
  209. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/tasks.py +0 -0
  210. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/thermal.py +0 -0
  211. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/threemf.py +0 -0
  212. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/tune.py +0 -0
  213. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/validation.py +0 -0
  214. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/verify.py +0 -0
  215. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/viewer.html +0 -0
  216. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/viewer.py +0 -0
  217. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/viscoelastic.py +0 -0
  218. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/voxelprint.py +0 -0
  219. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath/voxels.py +0 -0
  220. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath.egg-info/SOURCES.txt +0 -0
  221. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath.egg-info/dependency_links.txt +0 -0
  222. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath.egg-info/entry_points.txt +0 -0
  223. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath.egg-info/requires.txt +0 -0
  224. {loadpath-0.1.1 → loadpath-0.1.2}/loadpath.egg-info/top_level.txt +0 -0
  225. {loadpath-0.1.1 → loadpath-0.1.2}/setup.cfg +0 -0
  226. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_agent_path.py +0 -0
  227. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_amgfast.py +0 -0
  228. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_assembly.py +0 -0
  229. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_benchmarks.py +0 -0
  230. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_brief_kinds_heatx.py +0 -0
  231. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_brief_kinds_lattice.py +0 -0
  232. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_brief_kinds_multimat.py +0 -0
  233. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_buckling_check.py +0 -0
  234. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_bucklingopt.py +0 -0
  235. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_buildsim.py +0 -0
  236. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_cadimport.py +0 -0
  237. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_calibration.py +0 -0
  238. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_conjugate.py +0 -0
  239. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_contact.py +0 -0
  240. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_coopt.py +0 -0
  241. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_cores.py +0 -0
  242. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_crease.py +0 -0
  243. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_cutcell.py +0 -0
  244. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_dfm.py +0 -0
  245. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_directions.py +0 -0
  246. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_durability.py +0 -0
  247. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_editor.py +0 -0
  248. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_escape.py +0 -0
  249. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_evals.py +0 -0
  250. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_femops.py +0 -0
  251. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_field_materials.py +0 -0
  252. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_fieldjit.py +0 -0
  253. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_fields.py +0 -0
  254. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_fieldtorch.py +0 -0
  255. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_fit.py +0 -0
  256. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_flow.py +0 -0
  257. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_flowtopo.py +0 -0
  258. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_heatx_fixes.py +0 -0
  259. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_heatx_rating.py +0 -0
  260. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_hex8_im.py +0 -0
  261. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_impact.py +0 -0
  262. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_interface.py +0 -0
  263. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_interfaces.py +0 -0
  264. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_interlock.py +0 -0
  265. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_lattice3mf.py +0 -0
  266. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_lattice_print.py +0 -0
  267. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_lattice_tensors.py +0 -0
  268. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_latticestep.py +0 -0
  269. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_loadpath.py +0 -0
  270. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_manufacture.py +0 -0
  271. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_materials.py +0 -0
  272. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_meshops.py +0 -0
  273. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_metal.py +0 -0
  274. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_mg.py +0 -0
  275. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_multimat.py +0 -0
  276. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_multimat_fixes.py +0 -0
  277. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_narrowband.py +0 -0
  278. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_nonlinear.py +0 -0
  279. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_porous.py +0 -0
  280. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_pressure.py +0 -0
  281. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_preview.py +0 -0
  282. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_print.py +0 -0
  283. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_printsetup.py +0 -0
  284. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_process.py +0 -0
  285. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_published_experiments.py +0 -0
  286. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_recall.py +0 -0
  287. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_sharp.py +0 -0
  288. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_sizing.py +0 -0
  289. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_slicer.py +0 -0
  290. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_struts.py +0 -0
  291. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_tetsizing.py +0 -0
  292. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_thermal.py +0 -0
  293. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_threemf_multi.py +0 -0
  294. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_tune.py +0 -0
  295. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_tutorials.py +0 -0
  296. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_voxelprint.py +0 -0
  297. {loadpath-0.1.1 → loadpath-0.1.2}/tests/test_voxels.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: loadpath
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Generative design for printed parts: topology optimization from keep-outs, preserved geometry and loads, verified in real units.
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/connorwhite-online/loadpath
@@ -70,18 +70,19 @@ safety factor, deflection, thinnest member, printability, pass or fail.
70
70
 
71
71
  <table>
72
72
  <tr>
73
- <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/printed-hook.png" width="380"></td>
74
- <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/stress/printed-hook.png" width="380"></td>
73
+ <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-wrist-link-mjf-part.png" height="420"></td>
74
+ <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/stress/grip-wrist-link-mjf.png" height="420"></td>
75
75
  </tr>
76
76
  <tr>
77
- <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/bell-crank.png" width="380"></td>
78
- <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/stress/bell-crank.png" width="380"></td>
77
+ <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-wrist-yoke-part.png" width="380"></td>
78
+ <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/stress/grip-wrist-yoke.png" width="380"></td>
79
79
  </tr>
80
80
  <tr>
81
- <td align="center" colspan="2"><sub>Left, the part loadpath delivered (blue: load, red: kept bore). Right, its
82
- stress from a fresh analysis of that mesh, blue (none) to red (the part's 98th percentile), on the shape bent by
83
- the worst load case. Top: a 300 N wall hook printed upright without supports, 24.2 g, SF 2.73. Bottom: a 500 N
84
- aluminium bell crank (LPBF), 23.4 g, SF 3.22. More in <a href="#examples">Examples</a>.</sub></td>
81
+ <td align="center" colspan="2"><sub>Two robot-arm parts as loadpath delivered them (left) and their stress from a fresh
82
+ analysis of that mesh (right), blue (none) to red (the part's 98th percentile), on the shape bent by the worst
83
+ load case. Top: a wrist link between two servos, MJF nylon, 40.2 g, safety factor 5.8. Bottom: a servo cradle
84
+ held only at its eight screw bosses, glass-filled SLS nylon, 17.3 g, safety factor 3.9. More in
85
+ <a href="#examples">Examples</a>.</sub></td>
85
86
  </tr>
86
87
  </table>
87
88
 
@@ -99,9 +100,9 @@ Then ask in plain words:
99
100
  > printed on an FDM printer.
100
101
 
101
102
  The agent writes the study, checks it, runs it in the background and reads
102
- the report back. Its guide is [loadpath/SKILL.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/loadpath/SKILL.md) (the
103
+ the report back. Its guide is [loadpath/SKILL.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/loadpath/SKILL.md) (the
103
104
  `loadpath_guide` tool returns it); the tools and the loop are in
104
- [docs/agents.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/agents.md). The server runs locally and nothing
105
+ [docs/agents.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/agents.md). The server runs locally and nothing
105
106
  leaves the machine. Units are millimetres, newtons and megapascals. MIT
106
107
  licensed.
107
108
 
@@ -121,23 +122,23 @@ licensed.
121
122
  clean-outs), plus milling and casting constraints.
122
123
  - **Field modelling**: a part as a graph of implicit fields, so skins,
123
124
  lattices (TPMS and strut) and fillets can be graded by stress or by
124
- distance ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/fields.md)).
125
+ distance ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/fields.md)).
125
126
  - **Other analyses**: large deflection and buckling, compliant mechanisms,
126
127
  thermal loads, fatigue and creep estimates, lattice crush and impact,
127
128
  vibration, lattice-Boltzmann flow and conjugate heat for heat exchangers
128
129
  and cold plates, and layer-by-layer warp and residual stress
129
- ([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/BUILDSIM.md)).
130
+ ([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/BUILDSIM.md)).
130
131
  - **CAD in and out**: a STEP or STL part becomes a draft study with its
131
- bores and bolt patterns found ([docs/IMPORT.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/IMPORT.md)); results
132
+ bores and bolt patterns found ([docs/IMPORT.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/IMPORT.md)); results
132
133
  export as STL, 3MF, and STEP with exact planes and cylinders at the
133
134
  interfaces; a lattice part (strut cells, TPMS, graded, skinned or open)
134
- goes to STEP lattice and all, as smooth patches on its true surface ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/fields.md#the-lattice-itself-in-the-step-lattice-exact)).
135
+ goes to STEP lattice and all, as smooth patches on its true surface ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/fields.md#the-lattice-itself-in-the-step-lattice-exact)).
135
136
  - **Mesh checks without a study** (`loadpath.checks`): wall thickness,
136
137
  overhangs, trapped voids, fluid-network isolation, component fit.
137
138
 
138
139
  ## How much to trust it
139
140
 
140
- Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/VALIDATION.md) before relying on a number.
141
+ Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/VALIDATION.md) before relying on a number.
141
142
  In short:
142
143
 
143
144
  - **The solvers match analytic answers** in the test suite: beam
@@ -162,16 +163,16 @@ In short:
162
163
  ## Case studies
163
164
 
164
165
  Each states the problem, the setup, the numbers against a named baseline,
165
- and the limitations ([docs/case-studies/](https://github.com/connorwhite-online/loadpath/tree/v0.1.1/docs/case-studies/)).
166
+ and the limitations ([docs/case-studies/](https://github.com/connorwhite-online/loadpath/tree/v0.1.2/docs/case-studies/)).
166
167
 
167
168
  | Case study | Result | Baseline |
168
169
  | --- | --- | --- |
169
- | [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/evals.md) | 15 of 15 parts meet their requirements on a fresh analysis of the delivered mesh | Each part's own requirements |
170
- | [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/grip.md) | A load sweep over the arm's URDF found 3 of 5 links below SF 1; the regrown set meets SF 2 and is 18% smaller | GRIP's committed parts, made by an earlier loadpath with hand-written loads |
171
- | [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/arm-link-cores.md) | 42.2 g box section for FDM, 36.8 g hollow link for SLS, both at 0.5 mm and SF 3 | 54.9 g solid web; 54.2 g free-form topology optimization |
172
- | [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/cold-plate.md) | A die-graded gyroid ties streamline channels; channels filled with a graded gyroid run 7% cooler | Streamline channels and pin fins, equal metal and pressure drop |
173
- | [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/tpu-finger.md) | up to 8 mm of tip curl for a 5 mm pull; a tendon finger grips 8x harder | A linear-model design (2.5 mm, then the solve fails); a plain bar of equal volume |
174
- | [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/benchmarks.md) | 1-5% less stiff than top88/top3d at equal material, in 57-60 iterations instead of 130-410 | Ports of top88 and top3d |
170
+ | [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/evals.md) | 15 of 15 parts meet their requirements on a fresh analysis of the delivered mesh | Each part's own requirements |
171
+ | [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/grip.md) | A load sweep over the arm's URDF found 3 of 5 links below SF 1; the regrown set meets SF 2 and is 18% smaller | GRIP's committed parts, made by an earlier loadpath with hand-written loads |
172
+ | [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/arm-link-cores.md) | 42.2 g box section for FDM, 36.8 g hollow link for SLS, both at 0.5 mm and SF 3 | 54.9 g solid web; 54.2 g free-form topology optimization |
173
+ | [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/cold-plate.md) | A die-graded gyroid ties streamline channels; channels filled with a graded gyroid run 7% cooler | Streamline channels and pin fins, equal metal and pressure drop |
174
+ | [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/tpu-finger.md) | up to 8 mm of tip curl for a 5 mm pull; a tendon finger grips 8x harder | A linear-model design (2.5 mm, then the solve fails); a plain bar of equal volume |
175
+ | [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/benchmarks.md) | 1-5% less stiff than top88/top3d at equal material, in 57-60 iterations instead of 130-410 | Ports of top88 and top3d |
175
176
 
176
177
  ## Command line and Python
177
178
 
@@ -190,7 +191,7 @@ numba), `gpu` (PyTorch for large grids on CUDA, Apple Silicon or CPU
190
191
  threads).
191
192
 
192
193
  Studies are validated against a published JSON Schema
193
- ([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.1/schema/)), and `loadpath check` returns every problem at once
194
+ ([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.2/schema/)), and `loadpath check` returns every problem at once
194
195
  with its JSON path, so an agent can fix a study in one round trip. Long
195
196
  solves run as background jobs the agent polls. Each finished outcome has an
196
197
  `attention` list of numbers to look at before trusting it, and renders a
@@ -210,51 +211,51 @@ print(best.report["mass"], best.report["safetyFactor"])
210
211
 
211
212
  ## Documentation
212
213
 
213
- - [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/quickstart.md): install to a checked part.
214
- - [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.1/docs/tutorials/): eleven end-to-end workflows, each run by CI
214
+ - [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/quickstart.md): install to a checked part.
215
+ - [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.2/docs/tutorials/): eleven end-to-end workflows, each run by CI
215
216
  (an FDM bracket to 3MF, an SLS lattice with drain holes, a metal heat
216
217
  exchanger, an impact bumper, a STEP part round trip, LPBF distortion
217
218
  compensation, and more).
218
- - [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/loadpath/README.md): the method, every study field, the
219
+ - [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/loadpath/README.md): the method, every study field, the
219
220
  report, the limits.
220
- - [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/VALIDATION.md): what each model has been checked
221
+ - [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/VALIDATION.md): what each model has been checked
221
222
  against.
222
- - [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.1/docs/case-studies/) and [benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/BENCHMARKS.md).
223
- - Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/fields.md), [materials](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/materials.md),
224
- [build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/BUILDSIM.md), [calibration](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/CALIBRATION.md),
225
- [CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/IMPORT.md), [slicer](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/slicer.md),
226
- [multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/MULTIMATERIAL.md), [impact](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/IMPACT.md),
227
- [mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/MECHANISMS.md).
223
+ - [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.2/docs/case-studies/) and [benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/BENCHMARKS.md).
224
+ - Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/fields.md), [materials](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/materials.md),
225
+ [build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/BUILDSIM.md), [calibration](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/CALIBRATION.md),
226
+ [CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/IMPORT.md), [slicer](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/slicer.md),
227
+ [multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/MULTIMATERIAL.md), [impact](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/IMPACT.md),
228
+ [mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/MECHANISMS.md).
228
229
 
229
230
  <!-- gallery:start -->
230
231
 
231
232
  ## Examples
232
233
 
233
- The eval suite (15/15 passing): robot-arm links, brackets, a bell crank and a hook, each optimized and then checked by a fresh analysis of the delivered mesh. "Under envelope" compares with the design space filled solid, not with a conventionally designed part. These are simulated results; see [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/VALIDATION.md). Blue arrows are loads, red is keep-out. Every view, stress map and number is in [docs/GALLERY.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/GALLERY.md).
234
+ The eval suite (15/15 passing): robot-arm links, brackets, a bell crank and a hook, each optimized and then checked by a fresh analysis of the delivered mesh. "Under envelope" compares with the design space filled solid, not with a conventionally designed part. These are simulated results; see [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/VALIDATION.md). Blue arrows are loads, red is keep-out. Every view, stress map and number is in [docs/GALLERY.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/GALLERY.md).
234
235
 
235
236
  <table>
236
237
  <tr>
237
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/arm-link.png" width="250"><br><b>arm-link</b><br><sub>55.3 g · 56% under envelope · SF 8.92 · pass</sub></td>
238
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/arm-link-cast.png" width="250"><br><b>arm-link-cast</b><br><sub>67.8 g · 46% under envelope · SF 20.11 · pass</sub></td>
239
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/arm-link-driven.png" width="250"><br><b>arm-link-driven</b><br><sub>48.4 g · 61% under envelope · SF 11.17 · pass</sub></td>
238
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/arm-link.png" width="250"><br><b>arm-link</b><br><sub>55.3 g · 56% under envelope · SF 8.92 · pass</sub></td>
239
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/arm-link-cast.png" width="250"><br><b>arm-link-cast</b><br><sub>67.8 g · 46% under envelope · SF 20.11 · pass</sub></td>
240
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/arm-link-driven.png" width="250"><br><b>arm-link-driven</b><br><sub>48.4 g · 61% under envelope · SF 11.17 · pass</sub></td>
240
241
  </tr>
241
242
  <tr>
242
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/bell-crank.png" width="250"><br><b>bell-crank</b><br><sub>23.4 g · 84% under envelope · SF 3.22 · pass</sub></td>
243
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/grip-turret.png" width="250"><br><b>grip-turret</b><br><sub>140.4 g · 91% under envelope · SF 2.85 · pass</sub></td>
244
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/grip-upper-arm.png" width="250"><br><b>grip-upper-arm</b><br><sub>207.7 g · 88% under envelope · SF 7.33 · pass</sub></td>
243
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/bell-crank.png" width="250"><br><b>bell-crank</b><br><sub>23.4 g · 84% under envelope · SF 3.22 · pass</sub></td>
244
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-turret.png" width="250"><br><b>grip-turret</b><br><sub>140.4 g · 91% under envelope · SF 2.85 · pass</sub></td>
245
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-upper-arm.png" width="250"><br><b>grip-upper-arm</b><br><sub>207.7 g · 88% under envelope · SF 7.33 · pass</sub></td>
245
246
  </tr>
246
247
  <tr>
247
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/grip-wrist-link-mjf.png" width="250"><br><b>grip-wrist-link-mjf</b><br><sub>40.2 g · 95% under envelope · SF 5.83 · pass</sub></td>
248
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/grip-wrist-yoke.png" width="250"><br><b>grip-wrist-yoke</b><br><sub>17.3 g · 93% under envelope · SF 3.88 · pass</sub></td>
249
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/mbb-beam.png" width="250"><br><b>mbb-beam</b><br><sub>13.8 g · 79% under envelope · SF 1.51 · pass</sub></td>
248
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-wrist-link-mjf.png" width="250"><br><b>grip-wrist-link-mjf</b><br><sub>40.2 g · 95% under envelope · SF 5.83 · pass</sub></td>
249
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-wrist-yoke.png" width="250"><br><b>grip-wrist-yoke</b><br><sub>17.3 g · 93% under envelope · SF 3.88 · pass</sub></td>
250
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/mbb-beam.png" width="250"><br><b>mbb-beam</b><br><sub>13.8 g · 79% under envelope · SF 1.51 · pass</sub></td>
250
251
  </tr>
251
252
  <tr>
252
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/motor-mount.png" width="250"><br><b>motor-mount</b><br><sub>27.6 g · 69% under envelope · SF 3.65 · pass</sub></td>
253
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/printed-hook.png" width="250"><br><b>printed-hook</b><br><sub>24.2 g · 84% under envelope · SF 2.73 · pass</sub></td>
254
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/wall-bracket.png" width="250"><br><b>wall-bracket</b><br><sub>26.9 g · 94% under envelope · SF 2.85 · pass</sub></td>
253
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/motor-mount.png" width="250"><br><b>motor-mount</b><br><sub>27.6 g · 69% under envelope · SF 3.65 · pass</sub></td>
254
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/printed-hook.png" width="250"><br><b>printed-hook</b><br><sub>24.2 g · 84% under envelope · SF 2.73 · pass</sub></td>
255
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/wall-bracket.png" width="250"><br><b>wall-bracket</b><br><sub>26.9 g · 94% under envelope · SF 2.85 · pass</sub></td>
255
256
  </tr>
256
257
  <tr>
257
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/wall-bracket-fasteners.png" width="250"><br><b>wall-bracket-fasteners</b><br><sub>26.5 g · 94% under envelope · SF 2.57 · pass</sub></td>
258
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/wall-bracket-fasteners.png" width="250"><br><b>wall-bracket-fasteners</b><br><sub>26.5 g · 94% under envelope · SF 2.57 · pass</sub></td>
258
259
  </tr>
259
260
  </table>
260
261
 
@@ -262,23 +263,23 @@ Where the load goes: von Mises stress, blue (none) to red (the part's 98th perce
262
263
 
263
264
  <table>
264
265
  <tr>
265
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/stress/bell-crank.png" width="250"><br><sub>bell-crank</sub></td>
266
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/stress/grip-upper-arm.png" width="250"><br><sub>grip-upper-arm</sub></td>
267
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/stress/printed-hook.png" width="250"><br><sub>printed-hook</sub></td>
266
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/stress/bell-crank.png" width="250"><br><sub>bell-crank</sub></td>
267
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/stress/grip-upper-arm.png" width="250"><br><sub>grip-upper-arm</sub></td>
268
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/stress/printed-hook.png" width="250"><br><sub>printed-hook</sub></td>
268
269
  </tr>
269
270
  </table>
270
271
 
271
272
  Two-fluid heat exchangers: two isolated channel networks through one sheet gyroid, with headers that print without support.
272
273
 
273
- ![box-crossflow](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/heatx/box-crossflow.png)
274
+ ![box-crossflow](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/heatx/box-crossflow.png)
274
275
 
275
276
  Printed in metal, nothing inside can be supported: the channels end in peaked roofs instead of flat ceilings (red).
276
277
 
277
- ![metal ceilings](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/heatx/lpbf-ceilings.png)
278
+ ![metal ceilings](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/heatx/lpbf-ceilings.png)
278
279
 
279
280
  Made another way: the same arm link printed, cast (no undercuts along z), 3-axis milled from both sides with a 6 mm cutter, and with members capped at 6 mm. Each meets SF 3 and 0.5 mm.
280
281
 
281
- ![manufacturing constraints](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/manufacturing/arm-link.png)
282
+ ![manufacturing constraints](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/manufacturing/arm-link.png)
282
283
 
283
284
  <sub>Rendered 2026-11-03 from `6c97b57` by `python docs/gallery.py`.</sub>
284
285
 
@@ -9,18 +9,19 @@ safety factor, deflection, thinnest member, printability, pass or fail.
9
9
 
10
10
  <table>
11
11
  <tr>
12
- <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/printed-hook.png" width="380"></td>
13
- <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/stress/printed-hook.png" width="380"></td>
12
+ <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-wrist-link-mjf-part.png" height="420"></td>
13
+ <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/stress/grip-wrist-link-mjf.png" height="420"></td>
14
14
  </tr>
15
15
  <tr>
16
- <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/bell-crank.png" width="380"></td>
17
- <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/stress/bell-crank.png" width="380"></td>
16
+ <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-wrist-yoke-part.png" width="380"></td>
17
+ <td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/stress/grip-wrist-yoke.png" width="380"></td>
18
18
  </tr>
19
19
  <tr>
20
- <td align="center" colspan="2"><sub>Left, the part loadpath delivered (blue: load, red: kept bore). Right, its
21
- stress from a fresh analysis of that mesh, blue (none) to red (the part's 98th percentile), on the shape bent by
22
- the worst load case. Top: a 300 N wall hook printed upright without supports, 24.2 g, SF 2.73. Bottom: a 500 N
23
- aluminium bell crank (LPBF), 23.4 g, SF 3.22. More in <a href="#examples">Examples</a>.</sub></td>
20
+ <td align="center" colspan="2"><sub>Two robot-arm parts as loadpath delivered them (left) and their stress from a fresh
21
+ analysis of that mesh (right), blue (none) to red (the part's 98th percentile), on the shape bent by the worst
22
+ load case. Top: a wrist link between two servos, MJF nylon, 40.2 g, safety factor 5.8. Bottom: a servo cradle
23
+ held only at its eight screw bosses, glass-filled SLS nylon, 17.3 g, safety factor 3.9. More in
24
+ <a href="#examples">Examples</a>.</sub></td>
24
25
  </tr>
25
26
  </table>
26
27
 
@@ -38,9 +39,9 @@ Then ask in plain words:
38
39
  > printed on an FDM printer.
39
40
 
40
41
  The agent writes the study, checks it, runs it in the background and reads
41
- the report back. Its guide is [loadpath/SKILL.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/loadpath/SKILL.md) (the
42
+ the report back. Its guide is [loadpath/SKILL.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/loadpath/SKILL.md) (the
42
43
  `loadpath_guide` tool returns it); the tools and the loop are in
43
- [docs/agents.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/agents.md). The server runs locally and nothing
44
+ [docs/agents.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/agents.md). The server runs locally and nothing
44
45
  leaves the machine. Units are millimetres, newtons and megapascals. MIT
45
46
  licensed.
46
47
 
@@ -60,23 +61,23 @@ licensed.
60
61
  clean-outs), plus milling and casting constraints.
61
62
  - **Field modelling**: a part as a graph of implicit fields, so skins,
62
63
  lattices (TPMS and strut) and fillets can be graded by stress or by
63
- distance ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/fields.md)).
64
+ distance ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/fields.md)).
64
65
  - **Other analyses**: large deflection and buckling, compliant mechanisms,
65
66
  thermal loads, fatigue and creep estimates, lattice crush and impact,
66
67
  vibration, lattice-Boltzmann flow and conjugate heat for heat exchangers
67
68
  and cold plates, and layer-by-layer warp and residual stress
68
- ([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/BUILDSIM.md)).
69
+ ([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/BUILDSIM.md)).
69
70
  - **CAD in and out**: a STEP or STL part becomes a draft study with its
70
- bores and bolt patterns found ([docs/IMPORT.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/IMPORT.md)); results
71
+ bores and bolt patterns found ([docs/IMPORT.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/IMPORT.md)); results
71
72
  export as STL, 3MF, and STEP with exact planes and cylinders at the
72
73
  interfaces; a lattice part (strut cells, TPMS, graded, skinned or open)
73
- goes to STEP lattice and all, as smooth patches on its true surface ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/fields.md#the-lattice-itself-in-the-step-lattice-exact)).
74
+ goes to STEP lattice and all, as smooth patches on its true surface ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/fields.md#the-lattice-itself-in-the-step-lattice-exact)).
74
75
  - **Mesh checks without a study** (`loadpath.checks`): wall thickness,
75
76
  overhangs, trapped voids, fluid-network isolation, component fit.
76
77
 
77
78
  ## How much to trust it
78
79
 
79
- Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/VALIDATION.md) before relying on a number.
80
+ Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/VALIDATION.md) before relying on a number.
80
81
  In short:
81
82
 
82
83
  - **The solvers match analytic answers** in the test suite: beam
@@ -101,16 +102,16 @@ In short:
101
102
  ## Case studies
102
103
 
103
104
  Each states the problem, the setup, the numbers against a named baseline,
104
- and the limitations ([docs/case-studies/](https://github.com/connorwhite-online/loadpath/tree/v0.1.1/docs/case-studies/)).
105
+ and the limitations ([docs/case-studies/](https://github.com/connorwhite-online/loadpath/tree/v0.1.2/docs/case-studies/)).
105
106
 
106
107
  | Case study | Result | Baseline |
107
108
  | --- | --- | --- |
108
- | [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/evals.md) | 15 of 15 parts meet their requirements on a fresh analysis of the delivered mesh | Each part's own requirements |
109
- | [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/grip.md) | A load sweep over the arm's URDF found 3 of 5 links below SF 1; the regrown set meets SF 2 and is 18% smaller | GRIP's committed parts, made by an earlier loadpath with hand-written loads |
110
- | [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/arm-link-cores.md) | 42.2 g box section for FDM, 36.8 g hollow link for SLS, both at 0.5 mm and SF 3 | 54.9 g solid web; 54.2 g free-form topology optimization |
111
- | [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/cold-plate.md) | A die-graded gyroid ties streamline channels; channels filled with a graded gyroid run 7% cooler | Streamline channels and pin fins, equal metal and pressure drop |
112
- | [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/tpu-finger.md) | up to 8 mm of tip curl for a 5 mm pull; a tendon finger grips 8x harder | A linear-model design (2.5 mm, then the solve fails); a plain bar of equal volume |
113
- | [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/case-studies/benchmarks.md) | 1-5% less stiff than top88/top3d at equal material, in 57-60 iterations instead of 130-410 | Ports of top88 and top3d |
109
+ | [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/evals.md) | 15 of 15 parts meet their requirements on a fresh analysis of the delivered mesh | Each part's own requirements |
110
+ | [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/grip.md) | A load sweep over the arm's URDF found 3 of 5 links below SF 1; the regrown set meets SF 2 and is 18% smaller | GRIP's committed parts, made by an earlier loadpath with hand-written loads |
111
+ | [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/arm-link-cores.md) | 42.2 g box section for FDM, 36.8 g hollow link for SLS, both at 0.5 mm and SF 3 | 54.9 g solid web; 54.2 g free-form topology optimization |
112
+ | [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/cold-plate.md) | A die-graded gyroid ties streamline channels; channels filled with a graded gyroid run 7% cooler | Streamline channels and pin fins, equal metal and pressure drop |
113
+ | [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/tpu-finger.md) | up to 8 mm of tip curl for a 5 mm pull; a tendon finger grips 8x harder | A linear-model design (2.5 mm, then the solve fails); a plain bar of equal volume |
114
+ | [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/case-studies/benchmarks.md) | 1-5% less stiff than top88/top3d at equal material, in 57-60 iterations instead of 130-410 | Ports of top88 and top3d |
114
115
 
115
116
  ## Command line and Python
116
117
 
@@ -129,7 +130,7 @@ numba), `gpu` (PyTorch for large grids on CUDA, Apple Silicon or CPU
129
130
  threads).
130
131
 
131
132
  Studies are validated against a published JSON Schema
132
- ([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.1/schema/)), and `loadpath check` returns every problem at once
133
+ ([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.2/schema/)), and `loadpath check` returns every problem at once
133
134
  with its JSON path, so an agent can fix a study in one round trip. Long
134
135
  solves run as background jobs the agent polls. Each finished outcome has an
135
136
  `attention` list of numbers to look at before trusting it, and renders a
@@ -149,51 +150,51 @@ print(best.report["mass"], best.report["safetyFactor"])
149
150
 
150
151
  ## Documentation
151
152
 
152
- - [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/quickstart.md): install to a checked part.
153
- - [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.1/docs/tutorials/): eleven end-to-end workflows, each run by CI
153
+ - [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/quickstart.md): install to a checked part.
154
+ - [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.2/docs/tutorials/): eleven end-to-end workflows, each run by CI
154
155
  (an FDM bracket to 3MF, an SLS lattice with drain holes, a metal heat
155
156
  exchanger, an impact bumper, a STEP part round trip, LPBF distortion
156
157
  compensation, and more).
157
- - [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/loadpath/README.md): the method, every study field, the
158
+ - [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/loadpath/README.md): the method, every study field, the
158
159
  report, the limits.
159
- - [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/VALIDATION.md): what each model has been checked
160
+ - [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/VALIDATION.md): what each model has been checked
160
161
  against.
161
- - [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.1/docs/case-studies/) and [benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/BENCHMARKS.md).
162
- - Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/fields.md), [materials](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/materials.md),
163
- [build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/BUILDSIM.md), [calibration](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/CALIBRATION.md),
164
- [CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/IMPORT.md), [slicer](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/slicer.md),
165
- [multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/MULTIMATERIAL.md), [impact](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/IMPACT.md),
166
- [mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/MECHANISMS.md).
162
+ - [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.2/docs/case-studies/) and [benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/BENCHMARKS.md).
163
+ - Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/fields.md), [materials](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/materials.md),
164
+ [build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/BUILDSIM.md), [calibration](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/CALIBRATION.md),
165
+ [CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/IMPORT.md), [slicer](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/slicer.md),
166
+ [multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/MULTIMATERIAL.md), [impact](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/IMPACT.md),
167
+ [mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/MECHANISMS.md).
167
168
 
168
169
  <!-- gallery:start -->
169
170
 
170
171
  ## Examples
171
172
 
172
- The eval suite (15/15 passing): robot-arm links, brackets, a bell crank and a hook, each optimized and then checked by a fresh analysis of the delivered mesh. "Under envelope" compares with the design space filled solid, not with a conventionally designed part. These are simulated results; see [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/VALIDATION.md). Blue arrows are loads, red is keep-out. Every view, stress map and number is in [docs/GALLERY.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.1/docs/GALLERY.md).
173
+ The eval suite (15/15 passing): robot-arm links, brackets, a bell crank and a hook, each optimized and then checked by a fresh analysis of the delivered mesh. "Under envelope" compares with the design space filled solid, not with a conventionally designed part. These are simulated results; see [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/VALIDATION.md). Blue arrows are loads, red is keep-out. Every view, stress map and number is in [docs/GALLERY.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.2/docs/GALLERY.md).
173
174
 
174
175
  <table>
175
176
  <tr>
176
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/arm-link.png" width="250"><br><b>arm-link</b><br><sub>55.3 g · 56% under envelope · SF 8.92 · pass</sub></td>
177
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/arm-link-cast.png" width="250"><br><b>arm-link-cast</b><br><sub>67.8 g · 46% under envelope · SF 20.11 · pass</sub></td>
178
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/arm-link-driven.png" width="250"><br><b>arm-link-driven</b><br><sub>48.4 g · 61% under envelope · SF 11.17 · pass</sub></td>
177
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/arm-link.png" width="250"><br><b>arm-link</b><br><sub>55.3 g · 56% under envelope · SF 8.92 · pass</sub></td>
178
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/arm-link-cast.png" width="250"><br><b>arm-link-cast</b><br><sub>67.8 g · 46% under envelope · SF 20.11 · pass</sub></td>
179
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/arm-link-driven.png" width="250"><br><b>arm-link-driven</b><br><sub>48.4 g · 61% under envelope · SF 11.17 · pass</sub></td>
179
180
  </tr>
180
181
  <tr>
181
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/bell-crank.png" width="250"><br><b>bell-crank</b><br><sub>23.4 g · 84% under envelope · SF 3.22 · pass</sub></td>
182
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/grip-turret.png" width="250"><br><b>grip-turret</b><br><sub>140.4 g · 91% under envelope · SF 2.85 · pass</sub></td>
183
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/grip-upper-arm.png" width="250"><br><b>grip-upper-arm</b><br><sub>207.7 g · 88% under envelope · SF 7.33 · pass</sub></td>
182
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/bell-crank.png" width="250"><br><b>bell-crank</b><br><sub>23.4 g · 84% under envelope · SF 3.22 · pass</sub></td>
183
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-turret.png" width="250"><br><b>grip-turret</b><br><sub>140.4 g · 91% under envelope · SF 2.85 · pass</sub></td>
184
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-upper-arm.png" width="250"><br><b>grip-upper-arm</b><br><sub>207.7 g · 88% under envelope · SF 7.33 · pass</sub></td>
184
185
  </tr>
185
186
  <tr>
186
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/grip-wrist-link-mjf.png" width="250"><br><b>grip-wrist-link-mjf</b><br><sub>40.2 g · 95% under envelope · SF 5.83 · pass</sub></td>
187
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/grip-wrist-yoke.png" width="250"><br><b>grip-wrist-yoke</b><br><sub>17.3 g · 93% under envelope · SF 3.88 · pass</sub></td>
188
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/mbb-beam.png" width="250"><br><b>mbb-beam</b><br><sub>13.8 g · 79% under envelope · SF 1.51 · pass</sub></td>
187
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-wrist-link-mjf.png" width="250"><br><b>grip-wrist-link-mjf</b><br><sub>40.2 g · 95% under envelope · SF 5.83 · pass</sub></td>
188
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/grip-wrist-yoke.png" width="250"><br><b>grip-wrist-yoke</b><br><sub>17.3 g · 93% under envelope · SF 3.88 · pass</sub></td>
189
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/mbb-beam.png" width="250"><br><b>mbb-beam</b><br><sub>13.8 g · 79% under envelope · SF 1.51 · pass</sub></td>
189
190
  </tr>
190
191
  <tr>
191
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/motor-mount.png" width="250"><br><b>motor-mount</b><br><sub>27.6 g · 69% under envelope · SF 3.65 · pass</sub></td>
192
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/printed-hook.png" width="250"><br><b>printed-hook</b><br><sub>24.2 g · 84% under envelope · SF 2.73 · pass</sub></td>
193
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/wall-bracket.png" width="250"><br><b>wall-bracket</b><br><sub>26.9 g · 94% under envelope · SF 2.85 · pass</sub></td>
192
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/motor-mount.png" width="250"><br><b>motor-mount</b><br><sub>27.6 g · 69% under envelope · SF 3.65 · pass</sub></td>
193
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/printed-hook.png" width="250"><br><b>printed-hook</b><br><sub>24.2 g · 84% under envelope · SF 2.73 · pass</sub></td>
194
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/wall-bracket.png" width="250"><br><b>wall-bracket</b><br><sub>26.9 g · 94% under envelope · SF 2.85 · pass</sub></td>
194
195
  </tr>
195
196
  <tr>
196
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/cases/wall-bracket-fasteners.png" width="250"><br><b>wall-bracket-fasteners</b><br><sub>26.5 g · 94% under envelope · SF 2.57 · pass</sub></td>
197
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/cases/wall-bracket-fasteners.png" width="250"><br><b>wall-bracket-fasteners</b><br><sub>26.5 g · 94% under envelope · SF 2.57 · pass</sub></td>
197
198
  </tr>
198
199
  </table>
199
200
 
@@ -201,23 +202,23 @@ Where the load goes: von Mises stress, blue (none) to red (the part's 98th perce
201
202
 
202
203
  <table>
203
204
  <tr>
204
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/stress/bell-crank.png" width="250"><br><sub>bell-crank</sub></td>
205
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/stress/grip-upper-arm.png" width="250"><br><sub>grip-upper-arm</sub></td>
206
- <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/stress/printed-hook.png" width="250"><br><sub>printed-hook</sub></td>
205
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/stress/bell-crank.png" width="250"><br><sub>bell-crank</sub></td>
206
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/stress/grip-upper-arm.png" width="250"><br><sub>grip-upper-arm</sub></td>
207
+ <td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/stress/printed-hook.png" width="250"><br><sub>printed-hook</sub></td>
207
208
  </tr>
208
209
  </table>
209
210
 
210
211
  Two-fluid heat exchangers: two isolated channel networks through one sheet gyroid, with headers that print without support.
211
212
 
212
- ![box-crossflow](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/heatx/box-crossflow.png)
213
+ ![box-crossflow](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/heatx/box-crossflow.png)
213
214
 
214
215
  Printed in metal, nothing inside can be supported: the channels end in peaked roofs instead of flat ceilings (red).
215
216
 
216
- ![metal ceilings](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/heatx/lpbf-ceilings.png)
217
+ ![metal ceilings](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/heatx/lpbf-ceilings.png)
217
218
 
218
219
  Made another way: the same arm link printed, cast (no undercuts along z), 3-axis milled from both sides with a 6 mm cutter, and with members capped at 6 mm. Each meets SF 3 and 0.5 mm.
219
220
 
220
- ![manufacturing constraints](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.1/docs/images/manufacturing/arm-link.png)
221
+ ![manufacturing constraints](https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.2/docs/images/manufacturing/arm-link.png)
221
222
 
222
223
  <sub>Rendered 2026-11-03 from `6c97b57` by `python docs/gallery.py`.</sub>
223
224