Содержание ↓
Глава 4a

Линейные многоточечные связи MPC

MPC связывает перемещения узлов. В отличие от опоры, такая связь позволяет одному узлу следовать за несколькими другими, не закрепляя их относительно основания. МКЭ-Ф поддерживает однородные линейные MPC в статическом, модальном и переходном анализе.

Зависимая и ведущие СС

В каждом уравнении явно выбирается одна зависимая СС, которая выражается через ведущие:

ud = Σ cjuj

Например, uy(3) = 0.5·uy(1) + 0.5·uy(2) делает вертикальное перемещение узла 3 средним перемещений двух других узлов. Связь не ограничивает ux(3) и поворот рамного узла. Ведущая СС может зависеть от другого MPC, если граф зависимостей не содержит циклов.

Локальные коды СС: 1 = ux, 2 = uy, 3 = thetaZ. У фермы 112 есть только первые две. Коэффициенты могут быть отрицательными; при смешивании поступательных перемещений и поворотов нужно согласовать их размерности.

Запись в файле и редактор

После секции элементов добавьте повторяемый блок mpc: число уравнений и записи с таким порядком полей:

depNode,depDOF,rhs,masterCount,node1,dof1,c1,...

mpc
1
3,2,0,2,1,2,0.5,2,2,0.5

Эта запись соответствует приведённому выше усреднению. Во всех видах анализа rhs должен равняться нулю; ненулевые заданные перемещения не поддерживаются. Номера уравнений следуют порядку записей во всех блоках MPC.

В препроцессоре откройте MPC constraints, нажмите Add MPC, выберите зависимый узел и СС, затем добавьте ведущие компоненты и коэффициенты. Уравнение и фиолетовые линии показывают связь, кружок выделяет зависимый узел. Ошибки блокируют экспорт и расчёт. Удаление участвующего узла удаляет уравнение целиком; Undo восстанавливает операцию.

Совместная работа с опорами

  • Зависимая СС не может одновременно быть закреплена SPC или быть зависимой в другом уравнении.
  • Ведущая СС может быть закреплена: её вклад в перемещение равен нулю, но сила связи на неё передаётся.
  • Несуществующие узлы и СС, повторы ведущих СС, самоссылки, циклы, неконечные коэффициенты и записи со всеми нулевыми коэффициентами отклоняются.

Нулевые коэффициенты допустимы рядом с ненулевыми и не создают рёбер графа. Направленная форма с уникальными зависимыми СС гарантирует независимость строк ограничений, но не устойчивость конструкции. Оставшиеся механизмы и некорректность системы проверяются по редуцированным матрицам жёсткости и массы.

Помощник «узел на оси стержня»

Выберите концы оси i, j и промежуточный узел k. Все три узла должны быть различными; расстояние между концами должно быть ненулевым, а k — лежать внутри отрезка с допуском поперечного отклонения 1e−9·L.

ξ = ((xk − xi) · (xj − xi)) / L²
n · uk = (1 − ξ)n · ui + ξn · uj

Здесь n — единичная нормаль к исходной оси. Для горизонтального стержня интерполируется uy, для вертикального — ux. У наклонного стержня связываются обе компоненты. Продольное движение остаётся свободным. Уравнение допускает жёсткий перенос и бесконечно малый жёсткий поворот.

Помощник выбирает компоненту промежуточного узла с наибольшим по модулю коэффициентом нормали (при равенстве — ux). Если она конфликтует с ограничениями, проверяется вторая ненулевая компонента. Когда обе недоступны, выводится ошибка.

Коэффициенты создаются один раз

Результат — обычное MPC без сохраняемой геометрической привязки. Перемещение узлов не пересчитывает коэффициенты. Если меняется нужная ось или положение интерполяции, создайте уравнение заново.

Точное исключение во всех трёх анализах

Решатель объединяет SPC и MPC в разреженное преобразование независимых координат q в полный узловой вектор:

u = Tq,   Kr = TᵀKT,   Mr = TᵀMT,   Fr = TᵀF

В этих координатах решается статическая система, обобщённая задача собственных значений или выполняется интегрирование Ньюмарка. Формы, скорости и ускорения также восстанавливаются через T. Начальные перемещения и скорости должны удовлетворять всем SPC и MPC; несовместные значения отклоняются.

freeDOFs по-прежнему означает все СС, не закреплённые SPC. dependentDOFs перечисляет зависимые СС в порядке уравнений; independentDOFs задаёт фактические координаты решения. Исходные K и M, включая согласованную массу элементов, сохраняются. Штрафная жёсткость не добавляется.

Силы связей и знаки

Каждая строка C представляет uDependent − Σ c·uMaster = 0. После восстановления полного решения невязка разделяется:

r = supportReactions + Cᵀλ
mpcForces = Cᵀλ,   mpcMultipliers = λ

В статике r = Ku − F, в переходном расчёте без демпфирования r = Ma + Ku − F, для моды r = Kφ − ω²Mφ. Положительное λ действует положительно на зависимую СС и даёт −c·λ на каждой ведущей. Для связи усреднения при λ = 10 Н силы MPC равны +10 Н в узле 3 и −5 Н в узлах 1 и 2.

На закреплённой ведущей СС опорная реакция равна невязке минус сила MPC. Совместимое поле reactions хранит полную невязку и не означает только опорные реакции. Постпроцессор показывает отдельные слои сил, выбор уравнения и временной график λ. Модальные значения соответствуют амплитуде сохранённого собственного вектора, а не масштабу изображения деформации.

Модели с MPC без освобождений экспортируются в JSON v3. Прореживание времени применяется ко всем историям; выбор СС фильтрует узловые силы, но сохраняет множители всех уравнений. Модели без MPC и освобождений используют v1/v2. Для освобождений предусмотрены JSON v4 и внутренние концевые повороты.

Примеры и границы применимости

Откройте в препроцессоре CaseMPCFrame.txt, чтобы исследовать нагрузку на зависимой СС. Отдельные примеры охватывают формы колебаний, переходный отклик и распределённую нагрузку. В CaseMPCTruss.txt ограничено паразитное поперечное движение промежуточного узла фермы.

addpath(pwd);
setup;
p = StructFEProblem(fullfile(pwd, 'examples', 'cases', 'CaseMPCFrame.txt'));
r = p.RunSelected();
disp(r.displacements);
disp(r.mpcMultipliers);
disp(r.supportReactions);

MPC описывают линейные кинематические соотношения. Они не реализуют контакт, следование при конечных поворотах, ненулевые заданные перемещения или освобождение момента на конце элемента.

Реализация и проверки

  • buildConstraintTransform.m — валидация, порядок зависимостей и разреженная T;
  • recoverConstraintForces.m — силы и разложение невязки;
  • shared/mpc.js — браузерная валидация и помощник оси;
  • test_mpc.m — независимые решения через множители и базис допустимых перемещений, истории, ошибки и сходимость измельчённой фермы.