@@ -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