gearbox.models#

Input models: cutting tool, material, lubricant and gear.

All models are immutable dataclasses. Derived geometry is exposed as read-only properties, so a modified copy (e.g. a different profile shift) is obtained with dataclasses.replace():

shifted_pinion = dataclasses.replace(pinion, profile_shift_coefficient=0.3)

Units follow the usual gear-calculation conventions: lengths in mm, angles in degrees, stresses in MPa, density in kg/mm^3, kinematic viscosity in mm^2/s (cSt).

class Tool[source]#

Bases: object

Basic rack / generating tool profile.

All “coefficient” lengths are dimensionless and multiplied by the normal module.

addendum_coefficient#

Tool addendum (ha*P), e.g. 1.0 for the standard rack.

Type:

float

dedendum_coefficient#

Tool dedendum (hf*P), e.g. 1.25.

Type:

float

root_fillet_radius_coefficient#

Tool tip radius (rho_fP*), e.g. 0.38.

Type:

float

bottom_clearance_coefficient#

Bottom clearance (c*), 0.25 by default.

Type:

float

profile_shift_coefficient#

Profile shift of the tool (x_0, AGMA 908 geometry factor).

Type:

float

tool_edge_radius_coefficient#

Tool tip radius rho_a0 of the AGMA geometry factor; defaults to the root fillet radius coefficient of the tool.

Type:

float | None

tool_tip_displacement#

delta_a0 of the AGMA geometry factor (AGMA 908 notation).

Type:

float

cutter_type#

Hob or shaper cutter; a shaper changes the tooth root model of ISO 6336-3.

Type:

CutterType

cutter_teeth#

Number of teeth of the generating cutter (n_c), AGMA 908-B89 clause 5.5; 10 000 represents a hob or rack cutter (the default), a smaller number a shaper cutter.

Type:

float

residual_fillet_undercut_coefficient#

Residual fillet undercut s_pr left by a protuberance tool, in modules (ISO 6336-3 formula 26); 0 when the gear is not undercut.

Type:

float

__init__(*, addendum_coefficient, dedendum_coefficient, root_fillet_radius_coefficient, bottom_clearance_coefficient=0.25, profile_shift_coefficient=0.0, tool_edge_radius_coefficient=None, tool_tip_displacement=0.0, cutter_type=CutterType.HOB, cutter_teeth=10000.0, residual_fillet_undercut_coefficient=0.0)#
class Material[source]#

Bases: object

Gear material and its strength data (see ISO 6336-5).

name#

Free-text description.

Type:

str

material_type#

Material group; selects the life, roughness and size factors.

Type:

MaterialType

contact_stress_limit#

Allowable stress number for contact, sigma_Hlim [MPa].

Type:

float

bending_stress_limit#

Allowable stress number for bending, sigma_Flim [MPa].

Type:

float

brinell_hardness#

Hardness HB of the tooth flank.

Type:

float

allowable_contact_stress_number#

AGMA s_ac [MPa] (AGMA 2001-D04 tables 3 to 6). Optional; when given for both gears the AGMA pitting result includes the safety factor.

Type:

float | None

allowable_bending_stress_number#

AGMA s_at [MPa]; same use for bending.

Type:

float | None

yield_strength#

Yield point sigma_S (normalized steel St) or 0.2 % proof stress sigma_0.2 (through-hardened steel and pearlitic ductile iron) [MPa]. Only needed for the static bending strength of those materials (ISO 6336-3 formulae 78 and 79).

Type:

float | None

elastic_modulus#

Young’s modulus E [MPa].

Type:

float

poissons_ratio#

Poisson’s ratio nu.

Type:

float

density#

Mass density [kg/mm^3].

Type:

float

__init__(*, contact_stress_limit, bending_stress_limit, brinell_hardness, material_type, name='', yield_strength=None, allowable_contact_stress_number=None, allowable_bending_stress_number=None, elastic_modulus=206000.0, poissons_ratio=0.3, density=7.83e-06)#
class Lubricant[source]#

Bases: object

Lubricant.

kinematic_viscosity_40c#

Kinematic viscosity at 40 degC [mm^2/s].

Type:

float

name#

Free-text description.

Type:

str

__init__(*, kinematic_viscosity_40c, name='')#
class GearTolerances[source]#

Bases: object

Flank tolerances of ISO 1328-1:2013 for the gear’s tolerance class (micrometres).

single_pitch_deviation: float#

f_pT, single pitch tolerance (formula 5).

total_cumulative_pitch_deviation: float#

F_pT, total cumulative pitch tolerance (6).

profile_total_deviation: float#

F_alphaT, total profile tolerance (9).

helix_total_deviation: float#

F_betaT, total helix tolerance (12).

profile_form_deviation: float#

f_falphaT, profile form tolerance (8).

profile_slope_deviation: float#

f_HalphaT, profile slope tolerance (7).

helix_slope_deviation: float#

f_HbetaT, helix slope tolerance (10).

helix_form_deviation: float#

f_fbetaT, helix form tolerance (11).

helix_slope_deviation_grade5: float#

f_HbetaT of tolerance class 5 (f_Hbeta5 of ISO 6336-1 formula 55).

__init__(single_pitch_deviation, total_cumulative_pitch_deviation, profile_total_deviation, helix_total_deviation, profile_form_deviation, profile_slope_deviation, helix_slope_deviation, helix_form_deviation, helix_slope_deviation_grade5)#
class Gear[source]#

Bases: object

A cylindrical (spur or helical) involute gear.

tool#

Generating tool profile.

Type:

Tool

material#

Gear material.

Type:

Material

number_of_teeth#

Number of teeth z.

Type:

int

module#

Normal module m_n [mm].

Type:

float

face_width#

Face width b [mm]. For a double helical gear it is the width b_B of each helix (without the gap); the total width is 2 b_B.

Type:

float

quality_grade#

ISO 1328-1:2013 flank tolerance class (1 to 11, e.g. 6).

Type:

float

surface_roughness#

Mean peak-to-valley flank roughness Rz [micrometres].

Type:

float

root_surface_roughness#

Roughness Rz of the tooth root fillet [micrometres] used by the relative surface factor Y_R_relT; defaults to surface_roughness.

Type:

float | None

shaft_diameter#

Shaft diameter at the gear d_sh [mm].

Type:

float

shaft_arrangement#

Position of the gear on its shaft (ISO 6336-1).

Type:

ShaftArrangement

bearing_span#

Bearing span l [mm].

Type:

float

offset#

Distance s of the gear midface from the bearing midspan [mm].

Type:

float

helix_angle#

Reference helix angle beta [deg]; 0 for spur gears.

Type:

float

pressure_angle#

Normal pressure angle alpha_n [deg].

Type:

float

profile_shift_coefficient#

Profile shift coefficient x.

Type:

float

web_thickness#

Web thickness b_s [mm]; defaults to the face width.

Type:

float | None

grinding_notch_depth#

Depth t_g of a grinding notch in the root fillet near the critical section [mm] (ISO 6336-3 clause 7.3); with grinding_notch_radius it replaces Y_S by Y_Sg (formula 65).

Type:

float | None

grinding_notch_radius#

Radius rho_g of that notch [mm].

Type:

float | None

rim_thickness#

Rim thickness s_R [mm]; None for a solid disc.

Type:

float | None

backlash#

Tooth thickness allowance used by the AGMA geometry factor [mm/mm].

Type:

float

crowning#

Lengthwise crowning (AGMA).

Type:

Crowning

assembly_condition#

Mesh alignment condition (AGMA).

Type:

AssemblyCondition

lead_modification#

Helix modification case (ISO).

Type:

LeadModification

favorable_contact#

True if the contact pattern is favourable (ISO 6336-1).

Type:

bool

internal#

True for an internal gear (ring). Only the wheel of a pair can be internal. number_of_teeth is then still given as a positive count; the formulae of ISO 6336 use signed_number_of_teeth, and every diameter property (reference, tip, root, base) is negative, as in the sign convention of ISO 6336-1. The profile shift coefficient x is the one of ISO 6336-3 formula (24): positive x thickens the tooth and moves it towards the axis.

Type:

bool

double_helical#

True for a double helical gear (two helices of opposite hand, each of width face_width); ISO 6336 only, the two halves are treated as two helical gears in parallel sharing the load equally (ISO 6336-1 clause 4.2.1).

Type:

bool

property minimum_profile_shift_coefficient: float#

Smallest profile shift without undercut, x_min = h_aP* - z_n sin^2(alpha_n) / 2.

z_n is the virtual number of teeth, so the limit also holds for helical gears. Smaller shifts cut into the tooth root (theoretical limit; a slight undercut is often accepted).

Raises:

ValueError – For internal gears, which have no undercut limit of this kind.

property signed_number_of_teeth: int#

negative for an internal gear.

Type:

z with the sign of ISO 6336-1

property transverse_pressure_angle: float#

alpha_t [deg].

property transverse_module: float#

m_t = m_n / cos(beta).

property reference_diameter: float#

d [mm]; negative for an internal gear.

property tip_diameter: float#

d_a [mm]; negative for an internal gear (|d_a| < |d|).

property root_diameter: float#

d_f [mm]; negative for an internal gear (|d_f| > |d|).

__init__(*, tool, material, number_of_teeth, module, face_width, quality_grade, surface_roughness, shaft_diameter, shaft_arrangement, bearing_span, offset, helix_angle=0.0, pressure_angle=20.0, profile_shift_coefficient=0.0, root_surface_roughness=None, grinding_notch_depth=None, grinding_notch_radius=None, web_thickness=None, rim_thickness=None, backlash=0.0, crowning=Crowning.UNCROWNED, assembly_condition=AssemblyCondition.NOT_IMPROVED, lead_modification=LeadModification.NONE, favorable_contact=False, double_helical=False, internal=False)#
property base_diameter: float#

d_b [mm]; negative for an internal gear.

property addendum: float#

h_a [mm].

property dedendum: float#

h_f [mm].

property tooth_height: float#

h = h_a + h_f [mm].

property root_fillet_radius: float#

rho_f [mm].

property normal_base_pitch: float#

p_bn [mm].

property base_helix_angle: float#

beta_b [deg].

property virtual_number_of_teeth: float#

z_n, number of teeth of the virtual spur gear in the normal section.

Negative for an internal gear.

property tolerances: GearTolerances#

2013 flank tolerances for this gear’s size and tolerance class.

Raises:

ValueError – If the gear is outside the range of the standard (5 <= z <= 1000, 5 <= d <= 15000 mm, 0.5 <= m_n <= 70 mm, 4 <= b <= 1200 mm, beta <= 45 deg).

Type:

ISO 1328-1