The Roots air compressor

© Stephan Heiss, october 1998.   Heiss@eicn.ch   , version 2.0e

The Roots compressor consist of tho cycloidal wheels with each two cogs.
Some cars, from 1920 to 1980 used this mechanism for air compression.
It is a nice mechanism and the present notebook show you how it works.
Mathematica symbolics and graphics capabilities are ideal to produce an exact animation of this mechanism.

1) Animation1 : The Roots air-compressor

To show an animation of the Roots compressor, just double-click on the image below !

Click here to recalculate the animation with 25 frames (after evaluation, look at the result in section 3)

HOW IT WORKS
The essential fact is that air cannot pass directly between the two rotating wheels because they are always in contact.
1) 	air is aspired in the growing above cavity ;
2)	air is transfered from above to below trough the exterior ;
3)	air is ejected below from the diminuting cavity.

2) Construction of the Roots shape

Figure 1 :  construction of Roots contour

CONSTRUCTION OF THE CONTOUR 
 	The Roots mechanism is made of two cycloidal wheels with each two cogs.
 	A graphical construction of a cycloidal curve is obtained by rolling (without slipping) a circle of radius r on a circle of radius R.
 	The cycloid curve is then the trajectory of a fixed point on the small circle.
 	If the small circle rolls inside or outside of the great circle, we obtain the hypocycloidal or the epicycloidal curve.
 	Parametric equations of the position of the point on the circle are easy to abtain 

		epicycloidal curve (brown curve)   	{({{x = a Cos[t] -  r Cos[bt]}, {y =  a Sin[t]  -  r Sin[bt] }})  with a = R + r    and  b = (R/r) + 1;		(1)
		
		hypocycloidal curve (green curve) 	{({{x = a Cos[t] + r Cos[bt]}, {y =  a Sin[t]  -  r Sin[bt] }})  with a = R - r    and  b = (R/r) - 1.		(2)
		
	In our case, R=1 and r=1/4.
	The brown curve is the trajectory of the point on the small blue circle rolling outside the red circle.
	The green curve is the trajectory of the point on the small cyan circle rolling inside the red circle.
	The second wheel has the same shape but turned 90°.

	The essential fact is that air cannot pass directly between the two rotating wheels because they are always in contact.
	This is a property of the cycloidal wheels, well-known from the watchmakers.
	
	Of course, the first wheel cannot drive the second : each of the two wheels must be drived separately.
	Another good property of the cycloidal wheel is the homokineticity : the two wheels turn
	at the same speed (but in opposite directions).

Construction of figure 1

We use a rotation matrix to turn easily the wheel in vertical position

rotationMatrix[α_]:={{Cos[α],-Sin[α]},{Sin[α],Cos[α]}}

This is just a plot of the 4 cycloidal curves pieces with some cosmetics

Show[
 ParametricPlot[
 	Evaluate[
 	 rotationMatrix[π/4].{5/4 Cos[t]-1/4 Cos[5 t], 5/4 Sin[t]-1/4 Sin[5 t]}], 
 	{t,0,π/2}, DisplayFunction->Identity],
 ParametricPlot[
 	Evaluate[
 	 rotationMatrix[π/4].{5/4 Cos[t]-1/4 Cos[5 t], 5/4 Sin[t]-1/4 Sin[5 t]}], 
 		{t,π,3π/2}, PlotStyle->{Thickness[0.01],Hue[0.1]}, DisplayFunction->Identity],
 ParametricPlot[
 	Evaluate[
 	 rotationMatrix[π/4].{3/4 Cos[t]+1/4 Cos[3 t], 3/4 Sin[t]-1/4 Sin[3 t]}], 
 		{t,3π/2,2π}, PlotStyle->{Thickness[0.01],Hue[0.3]}, DisplayFunction->Identity],
 ParametricPlot[
 	Evaluate[
 	 rotationMatrix[π/4].{3/4 Cos[t]+1/4 Cos[3 t], 3/4 Sin[t]-1/4 Sin[3 t]}], 
 		{t,π/2,π}, DisplayFunction->Identity],
 Graphics[
 	{	Circle[{2,0},1],
 	 	Circle[{0,0},1/2],
 		Circle[{2,0},3/2],
 		Circle[{0,0},3/2], 
 		PointSize[0.02],
 		Hue[0.5],Circle[{3/4,0},1/4],Point[{1/2,0}],
 		Hue[0.6],Circle[{0,-5/4},1/4],Point[{0,-3/2}],
 		Hue[0.9],Circle[{0,0},1]
 	}],
AspectRatio->Automatic, DisplayFunction->$DisplayFunction] ;

3) Construction of animation 1

By construction, the system is homokinetic, i.e. the two figures turn with the same velocity.
So we just need to turn them manually with a rotation matrix.

rotationMatrix[α_]:={{Cos[α],-Sin[α]},{Sin[α],Cos[α]}}

The Roots shape is a combinaison  hypo and hypercycloïds.
The simplest way to get them is to extract the contour from the graphics object returned by the ParametricPlot function.

profilRoots = Partition[Flatten[
{	ParametricPlot[{5/4 Cos[t]-1/4 Cos[5t], 5/4 Sin[t]-1/4 Sin[5t]},{t,0,π/2},
 		DisplayFunction->Identity][[1,1,1,1]],
	ParametricPlot[{3/4 Cos[t]+1/4 Cos[3t], 3/4 Sin[t]-1/4 Sin[3t]},{t,3π/2,2π},
		DisplayFunction->Identity][[1,1,1,1]],
	ParametricPlot[{5/4 Cos[t]-1/4 Cos[5t], 5/4 Sin[t]-1/4 Sin[5t]},{t,π,3π/2},
		DisplayFunction->Identity][[1,1,1,1]],
	ParametricPlot[{3/4 Cos[t]+1/4 Cos[3t], 3/4 Sin[t]-1/4 Sin[3t]},{t,π/2,π},
		DisplayFunction->Identity][[1,1,1,1]] 
}],2];

arrow
       = {{0, 0}, {1, 1}, {.5, 1}, {.5, 3}, {-.5, 3}, {-.5, 1}, {
          -1, 1}};

For an animation, we just turn the two wheels (clockwise and couterclockwise)

animationRoots[n_] := 
 	Table[ 
 		Show[
 		 	Graphics[{
 		 		(* the colored wheels *)
 		 	 	Hue[0.4],Polygon[ rotationMatrix[α].#& /@ profilRoots ],
 		 	 	Hue[0.8],Polygon[ rotationMatrix[-α].#+{2,0}& /@ profilRoots ],
 		 	 	(* construction lines and circles *)
 		 	 	Thickness[0.004],GrayLevel[0],
 		 	 	Circle[{0,0},3/2,{π/3, 5π/3}],
 	 			Circle[{2,0},3/2,{4π/3, 2π}],
 	 			Circle[{2,0},3/2,{0, 2π/3}],
 	 			Line[{{.75,.75 Sqrt[3]},{.75,1.5}}],
 				Line[{{.75,-.75 Sqrt[3]},{.75,-1.5}}],
 				Line[{{2-.75,.75 Sqrt[3]},{2-.75,1.5}}],
 				Line[{{2-.75,-.75 Sqrt[3]},{2-.75,-1.5}}],
 				(* air directions *)
 				Polygon[{1,1.5}+0.1#& /@ arrow],
 				Polygon[{1,-1.8}+0.1#& /@ arrow],
 	 			(* the wheels exterior line *)
 	 			GrayLevel[0], Thickness[0.004],
 	 			Line[ rotationMatrix[α].#& /@ profilRoots ],
 	 			Line[ rotationMatrix[-α].#+{2,0}&  /@ profilRoots ]
 			}],
 		 AspectRatio->Automatic, PlotRange->{{-2,4},{-2,2}}
 	], {α,0,π-π/n,π/n}]

This generate a 25 frames animation

anim=animationRoots[25];

4) Extra : some indications to generate a GIF animation

First, we need to generate a separate GIF file for each frame of the animation.
( The option ImageSize of Display can be used to generate greater images than the default 288*288 pixel ).

SetDirectory["c:\\tempor"];

Table[
      Display[ToString[StringForm["a`1`.gif", i]], anim[[i]], 
        "GIF"], {i, 1, Length[anim]}]

Now, you can use a GIF animator software to generate an animated GIF from the frames a1.gif, ..., a18.gif  in the directory c:\tempor.

On the Internet, one can found the following animators for Windows 
	1) 	Animagic	http://www.rtlsoft.com/animagic
	2)	PaintShop5.0