Skip to content
TorqueSource.md

TorqueSource

Ideal source applying an externally specified torque to a rotational spline.

This component models an ideal torque source for rotational mechanical systems. It takes an external signal, tau, which defines the accelerating torque to be applied to the connected mechanical spline. The component inherits its mechanical connection interface, spline, from PartialTorque. The core behavior is established by the following equation that relates the input signal tau to the torque at the spline connector:

spline.τ=τ

This component extends from PartialTorque

Usage

TorqueSource()

Connectors

  • spline - (Spline)

  • support - (Spline)

  • tau - This connector represents a real signal as an input to a component (RealInput)

Variables

NameDescriptionUnits
phi_supportAbsolute angle of the support splinerad
phiAngle of spline with respect to support

Behavior

support.phi(t)=phi_support(t)support.tau(t)=spline.tau(t)phi(t)=spline.phi(t)phi_support(t)spline.tau(t)=tau(t)

Source

dyad
# Ideal source applying an externally specified torque to a rotational spline.
#
# This component models an ideal torque source for rotational mechanical systems.
# It takes an external signal, `tau`, which defines the accelerating torque
# to be applied to the connected mechanical `spline`. The component inherits
# its mechanical connection interface, `spline`, from `PartialTorque`.
# The core behavior is established by the following equation that relates the
# input signal `tau` to the torque at the `spline` connector:
# ```math
# spline.\tau = -\tau
# ```
component TorqueSource
  extends PartialTorque
  # Accelerating torque acting at spline
  tau = RealInput() [{"Dyad": {"placement": {"icon": {"x1": -50, "y1": 450, "x2": 50, "y2": 550}}}}]
relations
  spline.tau = -tau
metadata {"Dyad": {"icons": {"default": "dyad://RotationalComponents/Torque.svg"}}}
end
Flattened Source
dyad
# Ideal source applying an externally specified torque to a rotational spline.
#
# This component models an ideal torque source for rotational mechanical systems.
# It takes an external signal, `tau`, which defines the accelerating torque
# to be applied to the connected mechanical `spline`. The component inherits
# its mechanical connection interface, `spline`, from `PartialTorque`.
# The core behavior is established by the following equation that relates the
# input signal `tau` to the torque at the `spline` connector:
# ```math
# spline.\tau = -\tau
# ```
component TorqueSource
  # Primary rotational shaft spline connector
  spline = Spline() [{"Dyad": {"placement": {"icon": {"x1": 950, "y1": 450, "x2": 1050, "y2": 550}}}}]
  # Support spline connector
  support = Spline() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "support", "x1": 450, "y1": 950, "x2": 550, "y2": 1050}}
    }
  }]
  # Absolute angle of the support spline
  variable phi_support::Angle
  # Angle of spline with respect to support
  variable phi::Real
  # Accelerating torque acting at spline
  tau = RealInput() [{"Dyad": {"placement": {"icon": {"x1": -50, "y1": 450, "x2": 50, "y2": 550}}}}]
relations
  support.phi = phi_support
  support.tau = -spline.tau
  phi = spline.phi-phi_support
  spline.tau = -tau
metadata {"Dyad": {"icons": {"default": "dyad://RotationalComponents/Torque.svg"}}}
end


Test Cases

This is setup code, that must be run before each test case.

julia
using RotationalComponents
using ModelingToolkit, OrdinaryDiffEqDefault
using Plots
using CSV, DataFrames

snapshotsdir = joinpath(dirname(dirname(pathof(RotationalComponents))), "test", "snapshots")
"/home/actions-runner-10/.julia/packages/RotationalComponents/0VPxm/test/snapshots"