Структурная динамика камертона

Выполните модальный и анализ переходных процессов камертона.

Камертон является U-образным лучом. Когда поражено на одном из его зубцов или зубцов, это вибрирует на своей основной (первой) частоте и производит слышимый звук.

Первый гибкий режим камертона характеризуется симметричной вибрацией зубцов: они двигают и далеко друг от друга одновременно, балансируя силы в основе, где они пересекаются. Основной режим вибрации не производит эффекта изгиба на указатель, присоединенный на пересечении зубцов. Отсутствие изгиба в основе включает легкую обработку камертона, не влияя на ее динамику.

Поперечная вибрация зубцов заставляет указатель вибрировать по оси на основной частоте. Эта осевая вибрация может использоваться, чтобы усилить слышимый звук путем обеспечения конца указателя в контакте с большей площадью поверхности, как металлический стол. Следующий более высокий режим с симметричной формой режима является приблизительно 6,25 раз основной частотой. Поэтому правильно взволнованный камертон имеет тенденцию вибрировать с доминирующей частотой, соответствующей основной частоте, производя чистый слышимый тон. Этот пример симулирует эти аспекты динамики камертона путем выполнения модального анализа и переходной симуляции динамики.

Можно искать функции помощника animateSixTuningForkModes и tuningForkFFT и файл геометрии TuningFork.stl под matlab/R20XXx/examples/pde/main.

Модальный анализ камертона

Найдите собственные частоты и формы режима для основного режима камертона и следующих нескольких режимов. Покажите отсутствие изгибающегося эффекта на указателе ветвления на основной частоте.

Во-первых, создайте структурную модель для модального анализа твердого камертона.

model = createpde('structural','modal-solid');

Чтобы выполнить неограниченный модальный анализ структуры, достаточно задать геометрию, mesh и свойства материала. Во-первых, импортируйте и постройте геометрию камертона.

importGeometry(model,'TuningFork.stl');
figure
pdegplot(model)

Задайте модуль Молодежи, отношение Пуассона и массовую плотность, чтобы смоделировать линейное эластичное существенное поведение. Задайте все физические свойства в сопоставимых модулях.

E = 210E9;
nu = 0.3;
rho = 8000;
structuralProperties(model,'YoungsModulus',E, ...
                           'PoissonsRatio',nu, ...
                           'MassDensity',rho);

Сгенерируйте mesh.

generateMesh(model,'Hmax',0.001);

Решите модель для выбранного частотного диапазона. Задайте более низкий предел частоты, ниже нуля так, чтобы все режимы с частотами около нуля появились в решении.

RF = solve(model,'FrequencyRange',[-1,4000]*2*pi);

По умолчанию решатель возвращает круговые частоты.

modeID = 1:numel(RF.NaturalFrequencies);

Выразите получившиеся частоты в Гц путем деления их на 2π. Отобразите частоты в таблице.

tmodalResults = table(modeID.',RF.NaturalFrequencies/2/pi);
tmodalResults.Properties.VariableNames = {'Mode','Frequency'};
disp(tmodalResults);
    Mode    Frequency
    ____    _________

      1     0.0043502
      2     0.0057641
      3     0.0060113
      4     0.0063511
      5     0.0064692
      6     0.0080954
      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)

В первом режиме два колеблющихся зубца камертона балансируют поперечные силы в указателе. Следующий режим с этим эффектом является пятым гибким режимом с частотой 2 906,5 Гц. Эта частота приблизительно в 6.25 раз больше, чем основная частота 460 Гц.

Анализ переходных процессов камертона

Симулируйте динамику камертона, мягко и быстро поражаемого на одном из его зубцов. Анализируйте вибрацию зубцов в зависимости от времени и осевую вибрацию указателя.

Во-первых, создайте структурную модель анализа переходных процессов.

tmodel = createpde('structural','transient-solid');

Импортируйте ту же геометрию камертона, которую вы использовали в модальном анализе.

importGeometry(tmodel,'TuningFork.stl');

Сгенерируйте mesh.

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 struct]
         Velocity: [1×1 struct]
     Acceleration: [1×1 struct]
    SolutionTimes: [1×3000 double]
             Mesh: [1×1 FEMesh]

Постройте timeseries вибрации совета зубца, который является поверхностью 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')

Выполните быстрое преобразование Фурье (FFT) на timeseries смещения совета, чтобы видеть, что частота вибрации камертона близко к его основной частоте. Маленькое отклонение от основной частоты, вычисленной в неограниченном модальном анализе, появляется из-за ограничений, наложенных в анализе переходных процессов.

[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])

Поперечная вибрация зубцов заставляет указатель вибрировать по оси с той же частотой. Чтобы наблюдать эту вибрацию, постройте осевой timeseries смещения поверхности конца указателя.

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')

Выполните БПФ timeseries осевой вибрации указателя. Эта частота вибрации также близко к ее основной частоте.

[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])