The FDA interlaboratory centrifugal blood pump from its supplied CAD, with a fluid domain and a CFD analysis.
| File | Kind | Size |
|---|---|---|
| fda-pump.step | STEP | 3.9 MB |
| fda-pump.stl | STL | 4.5 MB |
assembly.yaml (design contract)
Analysis of the FDA benchmark centrifugal blood pump (Interlaboratory Study 2) from its supplied CAD (sources/pump_housing.step, sources/pump_rotor.step; authoritative, 1 CAD unit = 100 um, scaled by 0.1 to mm) and the transcribed packet sources/fda-pump-packet.md. The housing chamber model (the inner surface of the D60 x 9 chamber and its tubing: the curved D12 inlet tube and the D4.39 throat, diffuser and D12 outlet tube) and the D52 four-blade rotor keep their supplied relative position; the rotor turns about the pump axis (+z) on a revolute joint at the rest phase of the CAD (blades along +-x and +-y, one blade 90 degrees to the outlet axis). The assembly source builds the physical housing wall as a derived solid around the chamber model and the sealed blood-analog flow region (chamber minus rotor) as a derived fluid body with named inlet (curved inlet tube's open end), outlet (outlet tube's open end), rotor-wall and housing-wall boundaries. Six operating conditions C1-C6 (flow in L/min, rotor speed in rpm) and the Newtonian blood analog (1035 kg/m3, 0.0035 Pa s) come from the packet. Predicted: the static pressure rise outlet minus inlet at every condition from a steady OpenFOAM MRF analysis (mesh-refinement pair at C5, one level elsewhere), plus the reduced Euler-head estimate at every condition under separate ids. Nonclinical engineering use only.
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 | n/a | results/build123d/fda-pump/parts.json designs.<design>.gates_ok: |
| A | bom_complete Every body of the bill of materials is in the export, once, with a placement | PASS | results/build123d/fda-pump/verify.json solid_count = 3 (expected 3); placements.missing = []; unmatched = [] |
| A | joint_fidelity Every joint's child frame lies on its parent frame (axis, offset, rest angle) | PASS | results/build123d/fda-pump/verify.json joints.joints.<joint>.checks; failing: none |
| A | clearances Static clearances and seats at rest | PASS | results/build123d/fda-pump/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/fda-pump/kinematics.json motions.<name>.max_interference: spin=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/fda-pump/domains.json fluids.<name>: blood sealed=True volume=78329.71113819956 |
| B | export_agreement Each exported body equals its part handoff x placement; the assembled envelope matches | PASS | results/build123d/fda-pump/verify.json agreement.bodies.<body>.volume_rel/hausdorff_mm; envelope.max_error = 2.334145186466685e-06 (tol 0.5) |
| B | performance Every predicted observable meets the requirement the sources state over its numerical band (value +- 2 u_numerical) | n/a | results/build123d/fda-pump/simulate.json observables.<id>.requirement: |
| B | conservation Energy, mass and force balances of every analysis close within their tolerance | PASS | results/build123d/fda-pump/simulate.json simulations.<id>.conservation: cfdC5.mass_balance=7.662733333735391e-06, cfd.mass_balance=0.00014860735881099896 |
| 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/fda-pump/simulate.json simulations.<id>.refinement.observables: cfdC5: pressureRiseC5 GCI 0.221 unresolved (GCI 0.221 > 0.05) 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/fda-pump/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/fda-pump/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/fda-pump/<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/fda-pump/verify.json hygiene.truth_refs = [] |
| Body | Kind | Design | Material |
|---|---|---|---|
| housing | derived | ||
| rotor | purchased | ||
| chamber | purchased | ||
| blood | derived |