gearbox.optimization#

Profile shift (addendum modification) optimisation of a gear pair.

The helpers keep the sum of the profile shift coefficients constant (i.e. the working centre distance of the pair) and only distribute it between pinion and wheel. The input Transmission is never modified.

A distribution x1 + x2 = const is feasible when

  • neither gear is undercut (x_i >= Gear.minimum_profile_shift_coefficient),

  • the (transverse) tip land of both gears is at least minimum_tip_land * m and

  • the transverse contact ratio is at least minimum_contact_ratio.

DEFAULT_MINIMUM_TIP_LAND = 0.2#

Smallest tip land, in modules.

DEFAULT_MINIMUM_CONTACT_RATIO = 1.2#

Smallest transverse contact ratio.

class ProfileShifts[source]#

Bases: NamedTuple

Profile shift coefficients of the pinion and of the wheel.

pinion: float#

Alias for field number 0

wheel: float#

Alias for field number 1

static __new__(_cls, pinion, wheel)#

Create new instance of ProfileShifts(pinion, wheel)

feasible_pinion_profile_shift_range(transmission, minimum_tip_land=DEFAULT_MINIMUM_TIP_LAND, minimum_contact_ratio=DEFAULT_MINIMUM_CONTACT_RATIO)[source]#

Range of pinion profile shifts x1 that satisfy every geometric constraint.

Parameters:
  • transmission (Transmission) – Gear pair; only the sum of its profile shifts is used.

  • minimum_tip_land (float) – Smallest tip land of either gear, in units of the module.

  • minimum_contact_ratio (float) – Smallest transverse contact ratio.

Returns:

(x1_min, x1_max). If the feasible set is made of several intervals, the widest one.

Raises:

ValueError – If no distribution of the profile shift sum is feasible, or the wheel is an internal gear (the geometric limits used here are those of external gears).

Return type:

tuple[float, float]

maximum_profile_shifts(transmission, minimum_tip_land=DEFAULT_MINIMUM_TIP_LAND, minimum_contact_ratio=DEFAULT_MINIMUM_CONTACT_RATIO)[source]#

Distribution with the largest pinion profile shift allowed by the geometry.

A larger pinion shift thickens the pinion tooth root, which lowers its bending stress.

Raises:

ValueError – If no distribution is feasible.

Return type:

ProfileShifts

minimum_contact_stress_profile_shifts(transmission, standard=Standard.ISO, minimum_tip_land=DEFAULT_MINIMUM_TIP_LAND, minimum_contact_ratio=DEFAULT_MINIMUM_CONTACT_RATIO)[source]#

Profile shift distribution that minimises the contact stress.

The stress is sampled over the feasible range (feasible_pinion_profile_shift_range()) and the best sample is refined by bounded Brent minimisation, so the result does not depend on the stress being monotonic or unimodal over the whole range.

Parameters:
  • transmission (Transmission) – Gear pair to optimise.

  • standard (Standard | str) – Standard that evaluates the contact stress ("ISO" or "AGMA"). For ISO, the larger of the pinion and wheel stresses governs.

  • minimum_tip_land (float) – Smallest tip land of either gear, in units of the module.

  • minimum_contact_ratio (float) – Smallest transverse contact ratio.

Returns:

The optimum ProfileShifts.

Raises:

ValueError – If no distribution is feasible.

Return type:

ProfileShifts