Выполнить модальный и переходный анализ камертона.
Камертон представляет собой П-образную балку. При ударе по одному из зубцов или зубцов вибрирует на своей основной (первой) частоте и издаёт слышимый звук.
Первый гибкий режим камертона характеризуется симметричной вибрацией стоек: они движутся друг к другу и друг от друга одновременно, уравновешивая силы в основании, где они пересекаются. Основной режим вибрации не оказывает какого-либо изгибающего воздействия на ручку, прикрепленную на пересечении стоек. Отсутствие изгиба у основания позволяет легко обращаться с камертоном, не влияя на его динамику.
Поперечная вибрация зубьев вызывает осевую вибрацию рукоятки на основной частоте. Эта осевая вибрация может быть использована для усиления слышимого звука путем приведения конца ручки в контакт с большей площадью поверхности, как у металлической столешницы. Следующая более высокая мода с симметричной формой моды примерно в 6,25 раз превышает основную частоту. Поэтому должным образом возбужденный камертон имеет тенденцию вибрировать с доминирующей частотой, соответствующей основной частоте, создавая чистый слышимый тон. В этом примере моделируются эти аспекты динамики камертона путем выполнения модального анализа и моделирования переходной динамики.
Вы можете найти вспомогательные функции animateSixTuningForkModes и tuningForkFFT и файл геометрии TuningFork.stl под matlab/R20XXx/examples/pde/main.
Найдите собственные частоты и формы режимов для фундаментального режима камертона и следующих нескольких режимов. Показать отсутствие изгибающего эффекта на ручке вилки на основной частоте.
Сначала создайте структурную модель для модального анализа твердотельного камертона.
model = createpde('structural','modal-solid');
Для выполнения модального анализа структуры без ограничений достаточно задать свойства геометрии, сетки и материала. Сначала импортируйте и постройте график геометрии камертона.
importGeometry(model,'TuningFork.stl');
figure
pdegplot(model)Задайте модуль Юнга, коэффициент Пуассона и плотность массы для моделирования поведения линейного эластичного материала. Укажите все физические свойства в согласованных единицах измерения.
E = 210E9; nu = 0.3; rho = 8000; structuralProperties(model,'YoungsModulus',E, ... 'PoissonsRatio',nu, ... 'MassDensity',rho);
Создайте сетку.
generateMesh(model,'Hmax',0.001);Решите модель для выбранного диапазона частот. Укажите нижний предел частоты ниже нуля, чтобы в решении появлялись все режимы с частотами, близкими к нулю.
RF = solve(model,'FrequencyRange',[-1,4000]*2*pi);По умолчанию решатель возвращает круговые частоты.
modeID = 1:numel(RF.NaturalFrequencies);
Выразить результирующие частоты в Гц, разделив их на . Отображение частот в таблице.
tmodalResults = table(modeID.',RF.NaturalFrequencies/2/pi);
tmodalResults.Properties.VariableNames = {'Mode','Frequency'};
disp(tmodalResults); Mode Frequency
____ _________
1 0.0072398
2 0.0033543
3 0.0025636
4 0.0039618
5 0.0053295
6 0.0094544
7 460.42
8 706.34
9 1911.5
10 2105.5
11 2906.5
12 3814.7
Поскольку в этом примере нет граничных ограничений, модальные результаты включают режимы жесткого тела. Первые шесть околонулевых частот указывают шесть мод жесткого тела 3-D твердого тела. Первый гибкий режим - седьмой режим с частотой около 460 Гц.
Лучший способ визуализации форм моды - анимация гармонического движения на соответствующих частотах. animateSixTuningForkModes функция анимирует шесть гибких режимов, которые являются режимами 7-12 в модальных результатах RF.
frames = animateSixTuningForkModes(RF);


Для воспроизведения анимации используйте следующую команду:
movie(figure('units','normalized','outerposition',[0 0 1 1]),frames,5,30)
В первом режиме две осциллирующие стойки камертона уравновешивают поперечные усилия на рукоятке. Следующим режимом с таким эффектом является пятый гибкий режим с частотой 2906,5 Гц. Эта частота примерно в 6,25 раза превышает основную частоту 460 Гц.
Смоделировать динамику камертона аккуратно и быстро ударили по одной из его стойок. Проанализируйте вибрацию зубьев во времени и осевую вибрацию рукоятки.
Сначала создайте модель структурного анализа переходных процессов.
tmodel = createpde('structural','transient-solid');
Импортируйте ту же геометрию камертона, которая использовалась для модального анализа.
importGeometry(tmodel,'TuningFork.stl');Создайте сетку.
mesh = generateMesh(tmodel,'Hmax',0.005);Задайте модуль Юнга, коэффициент Пуассона и плотность массы.
structuralProperties(tmodel,'YoungsModulus',E, ... 'PoissonsRatio',nu, ... 'MassDensity',rho);
Определение граней для применения граничных зависимостей и нагрузок путем печати геометрии с метками граней.
figure('units','normalized','outerposition',[0 0 1 1]) pdegplot(tmodel,'FaceLabels','on') view(-50,15) title 'Geometry with Face Labels'

Наложение достаточных граничных ограничений для предотвращения движения жесткого тела при приложенной нагрузке. Обычно вы держите камертон вручную или устанавливаете его на стол. Упрощенным приближением к этому граничному условию является фиксация области вблизи пересечения зубцов и ручки (граней 21 и 22).
structuralBC(tmodel,'Face',[21,22],'Constraint','fixed');
Аппроксимировать импульсную нагрузку на грань стойки путем приложения нагрузки давлением в течение очень малой доли периода времени основного режима. Используя этот очень короткий импульс давления, вы обеспечиваете возбуждение только основного режима камертона. Оценка периода времени T фундаментального режима, использовать результаты модального анализа.
T = 2*pi/RF.NaturalFrequencies(7);
Укажите нагрузку давления на стойку в виде короткого прямоугольного импульса давления.
structuralBoundaryLoad(tmodel,'Face',11,'Pressure',5E6,'EndTime',T/300);
В качестве начальных условий используйте нулевое смещение и скорость.
structuralIC(tmodel,'Displacement',[0;0;0],'Velocity',[0;0;0]);
Решите переходную модель для 50 периодов фундаментального режима. Выполните выборку динамики 60 раз за период основного режима.
ncycle = 50; samplingFrequency = 60/T; tlist = linspace(0,ncycle*T,ncycle*T*samplingFrequency); R = solve(tmodel,tlist)
R =
TransientStructuralResults with properties:
Displacement: [1×1 FEStruct]
Velocity: [1×1 FEStruct]
Acceleration: [1×1 FEStruct]
SolutionTimes: [1×3000 double]
Mesh: [1×1 FEMesh]
Постройте график временного ряда вибрации наконечника стойки, который является гранью 12. Найдите узлы на грани наконечника и постройте график y- компонент смещения с течением времени, использующий один из этих узлов.
excitedTineTipNodes = findNodes(mesh,'region','Face',12); tipDisp = R.Displacement.uy(excitedTineTipNodes(1),:); figure plot(R.SolutionTimes,tipDisp) title('Transverse Displacement at Tine Tip') xlim([0,0.1]) xlabel('Time') ylabel('Y-Displacement')

Выполните быстрое преобразование Фурье (БПФ) для временного ряда смещения наконечника, чтобы увидеть, что частота колебаний камертона близка к его основной частоте. Небольшое отклонение от основной частоты, вычисленной в анализе без ограничений модального режима, появляется из-за ограничений, наложенных в анализе переходных процессов.
[fTip,PTip] = tuningForkFFT(tipDisp,samplingFrequency);
figure
plot(fTip,PTip)
title({'Single-sided Amplitude Spectrum', 'of Tip Vibration'})
xlabel('f (Hz)')
ylabel('|P1(f)|')
xlim([0,4000])
Поперечная вибрация зубьев вызывает осевую вибрацию рукоятки с одинаковой частотой. Для наблюдения за этой вибрацией постройте график временного ряда осевого смещения торцевой поверхности ручки.
baseNodes = tmodel.Mesh.findNodes('region','Face',6); baseDisp = R.Displacement.ux(baseNodes(1),:); figure plot(R.SolutionTimes,baseDisp) title('Axial Displacement at the End of Handle') xlim([0,0.1]) ylabel('X-Displacement') xlabel('Time')

Выполните БПФ временного ряда осевых колебаний рукоятки. Эта частота вибрации также близка к своей основной частоте.
[fBase,PBase] = tuningForkFFT(baseDisp,samplingFrequency);
figure
plot(fBase,PBase)
title({'Single-sided Amplitude Spectrum', 'of Base Vibration'})
xlabel('f (Hz)')
ylabel('|P1(f)|')
xlim([0,4000])