What this builds
A planar droplet junction in a rectangular block. Every channel is the same depth and the whole layout lives in the XY plane, which is how the reference parts are made and what keeps a single-exposure print honest.
T-junction continuous along +x · dispersed enters in y at the junction · outlet along +x 3 openings
flow focusing dispersed along +x · continuous from ±y · orifice · abrupt expansion into the outlet 4 openings
The junction is its own explicit box. Every arm runs up to that box's boundary and stops there; nothing passes through anything else. That is not a stylistic choice — it is what makes the void volume an exact sum of arms + junction + orifice + outlet + ports, with no inclusion–exclusion term anywhere. Arms that ran through each other would double-count their intersection and every volume on this page would be quietly wrong.
Expansions and constrictions are abrupt. There are no tapers at the junction or the orifice, and no diffusers anywhere. In the chamber tool a taper is there to help air out on fill; here the sharp edge at the orifice is functional, because it is the geometric feature that sets where the thread breaks. Rounding it would be a different device. The only tapers this tool makes are the optional tapered ends at the ports, far from the junction, where they only take away the corners beside each port.
The nozzle and the pixel grid
The reference product line's parametric axis is the nozzle, and its catalog spans roughly 10 to 140 µm. On a pixel-addressed printer a nozzle is not a continuous number: it is a whole number of pixels, and the narrower it gets the more a single pixel is worth.
one pixel of cure error on an n-pixel nozzle = ± 100 / n % on the nozzle width
At 7.6 µm/px a 10-pixel nozzle is 76 µm and one pixel is 10% of it. A 2-pixel nozzle is 15.2 µm and one pixel is 50% of it. That is arithmetic, not a prediction: it says how much of the nozzle width one pixel of over- or under-cure would move, and nothing about whether that pixel of error actually occurs. Nobody has measured the cure error on this printer for this tool, so the page reports the sensitivity and stops there.
The catalog table beside the form does the same arithmetic for four sizes from the reference line at whatever pitch you have entered: the exact quotient, the nearest whole pixel, what that pixel count actually measures, and the per-pixel sensitivity. No row is labelled pass or fail. Whether a 1.3-pixel nozzle is a design you want is a judgement about your printer and your process, and this tool does not have the evidence to make it for you.
This is also why there is no Phrozen 12K preset on this page, though the other two design tools offer one. That machine has non-square pixels, 19 µm in X and 24 µm in Y, and the middle of the reference catalog — 38 µm — is 2.0 px across and 1.58 px down on it. The catalog sits at or below the printer's addressable feature size on both axes, and the anisotropy means a nozzle that is nearly two pixels wide is barely one and a half pixels deep. Offering the preset would invite a nozzle the grid cannot express. The pitch field still accepts 19 or 24 if you want to look at the numbers.
What the dimensionless numbers and resistances are, and what they are not
Two dimensionless numbers are reported, both as bare numbers with no threshold drawn:
flow ratio = Q_dispersed / Q_continuous
capillary number Ca = µ_c · v_c / σ v_c = Q_c / A
v_c is the mean continuous-phase velocity taken over the orifice
cross-section for a cross, and over the main channel cross-section for a
T-junction. Both µ_c and σ are entered by you. The tool
offers 0.005 N/m as an order-of-magnitude starting point for σ because that
is the right decade for a surfactant-stabilised oil/water interface — it is
not a validated interfacial tension for your fluid pair,
surfactant, or temperature, and the page never treats it as one.
This tool does not predict droplet size, frequency or monodispersity, and does not classify the regime. There is no diameter, no production rate, no CV, and no dripping/jetting verdict anywhere on the page or in the JSON. Those depend on the fluid pair, the surfactant, the wall chemistry and the exact geometry of a printed part that nobody has printed. Reporting Ca and the flow ratio and leaving the interpretation to you is the honest limit of what this geometry tool knows.
Reynolds number is reported for the orifice on the total throughput
(Q_d + Q_c), using the continuous-phase density and viscosity you
entered. Channel resistance per arm uses the same rectangular-duct
Hagen–Poiseuille approximation as the other two design tools, from the
h.r.3.3 PDK's own component documentation
(pdk/docs/Rectangular Channel.docx, citing Bruus):
R_hyd = 12 · η · l / ( w · h³ · (1 − 0.63 · h / w) )
It is a laminar estimate, channel resistance only. The junction box itself contributes nothing to the total, exactly as the chambers do not in the chamber tool: its cross-section is much larger than the arms'. Where an arm's end is tapered, its taper is counted slice by slice with the same formula. With roof ports, each port's hole through the roof is counted too, as a duct of the port's shape: a round port as a round tube of the same area, R = 8 · η · L / (π · r⁴), and a square port by the exact series for a square duct, R = 12 · η · L / (0.4217 · a⁴). That part is approximate: the holes are short, and entrance effects are not modelled. Where the ports carry slip-on posts, each post's bore is counted as a round tube as well. Entrance losses, the abrupt expansion out of the orifice, the presence of a second phase, and any interfacial contribution are all ignored. A two-phase device is not a single-phase duct, and these resistances describe the empty part.
Wetting decides this, and the geometry cannot
The OpenMFDA PEGDA resin is hydrophilic. A hydrophilic wall favours oil-in-water: the aqueous continuous phase wets the wall and the oil thread breaks cleanly.
Water-in-oil is the common case — it is what ddPCR and droplet single-cell workflows run — and it needs hydrophobic walls. In an untreated printed part it is expected to fail: the aqueous dispersed phase wets the wall instead of pinching off, and the junction floods rather than producing droplets. No setting on this page fixes that. It is a surface-chemistry problem, not a geometry problem, and it needs a wall treatment this tool has nothing to say about.
Ports are not library interfaces
The two port styles on this page are geometric primitives and nothing more. An open end is a rectangular hole where an arm meets a block face; a roof port is a square or round shaft from the channel ceiling to the top face. They carry no pin declaration, no obstruction layer, no pitch convention and no mating geometry.
The h.r.3.3 component library works differently: its cells declare
interfaces explicitly, with lef_port() pins, obstruction boxes and a
fixed routing pitch, so that a placer and router can connect them. A block from
this page has none of that. It will not natively mate with Foundry
component library parts, and it is not intended to be dropped into a
placed-and-routed design. It is a standalone chip.
What is checked, and what is not
The blocking checks are geometric self-consistency only — whether the solid
you described can exist as a printable body with one connected fluid network and
the right number of openings. The single process rule that is checked,
h < w, is checked because it is written down in the PDK component
document for the rectangular channel; it is reported per arm and for the
orifice, because a droplet generator routinely has one channel far narrower
than the rest and a single verdict for the whole part would hide exactly the
feature you care about.
On the BYU grid, the block is also compared with the image BYU publishes for the OS1, 2560 × 1600 pixels (19.5 × 12.2 mm, BYU’s rounded figure; the OS1’s Specs page, read 2026-09-30), either way round. The comparison is in pixels: on this grid a pixel of the block is a pixel of the image, so 2560 pixels fit and 2561 do not, whatever a pixel’s exact size. A block bigger than that both ways is flagged and never refused: the files stay on. Each figure is BYU’s published figure for the OS1: see Hardware and process. On any other grid no build area is compared.
Everything else is listed in the Checks panel as not checked. That includes whether a nozzle this narrow prints at all, whether uncured resin will clear from an orifice of this width and length, what the surface roughness at the orifice does to pinch-off, and the droplet size, frequency and monodispersity this tool refuses to predict. The OpenMFDA design kit's documentation gives no limit for any of them, so inventing a threshold here would be worse than saying so.
Nothing produced by this page has been printed or fluidically tested. It is geometry and arithmetic.
Grid discipline
Every dimension is stored as a whole number of pixels or layers, because that is what the printer can actually address. The µm boxes are a convenience: type 40 µm at a 7.6 µm pitch and the tool takes 5 px (38.0 µm) and tells you it did. Nothing off-grid is ever accepted silently.
Arms are centred on the junction box on whole pixels. When an arm's width and the junction's differ in parity, true centring would put the arm's edges on a half pixel; the tool moves the arm to the nearest whole pixel instead and reports the offset it used. The same applies to a roof port centred across its arm.