В этом примере показано, как получить структурную модель луча и вычислить время и частотную характеристику, когда это подвергается импульсной силе. В данном примере считайте стальной консольный луч удовлетворяющим точечной нагрузке в совете. Создавание структурной модели требует Partial Differential Equation Toolbox™.
Стальная балка деформирована путем применения внешней загрузки 100 Н в совете луча и затем выпущена. Этот пример не использует дополнительной загрузки, таким образом, смещение совета колеблется с амплитудой, равной начальному смещению от приложенной силы. Этот пример следует за рабочим процессом с тремя шагами:
Создайте структурную модель луча.
Линеаризуйте структурную модель, чтобы получить разреженную линейную модель луча.
Анализируйте время и частотную характеристику линеаризовавшей модели.
Используя Partial Differential Equation Toolbox, создайте структурную модель и вычислите импульсную характеристику. Для примера моделирования консольного луча смотрите Динамику Ослабленного Консольного Луча (Partial Differential Equation Toolbox).
Сначала создайте луч и задайте модуль Молодежи, отношение Пуассона и массовую плотность стали. Задайте совет луча с помощью addVertex
функция.
gm = multicuboid(0.1,0.005,0.005);
E = 210E9;
nu = 0.3;
rho = 7800;
TipVertex = addVertex(gm,'Coordinates',[0.05,0,0.005]);
Используйте createpde
(Partial Differential Equation Toolbox), чтобы создать структурную модель и сгенерировать mesh с помощью generateMesh
(Partial Differential Equation Toolbox) команда.
sModel = createpde('structural','transient-solid'); sModel.Geometry = gm; msh = generateMesh(sModel);
Визуализируйте геометрию луча с помощью pdegplot
(Partial Differential Equation Toolbox).
figure pdegplot(sModel,'FaceLabels','on'); title('Beam model')
Присвойте структурные свойства для стальной балки с structuralProperties
(Partial Differential Equation Toolbox) команда и фиксирует один конец с помощью structuralBC
(Partial Differential Equation Toolbox).
structuralProperties(sModel,'YoungsModulus',E,'PoissonsRatio',nu,'MassDensity',rho); structuralBC(sModel,'Face',5,'Constraint','fixed');
Можно вычислить режимы вибрации луча путем решения модальной аналитической модели в заданном частотном диапазоне с помощью solve
(Partial Differential Equation Toolbox). Для этого луча первый режим вибрации на уровне 2 639 рад/с, как подтверждено Диаграммой Боде в разделе Linear Analysis этого примера.
firstNF = 2639; Tfundamental = 2*pi/firstNF;
Чтобы смоделировать импульс (удар) по совету луча, прикладывайте силу в течение 2% основного периода колебания (импульс) с помощью structuralBoundaryLoad
(Partial Differential Equation Toolbox). Задайте метку force
использовать эту силу в качестве входа линеаризации.
Te = 0.02*Tfundamental; structuralBoundaryLoad(sModel,'Vertex',TipVertex,... 'Force',[0;0;-100],'EndTime',Te,'Label','force');
Установите начальные условия для модели луча использование structuralIC
(Partial Differential Equation Toolbox).
structuralIC(sModel,'Velocity',[0;0;0]);
Вычислите импульсную характеристику путем решения структурной модели луча.
ncycles = 10; tsim = linspace(0,ncycles*Tfundamental,30*ncycles); R1 = solve(sModel,tsim);
Визуализируйте колебания в совете луча.
figure plot(tsim,R1.Displacement.uz(TipVertex,:)) title('Vertical Displacement of Beam Tip') legend('Structural model') xlabel('Time') ylabel('Displacement')
Для этой модели луча вы хотите получить линейную модель (передаточная функция) из силы, прикладывавшей в совете к z-смещению совета.
Для этого сначала задайте вводы и выводы линеаризовавшей модели в терминах структурной модели. Здесь, вход является силой, заданной с structuralBoundaryLoad
(Partial Differential Equation Toolbox) и выход являются z степенью свободы вершины совета.
linearizeInput(sModel,'force'); linearizeOutput(sModel,'Vertex',TipVertex,'Component','z');
Затем используйте linearize
(Partial Differential Equation Toolbox) команда, чтобы извлечь mechss
модель.
sys = linearize(sModel)
Sparse continuous-time second-order model with 1 outputs, 3 inputs, and 3486 degrees of freedom. Use "spy" and "showStateInfo" to inspect model structure. Type "properties('mechss')" for a list of model properties. Type "help mechssOptions" for available solver options for this model.
Линеаризовавшая модель имеет три входных параметров, соответствующие x, y, и z компоненты силы применились к вершине совета.
sys.InputName
ans = 3×1 cell
{'force_x'}
{'force_y'}
{'force_z'}
В линеаризовавшей модели выберите z компонент силы.
sys = sys(:,3)
Sparse continuous-time second-order model with 1 outputs, 1 inputs, and 3486 degrees of freedom. Use "spy" and "showStateInfo" to inspect model structure. Type "properties('mechss')" for a list of model properties. Type "help mechssOptions" for available solver options for this model.
Результирующая модель задана следующей системой уравнений:
Используйте spy
визуализировать разреженность mechss
модель sys
.
figure spy(sys)
Включите параллельные вычисления и выберите 'tfbdf3'
как решатель дифференциального алгебраического уравнения (DAE).
sys.SolverOptions.UseParallel = true;
sys.SolverOptions.DAESolver = 'trbdf3';
Используйте bode
вычислить частотную характеристику линеаризовавшей модели sys
.
w = logspace(2,6,1000); figure bode(sys,w)
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6).
grid
title('Frequency Response from Force to Tip Vertical Displacement')
Диаграмма Боде показывает, что первый режим вибрации приблизительно в firstNF
= 2 639 рад/с.
Затем используйте lsim
сравнить импульсную характеристику с приближениями, полученными из структурной модели луча. Чтобы ограничить ошибку из-за линейной интерполяции силы между выборками, используйте размер шага Te/5
. Вспомните, что сила прикладывается в совете луча для кратковременного интервала [0 Te
].
h = Te/5; t = 0:h:ncycles*Tfundamental; u = zeros(size(t)); u(t<=Te) = -100; y = lsim(sys,u,t); figure plot(t,y,tsim,R1.Displacement.uz(TipVertex,:)) title({'Comparison of Full-Model Simulated Response';... 'with Structural Model Approximations'}) legend('Linearized model','Structural model') xlabel('Time') ylabel('Displacement')
Линейный ответ от lsim
тесно совпадает с переходной симуляцией структурной модели, полученной в первом шаге.
showStateInfo
| spy
| mechss
| solve
(Partial Differential Equation Toolbox) | structuralBC
(Partial Differential Equation Toolbox) | structuralIC
(Partial Differential Equation Toolbox) | createpde
(Partial Differential Equation Toolbox) | linearize
(Partial Differential Equation Toolbox) | linearizeInput
(Partial Differential Equation Toolbox) | linearizeOutput
(Partial Differential Equation Toolbox)