В этом примере показано, как получить модель конечного элемента луча и вычислить ответ, когда подвергнуто импульсной силе. В данном примере считайте стальной консольный луч удовлетворяющим точечной нагрузке в совете. Создавание модели конечного элемента требует лицензии 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;
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)