Sealed magnetic-drive paddle mixer for water in a 50 mm polypropylene housing.
| Part | Gates | Files |
|---|---|---|
| housing mixer-01-housing | PASS 11/11 | STEP · STL |
| impeller mixer-01-impeller | PASS 11/11 | STEP · STL |
| File | Kind | Size |
|---|---|---|
| mixer-01.step | STEP | 0.3 MB |
| mixer-01.stl | STL | 0.2 MB |
assembly.yaml (design contract)
Sealed magnetic-drive paddle mixer for water from sources/mixer-01-spec.md (authoritative): a D50 x 25 cylindrical polypropylene housing with an axial D12 inlet tube in the lid, a radial D10 outlet tube in the side wall and a fixed D6 pin, a four-blade D40 acetal paddle impeller spinning on the pin, a purchased D30 x 40 motor body under the floor (it drives the impeller through the floor by a magnetic coupling that is not modelled), and the derived water region between the inlet (z = 48) and outlet (x = 58) port planes. At the design point (1500 rpm, 2.0 L/min) predict the static pressure rise and the impeller torque from a steady MRF CFD on a three-level mesh ladder, an Euler-head estimate of the pressure rise, and the water volume; the spec requires a static pressure rise of at least 500 Pa.
refinement. The geometry and handoff are published as built; read each gate below before printing.
| Tier | Gate | Result | Evidence |
|---|---|---|---|
| A | parts_pass Every part design passed its own 12 gates and has a handoff STEP | PASS | results/build123d/mixer-01/parts.json designs.<design>.gates_ok: mixer-01-housing=True, mixer-01-impeller=True |
| A | bom_complete Every body of the bill of materials is in the export, once, with a placement | PASS | results/build123d/mixer-01/verify.json solid_count = 4 (expected 4); placements.missing = []; unmatched = [] |
| A | joint_fidelity Every joint's child frame lies on its parent frame (axis, offset, rest angle) | PASS | results/build123d/mixer-01/verify.json joints.joints.<joint>.checks; failing: none |
| A | clearances Static clearances and seats at rest | PASS | results/build123d/mixer-01/verify.json clearances.<name>; failing: none |
| A | motion_clear Every drive moves through its range without interference; gears mesh; ratios match tooth counts | PASS | results/build123d/mixer-01/kinematics.json motions.<name>.max_interference: impellerTurn=0 |
| A | fluid_domain Each fluid region is one sealed piece within its volume band and agrees with the source's fluid body | PASS | results/build123d/mixer-01/domains.json fluids.<name>: water sealed=True volume=52425.4427940255 |
| B | export_agreement Each exported body equals its part handoff x placement; the assembled envelope matches | PASS | results/build123d/mixer-01/verify.json agreement.bodies.<body>.volume_rel/hausdorff_mm; envelope.max_error = 1.0000000116860974e-07 (tol 0.1) |
| B | performance Every predicted observable meets the requirement the sources state over its numerical band (value +- 2 u_numerical) | PASS | results/build123d/mixer-01/simulate.json observables.<id>.requirement: pressureRiseCfd=3915 (band 1697..6132) |
| B | conservation Energy, mass and force balances of every analysis close within their tolerance | PASS | results/build123d/mixer-01/simulate.json simulations.<id>.conservation: cfd.mass_balance=9.019340090232896e-05 |
| B | refinement Every prediction of a mesh ladder is resolved: all its levels finished and the grid-convergence index is within tolerance | FAIL | results/build123d/mixer-01/simulate.json simulations.<id>.refinement.observables: cfd: pressureRiseCfd GCI 0.283 unresolved (the finest levels are oscillatory; GCI 0.283 > 0.05), impellerTorque GCI 0.246 unresolved (the finest levels are oscillatory; GCI 0.246… Means: the prediction depends on the mesh: its discretisation error is unknown or above tolerance, so it supports no value |
| C | source_hygiene The assembly source imports only its declared inputs, formats and lints clean | PASS | results/build123d/mixer-01/verify.json hygiene: cad_refs=[] truth_refs=[]; ruff format True, ruff check True |
| C | boundaries_complete Every face of a bounded body carries exactly one named boundary | PASS | results/build123d/mixer-01/domains.json boundaries.<body>.unassigned/conflicts: none |
| C | provenance Stage JSONs carry provenance stamps; part handoffs are hash-bound; inputs carry provenance | PASS | results/build123d/mixer-01/<stage>.json provenance present for ['verify', 'kinematics', 'domains', 'simulate']; parts.json designs.<d>.step_sha256 present: True |
| C | evidence_separation No worker-visible artefact reads truth; the assembly source only places declared inputs | PASS | results/build123d/mixer-01/verify.json hygiene.truth_refs = [] |
| Body | Kind | Design | Material |
|---|---|---|---|
| housing | modelled | mixer-01-housing | polypropylene |
| impeller | modelled | mixer-01-impeller | acetal |
| motor | purchased | ||
| water | derived | water at 20 degC |