Узел
Хранит положение (X, Y). Набор допустимых перемещений определяется типом всех элементов модели, а не самим узлом.
Конечно-элементная модель — это дискретное представление непрерывного расчётного объекта, содержащего бесконечное множество точек. В реализованных здесь стержневых моделях каждый конечный элемент задаётся двумя узлами: перемещения и, для рамы, повороты узлов образуют конечный набор неизвестных, а поле между узлами восстанавливается функциями формы. Координаты, связи, свойства материала и сечения определяют, как уравнения отдельных элементов объединяются в глобальную систему.
Хранит положение (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 ];
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. До запуска составьте таблицу компонент для двух узлов: по два перемещения для ферменного элемента и по два перемещения и поворот для рамного.
Truss DOFs и Frame DOFs. Подпишите каждую строку соответствующей матрицы.Матрицы имеют размеры 4×4 и 6×6. Третья СС — u₂x у ферменного элемента (нагрузка F₂x) и θ₁ у рамного (момент M₁). Для элемента между рамными узлами 2 и 4 карта равна [4 5 6 10 11 12]. В отчёт включите таблицы нумерации и поясните, почему один и тот же глобальный номер имеет разный смысл в двух моделях.
FEMesh.m — чтение узлов, выбор числа СС и построение iMnod;createStructuralElement.m — единый интерфейс данных элемента;createAnalysisModel.m — структура модели для решателей;example_01_element_matrices.m — исполняемая лабораторная.Опоры хранятся как маски fixUx/fixUy/fixThetaZ. Типы 1–4 сохраняют прежний смысл; новые типы: 5 — только ux, 6 — только uy, 7 — только thetaZ. Для фермы тип 7 запрещён, а экспорт использует только типы 1, 3 и 2. При смене семейства маски сохраняются; перед переходом к ферме нужно убрать thetaZ. Повторы диагностируются по узлу и СС.
MPC связывает несколько узловых СС: одна зависимая СС выражается через ведущие. Физическая нумерация узловых СС остаётся прежней; независимые координаты расчёта q выделяются отдельно. В ферме нет thetaZ. Концевые освобождения Mz реализованы отдельно от MPC.
Подробное описание MPC · JSON v3 · CaseMPCFrame.txt · CaseMPCTruss.txt
Общий поворот существует, пока хотя бы один присоединённый конец передаёт Mz. Освобождённый конец получает собственную вращательную СС. dofMap=0 означает отсутствие общего thetaZ, а numberOfDOFs включает внутренние СС. Нумерация моделей без освобождений сохраняется.
JSON v4 · CaseReleaseStatic · CaseReleaseModal · CaseReleaseTransient