Introduction: Lid Driven Cavity Flow

Lid driven cavity flow is a go to problem in fluid mechanics, however I could not find any readily available off the shelf products for this demonstration (or relevant instructables) so here is a possible design for this type of problem.

This project has been conceived for students in fluid mechanics at the Singapore University of Technology and Design by Roland Bouffanais and implemented by Bradley Camburn.

Step 1: Theory

This Instructable will walk through the design of a basic lid driven cavity flow system. These instructions are for a specific geometry and part set, however the concept could be applied with any variety of other materials and components. (Theory Article: CFD- Wiki on Cavity Problem)

In this flow the top surface of a box moves, dragging fluid inside the box along with it to create circulation inside the box. This type of flow is useful for a variety of experimental and modeling purposes in fluid dynamics. It is even analogous to flow inside of an aneurysm (Aneurysm flow simulations: Aneurysm Simulations Website , Article on Aneurysm Simulations )

The trailing vortices left by planes, smoke plumes, or a fin stroke are similar, but contained by surrounding fluid that is still rather than a physical box.

I will walk through the preparation and execution of one design
that I have successfully tested and then present some opportunities for modification or future work.


This project deals with water and electricity - and an accident could be fatal.

If you are not sufficiently knowledgeable to safely construct such a device DO NOT ATTEMPT TO DO SO.

Do not attempt to build this device if you have a pacemaker or similar medical implants.

I cannot accept liability for any accident or loss incurred in the construction of such a device and this instructable is for demonstration purposes only.

Step 2: Preparation

To prepare for building, acquire the materials in the attached BOM.

Note that either white or clear acrylic will work. You may want to try different visualization effects but for a single build only the clear acrylic is required.

This set of materials cost about 277USD. Many aspects of this cost can be reduced if you are willing to use recycled or found components (for instance acrylic can be sometimes found in scrap bins). The most expensive elements are 1) the stepper motor 2) the controller.

Step 3: Fabrication

Note for any changes to the design:

If you plan on changing the geometry, remember the geometries are interdependent.

Please test using cardboard prototypes or CAD assembly fitting if you are not sure. Generally note that the following are coupled:

belt hole spacing to drive cylinder spokes spacing and distance between; roller length to support block height to side plate length; stepper to drive shaft inner hole diameter; aluminum rod diameter to front plate + backplate + roller inner hole diameter; roller diameter to side plate length; the slot holes in the back plate to sideplate slot height; roller support holes in the plate location and belt length (this is just a few examples and does not include all interdependencies)

Note for tank selection:

I find a pre-made/reused fish tank preferable to a custom tank due to the difficulty of producing a water-proof tank in a short time period or without expertise, but feel free to go for it if you like. You could examine this walkthrough if so: Acrylic Fish Tank Build Walkthrough

I place the actual test cavity inside the (outer) fish tank so that the fluid can leak out of the cavity but not out of the system. This is necessary to maintain the no slip condition at the belt and wall interface.


First, laser cut the inner tank walls.

Then, using a 10.5 mm drill bit, countersink the 5 support block holes (smaller holes) on the faceplate (this is because the faceplate will be flush with the front face of the fish tank).

Laser cut and stitch the drive belt. Note that the belt overlaps itself in one small area. There is an 'over/under' possibility with this area. Make sure to place the belt such that the smooth side will slide past the side plates first. (if this doesn't make sense in your imagination try physically turning the belt before switching on the motor in the next step to prevent tearing/catching)

Cut (or laser cut) the motor skirt. It should be just larger than the motor profile, with a slit in the center just large enough for the drive shaft.

Laser cut (or hack saw) the aluminum roller segments: 5 units, 3cm length, 8mm diameter.


Next, 3D print the passive and drive rollers. I made the volumes solid in CAD and 3D printed on the least dense 'unsolid' setting (a setting that fills volume with mesh automatically). As shown above, the aluminum segments had already been inserted. This can be achieved either by force or using a clamp and hammer. On one side (back) the length can vary. However on the other (front) side, the length of exposed aluminum must be <6mm (or the thickness of the front plate). Otherwise the faceplate will not be flush when assembled.

Step 4: Assembly

Make a fit assembly of the laser cut walls. Next insert the aluminum segments into the rollers. Install 3-4 cm segments of the aluminum rod into the rollers (sorry this is already done in the images, I am re-making the device and didn't want to re-print new rollers).

Wire the arduino and test the controller and stepper (Wiring Schematic, Stepper Data Sheet). I used the bipolar parallel configuration (works well, feel free to try others they may be even better).

This instructable has a nice breakdown and example code for using motors and steppers with an arduino motor shield: Motor Shield Programming Instructable

A geared motor, with sufficient torque is also an excellent option (Here is the wiki on steppers just in case you know as little as I did Wiki: Stepper Motor) Try a few different step delays to see what works. For the 12v supply I am using a pause variable value of '2' in the arduino code. For longer pauses, use the 6v power supply. Place the arduino in a project box for safety (keep away from the water at all times).

Install the motor with the long end of the bolts (M2X20mm) facing towards the back of the device.

Next install the support block on the back plate (rounded M5X12 bolts). Make sure to leave it slightly loose (as the block may not be printed flat- uneven tightening could freeze the rollers later on).

Slide the rollers into place, with the long aluminum segment facing the back of the device. Slip the drive roller onto the motor. Note for altered geometry: this is designed to press fit into the HT23-398 motor shaft- this geometry should be remade if you select a different motor; I tested it by printing a 1X3 cm block with a couple different hole shapes first before printing the entire roller. Now slide the belt into place. It does have a direction. The flat edge of the drive holes should lead (i.e. the flat edge touches the spokes first as the roller turns).

Make sure the side-walls are already slid into place and press fit the faceplate. The belt should not flap but neither should it be stretched out at all; too loose and the system will slip, too tight and it will freeze. If you follow this geometry exactly no adjustments should be required).

The device is nearly finished! Now install the bolts (counter-sunk M5X12) into the faceplate. Alternately tightening bolts on the left and right side so that the rollers do not freeze (i.e. tightening unevenly can actually change the shape of the box). Twist the rollers occasionally by hand as you tighten to ensure they have stayed free.

Finally screw the side-plate bolts (rounded M5) into place (note that this joint is geometry driven and currently requires exactly 6mm thick plates to work. The principle is that the center of the hole should be 20% of the outer bolt diameter inwards towards the backplate so that the bolt is forced in and locks the sidewalls in place. Technically this is an over-constrained geometry but not a problem with flexible materials like acrylic).

Your system is now ready for placement in the fish tank. Depending on the concentration, about 1L of rheoscopic fluid is proper for demonstration, diluted into the rest of the tank. The operating height of fluid should be just above the bottom row of bolts in the support block (but never above the motor).

Slide a small square of styrofoam into the back to squeze the faceplate against the fish tank wall.

Place the entire tank on a support (I used styrofoam about 1 cm thick) and slide some LEDs underneath (currently I am still settling on the LED lighting system- this is a strip from ikea, any lighting system will work).

Step 5: Testing (and Future Work)

If you have followed all of the steps above your system should now be ready to test out !!

Consider varying the velocity of the drive belt, the viscosity of the fluid (glycerin is more viscous than water).

Alternately you might improve the belt by re-positioning the slots somewhere not directly above the fluid. You could also install a flat plate above the belt so it was closer to a true flat surface (used in the models).

Additionally, instead of LEDs you can deploy a sheet laser beneath the tank and record the motion to later do PIV (particle image velocimetry). Wiki: PIV, Article on Low Cost Digital PIV