Следующий файл, spring.ssc
, реализует компонент под названием spring
.
Раздел объявления компонента содержит:
Два вращательных узла, r
и c
(для стержня и случая, соответственно)
Параметр k
, со значением по умолчанию 10 N*m/rad
, задавая коэффициент упругости
Через и переменные Across, закрутите t
и угловую скорость w
, чтобы быть соединенными с вращательными доменными переменными Through и Across позже в файле
Внутренняя переменная theta
, со значением по умолчанию 0 rad
, задавая относительный угол, то есть, деформацию пружины
Раздел branches
устанавливает отношение между переменной Through компонента и узлами компонента (и поэтому доменной переменной Through). Оператор t : r.t -> c.t
указывает, что крутящий момент в течение пружины действует от узла r
к узлу c
.
Раздел уравнения запускается с построения assert
, которое проверяет, что коэффициент упругости больше, чем нуль. Если параметры блоков установлены неправильно, assert
инициировал ошибку времени выполнения.
Первое уравнение, w == r.w - c.w
, устанавливает отношение между переменной Across компонента и узлами компонента (и поэтому доменной переменной Across). Это задает угловую скорость через пружину как различие между узлом угловые скорости.
Следующие два уравнения задают пружинное действие:
t = k * theta
, то есть, крутящий момент равняется пружинному коэффициенту упругости времен деформации
w = theta.der
, то есть, угловая скорость равняется производной времени пружинной деформации
component spring nodes r = foundation.mechanical.rotational.rotational; c = foundation.mechanical.rotational.rotational; end parameters k = { 10, 'N*m/rad' }; end variables theta = { 0, 'rad' }; t = { 0, 'N*m' }; % torque through w = { 0, 'rad/s' }; % velocity across end branches t : r.t -> c.t; % torque through from node r to node c end equations assert(k>0) % spring rate must be greater than zero w == r.w - c.w; % velocity across between node r and node c t == k * theta; w == theta.der; end end