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:
| Name | Description | Units | Default value |
|---|---|---|---|
drive_train_mechanics_3d | – | true |
Behavior
Source
"""
# 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
endFlattened Source
"""
# 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 {}
endTest Cases
No test cases defined.
Related
Examples
Experiments
Analyses