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

Модель, узлы, элементы и степени свободы

Конечно-элементная модель — это дискретное представление непрерывного расчётного объекта, содержащего бесконечное множество точек. В реализованных здесь стержневых моделях каждый конечный элемент задаётся двумя узлами: перемещения и, для рамы, повороты узлов образуют конечный набор неизвестных, а поле между узлами восстанавливается функциями формы. Координаты, связи, свойства материала и сечения определяют, как уравнения отдельных элементов объединяются в глобальную систему.

Три уровня описания

Узел

Хранит положение (X, Y). Набор допустимых перемещений определяется типом всех элементов модели, а не самим узлом.

Элемент

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

Система

Объединяет элементы в глобальные K и M, а также хранит опоры и нагрузки для конкретного анализа.

Результат

Возвращается отдельно от модели: перемещения, реакции, частоты или истории во времени не перезаписывают исходные матрицы.

Два реализованных типа элемента

ТипКомпоненты узлаВектор элементаЧто деформируется
112, плоский стержень фермы ux, uy [u1x, u1y, u2x, u2y]T только осевое растяжение/сжатие
113, плоская рама Эйлера–Бернулли ux, uy, θz [u1x, u1y, θ1, u2x, u2y, θ2]T осевое и изгибное деформирование

Смешанная сетка 112/113 не поддерживается: у её узлов неодинаковое число СС. Парсер отклоняет такую модель явно, а не пытается угадать недостающие компоненты.

Глобальная нумерация

В проекте СС нумеруются по узлам. Для n-го узла и d компонентов на узел глобальный номер компоненты j равен:

globalDOF(n, j) = (n − 1) · d + j

Рассмотрим два рамных элемента из задачи CaseFig11.7p363 MarioPaz. Для трёх узлов матрица соответствия iMnod имеет вид:

% столбцы: ux  uy  thetaZ
iMnod = [ 1   2    3;
          4   5    6;
          7   8    9 ];
Глобальная нумерация степеней свободы двухэлементной рамы Наклонный элемент один соединяет закреплённый узел один со свободным узлом два, а горизонтальный элемент два соединяет узел два с закреплённым узлом три. Узлам соответствуют глобальные степени свободы от одного до девяти. Свободными остаются номера четыре, пять и шесть. Расчётная схема и номера строк/столбцов узел 1 узел 2 узел 3 элемент 1 элемент 2 [4]: uₓ₂ [5]: uᵧ₂ [6]: θ₂ узел 1 · заделка 1: uₓ₁ · 2: uᵧ₁ · 3: θ₁ узел 2 · свободен 4: uₓ₂ · 5: uᵧ₂ · 6: θ₂ узел 3 · заделка 7: uₓ₃ · 8: uᵧ₃ · 9: θ₃ Порядок строк и столбцов глобальных K и M 1uₓ₁ 2uᵧ₁ 3θ₁ 4uₓ₂ 5uᵧ₂ 6θ₂ 7uₓ₃ 8uᵧ₃ 9θ₃ e₁.dofs = [1, 2, 3, 4, 5, 6] e₂.dofs = [4, 5, 6, 7, 8, 9] Kff = K([4 5 6], [4 5 6]) · Mff = M([4 5 6], [4 5 6]) строки и столбцы редуцированных матриц: uₓ₂, uᵧ₂, θ₂
Серые СС 1–3 и 7–9 принадлежат заделкам. Оранжевые СС 4–6 среднего узла остаются неизвестными, поэтому именно им соответствуют три строки и три столбца матриц Kff и Mff, приведённых в численном примере.
element(1).dofs = [1; 2; 3; 4; 5; 6];
element(2).dofs = [4; 5; 6; 7; 8; 9];

fixedDOFs = [1 2 3 7 8 9];
freeDOFs  = [4 5 6];

Порядок важен: сначала идут все компоненты первого узла, затем второго. В таком же порядке записаны строки и столбцы элементных матриц. При сборке оба элемента добавляют свои коэффициенты в общие глобальные строки и столбцы 4, 5 и 6, принадлежащие узлу 2.

Данные модели и данные результата

createStructuralElement возвращает неизменяемую по смыслу структуру элемента. Ключевые поля:

ПолеНазначение
type, nodeNumbersтип и топология элемента
nodeCoordinates, lengthгеометрия в глобальных осях
properties[A, E, ρ] или [A, E, ρ, I]
dofsкарта строк и столбцов в глобальных матрицах
transformationматрица перехода из глобальных компонент в локальные
localStiffnessжёсткость в локальной системе элемента
stiffness, massматрицы элемента в глобальных осях

createAnalysisModel копирует собранные матрицы и описание сетки в обычную структуру для чистых решателей. Решатели возвращают новые структуры результатов. Благодаря этому повторный расчёт не зависит от порядка предыдущих запусков.

Мини-практика. От номера узла к строке матрицы

Используйте схему и запуск лабораторной 01. До запуска составьте таблицу компонент для двух узлов: по два перемещения для ферменного элемента и по два перемещения и поворот для рамного.

  1. Сверьте свою таблицу со строками вывода Truss DOFs и Frame DOFs. Подпишите каждую строку соответствующей матрицы.
  2. Укажите, какой физической величине соответствует третья СС в каждой модели и какая нагрузка ей сопряжена.
  3. На бумаге пронумеруйте СС четырёх рамных узлов. Выпишите СС элемента между узлами 2 и 4.
Контроль и отчёт

Матрицы имеют размеры 4×4 и 6×6. Третья СС — u₂x у ферменного элемента (нагрузка F₂x) и θ₁ у рамного (момент M₁). Для элемента между рамными узлами 2 и 4 карта равна [4 5 6 10 11 12]. В отчёт включите таблицы нумерации и поясните, почему один и тот же глобальный номер имеет разный смысл в двух моделях.

Исходный код главы

SPC: ux, uy, thetaZ

Опоры хранятся как маски fixUx/fixUy/fixThetaZ. Типы 1–4 сохраняют прежний смысл; новые типы: 5 — только ux, 6 — только uy, 7 — только thetaZ. Для фермы тип 7 запрещён, а экспорт использует только типы 1, 3 и 2. При смене семейства маски сохраняются; перед переходом к ферме нужно убрать thetaZ. Повторы диагностируются по узлу и СС.

CaseRollerFrame.txt

MPC

MPC связывает несколько узловых СС: одна зависимая СС выражается через ведущие. Физическая нумерация узловых СС остаётся прежней; независимые координаты расчёта q выделяются отдельно. В ферме нет thetaZ. Концевые освобождения Mz реализованы отдельно от MPC.

Подробное описание MPC · JSON v3 · CaseMPCFrame.txt · CaseMPCTruss.txt

Концевые освобождения Mz

Подробное описание: глава 4b

Общий поворот существует, пока хотя бы один присоединённый конец передаёт Mz. Освобождённый конец получает собственную вращательную СС. dofMap=0 означает отсутствие общего thetaZ, а numberOfDOFs включает внутренние СС. Нумерация моделей без освобождений сохраняется.

JSON v4 · CaseReleaseStatic · CaseReleaseModal · CaseReleaseTransient