CFD Online Logo CFD Online URL
Home > Forums > Main CFD Forum

Normal - Helical Surface

Register Blogs Members List Search Today's Posts Mark Forums Read

LinkBack Thread Tools Display Modes
Old   January 31, 2006, 11:24
Default Normal - Helical Surface
m. malik
Posts: n/a
Want to know the equations for the unit normal on a helical surface (e.g., surface of a screw teeth). Thanks.

  Reply With Quote

Old   February 3, 2006, 03:53
Default Re: Normal - Helical Surface
Ananda Himansu
Posts: n/a
First, take a look at eqn.(11), the last equation in this posting. It might be the only thing you need. Think of u as the cylindrical radial coordinate, and v as the polar angular coordinate, and p as the pitch of the screw.

We use capital letters to denote vectors. Assume rectangular Cartesian coordinates x, y, z. Also, assume cylindrical polar coordinates r, t, z, such that the positive x axis (y = 0, x > 0) coincides with the r axis when the angular coordinate t is zero (t = 0, r > 0). Select the z axis as the axis of screw motion of the helix or helical surface. Define a helix as the curve traced by the screw motion of a base point (a generator point). Define a helical surface as the surface traced by the screw motion of a rigid base curve segment (or generator curve). This seems likely to be what you had in mind by the term "helical surface". A different type of "helical surface" might be one in which each point on the base curve "climbs" in the z direction at the same angle to the (x,y) plane. The analysis for such a surface would be different from but similar to the analysis that follows.

Let p be the pitch of the helix. This means that any point on the generator advances by a distance p in the z direction for every complete turn (2*pi radian rotation, where pi = 4*arctan(1)) around the screw axis. A positive value of p will correspond to a right-handed screw motion if (x,y,z) is a right-handed coordinate system.

We represent the helical surface parametrically. The base curve segment is parametrized by a parameter u belonging to the interval [u1, u2]. The screw motion is parametrized by a parameter v belonging to an infinite interval.

The base curve is specified by you in the representation:

x = x0(u); y = y0(u); z = z0(u) ------ (1)

The representation is transformed to cylindrical polar coordinates r0(u), t0(u), z0(u) (or alternatively, you may find it more convenient to directly specify the base curve in cylindrical polar coordinates, skipping eqn.(1)):

r = r0(u) = sqrt(x0^2 + y0^2); r0*cos(t0) = x0(u), r0*sin(t0) = y0(u); z = z0(u) ------ (2)

Next, the rigid base curve is subject to a screw motion to generate the helical surface. The screw motion is most conveniently described in the cylindrical polar coordinates:

r = rh(u,v) = r0(u); z = zh(u,v) = z0(u) + p*v/(2*pi); t = th(u,v) = t0(u) + v ------ (3)

In order to avoid ambiguity about the quadrant of v, we use cos(th) = cos(t0)*cos(v)-sin(t0)*sin(v) and sin(th) = sin(t0)*cos(v)+cos(t0)*sin(v) ------ (4)

Next, the cylindrical polar representation of the helical surface is transformed to rectangular Cartesians:

x = xh(u,v) = rh*cos(th); y = yh(u,v) = rh*sin(th); z = zh(u,v) ------ (5)

Now, the position vector of any point (u,v) on the helical surface can be written as

S(u,v) = xh(u,v)*I + yh(u,v)*J + zh(u,v)*K ------ (6)

where I, J, K are the unit vectors along the x, y, z directions.

Next, at any point (u,v) on the surface, the tangent plane can be characterized by two vectors:

U = dS/du; V = dS/dv ------ (7)

where the derivatives are partial derivatives. U is tangent to the surface in the direction of the helically transported image of the base curve, and V is tangent to the surface in the direction of the helix generated by the transported image of a point on the base curve.

Next, a vector normal to the tangent plane and thus to the helical surface is obtained as the cross product of the previous two vectors:

N = U x V ------ (8)

This can be normalized to yield a unit normal vector: N1 = N / sqrt(dot(N,N)) ------ (9)

where dot() is the dot product or euclidean inner product of vectors. If the parametrization of the base curve is such that increasing u implies increasing r, then dot(N,K) > 0. Equations (1) through (9) can be programmed quite easily on a computer.

Finally, as a special case, we mention the simplest helical surface in this coordinate representation, which is obtained by a base curve segment that coincides with a segment of the x axis. This case typifies the load-bearing surface of a screw thread, and it might be case that you are most interested in. For this case,

x0(u) = u; y0(u) = 0; z0(u) = 0 ------ (10)

The expressions simplify in this case to give

N = p/(2*pi)*(sin(v)*I - cos(v)*J) + u*K ------ (11)

Note that eqn.(9) should be used to calculate a unit normal N1. For u > 0, eqn.(11) gives the outward pointing normal to the load-bearing upper surface, but for u < 0 it gives the inward pointing normal of the upper surface. This is a consequence of r decreasing for u increasing when u < 0, according to the parametrization in eqn.(10). To get the outward pointing normal for u < 0, multiply the normal N from eqn.(11) by -1.
  Reply With Quote

Old   February 3, 2006, 10:09
Default Re: Normal - Helical Surface
m. malik
Posts: n/a
Ananda: Thank you very much for your posting. I am impressed by your detailed and methodical description. I guess this serves my purpose.

It may be of interest to you: The cfd problems that I am working on have polymer flow between rotating screw(s) and cylindrical barrel(s). I need surface normals to account for slip at the solid, moving and stationary, interfaces. Slip at solid interfaces is a common problem with many types of polymers.

Best regards.
  Reply With Quote

Old   February 3, 2006, 13:56
Default Re: Normal - Helical Surface
Ananda Himansu
Posts: n/a
Malik, glad the posting is helpful. Sounds like an interesting problem that you are working on. The special case in eqn.(11) of my posting should apply to your geometry. For the vertical part of the screw or the barrel surface, the general procedure can be used with the base curve:

x0(u) = rc; y0(u) = 0; z0(u) = -u

where rc is the inner radius of the barrel. Then follow the previous procedure to find N. But of course, the answer simplifies to what you would expect for the cylindrical surface, namely:

N = rc*(cos(v)*I+sin(v)*J)
  Reply With Quote


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Add additional boundary layers to complex stl surface tobijingles OpenFOAM Native Meshers: snappyHexMesh and Others 1 October 26, 2011 10:45
fuction for ddt(n) which n is normal surface vector mrshb4 OpenFOAM 0 April 11, 2011 06:34
boundaries with gmshToFoam‏ ouafa Open Source Meshers: Gmsh, Netgen, CGNS, ... 7 May 21, 2010 12:43
How do I compute the normal vector to a surface with FEM Vasilis Main CFD Forum 3 July 31, 2009 07:59
CFX4.3 -build analysis form Chie Min CFX 5 July 12, 2001 23:19

All times are GMT -4. The time now is 05:32.