loadpath 0.1.1__tar.gz → 0.1.3__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.
- {loadpath-0.1.1 → loadpath-0.1.3}/PKG-INFO +89 -54
- {loadpath-0.1.1 → loadpath-0.1.3}/README.md +88 -53
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/SKILL.md +12 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath.egg-info/PKG-INFO +89 -54
- {loadpath-0.1.1 → loadpath-0.1.3}/pyproject.toml +1 -1
- {loadpath-0.1.1 → loadpath-0.1.3}/LICENSE +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/README.md +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/__init__.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/__main__.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/am.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/amgfast.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/assembly.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/__init__.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/beams.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/cases/ge-bracket.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/evaluate.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/mechanisms.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/problems.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/reference/bridge-3d.top3d.npz +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/reference/cantilever-3d.top3d.npz +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/reference/lbracket-2d.top88-ft2.npz +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/reference/mbb-2d.top88-ft1.npz +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/reference/mbb-2d.top88-ft2.npz +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/reference.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/benchmarks/run.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/brep.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/bucklingopt.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/buildsim.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/cadimport.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/calibration.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/cavities.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/checks/__init__.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/checks/dfm.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/checks/exchanger.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/checks/fea.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/checks/fit.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/checks/networks.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/checks/opening.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/checks/sdf_kit.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/conjugate.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/constrained.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/contact.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/coopt.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/cores.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/crease.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/critic.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/crosscheck.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/cutcell.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/data/lattice_buckling.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/data/lattice_tensors.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/data/published_experiments.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/decimate.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/delivery.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/directions.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/domain.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/drains.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/durability.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/editor.html +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/editor.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/escape.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/__init__.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/baselines/coarse.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/baselines/full.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/brief_kinds/__init__.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/brief_kinds/heatx.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/brief_kinds/lattice.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/brief_kinds/multimat.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/assets/bracket.step +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/assets/desk_arm.urdf +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/assets/elbow-gearbox.stl +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/assets/motor-body.stl +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/assets/sketch.png +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/base-adapter-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/bell-crank-lpbf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/belt-tensioner-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/camera-boom-mjf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/camera-mount-pla.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/coolant-isolator-petg.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/elbow-bearing-bracket-sls.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/elbow-gearbox-forearm-mjf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/elbow-link-fatigue-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/elbow-stop-pad-tpu.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/forearm-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/forearm-servo-link-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/grip-pad-finger-mm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/gripper-bracket-creep-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/gripper-finger-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/gripper-jaw-fatigue-mjf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/gripper-palm-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/hot-stepper-mount-asa-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/hpu-oil-cooler-lpbf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/isolated-camera-mount-mm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/kart-charge-cooler-lpbf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/lighten-step-bracket.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/nema17-mount-stl.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/pillow-block-sls.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/polyjet-fingertip-mm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/rod-hook-pla.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/sensor-arm-resin.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/shelf-bracket-pla.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/shoulder-riser-mjf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/sketch-clevis.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/spring-bracket-pacf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/tool-flange-ti64.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/tray-arm-lattice-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/turret-fdm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/upper-arm-sls.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/urdf-forearm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/wrist-link-mjf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs/wrist-yoke-mjf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/briefs.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/arm-link-cast.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/arm-link-driven.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/arm-link-sandwich.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/arm-link.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/bell-crank.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/grip-turret.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/grip-upper-arm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/grip-wrist-link-mjf.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/grip-wrist-yoke.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/lpbf-intercooler-core.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/mbb-beam.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/motor-body.stl +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/motor-mount.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/printed-hook.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/wall-bracket-fasteners.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/cases/wall-bracket.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/corpus.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/pareto.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/evals/run.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/arm-link.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/bumpered-bracket-compression.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/bumpered-bracket-lattice.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/bumpered-bracket.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/gripper-finger-mm.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/heat-exchanger-counterflow.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/heat-exchanger-crossflow-tuned.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/heat-exchanger-crossflow.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/pedal-lattice.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/pressure-plenum.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/examples/shelf-bracket.json +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/exchanger.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/fasteners.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/fem.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/femops.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/fieldjit.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/fieldops.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/fields.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/fieldtorch.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/flow.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/flowtopo.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/gpu.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/heatx.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/heatx_thermal.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/homogenized.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/ibrep.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/impact.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/infill.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/interface_library.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/interlock.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/isolator.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/knn.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/lattice.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/lattice3mf.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/lattice_buckling.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/lattice_grade.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/lattice_orient.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/lattice_print.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/lattice_tensors.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/latticestep.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/manufacture.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/material_library.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/materials.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/mcp_server.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/mechanism.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/mechanism_nl.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/meshops.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/mg.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/mma.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/modal.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/multimat.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/narrowband.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/nlkernel.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/nonlinear.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/orient.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/porous.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/pressure.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/preview.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/printcheck.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/printsetup.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/processcheck.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/quick.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/recall.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/reconstruct.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/render.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/resolved.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/schema.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/sdf_kit.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/selfx.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/shapes.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/sharp.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/simp.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/sizing.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/slicer.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/spec.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/step.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/struts.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/study.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/tasks.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/thermal.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/threemf.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/tune.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/validation.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/verify.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/viewer.html +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/viewer.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/viscoelastic.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/voxelprint.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath/voxels.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath.egg-info/SOURCES.txt +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath.egg-info/dependency_links.txt +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath.egg-info/entry_points.txt +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath.egg-info/requires.txt +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/loadpath.egg-info/top_level.txt +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/setup.cfg +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_agent_path.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_amgfast.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_assembly.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_benchmarks.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_brief_kinds_heatx.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_brief_kinds_lattice.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_brief_kinds_multimat.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_buckling_check.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_bucklingopt.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_buildsim.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_cadimport.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_calibration.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_conjugate.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_contact.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_coopt.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_cores.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_crease.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_cutcell.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_dfm.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_directions.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_durability.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_editor.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_escape.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_evals.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_femops.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_field_materials.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_fieldjit.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_fields.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_fieldtorch.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_fit.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_flow.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_flowtopo.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_heatx_fixes.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_heatx_rating.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_hex8_im.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_impact.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_interface.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_interfaces.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_interlock.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_lattice3mf.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_lattice_print.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_lattice_tensors.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_latticestep.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_loadpath.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_manufacture.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_materials.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_meshops.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_metal.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_mg.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_multimat.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_multimat_fixes.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_narrowband.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_nonlinear.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_porous.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_pressure.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_preview.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_print.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_printsetup.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_process.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_published_experiments.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_recall.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_sharp.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_sizing.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_slicer.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_struts.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_tetsizing.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_thermal.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_threemf_multi.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_tune.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_tutorials.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_voxelprint.py +0 -0
- {loadpath-0.1.1 → loadpath-0.1.3}/tests/test_voxels.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: loadpath
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
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.
|
|
74
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
73
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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.3/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.
|
|
78
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
77
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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.3/docs/images/stress/grip-wrist-yoke.png" width="380"></td>
|
|
79
79
|
</tr>
|
|
80
80
|
<tr>
|
|
81
|
-
<td align="center" colspan="2"><sub>
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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,12 +100,46 @@ 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.
|
|
103
|
+
the report back. Its guide is [loadpath/SKILL.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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.
|
|
105
|
+
[docs/agents.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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
|
|
|
109
|
+
## Where it fits
|
|
110
|
+
|
|
111
|
+
A designed part needs a shape, the loads it carries, and a way to make it.
|
|
112
|
+
The open tools each cover one of those:
|
|
113
|
+
|
|
114
|
+
- **Topology optimization codes** (top88, top3d, ToPy, FEniCS scripts) are
|
|
115
|
+
research solvers. They stop at a density field on a grid: no printable
|
|
116
|
+
part, and nothing checks the result.
|
|
117
|
+
- **Script CAD** (CadQuery, build123d, OpenSCAD) and AI CAD tools draw exact
|
|
118
|
+
geometry but don't know the loads.
|
|
119
|
+
- **Commercial generative design** (Fusion, nTop) does the whole job, but
|
|
120
|
+
it's built around a GUI, not an agent.
|
|
121
|
+
|
|
122
|
+
loadpath is the layer in between. Your CAD defines the interfaces; loadpath
|
|
123
|
+
takes those plus the loads, material and process, and returns a watertight
|
|
124
|
+
part checked by an analysis independent of the optimizer, with a JSON report
|
|
125
|
+
an agent can act on. Its STEP output goes back into CAD.
|
|
126
|
+
|
|
127
|
+
Where it is strongest:
|
|
128
|
+
|
|
129
|
+
- **The analysis behind the shape**: buckling, fatigue and creep,
|
|
130
|
+
large-deflection compliant mechanisms, loads of unknown direction, thermal
|
|
131
|
+
loads and print warp, all checked on the delivered mesh.
|
|
132
|
+
- **Implicit modelling**: field graphs, graded and conformal lattices (TPMS,
|
|
133
|
+
strut, Voronoi), blends, and exact STEP of lattice parts.
|
|
134
|
+
- **Process awareness**: FDM, SLS, MJF, resin and powder-bed metal rules,
|
|
135
|
+
plus casting and milling constraints.
|
|
136
|
+
- **Heat exchangers**: lattice-Boltzmann flow and conjugate heat transfer
|
|
137
|
+
for gyroid cores and cold plates.
|
|
138
|
+
|
|
139
|
+
Not yet: draft-angle and machining-time checks for cast and milled parts,
|
|
140
|
+
or a ranked spread of outcomes across materials and processes by cost.
|
|
141
|
+
There is no GUI on purpose; it's a library.
|
|
142
|
+
|
|
108
143
|
## What it does
|
|
109
144
|
|
|
110
145
|
- **Topology optimization** on a voxel grid (SIMP with a density filter,
|
|
@@ -121,23 +156,23 @@ licensed.
|
|
|
121
156
|
clean-outs), plus milling and casting constraints.
|
|
122
157
|
- **Field modelling**: a part as a graph of implicit fields, so skins,
|
|
123
158
|
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.
|
|
159
|
+
distance ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/fields.md)).
|
|
125
160
|
- **Other analyses**: large deflection and buckling, compliant mechanisms,
|
|
126
161
|
thermal loads, fatigue and creep estimates, lattice crush and impact,
|
|
127
162
|
vibration, lattice-Boltzmann flow and conjugate heat for heat exchangers
|
|
128
163
|
and cold plates, and layer-by-layer warp and residual stress
|
|
129
|
-
([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
164
|
+
([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BUILDSIM.md)).
|
|
130
165
|
- **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.
|
|
166
|
+
bores and bolt patterns found ([docs/IMPORT.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPORT.md)); results
|
|
132
167
|
export as STL, 3MF, and STEP with exact planes and cylinders at the
|
|
133
168
|
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.
|
|
169
|
+
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.3/docs/fields.md#the-lattice-itself-in-the-step-lattice-exact)).
|
|
135
170
|
- **Mesh checks without a study** (`loadpath.checks`): wall thickness,
|
|
136
171
|
overhangs, trapped voids, fluid-network isolation, component fit.
|
|
137
172
|
|
|
138
173
|
## How much to trust it
|
|
139
174
|
|
|
140
|
-
Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
175
|
+
Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/VALIDATION.md) before relying on a number.
|
|
141
176
|
In short:
|
|
142
177
|
|
|
143
178
|
- **The solvers match analytic answers** in the test suite: beam
|
|
@@ -162,16 +197,16 @@ In short:
|
|
|
162
197
|
## Case studies
|
|
163
198
|
|
|
164
199
|
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.
|
|
200
|
+
and the limitations ([docs/case-studies/](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/case-studies/)).
|
|
166
201
|
|
|
167
202
|
| Case study | Result | Baseline |
|
|
168
203
|
| --- | --- | --- |
|
|
169
|
-
| [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
170
|
-
| [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
171
|
-
| [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
172
|
-
| [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
173
|
-
| [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
174
|
-
| [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
204
|
+
| [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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 |
|
|
205
|
+
| [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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 |
|
|
206
|
+
| [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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 |
|
|
207
|
+
| [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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 |
|
|
208
|
+
| [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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 |
|
|
209
|
+
| [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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
210
|
|
|
176
211
|
## Command line and Python
|
|
177
212
|
|
|
@@ -190,7 +225,7 @@ numba), `gpu` (PyTorch for large grids on CUDA, Apple Silicon or CPU
|
|
|
190
225
|
threads).
|
|
191
226
|
|
|
192
227
|
Studies are validated against a published JSON Schema
|
|
193
|
-
([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
228
|
+
([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/schema/)), and `loadpath check` returns every problem at once
|
|
194
229
|
with its JSON path, so an agent can fix a study in one round trip. Long
|
|
195
230
|
solves run as background jobs the agent polls. Each finished outcome has an
|
|
196
231
|
`attention` list of numbers to look at before trusting it, and renders a
|
|
@@ -210,51 +245,51 @@ print(best.report["mass"], best.report["safetyFactor"])
|
|
|
210
245
|
|
|
211
246
|
## Documentation
|
|
212
247
|
|
|
213
|
-
- [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
214
|
-
- [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
248
|
+
- [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/quickstart.md): install to a checked part.
|
|
249
|
+
- [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/tutorials/): eleven end-to-end workflows, each run by CI
|
|
215
250
|
(an FDM bracket to 3MF, an SLS lattice with drain holes, a metal heat
|
|
216
251
|
exchanger, an impact bumper, a STEP part round trip, LPBF distortion
|
|
217
252
|
compensation, and more).
|
|
218
|
-
- [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
253
|
+
- [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/loadpath/README.md): the method, every study field, the
|
|
219
254
|
report, the limits.
|
|
220
|
-
- [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
255
|
+
- [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/VALIDATION.md): what each model has been checked
|
|
221
256
|
against.
|
|
222
|
-
- [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
223
|
-
- Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
224
|
-
[build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
225
|
-
[CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
226
|
-
[multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
227
|
-
[mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
257
|
+
- [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/case-studies/) and [benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BENCHMARKS.md).
|
|
258
|
+
- Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/fields.md), [materials](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/materials.md),
|
|
259
|
+
[build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BUILDSIM.md), [calibration](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/CALIBRATION.md),
|
|
260
|
+
[CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPORT.md), [slicer](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/slicer.md),
|
|
261
|
+
[multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/MULTIMATERIAL.md), [impact](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPACT.md),
|
|
262
|
+
[mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/MECHANISMS.md).
|
|
228
263
|
|
|
229
264
|
<!-- gallery:start -->
|
|
230
265
|
|
|
231
266
|
## Examples
|
|
232
267
|
|
|
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.
|
|
268
|
+
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.3/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.3/docs/GALLERY.md).
|
|
234
269
|
|
|
235
270
|
<table>
|
|
236
271
|
<tr>
|
|
237
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
238
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
239
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
272
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
273
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
274
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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
275
|
</tr>
|
|
241
276
|
<tr>
|
|
242
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
243
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
244
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
277
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
278
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
279
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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
280
|
</tr>
|
|
246
281
|
<tr>
|
|
247
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
248
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
249
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
282
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
283
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
284
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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
285
|
</tr>
|
|
251
286
|
<tr>
|
|
252
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
253
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
254
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
287
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
288
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
289
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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
290
|
</tr>
|
|
256
291
|
<tr>
|
|
257
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
292
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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
293
|
</tr>
|
|
259
294
|
</table>
|
|
260
295
|
|
|
@@ -262,23 +297,23 @@ Where the load goes: von Mises stress, blue (none) to red (the part's 98th perce
|
|
|
262
297
|
|
|
263
298
|
<table>
|
|
264
299
|
<tr>
|
|
265
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
266
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
267
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
300
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/bell-crank.png" width="250"><br><sub>bell-crank</sub></td>
|
|
301
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/grip-upper-arm.png" width="250"><br><sub>grip-upper-arm</sub></td>
|
|
302
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/printed-hook.png" width="250"><br><sub>printed-hook</sub></td>
|
|
268
303
|
</tr>
|
|
269
304
|
</table>
|
|
270
305
|
|
|
271
306
|
Two-fluid heat exchangers: two isolated channel networks through one sheet gyroid, with headers that print without support.
|
|
272
307
|
|
|
273
|
-

|
|
274
309
|
|
|
275
310
|
Printed in metal, nothing inside can be supported: the channels end in peaked roofs instead of flat ceilings (red).
|
|
276
311
|
|
|
277
|
-

|
|
278
313
|
|
|
279
314
|
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
315
|
|
|
281
|
-

|
|
282
317
|
|
|
283
318
|
<sub>Rendered 2026-11-03 from `6c97b57` by `python docs/gallery.py`.</sub>
|
|
284
319
|
|
|
@@ -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.
|
|
13
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
12
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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.3/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.
|
|
17
|
-
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
16
|
+
<td align="center" width="50%"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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.3/docs/images/stress/grip-wrist-yoke.png" width="380"></td>
|
|
18
18
|
</tr>
|
|
19
19
|
<tr>
|
|
20
|
-
<td align="center" colspan="2"><sub>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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,12 +39,46 @@ 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.
|
|
42
|
+
the report back. Its guide is [loadpath/SKILL.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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.
|
|
44
|
+
[docs/agents.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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
|
|
|
48
|
+
## Where it fits
|
|
49
|
+
|
|
50
|
+
A designed part needs a shape, the loads it carries, and a way to make it.
|
|
51
|
+
The open tools each cover one of those:
|
|
52
|
+
|
|
53
|
+
- **Topology optimization codes** (top88, top3d, ToPy, FEniCS scripts) are
|
|
54
|
+
research solvers. They stop at a density field on a grid: no printable
|
|
55
|
+
part, and nothing checks the result.
|
|
56
|
+
- **Script CAD** (CadQuery, build123d, OpenSCAD) and AI CAD tools draw exact
|
|
57
|
+
geometry but don't know the loads.
|
|
58
|
+
- **Commercial generative design** (Fusion, nTop) does the whole job, but
|
|
59
|
+
it's built around a GUI, not an agent.
|
|
60
|
+
|
|
61
|
+
loadpath is the layer in between. Your CAD defines the interfaces; loadpath
|
|
62
|
+
takes those plus the loads, material and process, and returns a watertight
|
|
63
|
+
part checked by an analysis independent of the optimizer, with a JSON report
|
|
64
|
+
an agent can act on. Its STEP output goes back into CAD.
|
|
65
|
+
|
|
66
|
+
Where it is strongest:
|
|
67
|
+
|
|
68
|
+
- **The analysis behind the shape**: buckling, fatigue and creep,
|
|
69
|
+
large-deflection compliant mechanisms, loads of unknown direction, thermal
|
|
70
|
+
loads and print warp, all checked on the delivered mesh.
|
|
71
|
+
- **Implicit modelling**: field graphs, graded and conformal lattices (TPMS,
|
|
72
|
+
strut, Voronoi), blends, and exact STEP of lattice parts.
|
|
73
|
+
- **Process awareness**: FDM, SLS, MJF, resin and powder-bed metal rules,
|
|
74
|
+
plus casting and milling constraints.
|
|
75
|
+
- **Heat exchangers**: lattice-Boltzmann flow and conjugate heat transfer
|
|
76
|
+
for gyroid cores and cold plates.
|
|
77
|
+
|
|
78
|
+
Not yet: draft-angle and machining-time checks for cast and milled parts,
|
|
79
|
+
or a ranked spread of outcomes across materials and processes by cost.
|
|
80
|
+
There is no GUI on purpose; it's a library.
|
|
81
|
+
|
|
47
82
|
## What it does
|
|
48
83
|
|
|
49
84
|
- **Topology optimization** on a voxel grid (SIMP with a density filter,
|
|
@@ -60,23 +95,23 @@ licensed.
|
|
|
60
95
|
clean-outs), plus milling and casting constraints.
|
|
61
96
|
- **Field modelling**: a part as a graph of implicit fields, so skins,
|
|
62
97
|
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.
|
|
98
|
+
distance ([docs/fields.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/fields.md)).
|
|
64
99
|
- **Other analyses**: large deflection and buckling, compliant mechanisms,
|
|
65
100
|
thermal loads, fatigue and creep estimates, lattice crush and impact,
|
|
66
101
|
vibration, lattice-Boltzmann flow and conjugate heat for heat exchangers
|
|
67
102
|
and cold plates, and layer-by-layer warp and residual stress
|
|
68
|
-
([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
103
|
+
([docs/BUILDSIM.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BUILDSIM.md)).
|
|
69
104
|
- **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.
|
|
105
|
+
bores and bolt patterns found ([docs/IMPORT.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPORT.md)); results
|
|
71
106
|
export as STL, 3MF, and STEP with exact planes and cylinders at the
|
|
72
107
|
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.
|
|
108
|
+
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.3/docs/fields.md#the-lattice-itself-in-the-step-lattice-exact)).
|
|
74
109
|
- **Mesh checks without a study** (`loadpath.checks`): wall thickness,
|
|
75
110
|
overhangs, trapped voids, fluid-network isolation, component fit.
|
|
76
111
|
|
|
77
112
|
## How much to trust it
|
|
78
113
|
|
|
79
|
-
Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
114
|
+
Read [docs/VALIDATION.md](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/VALIDATION.md) before relying on a number.
|
|
80
115
|
In short:
|
|
81
116
|
|
|
82
117
|
- **The solvers match analytic answers** in the test suite: beam
|
|
@@ -101,16 +136,16 @@ In short:
|
|
|
101
136
|
## Case studies
|
|
102
137
|
|
|
103
138
|
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.
|
|
139
|
+
and the limitations ([docs/case-studies/](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/case-studies/)).
|
|
105
140
|
|
|
106
141
|
| Case study | Result | Baseline |
|
|
107
142
|
| --- | --- | --- |
|
|
108
|
-
| [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
109
|
-
| [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
110
|
-
| [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
111
|
-
| [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
112
|
-
| [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
113
|
-
| [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
143
|
+
| [Eval suite](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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 |
|
|
144
|
+
| [GRIP robot arm](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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 |
|
|
145
|
+
| [Arm link cores](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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 |
|
|
146
|
+
| [Liquid cold plate](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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 |
|
|
147
|
+
| [TPU finger](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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 |
|
|
148
|
+
| [Benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/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
149
|
|
|
115
150
|
## Command line and Python
|
|
116
151
|
|
|
@@ -129,7 +164,7 @@ numba), `gpu` (PyTorch for large grids on CUDA, Apple Silicon or CPU
|
|
|
129
164
|
threads).
|
|
130
165
|
|
|
131
166
|
Studies are validated against a published JSON Schema
|
|
132
|
-
([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
167
|
+
([`schema/`](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/schema/)), and `loadpath check` returns every problem at once
|
|
133
168
|
with its JSON path, so an agent can fix a study in one round trip. Long
|
|
134
169
|
solves run as background jobs the agent polls. Each finished outcome has an
|
|
135
170
|
`attention` list of numbers to look at before trusting it, and renders a
|
|
@@ -149,51 +184,51 @@ print(best.report["mass"], best.report["safetyFactor"])
|
|
|
149
184
|
|
|
150
185
|
## Documentation
|
|
151
186
|
|
|
152
|
-
- [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
153
|
-
- [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
187
|
+
- [Quickstart](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/quickstart.md): install to a checked part.
|
|
188
|
+
- [Tutorials](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/tutorials/): eleven end-to-end workflows, each run by CI
|
|
154
189
|
(an FDM bracket to 3MF, an SLS lattice with drain holes, a metal heat
|
|
155
190
|
exchanger, an impact bumper, a STEP part round trip, LPBF distortion
|
|
156
191
|
compensation, and more).
|
|
157
|
-
- [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
192
|
+
- [Reference](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/loadpath/README.md): the method, every study field, the
|
|
158
193
|
report, the limits.
|
|
159
|
-
- [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
194
|
+
- [Validation](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/VALIDATION.md): what each model has been checked
|
|
160
195
|
against.
|
|
161
|
-
- [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.
|
|
162
|
-
- Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
163
|
-
[build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
164
|
-
[CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
165
|
-
[multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
166
|
-
[mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.
|
|
196
|
+
- [Case studies](https://github.com/connorwhite-online/loadpath/tree/v0.1.3/docs/case-studies/) and [benchmarks](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BENCHMARKS.md).
|
|
197
|
+
- Topics: [fields](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/fields.md), [materials](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/materials.md),
|
|
198
|
+
[build simulation](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/BUILDSIM.md), [calibration](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/CALIBRATION.md),
|
|
199
|
+
[CAD import](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPORT.md), [slicer](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/slicer.md),
|
|
200
|
+
[multi-material](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/MULTIMATERIAL.md), [impact](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/IMPACT.md),
|
|
201
|
+
[mechanisms](https://github.com/connorwhite-online/loadpath/blob/v0.1.3/docs/MECHANISMS.md).
|
|
167
202
|
|
|
168
203
|
<!-- gallery:start -->
|
|
169
204
|
|
|
170
205
|
## Examples
|
|
171
206
|
|
|
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.
|
|
207
|
+
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.3/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.3/docs/GALLERY.md).
|
|
173
208
|
|
|
174
209
|
<table>
|
|
175
210
|
<tr>
|
|
176
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
177
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
178
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
211
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
212
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
213
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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
214
|
</tr>
|
|
180
215
|
<tr>
|
|
181
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
182
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
183
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
216
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
217
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
218
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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
219
|
</tr>
|
|
185
220
|
<tr>
|
|
186
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
187
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
188
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
221
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
222
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
223
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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
224
|
</tr>
|
|
190
225
|
<tr>
|
|
191
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
192
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
193
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
226
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
227
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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>
|
|
228
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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
229
|
</tr>
|
|
195
230
|
<tr>
|
|
196
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
231
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/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
232
|
</tr>
|
|
198
233
|
</table>
|
|
199
234
|
|
|
@@ -201,23 +236,23 @@ Where the load goes: von Mises stress, blue (none) to red (the part's 98th perce
|
|
|
201
236
|
|
|
202
237
|
<table>
|
|
203
238
|
<tr>
|
|
204
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
205
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
206
|
-
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.
|
|
239
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/bell-crank.png" width="250"><br><sub>bell-crank</sub></td>
|
|
240
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/grip-upper-arm.png" width="250"><br><sub>grip-upper-arm</sub></td>
|
|
241
|
+
<td align="center" valign="top"><img src="https://raw.githubusercontent.com/connorwhite-online/loadpath/v0.1.3/docs/images/stress/printed-hook.png" width="250"><br><sub>printed-hook</sub></td>
|
|
207
242
|
</tr>
|
|
208
243
|
</table>
|
|
209
244
|
|
|
210
245
|
Two-fluid heat exchangers: two isolated channel networks through one sheet gyroid, with headers that print without support.
|
|
211
246
|
|
|
212
|
-

|
|
213
248
|
|
|
214
249
|
Printed in metal, nothing inside can be supported: the channels end in peaked roofs instead of flat ceilings (red).
|
|
215
250
|
|
|
216
|
-

|
|
217
252
|
|
|
218
253
|
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
254
|
|
|
220
|
-

|
|
221
256
|
|
|
222
257
|
<sub>Rendered 2026-11-03 from `6c97b57` by `python docs/gallery.py`.</sub>
|
|
223
258
|
|
|
@@ -16,6 +16,18 @@ it, use the CLI below. Start from the nearest example (`loadpath_examples` /
|
|
|
16
16
|
`loadpath examples`) rather than a blank page; `loadpath_schema` gives every
|
|
17
17
|
field. `check` reports every problem at once: fix them all, then check again.
|
|
18
18
|
|
|
19
|
+
## When to use it
|
|
20
|
+
|
|
21
|
+
Use loadpath when the shape should come from the loads: brackets, links,
|
|
22
|
+
mounts and housings around fixed interfaces, lattice-filled or graded parts,
|
|
23
|
+
compliant mechanisms, heat exchangers and cold plates. Draw parts whose shape
|
|
24
|
+
is set by function rather than load (enclosures, cosmetic covers, gears,
|
|
25
|
+
threads) in CAD instead. loadpath doesn't replace CAD: model the interfaces
|
|
26
|
+
there, let loadpath grow the material between them, and bring the result
|
|
27
|
+
back as STEP or STL. Its edge over drawing the part yourself is that every
|
|
28
|
+
result comes with an independent check (safety factor, deflection,
|
|
29
|
+
buckling, printability) you can report to the user.
|
|
30
|
+
|
|
19
31
|
## Workflow
|
|
20
32
|
|
|
21
33
|
1. **Model the interfaces exactly** (in build123d, CadQuery, or by hand):
|