Occasionally, contact stresses play a role in a mechanical design. Herzian stress equations are needed to calculate indentation and to check if the yield stress isn’t exceeded.

Because programming is a hobby of mine, it seemed like a good idea to make a Hertzian contact stress calculator. Just for my own use. That calculator gradually became more mature. And it turned out that more people needed a handy calculator to calculate Hertzian contact stresses. So I decided to give the program a name and to offer it on the website. Since then, HertzWin has grown into a calculator with many features.

Using Approximation Formulas at First

The calculation of elliptical contacts requires the solving of elliptic integrals. And because there are no mathematical solutions for this, approximation formulas are often used. Initially, the HertzWin program also worked with approximation formulas.

There are many approximations around. The early versions of HertzWin used the approximations as suggested by A. Horowitz in A contribution to the engineering design of machine elements involving contrashaped contacts (1971). In most cases, these approximations are sufficiently accurate for the mechanical designer.

Numerical Integration of Elliptic Integrals

At one point I encountered a publication by E.W. Deeg, New Algorithms for Calculating Hertzian Stresses, Deformations, and Contact Zone Parameters (2004). It contains a clear description of how you can work out the elliptic integrals relatively easily, including a detailed example in MathCad. Solving the elliptic integrals seemed a nice addition and improvement of HertzWin to me. The Hertzian stress calculator becomes even more accurate!

First Public Release

The first release that became available on the website, release 1.0, contained two calculation methods. The method with approximation formulas and the method with the numerical integration of the elliptic integrals. The underlying reason for including both methods was that colleagues used the MS-DOS program ‘Hertz.exe’, developed by C. Thijsse (Philips CFT 1990). And HertzWin used exactly the same approximation that was applied in ‘Hertz.exe’.

By implementing both methods, both outcomes could be compared and confidence in the exact outcomes could be built. Since release 2.0, the approximation formulas and method are no longer present in HertzWin. The method with approximation formulas no longer had any added value and led to confusion at most. Because the MS-DOS program ‘Hertz.exe’ no longer worked under Windows 7, the popularity of HertzWin increased rapidly.

Implementation of Numerical Integration of Elliptic Integrals

To process a simple formula in MathCad (from the publication of Deeg) into HertzWin requires some work. First of all, a suitable integration method must be found. There are several, but the Simpson’s rule is efficient and easy to implement.

HertzWin uses the Simpson’s Rule with an estimate of the truncation error. Although the program now claims to present the exact solution, a small residual error always remains in the numerical process. Also, calculation speed is of importance and therefore Hertzwin has experimentally determined to what accuracy the integral function is calculated. The relative truncation error is set at 2E-6.

A Root-Finding Algorithm

The calculation of the dimensions of the contact ellipse starts with the calculation of the ratio between the radii B/A. In that calculation process, the root of a function must be determined. For this, the stable method of regula falsi was used with Hamming’s correction for faster convergence. The Hamming’s correction appeared to be slightly faster (in HertzWin) than the Ridder’s modification. The truncation error is here also set at 2E-6.

Starting Point for the Calculation of the Ratio Between the Radii B/A

Because the method of regula falsi is not particularly fast, it is important to start with a good estimate for the ratio between the radii B/A. This will limit the required number of iterations and benefits the total required computing time. The estimate from Deegs article has been replaced by a better, very good estimate from Advanced Engineering Design by A. van Beek.

Unfortunately, Van Beek’s estimate can not be used for situations where the main axes of the radii are not in line. For these situations the estimate of Roark’s Formulas for Stress and Strain by W.C. Young and R.G. Budynas is used, including interpolation between the values in the table.

Maximum Shear Stress and Poisson’s Ratio

For the maximum shear stress, often an approximation is used: 0.32*Shertz (Shertz = Hertzian contact stress). This maximum shear stress occurs below the surface at a depth of approximately 0.48*b (b = minor contact radius). However, this depth only applies to a circular contact. For elliptical contact the depth can reach ~0.8*b.

At first, this simple approximation was not used in HertzWin but a curve fit of Table 4.1 in Contact Mechanics by K.L Johnson (1985). However, a disadvantage remained that the outcome is only valid for a Poisson constant of ~0.3. An article by I. Green, Poisson Ratio Effects and Critical Values in Spherical and Cylindrical Hertzian Contacts put me on track to calculate the shear stress as a function of the Poisson ratio.

In release 2.4.0, the curve fit from I. Green has been extended with my own curve fit for elliptical contacts. This curve-fit also depends on the Poisson’s Ratio of the material. The calculation has been further improved since release 2.9.0 of HertzWin. Now the shear stress is calculated at various depths around the expected maximum. The real maximum and the corresponding depth are determined via a quadratic fit. The increased accuracy costs a little extra computing time but can deal with all values for the Poisson’s Ratio.

Line Contact

Fortunately, calculating line contacts is much less intensive. The size of the contact area is easy to determine as well as the other data. Dependency on the Poisson’s Ratio is solved in a similar way as with point contacts.

Stiffness of Line Contact

The main difference between line contact and point contact is that the stiffness in a line contact does not fall within the Hertz theory. The degree of compression depends on the dimensions of the cylinder. It is however possible to calculate the impression with respect to a certain location in the material. HertzWin uses the ‘anvil model‘ from Contact Mechanics from K.L. Johnson (chapter 5.6), as also proposed by J.J. Barber, Contact Mechanics (2018).

Von Mises and Tresca Stress

As a mechanical designer you are interested in the maximum permissible load in your construction. The yield strength may not be exceeded. The Tresca criterion for yield is often used for point and line contacts. The reason for this is that the Tresca stress is easy to determine: 2x the maximum shear stress.

The disadvantage of the Tresca criterion is that it is conservative. The maximum allowable load is on the safe side. A better criterion is the Von Mises criterion, which is based on the maximum deformation energy. The Von Mises yield criterion is more difficult to determine for point and line contacts because the three main stresses have to be determined. One can use the rule of thumb from K.L. Johnson (chapter 6.1) for the maximum permissible stress: Shertz < 1.6*Svloei .. 1.8*Shertz.

Starting from release 2.4.0, the Von Mises stress is also calculated in HertzWin. In the main window, first on the basis of curve-fits. But as from release 2.9.0, the Von Mises stress is calculated in a similar way as for the maximum shear stress. First the main stress are calculated and the corresponding Von Mises stresses are calculated at different depths. Then the maximum value is determined.

Deformation and Stress Graphs

For those who want to know in more detail how the material stresses develop at different locations, HertzWin can draw all kinds of graphs. This functionality is added to HertzWin in release 2.4.0. The book Contact Mechanics from K.L. Johnson (1985) is thé source of all formulas used here.

During the implementation it was however confusing (and a bit surprising) that there is a small error in one of the formulas for the stress in line contacts (formula [4.46b]). A double check in Shigley’s Mechanical Engineering Design, from R.G. Budynas and J.K. Nisbett confirmed it is an error.

When in HertzWin the graph is opened, it takes a few seconds before the entire graph is drawn. For the stresses along the Z-axis (below the contact surface), 61 positions are calculated. And for each position two elliptic integrals have to be solved. These are many iterations!

Surface Roughness

The MS-DOS program ‘Hertz.exe’ (from C. Thijsse), briefly mentioned above, also had the possibility to calculate the influence of surface roughness. The theory of Greenwood & Tripp, which is based on Gaussian distributed roughness asperities, is described in Contact Mechanics of K.L. Johnson. However, implementation seemed rather difficult because it requires input of (often) unknown parameters.

By coincidence, I came into contact with C. Thijsse, who, when asked, wanted to give me the source code of Hertz.exe. In the source code, I saw that he used a simple, but excellent curve-fit of figure 13.12 from K.L. Johnson’s book. This curve-fit is now also used by HertzWin. See the help function in HertzWin for more information.


In addition to surface roughness, the MS-DOS program ‘Hertz.exe’ also included the possibility to calculate a minimum hardness of the materials used. A desired number of revolutions and the lubrication conditions were the required input. At the request of users, this functionality has also been added to HertzWin.

The algorithm for the lifetime calculation is derived from theories and measured values from different authors. These are mainly from literature about gears. Used sources are:

The results are only valid for steel and cast iron materials. Unfortunately, there are no further details or documentation about the backgrounds of the algorithms used.

Microsoft Windows

The development of HertzWin started under Windows XP. Besides the functionality, the program must of course also continue to work under newer operating systems. The arrival of Windows 7 had a considerable impact. The overall design was a mess and buttons and texts were poorly visible.

The problems were pretty easy to solve although it did not turn out as good as it should be. A so-called ‘manifest file’ had to be added. Only then are all elements of the program displayed as it should be.

Thanks to the fantastic tool Manifest Creator from LaVolpe ‘, creating a manifest file became a breeze. The latest update of the manifest file in release 2.9.0, also makes HertzWin look as intended under Windows 10.