Пружины и втулки
Раздел «Пружины» включает следующие компоненты:
- Компрессионная пружина (Compression Spring), которая действует как поступательный пружинный амортизатор,
- Торсионная пружина (Torsion Spring), которая действует как вращательный пружинный амортизатор,
- Втулка (Bushing), действующая как гибкий соединительный элемент поступательного и вращательного движения.
Компрессионная пружина (Compression Spring)
Пружина сжатия может быть задана между любыми двумя жёсткими телами и землёй в конкретных точках пространства, определённых выбором систем отсчёта.
Пружина одновременно действует на оба тела (Body_I, Body_J).
Определение пружины сжатия
Пружина сжатия определяется следующими параметрами в пользовательском интерфейсе:
- Body_I: первое Тело или земля,
- Body_J: второе Тело или земля,
- RF Body I: Система отсчёта как точка действия на Body_I,
- RF Body J: Система отсчёта как точка действия на Body_J,
- Stiffness (N/mm) - Жесткость пружины (k),
- Damping (Ns/mm): коэффициент затухания (C),
- Preload (N): предварительная натяжка или сжатие пружины: толкает при положительном значении и сжимает при отрицательном.

После того как пружина задана, параметры жесткости, затухания и предварительного натяга можно впоследствии изменить, однако связанные с ней независимые системы координат становятся недоступными для редактирования. В то же время при необходимости связанные пружиной тела Body_I или Body_J можно перемещать вместе с пружиной.
Между одними и теми же телами можно определить сразу несколько пружин.
Расчёт силы пружины сжатия
Величина силы пружины сжатия рассчитывается следующим образом:
где:
— начальное расстояние между RF_Body_I и RF_Body_J в момент времени t=0,
— фактическое расстояние как величина вектора между RF_Body_I и RF_Body_J динамически вычисляемого решателем,
— это деформация пружины,
— относительная скорость точек присоединения пружины RF_Body_I и RF_Body_J,
Рассчитанная сила пружины () прикладывается к телам Body_I и Body_J по принципу «действие — противодействие». Также прикладываются локальные моменты, определяемые как векторное произведение рычагов, проведенных от центров масс тел к точкам приложения силы пружины («RF Body I» и «RF Body J»).
Специально заданная нелинейная пружина сжатия
Пользователь может задать нелинейную силу пружины F(x, v) в виде любой функции.
Используется следующий формат для определения силы пружины:
где: x = ΔL = L - L_initial (в мм; положительное значение соответствует растяжению пружины).
v = d(ΔL)/dt (скорость деформации в мм/с).
Функция F(x, v) должна возвращать значение в ньютонах (Н).
Пример: для моделирования линейной жесткости K и демпфирования C следует ввести:
-K*x - C*v.
Допускается использование префикса «np.» для вызова любых стандартных математических функций библиотеки NumPy, например:
np.cosh(x), np.sign(v) и т. д.
В программе также поддерживаются следующие пользовательские функции:
Функция STEP обеспечивает плавный переход между двумя заданными значениями.
Синтаксис: step(x; x0; F0; x1; F1)
Функция IF:
Синтаксис: if(<условие>; <значение если меньше или равно 0>; <значение если больше 0>).
Торсионная пружина (Torsion Spring)
Торсионная пружина может быть задана между любыми двумя жёсткими телами (или землёй) в конкретной точке вдоль определённого направления.
Торсионная пружина одновременно добавляет пару крутящих моментов «действия-реакцию» к двум телам (Body_I, Body_J).
Определение торсионной пружины
Торсионная пружина определяется следующими параметрами в пользовательском интерфейсе:
- Body_I: первое Тело или Земля,
- Body_J: второе Тело или Земля,
- Anchor: система координат пружины,
- XYZ-выпадающее меню: ось систеиы координат Anchor RF. Она определяет ось крутящего момента пружины и учитывается только, если система координат Target не определена.
- Target: эта система отсчёта определяет направление крутящего момента пружины как ось между системами отсчёта Anchor и Target. Выпадающее меню XYZ игнорируется, если задана система координат Target.
- Stiffness (Nmm/rad): Жёсткость пружины (k),
- Damping (Nmms/ rad): коэффициент затухания (C),
- Preload (Nmm): Начальная натяжка пружины.
Как видно из определения, после определения системы координат пружины Anchor существует два способа задания оси крутящего момента пружины:
- Если ось крутящего момента — одна из осей Anchor RF, то эту ось можно выбрать с помощью выпадающего меню XYZ;
- Если задана система координат Target RF, то ось крутящего момента соединит системы отсчёта Anchor и Target. В этом случае выпадающий список XYZ не рассматривается.

После того как пружина задана, параметры жесткости, затухания и предварительного натяга можно впоследствии изменить, однако связанные с ней независимые системы координат становятся недоступными для редактирования. В то же время при необходимости связанные пружиной тела Body_I или Body_J можно перемещать вместе с пружиной.
Можно определить несколько торсионных пружин между одними и теми же телами.
Расчет крутящего момента для торсионной пружины
Действие торсионной пружины ограничено вращением вокруг главной оси, определяемой системами отсчета «Опора» (Anchor) и (опционально) «Цель» (Target). Величина крутящего момента торсионной пружины рассчитывается следующим образом:
где:
— деформация пружины, рассчитанная как относительное вращение Body_I и Body_J вдоль оси крутящего момента,
— относительная угловая скорость Body_I и Body_J вдоль оси крутящего момента.
Рассчитанная величина крутящего момента пружины () применяется как момент действия и реакции к Body_I и Body_J.
Специально заданная нелинейная торсионная пружина
Пользователь может задать нелинейный крутящий момент пружины T(theta, omega) в виде любой функции.
Используется следующий формат для определения силы пружины:
где:
theta — угол закручивания относительно начального угла (в радианах);
omega = d(theta)/dt — угловая скорость деформации (в рад/с).
Значение T(theta, omega) должно быть выражено в Н·мм.
Пример: для моделирования линейной жесткости K и демпфирования C следует ввести выражение:
-K*theta - C*omega
Допускается использование префикса «np.» для вызова любых стандартных математических функций библиотеки NumPy, например:
np.cosh(x), np.sign(v) и т. д.
В программе также поддерживаются следующие пользовательские функции:
Функция STEP обеспечивает плавный переход между двумя заданными значениями.
Синтаксис: step(x; x0; F0; x1; F1)
Функция IF:
Синтаксис: if(<условие>; <значение если меньше или равно 0>; <значение если больше 0>).
Втулка (Bushing)
Втулка представляет собой обобщенный эластичный соединительный элемент, который создает поступательные и вращательные пружинно-демпферные силы по всем 6 степеням свободы.
Математически она работает исключительно в локальной системе координат своей опорной системы отсчета. Элемент втулки действует как три пружины сжатия и три пружины кручения, приложенные к одной и той же точке.
Определение втулки
Втулка определяется следующими параметрами в пользовательском интерфейсе:
- Body_I: первое Тело или Земля,
- Body_J: второе Тело или Земля,
- Anchor RF: глобальная система отсчёта, определяющая положение втулки как локальные точки в Body_I и Body_J,
- Stiffness Kx, Ky, Kz (N/mm): линейная жесткость, ориентированная вдоль системы координат Anchor RF,
- Stiffness KRx, KRy, KRz (Nmm/rad): жёсткость вращения, ориентированная вдоль системы координат Anchor RF,
- Damping Cx, Cy, Cz (Ns/mm): линейное затухание,
- Damping CRx, Cry, CRz (Nmms/rad): вращательное затухание,
- Preload Fx, Fy, Fz (N): начальная силовая нагрузка,
- Preload Tx, Ty, Tz (Nmm): начальный крутящий момент.
Расчёт сил реакции и крутящих моментов втулки
Втулка (также известная как пружинный демпфер с 6-ю степенями свободы) — это по сути 3 независимые пружины сжатия и 3 независимые торсионные пружины, действующие по локальным осям X, Y и Z заданной системы отсчёта Anchor RF. Два тела имеют единую точку эластичного шарнира, что позволяет гибко двигаться во всех 6 направлениях.

В процессе моделирования измеряются текущие относительное положение и скорость опорных точек тел Body_I и Body_J Полученные значения проецируются на оси локальной системы координат опорной точки тела Body_I для определения локальной поступательной деформации () и скорости (). Одновременно с этим сравниваются текущие матрицы относительного поворота тел Body_I и Body_J для вычисления локальных углов скручивания () и относительных угловых скоростей (). Затем для каждой оси рассчитываются независимые силы и моменты с использованием стандартных уравнений для пружинно-демпфирующих элементов:
Эти локальные векторы силы и крутящего момента умножаются на матрицу вращения Anchor RF, чтобы получить их в глобальном 3D-пространстве:
( и )
Сила () прикладывается в точке крепления Anchor RF, которая в общем случае находится на расстоянии (R) от центра тяжести тела. В результате сила () создает механический момент для тел Body_I и Body_J. Наконец, суммарный момент: