Следующий файл, 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