opencad
← Machines
MachineFAIL 13/14

Magnetic-drive mixer

Sealed magnetic-drive paddle mixer for water in a 50 mm polypropylene housing.

Facts

Backend
build123d
Gates
13 pass, 1 fail, 0 n/a
Envelope
86.0 × 56.0 × 91.0 mm
Bodies
4 (2 modelled, 1 purchased, 1 derived)
Joints
3
Simulations
2

Printable part designs

PartGatesFiles
housing
mixer-01-housing
PASS 11/11STEP · STL
impeller
mixer-01-impeller
PASS 11/11STEP · STL

Assembled machine

FileKindSize
mixer-01.stepSTEP0.3 MB
mixer-01.stlSTL0.2 MB

Source

assembly.yaml (design contract)

Design intent

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.

Failing gates

refinement. The geometry and handoff are published as built; read each gate below before printing.

Gates

TierGateResultEvidence
Aparts_pass
Every part design passed its own 12 gates and has a handoff STEP
PASSresults/build123d/mixer-01/parts.json designs.<design>.gates_ok: mixer-01-housing=True, mixer-01-impeller=True
Abom_complete
Every body of the bill of materials is in the export, once, with a placement
PASSresults/build123d/mixer-01/verify.json solid_count = 4 (expected 4); placements.missing = []; unmatched = []
Ajoint_fidelity
Every joint's child frame lies on its parent frame (axis, offset, rest angle)
PASSresults/build123d/mixer-01/verify.json joints.joints.<joint>.checks; failing: none
Aclearances
Static clearances and seats at rest
PASSresults/build123d/mixer-01/verify.json clearances.<name>; failing: none
Amotion_clear
Every drive moves through its range without interference; gears mesh; ratios match tooth counts
PASSresults/build123d/mixer-01/kinematics.json motions.<name>.max_interference: impellerTurn=0
Afluid_domain
Each fluid region is one sealed piece within its volume band and agrees with the source's fluid body
PASSresults/build123d/mixer-01/domains.json fluids.<name>: water sealed=True volume=52425.4427940255
Bexport_agreement
Each exported body equals its part handoff x placement; the assembled envelope matches
PASSresults/build123d/mixer-01/verify.json agreement.bodies.<body>.volume_rel/hausdorff_mm; envelope.max_error = 1.0000000116860974e-07 (tol 0.1)
Bperformance
Every predicted observable meets the requirement the sources state over its numerical band (value +- 2 u_numerical)
PASSresults/build123d/mixer-01/simulate.json observables.<id>.requirement: pressureRiseCfd=3915 (band 1697..6132)
Bconservation
Energy, mass and force balances of every analysis close within their tolerance
PASSresults/build123d/mixer-01/simulate.json simulations.<id>.conservation: cfd.mass_balance=9.019340090232896e-05
Brefinement
Every prediction of a mesh ladder is resolved: all its levels finished and the grid-convergence index is within tolerance
FAILresults/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
Csource_hygiene
The assembly source imports only its declared inputs, formats and lints clean
PASSresults/build123d/mixer-01/verify.json hygiene: cad_refs=[] truth_refs=[]; ruff format True, ruff check True
Cboundaries_complete
Every face of a bounded body carries exactly one named boundary
PASSresults/build123d/mixer-01/domains.json boundaries.<body>.unassigned/conflicts: none
Cprovenance
Stage JSONs carry provenance stamps; part handoffs are hash-bound; inputs carry provenance
PASSresults/build123d/mixer-01/<stage>.json provenance present for ['verify', 'kinematics', 'domains', 'simulate']; parts.json designs.<d>.step_sha256 present: True
Cevidence_separation
No worker-visible artefact reads truth; the assembly source only places declared inputs
PASSresults/build123d/mixer-01/verify.json hygiene.truth_refs = []

Bill of materials

BodyKindDesignMaterial
housingmodelledmixer-01-housingpolypropylene
impellermodelledmixer-01-impelleracetal
motorpurchased
waterderivedwater at 20 degC