Skip to content

Commit 590c9de

Browse files
authored
Merge pull request #1274 from jguarato/fix-gear-geometry
Fix GearElementTVMS initialization from geometry
2 parents f4bd096 + fe00b7d commit 590c9de

1 file changed

Lines changed: 111 additions & 0 deletions

File tree

ross/gear_element.py

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,117 @@ def __init__(
503503

504504
self.tau_c = self._to_tau(alpha_c)
505505

506+
@classmethod
507+
def from_geometry(
508+
cls,
509+
n,
510+
material,
511+
width,
512+
i_d,
513+
o_d,
514+
n_teeth,
515+
pr_angle=None,
516+
helix_angle=0,
517+
addendum_coeff=1,
518+
tip_clearance_coeff=0.25,
519+
tag=None,
520+
scale_factor=1.0,
521+
color="Goldenrod",
522+
):
523+
"""Create a gear element from geometry properties.
524+
525+
This class method will create a gear element from geometry data.
526+
Properties are calculated as per :cite:`friswell2010dynamics`, appendix 1
527+
for a hollow cylinder:
528+
529+
Mass:
530+
531+
:math:`m = \\rho \\pi w (d_o^2 - d_i^2) / 4`
532+
533+
Polar moment of inertia:
534+
535+
:math:`I_p = m (d_o^2 + d_i^2) / 8`
536+
537+
Diametral moment of inertia:
538+
539+
:math:`I_d = \\frac{1}{2} I_p + \\frac{1}{12} m w^2`
540+
541+
Where :math:`\\rho` is the material density, :math:`w` is the gear width,
542+
:math:`d_o` is the outer diameter and :math:`d_i` is the inner diameter.
543+
544+
Parameters
545+
----------
546+
n : int
547+
Node in which the gear will be inserted.
548+
material : ross.Material
549+
Gear's construction material.
550+
width : float, pint.Quantity
551+
The face width of the gear considering that the gear body has the
552+
same thickness (m).
553+
i_d : float, pint.Quantity
554+
Bore, inner diameter, the diameter of the shaft on which the gear
555+
is mounted (m).
556+
o_d : float, pint.Quantity
557+
Pitch diameter (m).
558+
n_teeth : int
559+
Number of teeth.
560+
pr_angle : float, pint.Quantity, optional
561+
The normal pressure angle (rad).
562+
Default is 20 deg (converted to rad).
563+
helix_angle: float, pint.Quantity, optional
564+
Helix angle for helical gears (rad).
565+
Default is 0, representing spur gear.
566+
addendum_coeff : float, optional
567+
Addendum coefficient.
568+
Default is 1.
569+
tip_clearance_coeff : float, optional
570+
Gear's clearance coefficient.
571+
Default is 0.25.
572+
tag : str, optional
573+
A tag to name the element.
574+
Default is None.
575+
scale_factor: float, optional
576+
The scale factor is used to scale the gear drawing.
577+
Default is 1.
578+
color : str, optional
579+
A color to be used when the element is represented.
580+
Default is 'Goldenrod'.
581+
582+
Attributes
583+
----------
584+
m : float
585+
Mass of the gear element.
586+
Id : float
587+
Diametral moment of inertia.
588+
Ip : float
589+
Polar moment of inertia.
590+
591+
Examples
592+
--------
593+
>>> from ross.materials import steel
594+
>>> gear = GearElementTVMS.from_geometry(0, steel, 0.07, 0.05, 0.28, 50)
595+
>>> gear.base_radius # doctest: +ELLIPSIS
596+
0.131556...
597+
>>>
598+
"""
599+
module = o_d / n_teeth
600+
601+
return cls(
602+
n,
603+
material=material,
604+
width=width,
605+
bore_diameter=i_d,
606+
module=module,
607+
n_teeth=n_teeth,
608+
pr_angle=pr_angle,
609+
helix_angle=helix_angle,
610+
addendum_coeff=addendum_coeff,
611+
tip_clearance_coeff=tip_clearance_coeff,
612+
tag=tag,
613+
scale_factor=scale_factor,
614+
color=color,
615+
)
616+
506617
@staticmethod
507618
def _involute(angle):
508619
"""Involute function

0 commit comments

Comments
 (0)