Осевое растяжение
EA/L = 600 000
Illustrative Example 11.1 из книги Mario Paz и William Leigh особенно полезен тем, что в одной небольшой модели проверяет поворот рамного элемента, согласованную матрицу масс, прямую сборку и обобщённую собственную задачу. Ни одна стадия не скрыта за большой сеткой.
Два призматических рамных элемента соединяются в узле 2. Узлы 1 и 3 полностью закреплены, поэтому из девяти глобальных степеней свободы остаются только три компоненты среднего узла: ux2, uy2 и θ2.
| Параметр | Значение | Роль в матрицах |
|---|---|---|
| A | 6 in² | Осевое EA/L и масса ρAL |
| I | 100 in⁴ | Изгибные коэффициенты EI/L³, EI/L², EI/L |
| E | 107 lb/in² | Жёсткость |
| ρ | 0.7 lb·s²/in⁴ | В файле хранится объёмная массовая плотность; ρA=4.20 |
| L | 100 in | Оба элемента |
Точные координаты наклонного элемента равны (100/√2, 100/√2). Поэтому входной файл использует 70.7106781186548, а не сокращённое 70.7: последнее изменило бы длину первого элемента на 0.0151%.
Вся схема помещается в короткий входной файл. Нагрузка оставлена как часть исходного примера, но метод RunModal её не использует.
nodes
3
0,0,0
70.7106781186548,70.7106781186548,0
170.710678118655,70.7106781186548,0
elems_113
2
113,1,2,6,10000000,0.7,100
113,2,3,6,10000000,0.7,100
bcfix
2
1,1,0,0,0
1,3,0,0,0
bcforce_stat
1
10,2,0,-10,0
Для рамного узла карта СС имеет вид [ux, uy, thetaZ]. Поэтому свободные СС узла 2 получают глобальные номера [4 5 6], а закреплённые СС — [1 2 3 7 8 9].
Оба элемента имеют одинаковые свойства и длину, поэтому их локальные матрицы совпадают. Численные коэффициенты жёсткости:
EA/L = 600 000
12EI/L³ = 12 000
6EI/L² = 600 000
4EI/L = 40 000 000
2EI/L = 20 000 000
Локальная матрица жёсткости, записанная в порядке [u1 v1 θ1 u2 v2 θ2]:
k(local) = 10^6 ×
[ 0.600 0 0 -0.600 0 0
0 0.012 0.600 0 -0.012 0.600
0 0.600 40.000 0 -0.600 20.000
-0.600 0 0 0.600 0 0
0 -0.012 -0.600 0 0.012 -0.600
0 0.600 20.000 0 -0.600 40.000 ]
Для согласованной массы множитель перед безразмерным шаблоном особенно удобен:
ρAL/420 = 0.7·6·100/420 = 1
m(local) =
[ 140 0 0 70 0 0
0 156 2200 0 54 -1300
0 2200 40000 0 1300 -30000
70 0 0 140 0 0
0 54 1300 0 156 -2200
0 -1300 -30000 0 -2200 40000 ]
Статическая задача использовала бы только K. Здесь собственные значения определяются отношением жёсткости к инерции, поэтому ошибка знака или коэффициента в согласованной матрице масс непосредственно сдвигает частоты и формы.
Для первого элемента c=s=1/√2. Книга выносит общий множитель 1/√2; реализация записывает те же направляющие косинусы непосредственно:
T1 = 1/sqrt(2) ×
[ 1 1 0 0 0 0
-1 1 0 0 0 0
0 0 sqrt(2) 0 0 0
0 0 0 1 1 0
0 0 0 -1 1 0
0 0 0 0 0 sqrt(2) ]
T2 = I
Преобразование применяется одинаково к жёсткости и массе:
k(global) = TT k(local) T
m(global) = TT m(local) T
Именно здесь наклонный элемент создаёт связи между глобальными компонентами x, y и поворотом. Горизонтальный элемент преобразования не требует.
После закрепления наружных узлов достаточно сложить свободно-свободные блоки двух элементов. Это тот же прямой метод, который для большой модели складывает вклады по глобальной карте СС.
K1(ff) =
[ 306000 294000 424264.0687
294000 306000 -424264.0687
424264.0687 -424264.0687 40000000 ]
M1(ff) =
[ 148 -8 1555.6349
-8 148 -1555.6349
1555.6349 -1555.6349 40000 ]
K2(ff) =
[ 600000 0 0
0 12000 600000
0 600000 40000000 ]
M2(ff) =
[ 140 0 0
0 156 2200
0 2200 40000 ]
Kff = K1(ff) + K2(ff)
= 10^6 ×
[ 0.906000 0.294000 0.424264
0.294000 0.318000 0.175736
0.424264 0.175736 80.000000 ]
Mff = M1(ff) + M2(ff)
=
[ 288 -8 1555.635
-8 304 644.365
1555.635 644.365 80000 ]
После округления 0.424264 → 0.424, 0.175736 → 0.176, 1555.635 → 1556 и 644.365 → 644 получаются ровно матрицы, напечатанные в книге.
Ненулевое решение существует, когда:
det(Kff − ω²Mff) = 0
В численном виде решается обобщённая задача eig(Kff, Mff). Её собственные значения равны λ=ω², после чего вычисляются ω=√λ и f=ω/(2π).
| Форма | λ = ω², точное вычисление | λ в книге | ω, рад/с | f, Гц |
|---|---|---|---|---|
| 1 | 638.5045874482 | 638.5 | 25.26864831 | 4.021630284 |
| 2 | 976.5825465395 | 976.6 | 31.25032074 | 4.973643019 |
| 3 | 4211.5971088025 | 4211.6 | 64.89681894 | 10.328649526 |
В книге приведены 25.26 и 31.24 рад/с, хотя обычное округление квадратных корней напечатанных λ даёт 25.27 и 31.25. Частоты в герцах и полные вычисления согласуются; это небольшая особенность округления исходного текста, а не расхождение решателя.
Для каждой формы выбирается масштаб, при котором φiTMφi=1. Столбцы модальной матрицы:
Phi =
[ 0.02182975 0.00497889 0.05830737
-0.05270167 0.00206232 0.02415170
0 0.00340929 -0.00162915 ]
Напечатанные в книге значения [0.0218, -0.0527, 0], [0.00498, 0.00206, 0.00341] и [0.0583, 0.0241, -0.0016] являются округлением этих столбцов.
Две обязательные численные проверки:
ΦTMffΦ = I
ri = Kffφi − λiMffφi ≈ 0
Знак собственного вектора произволен: φ и −φ описывают одну форму. Поэтому тест сначала нормирует каждый столбец по массе, затем согласует его знак с эталоном и лишь после этого сравнивает компоненты.
addpath(pwd);
setup;
problem = StructFEProblem( ...
fullfile('examples', 'cases', ...
'CaseFig11.7p363 MarioPaz.txt'), ...
struct('verbose', false, 'plotting', false));
model = problem.GetAnalysisModel();
result = problem.RunModal();
Kff = full(model.stiffness(result.freeDOFs, result.freeDOFs))
Mff = full(model.mass(result.freeDOFs, result.freeDOFs))
lambda = result.eigenvalues
omega = result.angularFrequenciesRadPerSec
frequencyHz = result.frequenciesHz
Phi = result.modeShapes(result.freeDOFs, :)
Автоматическая проверка находится в tests/test_mario_paz_modal.m и запускается вместе со всем набором:
addpath(pwd); setup; run_octave_tests;
Точные восстановленные значения сравниваются комбинацией относительного и абсолютного допусков. Округлённые книжные числа получают допуск, соответствующий числу напечатанных знаков. Формы отдельно нормируются и согласуются по знаку; дополнительно проверяются ортогональность и невязка собственной пары.
Матрица K удвоится, M не изменится, поэтому все частоты должны умножиться на √2.
Матрица M удвоится, K не изменится, поэтому все частоты должны разделиться на √2.
Проследите, как небольшая геометрическая погрешность изменяет обе матрицы и превращает нулевую поворотную компоненту первой формы в малое ненулевое число.
Не изменяя основной файл, исследуйте копию матрицы. Определите, почему произвольное зануление строк и столбцов нарушает положительную определённость и физический смысл задачи.
CaseFig11.7p363 MarioPaz.txt — точная геометрия, свойства и закрепления;createStructuralElement.m — локальные матрицы и преобразование;assembleGlobalMatrices.m — прямая разреженная сборка;solveModal.m — редукция и обобщённая собственная задача;tests/test_mario_paz_modal.m — численный эталон и устойчивые сравнения;