WOLFRAM SYSTEM MODELER

ContactForcePointsInner

Class for calculation of cylindrical contact force between two teeth on an outer and inner spur gear

Diagram

Wolfram Language

In[1]:=
SystemModel["RotatingMachinery.Gears.Components.ContactForcePointsInner"]
Out[1]:=

Information

Inner Contact Force Calculation

This model calculates the force between two teeth on an outer spur gear and an inner spur gear. It also determines when this force should be applied, dependent on the isFront parameter and toothIndexShift

At initialization, a tooth pair will be selected with different indices, one tooth on the outer gear in frame_z1 and one tooth on the outer gear in frame_z2. Normally, six of these components are put in the component GearForceCalculationInner, which results in six tooth pairs. To visualize where these tooth pairs are located, it is possible to turn on a parameter called "debugPoints", which will result in the following visualization. 

Figure 1: Debug points.

Two spheres with the same color should be paired up together. This way, you can see if the forces have been placed at appropriate positions.

Contact Ratio

The contact ratio is calculated continuously and can be found by plotting the variable epsilon. Epsilon is calculated through the following equations:

The contact ratio should never be below 1 for a stable simulation result. If it is below 1, it might mean that the gears are too far apart, and the conditions for ContactForcePoints to switch teeth might not be triggered correctly.

Forces

The forces calculated depend on the distance between two coordinates in a tooth pair. The coordinates will always be on the line of contact (LoC). The force used is based on Hertz contact theory between two cylinders. 

It is assumed that the teeth have contact in the whole gearwheel width, i.e. no crowning. Equation for the Hertz contact width b:

 

and displacement of cylinders, delta:

 

where F is the force, nu is the Poisson ratio, Emod is Young's modulus, L is the length of the cylinder, and R is the radius of the cylinder. To simplify the equations, Ered is defined as:

 

With the preceding equations, delta as a function of contact force can be solved. However, the simulation time can be improved if the following equations are rewritten as shown. The error in deformation delta is normally less than 1% and in contact stress even better.

The relation between contact force and indentation depth can be written as:

 

where with good accuracy, k1 can be set to:

 

and

 

Then, the load indentation depth can be written as:

 

With the notation used in the source code:

 

This describes the force dependent on indentation depth and geometry of the cylinders. The geometry of the cylinders in contact will change when moving on the line of contact, i.e. the curvature radii rk1 and rk2 will either start with a small radius and increase when moving on the LoC or start with a big radius and decrease when moving on the LoC. They are defined through the following equation:

where rb1 and rb2 are the base circle radii of wheel 1 and wheel 2, respectively, and ToothBaseAngle describes the angle from the start of when the base of a tooth intersects with the LoC to its current angle. LoCTangent is a vector describing the LoC tangent line.

The forces are visualized by a blue and red arrow for each tooth pair, representing the force from wheel one and wheel two, respectively.

Contact Stress

The Hertz contact stress for a cylinder contact is:

 

ISO Standard Calculation

To be able to compare the forces from simulation to theoretical textbook values, there is a secondary implementation of the force. What can be compared is the contact pressure sigmaH and the indentation depth delta. The theoretical versions of these variables are called sigmaHTheoretical and deltaApprox. The theoretical values are calculated according to the formulas below:

 

where Kl is the load factor and Kv is the dynamic load factor (default value for both is 1).

where zH is the form factor, zM is the material factor, and zE is the gear ratio factor.

References

[1]  Dahl, M., H. Wettergren, and H. Tidefelt. "Modelica Spur Gears with Hertzian Contact Forces." Proceedings of the 12th International Modelica Conference, Prague, Czech Republic, May 15-17, 2017. Linköping Electronic Conference Proceedings 132, no. 82 (2017): 755-763. http://dx.doi.org/10.3384/ecp17132755.

Parameters (36)

L

Value:

Type: Length (m)

Description: Contact width of wheel

N_to_m

Value:

Type: Real (N/m)

Description: Parameter that scales the arrows indicating the forces between teeth

m

Value:

Type: Module (m)

Description: Gear module

alpha0

Value: 20 * Modelica.Constants.pi / 180

Type: Angle (rad)

Description: Reference profile angle

z1

Value:

Type: Integer

Description: Number of teeth in outer gear wheel

z2

Value:

Type: Integer

Description: Number of teeth in inner gear wheel

x1

Value:

Type: Real

Description: Profile shift for gear wheel one

x2

Value:

Type: Real

Description: Profile shift for gear wheel two

isFront

Value:

Type: Boolean

Description: Boolean to show if forward flank is used, true = front, false = rear. Front means forward flank if wheel is rotating counter-clockwise

useDebugPoints

Value: false

Type: Boolean

Description: Set to true to get visualizers on bases of active teeth

toothIndexShift

Value: 0

Type: Integer

Description: Parameter to shift the tooth initialized to. If = 0 will be the center tooth closest to LoC.

toothIndexSkip

Value: 2

Type: Integer

Description: How many teeth to skip when finding a new tooth to calculate p1 and p2

tipReliefAmplitude1

Value: 0.001 * m

Type: Distance (m)

Description: Tip relief amplitude of a gear tooth on the outer spur gear

tipReliefLength1

Value: 0.01 * m

Type: Distance (m)

Description: Tip relief length of a gear tooth on the outer spur gear

rb1

Value: m * z1 * cos(alpha0) / 2

Type: Radius (m)

Description: Base circle radius of tooth on wheel 1

rb2

Value: m * z2 * cos(alpha0) / 2

Type: Radius (m)

Description: Base circle radius of tooth on wheel 2

ra1

Value: m * (z1 / 2 + x1 + 1)

Type: Radius (m)

Description: Top circle radius tooth on outer gear wheel

ra2

Value: m * (z2 / 2 + x2 - 1)

Type: Radius (m)

Description: Top circle radius tooth on inner gear wheel

rf1

Value: m * (z1 / 2 + x1 - 1.25)

Type: Radius (m)

Description: Root circle radius on wheel 1

rf2

Value: m * (z2 / 2 + x2 + 1.25)

Type: Radius (m)

Description: Distance from center to bottom of inner gear

sa1

Value: (sb1 / rb1 - 2 * inva1) * ra1

Type: Distance (m)

Description: Top thickness of tooth on outer gear wheel

sa2

Value: (sb2 / rb2 + 2 * inva2) * ra2

Type: Distance (m)

Description: Top thickness of tooth on inner gear wheel

sb1

Value: (Modelica.Constants.pi / 2 + 2 * x1 * tan(alpha0) + z1 * inv20) * m * cos(alpha0)

Type: Distance (m)

Description: Base thickness of tooth on outer gear wheel

sb2

Value: (Modelica.Constants.pi / 2 - 2 * x2 * tan(alpha0) - z2 * inv20) * m * cos(alpha0)

Type: Distance (m)

Description: Base thickness of tooth on inner gear wheel

pb

Value: Modelica.Constants.pi * m * cos(alpha0)

Type: Distance (m)

Description: Distance of bottom for entire gear, front base of tooth n to front base of tooth n+1

inva1

Value: tan(alphaa1) - alphaa1

Type: Angle (rad)

Description: Involute for alphaa1

inva2

Value: tan(alphaa2) - alphaa2

Type: Angle (rad)

Description: Involute for alphaa2

inv20

Value: tan(alpha0) - alpha0

Type: Angle (rad)

Description: Involute of reference profile angle (inv(alpha0), alpha0 = 20 degrees)

alphaa1

Value: acos(rb1 / ra1)

Type: Angle (rad)

Description: Angle between rb1 and ra1 (first to last point of contact)

alphaa2

Value: acos(sqrt(ra1 ^ 2 - rb1 ^ 2) - rb1 / tan(alpha0) + rb2 / tan(alpha0))

Type: Angle (rad)

Description: Angle between rb2 and last point of contact

angleBetweenTeeth1

Value: 2 * Modelica.Constants.pi / z1

Type: Angle (rad)

Description: Angle between the teeth in outer gear wheel

angleBetweenTeeth2

Value: 2 * Modelica.Constants.pi / z2

Type: Angle (rad)

Description: Angle between the teeth in inner gear wheel

toothOffsetAngle1

Value: if isFront then sb1 / (2 * rb1) else -sb1 / (2 * rb1)

Type: Angle (rad)

Description: Offset angle (from center of tooth 1 to base of tooth 1 in outer wheel), depending on isFront

toothOffsetAngle2

Value: if isFront then (pb - sb2) / (2 * rb2) else -(pb - sb2) / (2 * rb2)

Type: Angle (rad)

Description: Offset angle (from center of tooth 1 to base of tooth 1 in inner wheel), depending on isFront

rollAngleRa1

Value: sqrt((ra1 / rb1) ^ 2 - 1)

Type: Angle (rad)

Description: Rolling angle for intersection with top circle on outer gear wheel

rollAngleRa2

Value: sqrt((ra2 / rb2) ^ 2 - 1)

Type: Angle (rad)

Description: Rolling angle for intersection with top circle on inner gear wheel

Connectors (2)

frame_z1

Type: Frame_a

Description: Coordinate system fixed to the component with one cut-force and cut-torque (filled rectangular icon)

frame_z2

Type: Frame_a

Description: Coordinate system fixed to the component with one cut-force and cut-torque (filled rectangular icon)

Components (12)

absolutePositionWheel1

Type: AbsolutePosition

Description: Measure absolute position vector of the origin of a frame connector

absolutePositionWheel2

Type: AbsolutePosition

Description: Measure absolute position vector of the origin of a frame connector

absoluteAnglesWheel1

Type: AbsoluteAngles

Description: Measure absolute angles between frame connector and the world frame

absoluteAnglesWheel2

Type: AbsoluteAngles

Description: Measure absolute angles between frame connector and the world frame

force_z2

Type: WorldForce

Description: External force acting at frame_b, defined by 3 input signals and resolved in frame world, frame_b or frame_resolve

force_z1

Type: WorldForce

Description: External force acting at frame_b, defined by 3 input signals and resolved in frame world, frame_b or frame_resolve

torque_z2

Type: WorldTorque

Description: External torque acting at frame_b, defined by 3 input signals and resolved in frame world, frame_b or frame_resolve

torque_z1

Type: WorldTorque

Description: External torque acting at frame_b, defined by 3 input signals and resolved in frame world, frame_b or frame_resolve

fixedShape

Type: FixedShape

Description: Visualizing an elementary shape with dynamically varying shape attributes (has one frame connector)

fixedShape1

Type: FixedShape

Description: Visualizing an elementary shape with dynamically varying shape attributes (has one frame connector)

arrow2

Type: Arrow

Description: Visualizing an arrow with variable size

arrow1

Type: Arrow

Description: Visualizing an arrow with variable size

Used in Components (1)

GearForceCalculationInner

RotatingMachinery.Gears.Components

Class calculating internal gear mesh contact forces