Skip to content
LIBRARY
Sources.InverseSpeedDependentTorque.md

Sources.InverseSpeedDependentTorque

Torque reciprocal dependent on speed.

Model of inverse speed dependent torque. Parameter TorqueDirection chooses whether direction of torque is the same in both directions of rotation or not. If TorqueDirection = false, regularization near zero speed avoids numerical problems.

This component extends from RotationalComponents.Interfaces.PartialTorque

Usage

RotationalComponents.Sources.InverseSpeedDependentTorque(tau_nominal, w_nominal, w0=0.1)

Parameters:

NameDescriptionUnitsDefault value
TorqueDirectionSame direction of torque in both directions of rotationtrue
tau_nominalNominal torque (if negative, torque is acting as load in positive direction of rotation)N.m
w_nominalNominal speedrad/s
w0Regularization below w0rad/s0.1

Connectors

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

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

Variables

NameDescriptionUnits
phi_supportAbsolute angle of the support splinerad
phiAngle of spline with respect to support
wAngular velocity of spline with respect to support (= der(phi))rad/s
tauAccelerating torque acting at spline (= -spline.tau)N.m

Behavior

julia
using RotationalComponents #hide
using ModelingToolkit #hide
@variables tau_nominal #hide
@variables w_nominal #hide
@variables w0 #hide
@named sys = RotationalComponents.Sources.InverseSpeedDependentTorque(tau_nominal=tau_nominal, w_nominal=w_nominal, w0=w0) #hide
full_equations(sys) #hide
<< @example-block not executed in draft mode >>

Source

dyad
"""
Torque reciprocal dependent on speed.

Model of inverse speed dependent torque. Parameter TorqueDirection chooses
whether direction of torque is the same in both directions of rotation or not.
If TorqueDirection = false, regularization near zero speed avoids numerical
problems.
"""
component InverseSpeedDependentTorque
  extends RotationalComponents.Interfaces.PartialTorque
  "Nominal torque (if negative, torque is acting as load in positive direction of rotation)"
  parameter tau_nominal::Torque
  "Same direction of torque in both directions of rotation"
  structural parameter TorqueDirection::Boolean = true
  "Nominal speed"
  parameter w_nominal::AngularVelocity(min = eps(Float64))
  "Regularization below w0"
  parameter w0::AngularVelocity(min = eps(Float64)) = 0.1
  "Angular velocity of spline with respect to support (= der(phi))"
  variable w::AngularVelocity
  "Accelerating torque acting at spline (= -spline.tau)"
  variable tau::Torque
relations
  w = der(phi)
  tau = -spline.tau
  if TorqueDirection
    tau = ifelse(abs(w) < w0, tau_nominal * w_nominal / w0, tau_nominal * w_nominal / abs(w))
  else
    tau = ifelse(abs(w) < w0, tau_nominal * w / w0, tau_nominal * w_nominal / w)
  end
metadata {
  "Dyad": {"icons": {"default": "dyad://RotationalComponents/InverseSpeedDepTorque.svg"}}
}
end
Flattened Source
dyad
"""
Torque reciprocal dependent on speed.

Model of inverse speed dependent torque. Parameter TorqueDirection chooses
whether direction of torque is the same in both directions of rotation or not.
If TorqueDirection = false, regularization near zero speed avoids numerical
problems.
"""
component InverseSpeedDependentTorque
  "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
  "Nominal torque (if negative, torque is acting as load in positive direction of rotation)"
  parameter tau_nominal::Torque
  "Same direction of torque in both directions of rotation"
  structural parameter TorqueDirection::Boolean = true
  "Nominal speed"
  parameter w_nominal::AngularVelocity(min = eps(Float64))
  "Regularization below w0"
  parameter w0::AngularVelocity(min = eps(Float64)) = 0.1
  "Angular velocity of spline with respect to support (= der(phi))"
  variable w::AngularVelocity
  "Accelerating torque acting at spline (= -spline.tau)"
  variable tau::Torque
relations
  support.phi = phi_support
  support.tau = -spline.tau
  phi = spline.phi - phi_support
  w = der(phi)
  tau = -spline.tau
  if TorqueDirection
    tau = ifelse(abs(w) < w0, tau_nominal * w_nominal / w0, tau_nominal * w_nominal / abs(w))
  else
    tau = ifelse(abs(w) < w0, tau_nominal * w / w0, tau_nominal * w_nominal / w)
  end
metadata {
  "Dyad": {"icons": {"default": "dyad://RotationalComponents/InverseSpeedDepTorque.svg"}}
}
end


Test Cases

No test cases defined.