Gear Sets#

class HelicalGearSet(**kwds)#
Creates a helical gear set.

The gear set consists of two HelicalGear elements, where:

  • Gear 1 is usually the small gear,

  • Gear 2 is usually the big gear.

The HelicalGearSet is defined by the following dimensions (see Comment 10):

Geometry of a helical gear set.

Helical Gearset Geometry.#

Example

Connect two parts with a helical gearset.#
from msolve import *
from msolve.machinery.gears.gearsets import HelicalGearSet

model = Model(output="helical_gearset")

ground = Part(ground=True)
global_ref = Marker(body=ground)

Units(mass="KILOGRAM", length="MILLIMETER", time="SECOND", force="NEWTON")
Accgrav(kgrav=-9.81)

marker_0 = Marker(body=ground, qp=[0,0,0], zv=[0,0,1], xv=[1,0,0])
marker_1 = Marker(body=ground, qp=[200,0,0], zv=[0,0,1], xv=[1,0,0])

part_0 = Part(ip=[5,5,5,0,0,0], mass=0.001, cm=Marker(qp=[0,0,0], zv=[0,0,1], xv=[1,0,0]))
part_1 = Part(ip=[5,5,5,0,0,0], mass=0.001, cm=Marker(qp=[200,0,0], zv=[0,0,1], xv=[1,0,0]))

jt_small_gear_rev = Joint(type="REVOLUTE", i=part_0.cm.id, j=global_ref.id)
jt_big_gear_rev = Joint(type="REVOLUTE", i=part_1.cm.id, j=Marker(body=ground, qp=[200,0,0], zv=[0,0,1],
                                                                  xv=[1,0,0]))

mot_driver = Motion(joint=jt_small_gear_rev.id, dtype="VELOCITY", icdisp=0.0, function="STEP(TIME,0,0,1,1)")

helical_gearset_0 = HelicalGearSet(rm=marker_0, rm_2=marker_1, g1_connection_part=part_0,
                                   g2_connection_part=part_1, module=2.0, gear_ratio=2.0,
                                   pressure_angle=20.0, helix_angle=15.0, width_1=80.0,
                                   width_2=80.0, contact_stiffness=10000.0, contact_exponent=1.0,
                                   contact_damping=100.0, contact_dmax=0.1)

Name

Type

Symbol

Required

Default

Modifiable

active

Bool

True

\(\checkmark\)

addendum_coefficient

Double

\(h_{a}^{*}\)

1

contact_coulomb_friction

Enum

OFF

contact_creation

Bool

True

contact_damping

Double

1.0

contact_dmax

Double

0.1

contact_exponent

Double

2.1

contact_friction_transition_velocity

Double

1.5

contact_mu_dynamic

Double

0.1

contact_mu_static

Double

0.2

contact_stiction_transition_velocity

Double

1

contact_stiffness

Double

100000.0

dedendum_coefficient

Double

\(h_{f}^{*}\)

1.25

density

Double

export_graphic

Bool

False

export_parameters

Bool

False

g1_connection_part

Reference - Body

\(\checkmark\)

g1_connection_type

Enum

FIXED

g2_connection_part

Reference - Body

\(\checkmark\)

g2_connection_type

Enum

FIXED

gear_ratio

Double

\(u\)

\(\checkmark\)

helix_angle

Double

\(\beta\)

\(\checkmark\)

hub_diameter_1

Double

\(d_{i/o1}\)

0.0

hub_diameter_2

Double

\(d_{i/o2}\)

0.0

id

Int

Auto

j1

Double

\(j_{1}^{*}\)

0.04

j2

Double

\(j_{2}^{*}\)

0.04

label

Str

module

Double

\(m_{n}\)

\(\checkmark\)

name

Str

non_uniform_factor

Double

1.2

num_curve_segments

Int

10

num_of_teeth_1

Int

\(z_{1}\)

\(\checkmark\)

num_of_teeth_2

Int

\(z_{2}\)

\(\checkmark\)

num_width_segments

Int

20

pressure_angle

Double

\(a_{n}\)

\(\checkmark\)

rm

Reference - Marker

\(\checkmark\)

rm_2

Reference - Marker

tool_tip_radius_coefficient

Double

\(r_{f}^{*}\)

0.38

width_1

Double

\(b_{1}\)

\(\checkmark\)

width_2

Double

\(b_{2}\)

\(\checkmark\)

x1

Double

\(x_{1}^{*}\)

x2

Double

\(x_{2}^{*}\)

active#

Defines the state of the object.

Type=Bool, Default=True, Modifiable

addendum_coefficient#

The basic rack addendum coefficient. (ha*)

Type=Double, Default=1

contact_coulomb_friction#

Specifies the friction force model that will be used to compute thegears contact friction force.

See Contact.coulomb_friction.

Type=Enum, Default=OFF

Permitted values are:

  • DYNAMICS_ONLY

  • OFF

  • ON

contact_creation#

Activates an IMPACT contact between the two gears.

See Contact.

Type=Bool, Default=True

contact_damping#

Specifies the maximum damping coefficient that is to be used for generating a damping force on the gears contact.

See Contact.damping.

Type=Double, Default=1.0

contact_dmax#

Specifies the penetration at which full damping is applied in the gears contact.

See Contact.dmax.

Type=Double, Default=0.1

contact_exponent#

Specifies the exponent of the force deformation characteristic of the gears contact.

See Contact.exponent.

Type=Double, Default=2.1

contact_friction_transition_velocity#

Defines the slip velocity at which the dynamic coefficient of friction, mu_dynamic, is applied.

See Contact.friction_transition_velocity.

Type=Double, Default=1.5

contact_mu_dynamic#

Defines the coefficient of dynamic friction in gears contact when the friction is in the dynamic regime.

See Contact.mu_dynamic.

Type=Double, Default=0.1

contact_mu_static#

Defines the coefficient of static friction in gears contact when the friction is in the static regime.

See Contact.mu_static.

Type=Double, Default=0.2

contact_stiction_transition_velocity#

Defines the slip velocity at which the static coefficient of friction, mu_static, is applied.

See Contact.stiction_transition_velocity.

Type=Double, Default=1

contact_stiffness#

Specifies the stiffness parameter of the gears contact.

See Contact.stiffness.

Type=Double, Default=100000.0

dedendum_coefficient#

The basic rack dedendum coefficient. (hf*)

Type=Double, Default=1.25

density#

The density of the gears.

See Comment 4.

Type=Double

export_graphic#

Exports the gears geometries in two .stl files.

Type=Bool, Default=False

export_parameters#

Exports the calculated gearset and gears parameters into a .json file.

Type=Bool, Default=False

g1_connection_part#

The connection part of the gear 1 element.

Type=Reference (Body), Required

g1_connection_type#

The connection type of the gear 1 element.

Type=Enum, Default=FIXED

Permitted values are:

  • FIXED

  • REVOLUTE

g2_connection_part#

The connection part of the gear 2 element.

Type=Reference (Body), Required

g2_connection_type#

The connection type of the gear 2 element.

Type=Enum, Default=FIXED

Permitted values are:

  • FIXED

  • REVOLUTE

gear_ratio#

The gear ratio. It is defined as (z2/z1) for simple helical gear setor (z3/z1) for the planetary gear set (u).

See Comment 5, Comment 7.

Type=Double, Required, Default=0.0

helix_angle#

The helix angle in the pitch diameter.

Type=Double, Required

hub_diameter_1#

The hub diameter of the gear 1.

Type=Double, Default=0.0

hub_diameter_2#

The hub diameter of the gear 2.

Type=Double, Default=0.0

id#

The id of the object.

Type=Int

j1#

The circumferential backlash ratio (multiplied by circular pitch), linear measure along pitch circle of the gear 1. (j1*)

See Comment 2.

Type=Double, Default=0.04

j2#

The circumferential backlash ratio (multiplied by circular pitch), linear measure along pitch circle of the gear 2. (j2*)

See Comment 2.

Type=Double, Default=0.04

label#

The label of the composite element.

Type=Str

module#

The normal module of the gears. (mn)

Type=Double, Required, Default=0.0

name#

Defines a nametag for the object.

Type=Str

non_uniform_factor#

Defines the factor of the non uniform mesh. The length of each previouselement is multiplied by this factor to get the length of the current element length.

Type=Double, Default=1.2

num_curve_segments#

(Number of subdivisions for the base curve.) The number of mesh segments on involute profile of the gear. When using non uniform mesh this parameter will be always an even number.(The profile is split on two symmetric regions)

Type=Int, Default=10

num_of_teeth_1#

The number of teeth of the gear 1. (z1)

See Comment 5, Comment 7.

Type=Int, Required, Default=0

num_of_teeth_2#

The number of teeth of the gear 2. (z2)

See Comment 5, Comment 7.

Type=Int, Required, Default=0

num_width_segments#

(Number of subdivisions for the width.)The number of mesh segments on the width of the gear.

Type=Int, Default=20

pressure_angle#

The normal pressure angle. (alpha) - [deg].

Type=Double, Required

rm#

The reference marker of the composite element.

Type=Reference (Marker), Required

rm_2#

The reference marker of the gear 2 element.

Type=Reference (Marker)

tool_tip_radius_coefficient#

The basic rack tool tip radius coefficient. (rf*)

Type=Double, Default=0.38

width_1#

Gear 1 width.

Type=Double, Required

width_2#

Gear 2 width.

Type=Double, Required

x1#

The normal profile shift coefficient of the gear 1 (x*1).

See Comment 6.

Type=Double

x2#

The normal profile shift coefficient of the gear 2 (x*2).

See Comment 6.

Type=Double

class PlanetaryGearSet(**kwds)#
Creates a planetary gear set.

The gear set consists of:

  • a sun gear, referenced as gear 1,

  • \(N\) planets, referenced as gear 2,

  • a ring gear, referenced as gear 3.

All gears are HelicalGear elements.

The PlanetaryGearSet is defined by the following dimensions (see Comment 11, Comment 12, Comment 13):

Geometry of a planetary gear set.

Planetary Gearset Geometry.#

Example

Connect two parts with a planetary gearset.#
from msolve import *
from msolve.machinery.gears.gearsets import PlanetaryGearSet

model = Model(output="planetary_gearset")

ground = Part(ground=True)
global_ref = Marker(body=ground)

Units(mass="KILOGRAM", length="MILLIMETER", time="SECOND", force="NEWTON")
Accgrav(kgrav=-9.81)

marker_0 = Marker(label="Marker0", body=ground, qp=[0,0,0], zv=[0,0,1], xv=[1,0,0])
marker_1 = Marker(label="Marker1", body=ground, qp=[200,0,0], zv=[0,0,1], xv=[1,0,0])

part_0 = Part(label="Body0", ip=[5,5,5,0,0,0], mass=0.001, cm=Marker(qp=[0,0,0], zv=[0,0,1], xv=[1,0,0]))
part_1 = Part(label="Body1", ip=[5,5,5,0,0,0], mass=0.001, cm=Marker(qp=[0,0,0], zv=[0,0,1], xv=[1,0,0]))

jt_sun_gear_rev = Joint(label="Joint 0", type="REVOLUTE", i=part_0.cm.id, j=global_ref.id)
jt_carrier_rev = Joint(label="Joint 1", type="REVOLUTE",
                       i=Marker(body=part_1, qp=[0,0,0], zv=[0,0,1], xv=[1,0,0]),
                       j=Marker(body=ground, qp=[0,0,0], zv=[0,0,1], xv=[1,0,0]))

mot_driver = Motion(joint=jt_sun_gear_rev.id, dtype="VELOCITY", icdisp=0.0, function="STEP(TIME,0,0,1,1)")

planetary_gearset_0 = PlanetaryGearSet(rm=marker_0, rm_2=marker_1, carrier_part=ground,
                                       g1_connection_part=part_0, g3_connection_part=part_1,
                                       module=2.0, gear_ratio=-4.0, pressure_angle=20.0,
                                       helix_angle=15.0, width_1=80.0, width_2=80.0,
                                       num_of_teeth_3=-307,
                                       width_3=80.0,
                                       contact_stiffness=10000.0, contact_exponent=1.0,
                                       contact_damping=100.0, contact_dmax=0.1)

Name

Type

Symbol

Required

Default

Modifiable

active

Bool

True

\(\checkmark\)

addendum_coefficient

Double

\(h_{a}^{*}\)

1

carrier_part

Reference - Body

\(\checkmark\)

contact_coulomb_friction

Enum

OFF

contact_creation

Bool

True

contact_damping

Double

1.0

contact_dmax

Double

0.1

contact_exponent

Double

2.1

contact_friction_transition_velocity

Double

1.5

contact_mu_dynamic

Double

0.1

contact_mu_static

Double

0.2

contact_stiction_transition_velocity

Double

1

contact_stiffness

Double

100000.0

dedendum_coefficient

Double

\(h_{f}^{*}\)

1.25

density

Double

export_graphic

Bool

False

export_parameters

Bool

False

g1_connection_part

Reference - Body

\(\checkmark\)

g3_connection_part

Reference - Body

\(\checkmark\)

gear_ratio

Double

\(u\)

\(\checkmark\)

helix_angle

Double

\(\beta\)

\(\checkmark\)

hub_diameter_1

Double

\(d_{i/o1}\)

0.0

hub_diameter_2

Double

\(d_{i/o2}\)

0.0

hub_diameter_3

Double

\(d_{i/o3}\)

0.0

id

Int

Auto

j1

Double

\(j_{1}^{*}\)

0.04

j2

Double

\(j_{2}^{*}\)

0.04

j3

Double

\(j_{3}^{*}\)

0.04

label

Str

module

Double

\(m_{n}\)

\(\checkmark\)

name

Str

non_uniform_factor

Double

1.2

num_curve_segments

Int

10

num_of_teeth_1

Int

\(z_{1}\)

\(\checkmark\)

num_of_teeth_2

Int

\(z_{2}\)

\(\checkmark\)

num_of_teeth_3

Int

\(z_{3}\)

\(\checkmark\)

num_width_segments

Int

20

number_of_planets

Int

\(N\)

3

pressure_angle

Double

\(a_{n}\)

\(\checkmark\)

rm

Reference - Marker

\(\checkmark\)

rm_2

Reference - Marker

tool_tip_radius_coefficient

Double

\(r_{f}^{*}\)

0.38

width_1

Double

\(b_{1}\)

\(\checkmark\)

width_2

Double

\(b_{2}\)

\(\checkmark\)

width_3

Double

\(b_{3}\)

\(\checkmark\)

x1

Double

\(x_{1}^{*}\)

x2

Double

\(x_{2}^{*}\)

x3

Double

\(x_{3}^{*}\)

active#

Defines the state of the object.

Type=Bool, Default=True, Modifiable

addendum_coefficient#

The basic rack addendum coefficient. (ha*)

Type=Double, Default=1

carrier_part#

The part of the planets carrier element.

Type=Reference (Body), Required

contact_coulomb_friction#

Specifies the friction force model that will be used to compute thegears contact friction force.

See Contact.coulomb_friction.

Type=Enum, Default=OFF

Permitted values are:

  • DYNAMICS_ONLY

  • OFF

  • ON

contact_creation#

Activates an IMPACT contact between the two gears.

See Contact.

Type=Bool, Default=True

contact_damping#

Specifies the maximum damping coefficient that is to be used for generating a damping force on the gears contact.

See Contact.damping.

Type=Double, Default=1.0

contact_dmax#

Specifies the penetration at which full damping is applied in the gears contact.

See Contact.dmax.

Type=Double, Default=0.1

contact_exponent#

Specifies the exponent of the force deformation characteristic of the gears contact.

See Contact.exponent.

Type=Double, Default=2.1

contact_friction_transition_velocity#

Defines the slip velocity at which the dynamic coefficient of friction, mu_dynamic, is applied.

See Contact.friction_transition_velocity.

Type=Double, Default=1.5

contact_mu_dynamic#

Defines the coefficient of dynamic friction in gears contact when the friction is in the dynamic regime.

See Contact.mu_dynamic.

Type=Double, Default=0.1

contact_mu_static#

Defines the coefficient of static friction in gears contact when the friction is in the static regime.

See Contact.mu_static.

Type=Double, Default=0.2

contact_stiction_transition_velocity#

Defines the slip velocity at which the static coefficient of friction, mu_static, is applied.

See Contact.stiction_transition_velocity.

Type=Double, Default=1

contact_stiffness#

Specifies the stiffness parameter of the gears contact.

See Contact.stiffness.

Type=Double, Default=100000.0

dedendum_coefficient#

The basic rack dedendum coefficient. (hf*)

Type=Double, Default=1.25

density#

The density of the gears.

See Comment 4.

Type=Double

export_graphic#

Exports the gears geometries in two .stl files.

Type=Bool, Default=False

export_parameters#

Exports the calculated gearset and gears parameters into a .json file.

Type=Bool, Default=False

g1_connection_part#

The connection part of the gear 1 element.

Type=Reference (Body), Required

g3_connection_part#

The connection part of the gear 3 element.

Type=Reference (Body), Required

gear_ratio#

The gear ratio. It is defined as (z2/z1) for simple helical gear setor (z3/z1) for the planetary gear set (u).

See Comment 5, Comment 7.

Type=Double, Required, Default=0.0

helix_angle#

The helix angle in the pitch diameter.

Type=Double, Required

hub_diameter_1#

The hub diameter of the gear 1.

Type=Double, Default=0.0

hub_diameter_2#

The hub diameter of the gear 2.

Type=Double, Default=0.0

hub_diameter_3#

The hub diameter of the gear 3.

Type=Double, Default=0.0

id#

The id of the object.

Type=Int

j1#

The circumferential backlash ratio (multiplied by circular pitch), linear measure along pitch circle of the gear 1. (j1*)

See Comment 2.

Type=Double, Default=0.04

j2#

The circumferential backlash ratio (multiplied by circular pitch), linear measure along pitch circle of the gear 2. (j2*)

See Comment 2.

Type=Double, Default=0.04

j3#

The circumferential backlash ratio (multiplied by circular pitch), linear measure along pitch circle of the gear 3. (j3*)

Type=Double, Default=0.04

label#

The label of the composite element.

Type=Str

module#

The normal module of the gears. (mn)

Type=Double, Required, Default=0.0

name#

Defines a nametag for the object.

Type=Str

non_uniform_factor#

Defines the factor of the non uniform mesh. The length of each previouselement is multiplied by this factor to get the length of the current element length.

Type=Double, Default=1.2

num_curve_segments#

(Number of subdivisions for the base curve.) The number of mesh segments on involute profile of the gear. When using non uniform mesh this parameter will be always an even number.(The profile is split on two symmetric regions)

Type=Int, Default=10

num_of_teeth_1#

The number of teeth of the gear 1. (z1)

See Comment 5, Comment 7.

Type=Int, Required, Default=0

num_of_teeth_2#

The number of teeth of the gear 2. (z2)

See Comment 5, Comment 7.

Type=Int, Required, Default=0

num_of_teeth_3#

The number of teeth of the gear 3. (z3)

Type=Int, Required, Default=0

num_width_segments#

(Number of subdivisions for the width.)The number of mesh segments on the width of the gear.

Type=Int, Default=20

number_of_planets#

The number of planet gears. (N)

Type=Int, Default=3

pressure_angle#

The normal pressure angle. (alpha) - [deg].

Type=Double, Required

rm#

The reference marker of the composite element.

Type=Reference (Marker), Required

rm_2#

The reference marker of the gear 2 element.

Type=Reference (Marker)

tool_tip_radius_coefficient#

The basic rack tool tip radius coefficient. (rf*)

Type=Double, Default=0.38

width_1#

Gear 1 width.

Type=Double, Required

width_2#

Gear 2 width.

Type=Double, Required

width_3#

Gear 3 width.

Type=Double, Required

x1#

The normal profile shift coefficient of the gear 1 (x*1).

See Comment 6.

Type=Double

x2#

The normal profile shift coefficient of the gear 2 (x*2).

See Comment 6.

Type=Double

x3#

The normal profile shift coefficient of the gear 3 (x*3).

Type=Double