Skip to content
LIBRARY
BevelGear1D.md

BevelGear1D

Ideal gear with a 1D rotation axis whose two shaft axes differ in 3D.

The gear relation itself is one-dimensional and unconditional. What makes this component more than RotationalComponents.Components.IdealGear is the bearing reaction: because n_a and n_b (both resolved in frame_a) generally point in different directions, the vector sum -e_a*flange_a.tau - e_b*flange_b.tau does not vanish even though the scalar torque balance 0 = ratio*flange_a.tau + flange_b.tau holds. That residual is the torque the bearing must carry, and it is applied to frame_a.

There is no inertia and no gyroscopic term: the reaction is purely static. See Mounting1D for the meaning of drive_train_mechanics_3d.

Usage

MultibodyComponents.BevelGear1D(ratio=1, n_a=[1, 0, 0], n_b=[1, 0, 0], e_a=normalize_(n_a), e_b=normalize_(n_b))

Parameters:

NameDescriptionUnitsDefault value
drive_train_mechanics_3dExpose the bearing frame frame_a and apply the bearing reaction to it. Structural: when false, neither the connector nor the reaction equations are emitted.true
ratioGear speed ratio (flange_a.phi = ratio * flange_b.phi)1
n_aAxis of rotation of flange_a, resolved in frame_a[1, 0, 0]
n_bAxis of rotation of flange_b, resolved in frame_a[1, 0, 0]

Connectors

  • flange_a - This connector represents a rotational spline with angle and torque as the potential and flow variables, respectively. (Spline)

  • flange_b - This connector represents a rotational spline with angle and torque as the potential and flow variables, respectively. (Spline)

  • frame_a - Frame3D is the fundamental 3D connector used for 6DOF motion. Most components have one or several Frame

connectors that can be connected together (Frame3D)

Behavior

Dict{MIME{Symbol("text/plain")}, String} with 1 entry: MIME type text/plain => "Error displaying result"

Source

dyad
"""
Ideal gear with a 1D rotation axis whose two shaft axes differ in 3D.

The gear relation itself is one-dimensional and unconditional. What makes this
component more than `RotationalComponents.Components.IdealGear` is the bearing
reaction: because `n_a` and `n_b` (both resolved in `frame_a`) generally point in
different directions, the vector sum `-e_a*flange_a.tau - e_b*flange_b.tau` does
not vanish even though the scalar torque balance
`0 = ratio*flange_a.tau + flange_b.tau` holds. That residual *is* the torque the
bearing must carry, and it is applied to `frame_a`.

There is no inertia and no gyroscopic term: the reaction is purely static. See
`Mounting1D` for the meaning of `drive_train_mechanics_3d`.
"""
component BevelGear1D
  flange_a = Spline() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": -50, "y1": 450, "x2": 50, "y2": 550, "rot": 180}
      },
      "tags": []
    }
  }
  flange_b = Spline() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 950, "y1": 450, "x2": 1050, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  frame_a = Frame3D() if drive_train_mechanics_3d {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 450, "y1": 950, "x2": 550, "y2": 1050, "rot": 90}
      },
      "tags": []
    }
  }
  "Expose the bearing frame `frame_a` and apply the bearing reaction to it. Structural: when false, neither the connector nor the reaction equations are emitted."
  structural parameter drive_train_mechanics_3d::Boolean = true
  "Gear speed ratio (flange_a.phi = ratio * flange_b.phi)"
  parameter ratio::Real = 1
  "Axis of rotation of flange_a, resolved in frame_a"
  parameter n_a::Real[3] = [1, 0, 0]
  "Axis of rotation of flange_b, resolved in frame_a"
  parameter n_b::Real[3] = [1, 0, 0]
  final parameter e_a::Real[3] = normalize_(n_a)
  final parameter e_b::Real[3] = normalize_(n_b)
relations
  flange_a.phi = ratio * flange_b.phi
  0 = ratio * flange_a.tau + flange_b.tau
  if drive_train_mechanics_3d
    frame_a.f = [0, 0, 0]
    frame_a.tau = -e_a * flange_a.tau - e_b * flange_b.tau
  end
metadata {
  "Dyad": {
    "icons": {"default": "dyad://MultibodyComponents/BevelGear1D.svg"},
    "labels": [
      {
        "label": "$(instance)",
        "x": 500,
        "y": 120,
        "rot": 0,
        "attrs": {"font-size": "140"}
      }
    ]
  }
}
end
Flattened Source
dyad
"""
Ideal gear with a 1D rotation axis whose two shaft axes differ in 3D.

The gear relation itself is one-dimensional and unconditional. What makes this
component more than `RotationalComponents.Components.IdealGear` is the bearing
reaction: because `n_a` and `n_b` (both resolved in `frame_a`) generally point in
different directions, the vector sum `-e_a*flange_a.tau - e_b*flange_b.tau` does
not vanish even though the scalar torque balance
`0 = ratio*flange_a.tau + flange_b.tau` holds. That residual *is* the torque the
bearing must carry, and it is applied to `frame_a`.

There is no inertia and no gyroscopic term: the reaction is purely static. See
`Mounting1D` for the meaning of `drive_train_mechanics_3d`.
"""
component BevelGear1D
  flange_a = Spline() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": -50, "y1": 450, "x2": 50, "y2": 550, "rot": 180}
      },
      "tags": []
    }
  }
  flange_b = Spline() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 950, "y1": 450, "x2": 1050, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  frame_a = Frame3D() if drive_train_mechanics_3d {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 450, "y1": 950, "x2": 550, "y2": 1050, "rot": 90}
      },
      "tags": []
    }
  }
  "Expose the bearing frame `frame_a` and apply the bearing reaction to it. Structural: when false, neither the connector nor the reaction equations are emitted."
  structural parameter drive_train_mechanics_3d::Boolean = true
  "Gear speed ratio (flange_a.phi = ratio * flange_b.phi)"
  parameter ratio::Real = 1
  "Axis of rotation of flange_a, resolved in frame_a"
  parameter n_a::Real[3] = [1, 0, 0]
  "Axis of rotation of flange_b, resolved in frame_a"
  parameter n_b::Real[3] = [1, 0, 0]
  final parameter e_a::Real[3] = normalize_(n_a)
  final parameter e_b::Real[3] = normalize_(n_b)
relations
  flange_a.phi = ratio * flange_b.phi
  0 = ratio * flange_a.tau + flange_b.tau
  if drive_train_mechanics_3d
    frame_a.f = [0, 0, 0]
    frame_a.tau = -e_a * flange_a.tau - e_b * flange_b.tau
  end
metadata {
  "Dyad": {
    "icons": {"default": "dyad://MultibodyComponents/BevelGear1D.svg"},
    "labels": [
      {
        "label": "$(instance)",
        "x": 500,
        "y": 120,
        "rot": 0,
        "attrs": {"font-size": "140"}
      }
    ]
  }
}
end


Test Cases

No test cases defined.

  • Examples

  • Experiments

  • Analyses