James Stanley

Towards a Better Pythagorean Cup

Fri 4 January 2019

Tagged: science, 3dprinting

There was an article on Hacker News the other day by David Richeson entitled Make Your Own Pythagorean Cup. A Pythagorean cup is a cup with a built-in siphon. Supposedly invented by Pythagoras, the cup functions just like an ordinary cup as long as it is only filled to a certain level. If anyone gets greedy and tries to take too much wine, the level rises above the top of the siphon, which causes the siphon to self-start, and the greedy person is punished by having the entire contents of the cup dumped into their lap.

The TL;DR is that I designed a Pythagorean cup that looks like this:

There are STL download links below.

Wikipedia has a good diagram showing how the Pythagorean cup works:

At the end of his article David included a sketch of an alternative design for a Pythagorean cup, which hides the siphon in the handle instead of a large protrusion in the centre of the cup:

First attempt

I thought this was a great idea, so I fired up FreeCAD and had a go at it myself.

While this was printing, "mrfusion" in the Hacker News comments mentioned that he had made a Pythagorean cup before, and was disappointed that it took a long time to drain. It apparently "wasn’t very impressive to wait 30 seconds while the water trickled out. Just seems like a leaky cup".

Indeed, after my mug had finished printing:

I too was disappointed to find that it took a long time to drain.

Fluid mechanics

I measured the drain rate by filling the mug with water to some level slightly above where the siphon starts, with my finger over the end of the siphon, and then allowing the mug to drain into a measuring jug while I timed how long it drained for. I stopped timing as soon as the flow became non-continuous (i.e. turned from a flow to a drip) because the empty siphon tube continues dripping for quite some time after it has stopped flowing. I repeated this measurement several times because I have a GCSE in science and I'm not afraid to use it.

(you can just about see the water trickling out of the bottom of the mug)

I found that the mug drained 200ml in 90 seconds, for an average of 2.2 ml/sec. Not very impressive. Just seems like a leaky cup.

I observed that the rate at which the water drains out is highest at the start, and slows down as the level drops. This makes sense. When the water level is higher, there is more pressure pushing water out. In fact, the pressure on the water at the top is 0, and rises linearly as you move towards the bottom. This means that the pressure pushing water out drops linearly as the level drops. Pascal's law tells us that "a pressure change at any point in a confined incompressible fluid is transmitted throughout the fluid such that the same change occurs everywhere". This means that, while the pressure inside an open container is linear in the height of water above it, the pressure at the exit of a siphon is always equal to the pressure at the pickup of the siphon because the water inside the tube is a confined incompressible fluid.

The pressure at the bottom (i.e. at the pickup of the siphon) decreases as the depth of the water in the container decreases. Bernoulli's principle tells us that, all else remaining equal, flow rate is linear in pressure. So when siphoning out of a container with uniform volume along its height (e.g. a perfect cylinder), we have something like:

(I think it drops exponentially, and cuts off at the point where the level in the cup drops below the top of the pickup of the siphon).

This informs our first design improvement: we want most of the cup's volume to be at the top, so that we get to spend more time at a high flow rate, and we want less of the volume at the bottom, so that we spend less time at a low flow rate. The area underneath this chart is the total volume of water drained from the cup (ml/sec * sec = ml). If we reduce the amount of volume, for a given flow rate, we empty the cup faster. This means that in particular we want to reduce the diameter at the bottom of the cup, rather than increase it at the top, otherwise the increased flow rate will be cancelled out by increased volume.

mrfusion suggested using a larger siphon tube to increase the flow rate, but I was initially skeptical of this as I thought a larger tube would reduce the strength of the effect (it's easier to suck water up a straw than up a drainpipe). It turns out this isn't the case because you also get a larger quantity of water doing the sucking. According to Bernoulli's principle, the velocity of the flow would remain unchanged. If the velocity is the same, and the cross-sectional area is increased, then we flow more millilitres per second. So this is our second design improvement: we definitely want to increase the diameter of the tube.

Second attempt

"tobr" suggested an alternative way to route the siphon tube which appears superior:

By looping the tube around the handle, instead of up and down just one side of the handle, we can use the entire handle as a tube and fit a larger tube inside it.

I got back in FreeCAD and modelled a new mug, using what I learnt about fluid mechanics and tobr's tube routing idea.

Note that the internal diameter at the bottom of the mug is even smaller than it appears from the outside. This serves the dual purposes of creating space for the tube inside the handle, and reducing the volume of water in the low-flow-rate region of the mug.

Testing the new mug in the sink, I was delighted to find that it drained much quicker than the first one. I repeated the measurement with the stopwatch and measuring jug, and found that the new mug drained 150ml in 12 seconds, for an average flow rate of 12.5 ml/sec. The average flow rate is 5.6x better and the time to drain is 7.5x better.

This picture shows a comparison of the tube sizes:

The cross-sectional area of the tube is increased from about 12mm2 to 56mm2 (4.7x larger). This accounts for most of the improvement in average flow rate, with the rest of the improvement coming from the reduction in volume at the bottom of the mug.

Minor improvements

I'm pretty much happy with the performance of this mug, but I don't like how it looks. The handle looks rather contrived, not nearly as elegant as the one in tobr's sketch, and I don't like the tesselation pattern on the surface:

This is because FreeCAD has to convert my nice smooth model of a mug into a mesh of triangles in order to export it for 3d printing. Fortunately, the quality is adjustable. I solved this by changing the "Maximum deviation depending on the model bounding box" in the "Part Design" => "Shape View" settings from 0.1% to 0.01%. This did increase the size of the exported STL file by a corresponding factor of ~10 (from about 1.4MB to 12MB) but that's not a problem.

I also smoothed out the sharp edges on the handle.

Since this is only a cosmetic change, this mug still contains 150ml of water and empties in 12 seconds.

Printing one

It took me about 6h30 to print each one. Make sure to use plenty of solid layers/perimeters so that it's watertight. A cup that isn't watertight isn't very useful, and a siphon that isn't airtight won't even work. I looked at getting a higher-quality one of these made by ShapeWays but it was going to cost upwards of $80 even in plastic so I gave it a miss. It would be cool to have a ceramic one but although they do advertise 3d printed ceramics, I couldn't find the option for that in ShapeWays. Possibly this model is too intricate for their ceramics process so they didn't list it as an option?

STL download links:

First attempt (630k)

Second attempt (1.4M)

Final version (12M)



It is probably not advisable to use one long-term as it will be pretty impossible to clean the inside of the tube. Also it is not advisable to serve hot drinks in any type of cup made from PLA.

Mercury in a Pythagorean cup

The Periodic Videos YouTube channel has a video of mercury in a Pythagorean cup. Towards the end they show that if some mercury is poured into the bottom of the cup, and then water is poured on top of the mercury, it is safe to fill the cup all the way to the top. The reason for this is that the mercury is so much more dense than the water that the weight of the water is not enough to push the mercury to the top of the siphon. It would work with any 2 immiscible liquids of different densities, as long as you put enough of the heavier liquid in that the lighter liquid can't push it to the top of the siphon.

(If you put the water in first, and then top it up with mercury, I think the mercury would sink to the bottom and would push some water over the top of the siphon, but the weight of the water falling out of the siphon wouldn't be enough to pull the mercury out, so either the water would fall out and get replaced with air, or the water would just stay suspended part-way down the downtube of the siphon, depending on whether the tube is wide enough for the water's surface tension to hold it together. I might be wrong.)

Other people's Pythagorean cups

I found a handful of other Pythagorean cup designs that are shaped like a mug.

This one from 2016 by paulo2345 is designed like the traditional Pythagorean cup, with the protrusion in the centre, but is otherwise shaped like a mug with a handle:

This one from 2016 by "KIT Trainee Group" hides the siphon in the walls of the mug instead of in the handle:

And this one from 2014 by Adrian Kennard (a very interesting chap, and also the man behind the world's greatest Internet Service Provider) actually does route the siphon through the handle:

Future work

It might be interesting to make a "Pythagorean sippy cup". It would flow twice as fast as you get twice as many handles through which to route the siphon:

Given what we've learnt about fluid mechanics, a wine-glass-derived design is not a bad idea as its volume tapers off quite sharply towards the bottom. I couldn't find a type of glass that both tapers to a point at the bottom and has a handle, but if there is one then it would probably be a good candidate. It is not safe to hide the siphon in the walls of a cup that does not have a handle, as there is a risk that even a non-greedy drinker might hold the cup with the siphon facing towards himself. As he tilts the cup to drink from it, the siphon would fill up and self-start, and "I pour hot squash all over myself and we all have a good chuckle. Everyone except muggins here."

There is also scope to design a puzzle jug that incorporates a siphon into its mechanism, either as the correct way to remove the liquid, or a trick to dump the liquid into the puzzler's lap.