В этом примере показано, как решить структурную задачу динамики при помощи модальных результатов анализа. Решите для переходного процесса в центре 3-D луча при гармонической нагрузке на один из ее углов. Сравните результаты прямой интеграции с результатами, полученными модальной суперпозицией.
Создайте модальную аналитическую модель для 3-D проблемы.
modelM = createpde('structural','modal-solid');
Создайте геометрию и включайте ее в модель. Постройте геометрию и отобразите метки вершины и ребро.
gm = multicuboid(0.05,0.003,0.003); modelM.Geometry=gm; pdegplot(modelM,'EdgeLabels','on','VertexLabels','on'); view([95 5])
Сгенерируйте mesh.
msh = generateMesh(modelM);
Задайте модуль Молодежи, отношение Пуассона и массовую плотность материала.
structuralProperties(modelM,'YoungsModulus',210E9, ... 'PoissonsRatio',0.3, ... 'MassDensity',7800);
Задайте минимальные ограничения на один конец луча, чтобы предотвратить режимы твердого тела. Например, укажите, что ребро 4 и вершина 7 является зафиксированными контурами.
structuralBC(modelM,'Edge',4,'Constraint','fixed'); structuralBC(modelM,'Vertex',7,'Constraint','fixed');
Решите задачу для частотного диапазона от 0 до 500 000. Рекомендуемый подход должен использовать значение, которое немного меньше, чем ожидаемая самая низкая частота. Таким образом используйте-0.1 вместо 0.
Rm = solve(modelM,'FrequencyRange',[-0.1,500000]);
Создайте модель анализа переходных процессов для 3-D проблемы.
modelD = createpde('structural','transient-solid');
Используйте ту же геометрию и mesh что касается модального анализа.
modelD.Geometry = gm; modelD.Mesh = msh;
Задайте те же значения для модуля Молодежи, отношения Пуассона и массовой плотности материала.
structuralProperties(modelD,'YoungsModulus',210E9, ... 'PoissonsRatio',0.3, ... 'MassDensity',7800);
Задайте те же минимальные ограничения на один конец луча, чтобы предотвратить режимы твердого тела.
structuralBC(modelD,'Edge',4,'Constraint','fixed'); structuralBC(modelD,'Vertex',7,'Constraint','fixed');
Прикладывайте синусоидальную силу на углу напротив ограниченного ребра и вершины.
structuralBoundaryLoad(modelD,'Vertex',5,'Force',[0,0,10],'Frequency',7600);
Определите нулевое начальное перемещение и скорость.
structuralIC(modelD,'Velocity',[0;0;0],'Displacement',[0;0;0]);
Задайте относительные и абсолютные допуски к решателю.
modelD.SolverOptions.RelativeTolerance = 1E-5; modelD.SolverOptions.AbsoluteTolerance = 1E-9;
Решите модель с помощью метода прямой интеграции по умолчанию.
tlist = linspace(0,0.004,120); Rd = solve(modelD,tlist)
Rd = TransientStructuralResults with properties: Displacement: [1x1 struct] Velocity: [1x1 struct] Acceleration: [1x1 struct] SolutionTimes: [1x120 double] Mesh: [1x1 FEMesh]
Теперь решите модель с помощью модальных результатов.
tlist = linspace(0,0.004,120);
Rdm = solve(modelD,tlist,'ModalResults',Rm)
Rdm = TransientStructuralResults with properties: Displacement: [1x1 struct] Velocity: [1x1 struct] Acceleration: [1x1 struct] SolutionTimes: [1x120 double] Mesh: [1x1 FEMesh]
Интерполируйте смещение в центре луча.
intrpUd = interpolateDisplacement(Rd,0,0,0.0015); intrpUdm = interpolateDisplacement(Rdm,0,0,0.0015);
Сравните результаты прямой интеграции с результатами, полученными модальной суперпозицией.
plot(Rd.SolutionTimes,intrpUd.uz,'bo') hold on plot(Rdm.SolutionTimes,intrpUdm.uz,'rx') grid on legend('Direct integration', 'Modal superposition') xlabel('Time'); ylabel('Center of beam displacement')