Message Boards Message Boards

Geometry of the Progressing Cavity or Moineau Pump

Posted 4 years ago

During all of history, people have looked for better ways to move water from one place to the other. This F.A.O. website gives an overview of the many screw pumps invented over the centuries. Some interesting examples are the Archimedes screw pump (left) from the 3rd century BC and the Moineau pump (right) patented in 1930.

enter image description here

The Moineau pump is a significant improvement over the Archimedes screw. The pump is called a "progressing cavity" pump. This means the pumped fluid is moving, without deformation through the pump .This leads to many applications in the food- and petroleum industry or where where exactly metered quantities are required. The Moineau pump is also a gem of 3D geometry for both its shape and its hypocycloid transmission. All of this makes it a perfect exercise to be explored with Mathematica! We look in detail at the two significant features of the pump: geometry and transmission. At the end, we put the two together in a working pump!

1. Geometry of the pump

The Moineau pump consists of two helical objects that can be defined as implicit regions:

  1. A static, hollow, helical casing with a stadium shaped cross section, called the stator.

    stator = ImplicitRegion[
            Element[{x, y}, Disk[{0, 0}, 5]] && 
            Not[Element[{x, y}, 
            StadiumShape[2 {AngleVector[.5 z], AngleVector[.5 z + Pi]}, 
            2]]], {{x, -5, 5}, {y, 0, 5}, {z, 0, 12 Pi}}];
            RegionPlot3D[stator, PlotPoints -> 50, 
            PlotStyle -> Lighter[Gray, .25], Boxed -> False, 
            ViewVertical -> {1, 0, 0}]
    

This is the complete stator and a longitudinal cross cut showing an opened half of the stator:

enter image description here

2, Inside the stator is the rotor or a rotating helix with a circular cross section and with a pitch half that of the stator.

    RegionPlot3D[{stator, rotor}, PlotPoints -> 50, 
     PlotStyle -> {Directive[Opacity[.99], Lighter[Gray, .05]], 
       Lighter[Red, .25]}, ViewVertical -> {1, 0, 0}, Boxed -> False]

This shows how the rotor fits perfectly within the stator.

enter image description here

3, The cavities enclosed between stator and rotor are lenticular in shape and during operation, they will move in a helical motion and stay undeformed from inlet to outlet providing a uniform flow.

    cavity = ImplicitRegion[
       Element[{x, y}, 
         StadiumShape[2 {AngleVector[.5 z], AngleVector[.5 z + Pi]}, 2]] &&
         Not[Element[{x, y}, Disk[{1, 0} + AngleVector[z], 2]]], {{x, -4, 
         4}, {y, -4, 4}, {z, 0, 12 Pi}}];
    RegionPlot3D[cavity, PlotStyle -> Lighter[Green, .5], 
     ViewVertical -> {1, 0, 0}, Boxed -> False]

enter image description here

Show[cav, 
 RegionPlot3D[stator, PlotPoints -> 50, 
  PlotStyle -> Lighter[Gray, .25], Boxed -> False, 
  ViewVertical -> {1, 0, 0}], 
 RegionPlot3D[rotor, PlotPoints -> 50, PlotStyle -> Lighter[Red, .25],
   ViewVertical -> {1, 0, 0}, Boxed -> False]]

his shows the cavities wrapped around the rotor (top) and how rotor and cavities fill up the space in the stator (bottom). For clarity, only half of the stator is shown:

enter image description here

2. Hypocycloid Transmission

The rotor has to perform a hypocycloid rotation inside the stator. A point on a circle rolling inside another circle traces a hypocycloid. If the radius of rolling circle is half the radius of the larger circle, the hypocycloid becomes a straight line. If the tracing point is the center of another circle, this circle will move inside a stadium shape . Since the pump cross section is a stadium shape, this is exactly the mechanism we want.

Animate[Module[{ring, drive}, 
  ring = ParametricPlot3D[{2.01 Cos[u], 2.01 Sin[u], v}, {u, 0, 
      2 Pi}, {v, -.98, 0}, PlotStyle -> Green, PlotPoints -> 25, 
     PlotTheme -> "ThickSurface"][[1]]; 
  drive = {{Lighter[Blue, .6], Cylinder[{{1, 0, -1}, {1, 0, 0}}, 1]}, 
    Yellow, Cylinder[{{2, 0, 0}, {2, 0, .5}}, 
     1.75], {Lighter[Red, .15], 
     Cuboid[{3.75, -.1, -.075}, {1.75, .1, 0.525}], 
     Cuboid[{.9, -.1, -1.025}, {2, .1, +0.225}]}, {Lighter[
      Yellow, .15], Cylinder[{{1, 0, 0}, {1, 0, .15}}, .35]}}; 
  Graphics3D[{ring, 
    Rotate[Rotate[{drive}, -phi, {0, 0, 1}, {1, 0, 0}], 
     phi/2, {0, 0, 1}]}, PlotRange -> {{-4, 4}, {-3, 3}, {-2, 2}}, 
   Boxed -> False]], {phi, 0, 4 Pi, .01}]

enter image description here

3. Together as a working pump

We assemble the drive transmission with the pump and we see that the hypocycloid movement of the rotor fits exactly inside the stator.

Animate[DynamicModule[{ring, drive, statorBody, rotor}, 
  statorBody = 
   RegionPlot3D[
     ImplicitRegion[
      Element[{x, y}, Disk[{0, 0}, 4.5]] && 
       Not[Element[{x, y}, 
         StadiumShape[2 {AngleVector[.5 z], AngleVector[.5 z + Pi]}, 
          2]]], {{x, -5, 5}, {y, 0, 5}, {z, 0, 12 Pi}}], 
     PlotPoints -> 50, 
     PlotStyle -> Directive[Opacity[.99], Lighter[Gray, .05]], 
     Boxed -> False][[1]]; 
  rotor[t_] := 
   RegionPlot3D[
     ImplicitRegion[
      Element[{x, y}, 
       Disk[{Cos[z + phi/2] + Cos[phi/2], 2 Cos[(z + t)/2] Sin[z/2]}, 
        2]], {{x, -4., 4.}, {y, -4, 4.}, {z, -.05, 12 Pi}}], 
     PlotStyle -> Lighter[Red, .35], Boxed -> False][[1]]; 
  ring = ParametricPlot3D[{2.01 Cos[u], 2.01 Sin[u], v}, {u, 0, 
      2 Pi}, {v, -.98, 0}, PlotStyle -> Green, PlotPoints -> 25, 
     PerformanceGoal -> "Quality", PlotTheme -> "ThickSurface"][[1]]; 
  drive = {{Lighter[Blue, .6], Cylinder[{{1, 0, -1}, {1, 0, 0}}, 1]}, 
    Yellow, Cylinder[{{2, 0, 0}, {2, 0, .15}}, 1.75], {Yellow, 
     Cuboid[{3.75, -.1, -.075}, {1.75, .1, 0.525}], Red, 
     Cuboid[{.9, -.1, -1.025}, {2, .1, +0.225}]}, {Lighter[
      Yellow, .15], Cylinder[{{1, 0, 0}, {1, 0, .15}}, 0.35]}}; 
  Graphics3D[{ring, statorBody, rotor[phi], 
    Rotate[Rotate[{drive}, phi, {0, 0, 1}, {1, 0, 0}], -(phi/2), {0, 
      0, 1}]}, Boxed -> False]], {phi, 0, -4 Pi, -.01}] 

enter image description here

This is a ball moving through the pump showing the movement of fluid through the pump:

enter image description here

The trapped fluid will completely fill the cavities and this shows the pumping movement from left to right as the rotor rotates inside the stator in a hypocycloid motion:

cavity[phi_] := 
 RegionPlot3D[
   ImplicitRegion[
    Element[{x, y}, 
      StadiumShape[{{2 Cos[0.5` z], 
         2 Sin[0.5 z]}, {-2 Cos[0.5 z], -2 Sin[0.5 z]}}, 2]] && 
     Not[Element[{x, y}, 
       Disk[{Cos[z + -phi/2] + Cos[-phi/2], 
         2 Cos[(z - phi)/2] Sin[z/2]}, 2.]]], {{x, -4., 4.}, {y, -4., 
      4.}, {z, 0, 12 Pi}}], PlotStyle -> Lighter[Green, .5]] // First

enter image description here

For those interested, here is a short YouTube of a real working pump in action:

enter image description here

POSTED BY: Erik Mahieu

enter image description here -- you have earned Featured Contributor Badge enter image description here

Your exceptional post has been selected for our editorial column Staff Picks http://wolfr.am/StaffPicks and Your Profile is now distinguished by a Featured Contributor Badge and is displayed on the Featured Contributor Board. Thank you!

POSTED BY: EDITORIAL BOARD
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract