Этот пример показывает, как получить модель конечного элемента луча и вычислить ответ при воздействии импульсной силы. В данном примере рассмотрим стальную консольную балку, подверженную точечной нагрузке на совет. Построение модели конечного элемента требует лицензии Partial Differential Equation Toolbox.
Модель демпфирования является базовым вязким демпфированием, распределенным равномерно по объему балки. Стальная балка деформируется путем приложения внешней нагрузки 100 Н к совету балки и затем освобождается. Этот пример не использует никаких дополнительных загрузок, поэтому перемещение балки уменьшается как функция времени из-за демпфирования. Этот пример следует трехэтапному рабочему процессу:
Переходный анализ модели луча.
Извлеките разреженные матрицы конечных элементов и создайте модель разреженного пространства состояний второго порядка.
Выполните линейный анализ на разреженной модели второго порядка.
Создайте переходную модель и вычислите импульсную характеристику.
Сначала создайте пучок и задайте модуль Юнга, отношение Пуассона и массовую плотность стали. Задайте совет балки используя addVertex
свойство.
gm = multicuboid(0.1,0.005,0.005);
E = 210E9;
nu = 0.3;
rho = 7800;
TipVertex = gm.addVertex('Coordinates',[0.05,0,0.005]);
firstNF = 2639;
Tfundamental = 2*pi/firstNF;
Использование createpde
(Partial Differential Equation Toolbox), чтобы создать переходную модель и сгенерировать mesh с помощью generateMesh
(Набор Partial Differential Equation Toolbox).
transientModel = createpde('structural','transient-solid'); transientModel.Geometry = gm; msh = generateMesh(transientModel);
Присвоение структурных свойств стальной балке с structuralProperties
(Partial Differential Equation Toolbox) и исправьте один конец, используя structuralBC
(Набор Partial Differential Equation Toolbox).
structuralProperties(transientModel,'YoungsModulus',E,'PoissonsRatio',nu,'MassDensity',rho); structuralBC(transientModel,'Face',5,'Constraint','fixed');
Визуализируйте геометрию балки с помощью pdegplot
(Набор Partial Differential Equation Toolbox).
pdegplot(transientModel,'VertexLabels','on'); title('Beam model')
Приложите силу к совету луча на 2% основного периода колебаний (импульса) с помощью structuralBoundaryLoad
(Набор Partial Differential Equation Toolbox).
Te = 0.02*Tfundamental; structuralBoundaryLoad(transientModel,'Vertex',TipVertex,... 'Force',[0;0;-100],'EndTime',Te);
Установите начальные условия для модели переходного луча с помощью structuralIC
(Набор Partial Differential Equation Toolbox).
structuralIC(transientModel,'Velocity',[0;0;0]);
Вычислите импульсную характеристику, решив модель переходного луча.
ncycles = 10; tsim = linspace(0,ncycles*Tfundamental,30*ncycles); R1 = solve(transientModel,tsim);
Визуализируйте колебания на совете луча.
plot(tsim,R1.Displacement.uz(TipVertex,:)) title('Vertical displacement of beam tip') legend('Transient model') xlabel('Time') ylabel('Displacement')
Следующим шагом является извлечение разреженных матриц из модели луча с конечным элементом.
Первый шаг к извлечению M
, K
, B
, F
матрицы из модели луча с конечными элементами, чтобы модулировать силу, чтобы вычислить B
матрица. Использование assembleFEMatrices
(Partial Differential Equation Toolbox), чтобы извлечь разреженные матрицы для модели луча второго порядка.
F1 = -100; structuralBoundaryLoad(transientModel,'Vertex',TipVertex,'Force',[0;0;F1]); state.time = 0; data1 = assembleFEMatrices(transientModel,'nullspace',state); F2 = 100; structuralBoundaryLoad(transientModel,'Vertex',TipVertex,'Force',[0;0;F2]); data2 = assembleFEMatrices(transientModel,'nullspace',state);
Получившаяся модель определяется следующим набором уравнений:
M = data1.M; K = data1.Kc;
The F
матрица состоит из перемещений x, y и z в TipVertex
узел.
N = size(msh.Nodes,2); F = data1.B; F = F(TipVertex+[0 N 2*N],:);
Сопоставьте B
матрица, связывающая силу с входом.
B = (data2.Fc-data1.Fc)/(F2-F1);
Получите разреженную модель луча с помощью mechss
.
sys = mechss(M,[],K,B,F(3,:));
Использование spy
для визуализации разреженности модели mechss sys
.
spy(sys)
Включите параллельные вычисления и выберите 'tfbdf3'
как решатель ДАУ.
sys.SolverOptions.UseParallel = true;
sys.SolverOptions.DAESolver = 'trbdf3';
Использование bode
вычислить частотную характеристику этой модели.
w = logspace(2,6,1000); bode(sys,w), grid
using parallel (mechss)
title('Frequency response from force to tip vertical displacement')
Следующее использование lsim
сравнить импульсную характеристику с приближениями, полученной из модели переходного луча. Чтобы ограничить ошибку из-за линейной интерполяции силы между выборками, используйте размер шага Te/5
. Сила, приложенная к совету балки, .
h = Te/5; t = 0:h:ncycles*Tfundamental; u = zeros(size(t)); u(t<=Te) = -100; y = lsim(sys,u,t); plot(t,y,tsim,R1.Displacement.uz(TipVertex,:)) title('Comparison of full-model simulated response with transient model approximations') legend('Simulated model','Transient model') xlabel('Time') ylabel('Displacement')
Переходные приближения модели хорошо совпадают с симуляцией полной модели с помощью решателя TRBDF3 ДАУ.
mechss
| showStateInfo
| spy
(mechss)
| assembleFEMatrices
(Partial Differential Equation Toolbox) | createpde
(Набор Partial Differential Equation Toolbox производными) | solve
(Набор Partial Differential Equation Toolbox производными) | structuralBC
(Набор Partial Differential Equation Toolbox производными) | structuralIC
(Набор Partial Differential Equation Toolbox)