How to Build a Parameterized Archimedean Spiral Geometry

July 27, 2016

Archimedean spirals are often used in the analysis of inductor coils, spiral heat exchangers, and microfluidic devices. Today, we will demonstrate how to build an Archimedean spiral using analytic equations and their derivatives to define a set of spiral curves. Based on these curves, we will then create a 2D geometry with specific thickness, extruding it to a full 3D geometry.

A Brief Introduction to Archimedean Spirals

Widely observed in nature, spirals, or helices, are utilized in many engineering designs. As an electrical engineer, for instance, you may wind inductive coils in spiral patterns and design helical antennas. As a mechanical engineer, you may use spirals when designing springs, helical gears, or even the watch mechanism highlighted below.

An image of a clock mechanism that features an Archimedean spiral.
An example of an Archimedean spiral used in a clock mechanism. Image by Greubel Forsey. Licensed by CC BY-SA 3.0, via Wikimedia Commons.

Here, we’ll focus on a specific type of spiral, the one that is featured in the mechanism shown above: an Archimedean spiral. An Archimedean spiral is a type of a spiral that has a fixed distance between its successive turns. This property enables it to be widely used in the design of flat coils and springs.

We can describe an Archimedean spiral with the following equation in polar coordinates:


where a and b are parameters that define the initial radius of the spiral and the distance between its successive turns, the latter of which is equal to 2 \pi b. Note that an Archimedean spiral is also sometimes referred to as an arithmetic spiral. This name derives from the arithmetic progression of the distance from the origin to point on the same radial.

Designing a Parameterized Archimedean Spiral Geometry

Now that we’ve introduced Archimedean spirals, let’s take a look at how to parameterize and create such a design for analysis in COMSOL Multiphysics.

A schematic showing the coordinates of an Archimedean spiral.
An Archimedean spiral can be described in both polar and Cartesian coordinates.

To begin, we need to convert the spiral equations from a polar to a Cartesian coordinate system and express each equation in a parametric form:

x_{component}=rcos(\theta) \\

This transformation allows us to rewrite the Archimedean spiral’s equation in a parametric form in the Cartesian coordinate system:

x_{component}=(a+b\theta)cos(\theta) \\

In COMSOL Multiphysics, it is necessary to decide on the set of parameters that will define the spiral geometry. These parameters are the spiral’s initial radius a_{initial}, the spiral’s final radius a_{final}, and the desired number of turns n. The spiral growth rate b can then be expressed as:

b=\frac{a_{final}-a_{initial}}{2 \pi n}

Further, we need to decide on the spiral’s start angle theta_0 and end angle theta_f. Let’s begin with the values of theta_0=0 and theta_f=2 \pi n. With this information, we are able to define a set of parameters for the spiral geometry.

Screenshot depicting the spiral's geometric parameters.
The parameters used to build the spiral geometry.

To build this spiral, we’ll start with a 3D Component and create a Work Plane in the Geometry branch. In the Work Plane geometry, we then add a Parametric Curve and use the parametric equations referenced above with a varying angle to draw a 2D version of the Archimedean spiral. These equations can be directly entered into the parametric curve’s Expression field, or we can first define each equation in a new Analytic function as:

X_{fun}=(a+bs)cos(s) \\
Y_{fun}=(a+bs)sin(s) \\

Defining an equation in the Analytic function.
The X-component of the Archimedean spiral equation defined in the Analytic function.

The Analytic function can be used in the expressions for the Parametric Curve. In this Parametric Curve, we vary parameter s from the initial angle of the spiral, theta_0, to the final angle of the spiral, theta_f=2 \pi n.

Settings for the Parametric Curve feature.
The settings for the Parametric Curve feature.

The parametric spiral equations used in the Parametric Curve feature will result in a spiral represented by a curve. Let’s now build upon this geometry, adding thickness to it in order to create a 2D solid object.

Up to this point, our spiral has been parameterized in terms of the initial radius a_{initial}, final radius a_{final}, and desired number of turns n. Now, we must incorporate thickness as another control parameter in the spiral equation.

Let’s begin with the main property of the spiral, which states that the distance between the spiral turns is equal to 2 \pi b. This is also equivalent to \frac{a_{final}-a_{initial}}{n}. To incorporate thickness, we represent the distance between each successive turn of the spiral as a sum of the spiral thickness and the remaining gap between turns, thick+gap.

Schematic illustrating spiral thickness and gap parameters.
The distance between spirals turns is defined in terms of the spiral thickness and gap parameters.

To control thickness and obtain identical distance between the turns, the distance can be expressed as:

distance=\frac{a_{initial}-a_{final}}{n} \\

After defining thickness and expressing the gap between turns in terms of thickness and constant distance between centerlines of the spiral, we can rewrite the spiral growth parameter in terms of thickness as:

distance=2\pi b \\

We will also want to express the final angle of the spiral in terms of its initial and final radii:

\theta_{final}=2 \pi n \\
a_{final}=\text{total distance}+a_{initial} \\
a_{final}=2 \pi bn+a_{initial} \\
n=\frac{a_{final}-a_{initial}}{2 \pi b} \\
\theta_{final}=\frac{2 \pi (a_{final}-a_{initial})}{2 \pi b} \\

Want to start the spiral from an angle other than zero? If so, you will need to add this initial angle to your final angle in the expression for the parameter: theta_f=\frac{a_{final}-a_{initial}}{b}+theta_0.

Duplicating the existing spiral curve twice and placing these curves with an offset of -\frac{thick}{2} and +\frac{thick}{2} with respect to the initial spiral curve allows us to build the spiral with thickness. To position the upper and lower spirals correctly, we must make sure that the offset spirals are normal to the initial spiral curve. This can be achieved by multiplying the offset distance \pm\frac{thick}{2} by the unit vector normal to the spiral curve. The equations of the normal vectors to a curve in parametric form are:

n_x=-\frac{dy}{ds} \quad \text{and} \quad n_y=\frac{dx}{ds}

where s is the parameter used in the Parametric Curve feature. To get a unit normal, we need to divide these expressions by the length of the normal:

\sqrt{(dx/ds)^2+(dy/ds)^2 }

Our updated parametric equations for the Archimedean spiral with a half-thickness shift are:

x_{component}=(a+bs)cos(s)-\frac{dy/ds}{\sqrt{(dx/ds)^2+(dy/ds)^2}}\frac{thick}{2} \\

Writing out these equations in the parametric curve’s expression fields can be rather time consuming. As such, we introduce the following notation:

N_x=-\frac{dy/ds}{\sqrt{(dx/ds)^2+(dy/ds)^2}} \\
N_y=\frac{dx/ds}{\sqrt{(dx/ds)^2+(dy/ds)^2 }}

where each N_x and N_y is defined via the Analytic function in COMSOL Multiphysics, similar to how we defined X_{fun} and Y_{fun} for the first parametric curve. Within the function, we use the differentiation operator, d(f(x),x), to take the derivative, as depicted in the following screenshot.

Screenshot showing examples of the derivative operator used in the Analytic function.
Examples of the derivative operator used in the Analytic function.

The functions X_{fun}, Y_{fun}, N_x, and N_y can then be used directly in the parametric curve’s expressions for the curve on one side:

x_{lower}=X_{fun}(s)+N_x(s)\frac{thick}{2} \\

The functions can also be used for the curve on the other side:

x_{upper}=X_{fun}(s)-N_x(s)\frac{thick}{2} \\

Equations for one of the offset parametric curves.
Equations for the second of the two offset parametric curves.

To join the ends of two curves, we add two more parametric curves using a slight modification of the equations mentioned above. For the curve that joins the center of the spiral, we have to evaluate X_{fun}, Y_{fun}, N_x, and N_y for the starting value of the angle, theta. For the curve that joins the outer side of the spiral, we have to evaluate the final value of theta. Therefore, the joining curve in the center is:

X_{fun}(theta_0)+s\cdot N_x(theta_0)\cdot\frac{thick}{2} \\
Y_{fun}(theta_0)+s\cdot N_y(theta_0)\cdot\frac{thick}{2}

The outer joining curve, meanwhile, is:

X_{fun}(theta_f)+s\cdot N_x(theta_f)\cdot\frac{thick}{2} \\
Y_{fun}(theta_f)+s\cdot N_y(theta_f)\cdot\frac{thick}{2}

In both of the above equations, s goes from -1 to +1, as shown in the screenshot below.

Equations for the curve joining one end of the spiral.
Equations for the curve that joins one end of the spiral.

We now have five curves that define the centerline of the spiral and all four sides of the profile. We can disable (or even delete) the curve describing the centerline since it isn’t truly necessary, leaving just the spiral outline. With the outline of our spiral defined, the Convert to Solid operation can be used to create a single geometry object. This 2D spiral can finally be extruded into 3D via the Extrude operation.

A screenshot depicting the full geometry sequence as well as the extruded 3D geometry.
The full geometry sequence and extruded 3D spiral geometry.

Closing Remarks on Modeling Archimedean Spirals in COMSOL Multiphysics

We have walked you through the steps of creating a fully parameterized Archimedean spiral. With this spiral geometry, you can change any of the parameters and experiment with different designs, or even use them as parameters in an optimization study. We encourage you to utilize this technique in your own modeling processes, advancing the analysis of your particular spiral-based engineering design.

Further Resources on Designing and Analyzing Spirals


Comments (9)

Leave a Comment
Log In | Registration
August 17, 2016

Many thanks…..really is very informative blog

Verónica Rodríguez
Verónica Rodríguez
June 1, 2017

Thank you!
Is very explicit

Nazım Can Öner
Nazım Can Öner
July 15, 2019

Thank you for your efforts, it helped a lot.
I have got a problem. When I extrude, it doesn’t appear like a solid part. Only my curves gain height…
Can you help me please?

September 4, 2020

You need to add “Convert to solid” in the Plane Geometry to make it a solid object

Boubaker Ben Ali
Boubaker Ben Ali
April 20, 2020

Thank you very much

Jonas Mark
Jonas Mark
June 12, 2020

How to define the arc length in the parameters table?

James Ransley
James Ransley
September 23, 2020

This is a useful blog post – thanks! Also, isn’t this an argument to allow the creation of local functions within a geometry part? It would be nice to use this geometry within a part, and then instantiate multiple parts with different spiral properties. Right now I think that to do that you would need to write out all the math by hand.

Feyzi Emrah Lasar
Feyzi Emrah Lasar
June 25, 2021

WOW! 😀 thanx

chalukya bhat
chalukya bhat
July 26, 2021

Thanks. I actually need to obtain a spiral in rectangular shape. Could you please help me with this ?