МКЭ-Ф — метод Ньюмарка

Обновление в МКЭ-Ф — метод Ньюмарка. О методе можно почитать в книге Бате, Вилсон — «Численные методы анализа и метод конечных элементов» (1982). Сам алгоритм описан на стр. 271. Полезно почитать Главу 8 сначала, чтобы ориентироваться в обозначениях. В данной статье приводятся новые результаты работы программы МКЭ-Ф по динамическому отклику. Рисунок решения с новым алгоритмом интегрирования:

МКЭ-Ф - метод Ньюмарка: Решение задачи на отклик шаг 0.0000005с, длительность 0.07с, узел 5, DOF=Y
Решение Задачи А на отклик шаг 0.0000005с, длительность 0.07с, узел 5, DOF=Y. Итог: 157 Гц вместо 160 по результатам модального анализа. Но это гораздо лучше, чем было. Последующие частоты размываются на графике спектра, что характерно для КЭ анализа.

МКЭ-Ф — метод Ньюмарка: Методы интегрирования уравнения динамики

В указанной книге методы решения делятся на два типа.

  • Первый тип — это прямые методы интегрирования, когда уравнение решается без предварительных преобразований.
  • Второй тип — методы разложения на моды.

Метод Ньюмарка относится к первой группе.

Посмотрите на 15-й шаг (второй рисунок). Когда я решал данную задачу в ANSYS, была доступна соответствующая настройка в разделе Time Integration. Также на этом же рисунке можно заметить настройки параметров алгоритма Ньюмарка. С ними, по меньшей мере в плане прикладного программирования все просто: есть рекомендуемое значение параметров и оно уже предустановлено в поля ввода. В работе алгоритма исходные параметры используются для определения набора коэффициентов с помощью которых ведутся матричные вычисления на шагах по времени. Подробнее см. в книге.

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

Также обращаю внимание на то, что в книге Бате и Вилсона алгоритм Ньюмарка приводится с разложением Холецкого-LDL, которое я не делал, поскольку все-равно не управляю решением СЛАУ. Это делает Matlab.

Запуск решения в МКЭ-Ф v0.4

Процедура запуска не изменилась:

P1 = StructFEProblem('CaseATransientSite.txt');
P1.RunTransient(0.0000005,0.07,5,2);

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.