Skip to content
LIBRARY
tests.ActuatedDriveTest.md

tests.ActuatedDriveTest

Actuated Drive Test

A rotor driven by a 1D torque source whose support is grounded through Mounting1D into the world frame. Gravity is switched off so the only torque in the model is the drive torque.

Because the carrier frame is the (inertial) world frame, the carrier angular velocity and acceleration vanish, so the rotor equation reduces to J*a = tau exactly and Rotor1D exerts no gyroscopic reaction. This isolates the other effect: the drive's support reaction travelling through Mounting1D into the 3D housing, where it must appear as -n*flange_b.tau about the mounting axis.

Instantiate with drive_train_mechanics_3d = false to get the 1D-only variant: the 3D connectors and every 3D term are then removed from the equations.

Usage

MultibodyComponents.tests.ActuatedDriveTest()

Parameters:

NameDescriptionUnitsDefault value
drive_train_mechanics_3dtrue

Behavior

Source

dyad
"""
# Actuated Drive Test

A rotor driven by a 1D torque source whose support is grounded through
`Mounting1D` into the world frame. Gravity is switched off so the only torque in
the model is the drive torque.

Because the carrier frame is the (inertial) world frame, the carrier angular
velocity and acceleration vanish, so the rotor equation reduces to `J*a = tau`
exactly and `Rotor1D` exerts no gyroscopic reaction. This isolates the other
effect: the drive's support reaction travelling through `Mounting1D` into the 3D
housing, where it must appear as `-n*flange_b.tau` about the mounting axis.

Instantiate with `drive_train_mechanics_3d = false` to get the 1D-only variant:
the 3D connectors and every 3D term are then removed from the equations.
"""
example component ActuatedDriveTest
  world = MultibodyComponents.World(g = 0) {}
  rotor = MultibodyComponents.Rotor1D(J = 1, n = [1, 0, 0], drive_train_mechanics_3d = drive_train_mechanics_3d, phi(initial = 0), w(initial = 0)) {}
  mount = MultibodyComponents.Mounting1D(n = [1, 0, 0], drive_train_mechanics_3d = drive_train_mechanics_3d) {}
  torque = RotationalComponents.Sources.TorqueSource() {}
  structural parameter drive_train_mechanics_3d::Boolean = true
relations
  torque.tau = 10 * sin(2 * pi * time)
  connect(torque.spline, rotor.flange_a) {}
  connect(torque.support, mount.flange_b) {}
  if drive_train_mechanics_3d
    connect(world.frame_b, rotor.frame_a, mount.frame_a) {}
  end
end
Flattened Source
dyad
"""
# Actuated Drive Test

A rotor driven by a 1D torque source whose support is grounded through
`Mounting1D` into the world frame. Gravity is switched off so the only torque in
the model is the drive torque.

Because the carrier frame is the (inertial) world frame, the carrier angular
velocity and acceleration vanish, so the rotor equation reduces to `J*a = tau`
exactly and `Rotor1D` exerts no gyroscopic reaction. This isolates the other
effect: the drive's support reaction travelling through `Mounting1D` into the 3D
housing, where it must appear as `-n*flange_b.tau` about the mounting axis.

Instantiate with `drive_train_mechanics_3d = false` to get the 1D-only variant:
the 3D connectors and every 3D term are then removed from the equations.
"""
example component ActuatedDriveTest
  world = MultibodyComponents.World(g = 0) {}
  rotor = MultibodyComponents.Rotor1D(J = 1, n = [1, 0, 0], drive_train_mechanics_3d = drive_train_mechanics_3d, phi(initial = 0), w(initial = 0)) {}
  mount = MultibodyComponents.Mounting1D(n = [1, 0, 0], drive_train_mechanics_3d = drive_train_mechanics_3d) {}
  torque = RotationalComponents.Sources.TorqueSource() {}
  structural parameter drive_train_mechanics_3d::Boolean = true
relations
  torque.tau = 10 * sin(2 * pi * time)
  connect(torque.spline, rotor.flange_a) {}
  connect(torque.support, mount.flange_b) {}
  if drive_train_mechanics_3d
    connect(world.frame_b, rotor.frame_a, mount.frame_a) {}
  end
metadata {}
end


Test Cases

No test cases defined.

  • Examples

  • Experiments

  • Analyses