Перейти к содержанию

Решатель и предобусловливание

Линейные решатели FrontISTR настраиваются выбором прямого или итерационного метода; при использовании итерационного метода он сочетается с предобусловливателем для решения линейных уравнений. Способ обработки MPC и исключение контактных степеней свободы являются вспомогательными параметрами, определяющими форму обработки линейной системы с многоточечными или контактными ограничениями.

Обзор функций

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

Категория Основные варианты Назначение
Итерационные методы CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN Решение больших разреженных матриц при сравнительно эффективном использовании памяти.
Предобусловливатели для итерационных методов SSOR, диагональное масштабирование, BILU, AMG, SAINV, RIF Улучшение сходимости итерационных методов. С прямыми методами не используются.
Прямые методы MUMPS, MKL Надёжное решение линейных уравнений путём факторизации матрицы.
Способы обработки MPC Штрафной метод, явное исключение степеней свободы Учёт многоточечных ограничений в линейной системе.
Исключение контактных степеней свободы Автоматически, всегда включено Управляет обработкой контактных степеней свободы, добавляемых при контакте SLAGRANGE.
Вспомогательные функции Оценка числа обусловленности, дамп матрицы, журналирование Помогают при отладке, проверке сходимости и оценке производительности.

При параллельном выполнении MPI-параллелизм на основе декомпозиции области можно сочетать с потоковым параллелизмом OpenMP. Итерационные методы являются стандартным выбором для крупномасштабных параллельных расчётов, а прямые методы применяются в средах, где подключены требуемые библиотеки и требуется более устойчивое решение.

Выбор решателя и предобусловливателя

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

Критерий выбора Рекомендуемый подход
Размер задачи Для малых и средних задач прямые методы стабильны и удобны. Для больших задач итерационные методы эффективнее по памяти.
Симметрия матрицы Для симметричных положительно определённых задач следует рассмотреть CG. Для несимметричных задач — BiCGSTAB, GMRES, GPBiCG и аналогичные методы.
Параллельная среда При MPI-параллелизме сочетайте итерационный метод с декомпозицией области. Для предобусловливания при OpenMP-параллелизме следует рассмотреть SSOR с многоцветной схемой.
Предобусловливатель (при выборе итерационного метода) Сначала попробуйте SSOR по умолчанию, затем рассмотрите AMG. При хорошей сходимости SSOR требует небольших вычислительных затрат; предобусловливание AMG подходит для сложных крупномасштабных задач. AMG доступен в реализации на основе Trilinos-ML и как встроенный в HEC-MW SA-AMG; выбор зависит от конфигурации сборки.
Контакт и MPC В расчётах с контактом или многоточечными ограничениями выбор способа обработки MPC и исключения контактных степеней свободы влияет на сходимость и устойчивость.
Внешние библиотеки MUMPS, MKL и AMG (Trilinos-ML) доступны в сборках, связанных с соответствующими библиотеками. AMG (SA-AMG) доступен в сборках с включённым LAPACK.

Для стандартных расчётов обычно достаточно значений по умолчанию для допуска сходимости, максимального числа итераций и коэффициента диагональной коррекции предобусловливателя. Только при медленной сходимости или расходимости следует последовательно пересмотреть итерационный метод, предобусловливатель, способ обработки MPC и исключение контактных степеней свободы. Значения и синтаксис параметров см. в справочнике ключевого слова !SOLVER.

Итерационные методы

Итерационные методы решают большие разреженные системы, многократно обновляя решение посредством умножений матрицы на вектор и предобусловливания. В FrontISTR доступны следующие итерационные методы.

Итерационный метод Типичное применение Примечания
CG Симметричные положительно определённые задачи Стандартный вариант для структурного анализа и анализа теплопроводности.
BiCGSTAB Несимметричные задачи Вариант для случаев с сильной несимметрией из-за контакта или связанных эффектов.
GMRES Несимметричные задачи Используется с заданным размером подпространства Крылова.
GPBiCG Несимметричные задачи Используется как улучшенный метод семейства BiCGSTAB.
GMRESR Несимметричные задачи, расширенные применения Вариант с вложенным использованием GMRES.
GMRESREN Несимметричные задачи, расширенные применения Рекурсивный вариант семейства GMRESR.

CG предполагает, что матрица симметрична и положительно определена. Если трение в контакте, несимметричная обработка ограничений, связанные эффекты или другие факторы создают сильную несимметрию, следует рассмотреть BiCGSTAB, GMRES, GPBiCG или другой несимметричный решатель. В GMRES увеличение размера подпространства Крылова может улучшить сходимость, но одновременно увеличивает потребление памяти.

Если задан METHOD2, при расходимости или сбое CG можно переключиться на альтернативный итерационный метод. Эта функция служит резервным вариантом, когда CG является основным решателем; альтернативный метод использует те же остальные настройки и строки данных, что и основной решатель.

CG, BiCGSTAB, GPBiCG и PipeCG обновляют вектор невязки по рекуррентной формуле. По мере накопления итераций накапливаются ошибки округления, поэтому рекуррентно обновляемая невязка может отклоняться от истинной невязки. Чтобы этого избежать, через определённое число итераций вектор невязки заново вычисляется по правой части и произведению матрицы на вектор. Этот период задаётся параметром RECOMPUTE_RESIDUAL. Увеличение периода уменьшает число произведений матрицы на вектор, но повышает риск того, что рекуррентная невязка отклонится от истинной и ещё не сошедшееся решение будет признано сошедшимся. Слишком короткий период, напротив, не только увеличивает число произведений матрицы на вектор, но и может нарушить поддерживаемую рекуррентной формулой связь между невязкой и вспомогательными векторами и тем самым ухудшить саму сходимость. Значение по умолчанию для каждого метода представляет собой компромисс между этими эффектами; при его изменении проверяйте историю сходимости и итоговую относительную невязку.

Предобусловливание

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

Предобусловливатель Характеристики Типичное применение
SSOR Стандартный предобусловливатель; поддерживает многоцветное упорядочивание. Первый вариант, который следует попробовать; широко применяется в структурном анализе.
Диагональное масштабирование Лёгкий предобусловливатель, использующий диагональные элементы. Когда требуется снизить вычислительные затраты.
BILU Неполная LU-факторизация по блокам. Вариант для задач, плохо сходящихся с SSOR.
AMG (Trilinos-ML) Алгебраический многосеточный метод с использованием внешней библиотеки Trilinos-ML. Вариант для крупномасштабных задач или задач с доминирующими иерархическими компонентами ошибки.
AMG (SA-AMG) Встроенный в HEC-MW алгебраический многосеточный метод со сглаженной агрегацией. То же назначение; вариант для применения AMG без дополнительной внешней библиотеки.
SAINV Разреженная приближённая обратная матрица. Специализированный вариант предобусловливания для контактных задач или сред с распределённой памятью.
RIF Устойчивая неполная факторизация. Другой вариант неполной факторизации.

SSOR является стандартным выбором; при OpenMP-параллелизме используется версия с многоцветным упорядочиванием. Диагональное масштабирование требует небольших затрат, однако его влияние на сходимость зависит от задачи. BILU реализован как блочная неполная LU-факторизация и поддерживает также матрицы с произвольным числом степеней свободы. В семействе BILU предусмотрен путь, который автоматически увеличивает коэффициент диагональной коррекции SIGMA_DIAG и повторяет попытку при расходимости итерационного метода; способ задания значения см. в справочнике ключевых слов.

AMG (алгебраический многосеточный метод) представлен в двух реализациях: одна использует внешнюю библиотеку Trilinos-ML, другая — встроенный в HEC-MW SA-AMG. Эти реализации независимы и различаются требованиями к конфигурации сборки и доступными параметрами.

Для AMG на основе Trilinos-ML библиотека ML должна быть включена при сборке. Можно задавать сглаживатель, многосеточный цикл, схему огрубления и другие параметры; подробные значения см. в справочнике ключевых слов.

SA-AMG — предобусловливатель на основе алгебраического многосеточного метода со сглаженной агрегацией, не требующий Trilinos-ML. Однако он использует LAPACK внутри, поэтому необходима сборка с включённым LAPACK; при выборе в сборке без LAPACK программа завершается до начала расчёта. Для решения на грубой сетке в сборках с включённым MUMPS можно использовать MUMPS, иначе применяется встроенный плотный прямой метод.

SA-AMG предназначен главным образом для симметричных положительно определённых систем (CG), но также поддерживает несимметричные редуцированные системы, возникающие при контакте с трением (BiCGSTAB, GMRES и др.). Поддерживаются 1 (теплопроводность), 2 (плоская задача), 3 (объёмные элементы) и 6 (оболочки) степеней свободы на узел; матрицы с различным числом степеней свободы в разных узлах не поддерживаются. Можно задавать решатель грубой сетки, многосеточный цикл, степень сглаживателя и другие параметры, однако для стандартных расчётов подходят значения по умолчанию. Значения и синтаксис см. в справочнике ключевых слов. В сборках с поддержкой GPU (OpenACC) этап применения предобусловливателя выполняется на GPU.

При использовании SAINV в параллельном расчёте с контактом или MPC глубина перекрытия при декомпозиции области может влиять на сходимость.

Прямые методы

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

Прямой метод Параллельная среда Применение
MUMPS MPI-параллелизм Решает разреженные матрицы прямым методом в средах с распределённой памятью.
MKL Intel MKL / OpenMP Прямой решатель на основе Intel MKL. Внутри используется Intel PARDISO. При нескольких MPI-процессах используется путь Cluster MKL. DIRECTmkl является псевдонимом MKL.

Прямые методы можно использовать как для симметричных, так и для несимметричных матриц. MUMPS и MKL требуют, чтобы при сборке были подключены соответствующие библиотеки. В средах без этих библиотек они недоступны; необходимые зависимости и параметры CMake см. в руководстве по сборке.

В FrontISTR также имеется встроенный путь прямого решения без внешних библиотек, но для обычных расчётов, где требуется прямой метод, в первую очередь следует рассматривать MUMPS или MKL.

К прямым методам предобусловливание не применяется. Даже если предобусловливатель задан в !SOLVER, в пути прямого решателя он не используется.

Способы обработки MPC

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

Способ обработки MPC Характеристика Применение по умолчанию
Штрафной метод Приближённо выполняет ограничения за счёт добавления больших членов жёсткости в уравнения ограничений. По умолчанию для прямых методов.
Явное исключение степеней свободы Исключает ограниченные степени свободы и решает редуцированную линейную систему. По умолчанию для итерационных методов.

Для прямых методов по умолчанию используется штрафной метод, а для итерационных — явное исключение степеней свободы. Ранее доступный метод MPC-CG удалён; при обработке входных данных с MPCMETHOD=2 выдаётся предупреждение и используются указанные методы по умолчанию.

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

В !SOLVER способ обработки MPC можно явно задать параметром MPCMETHOD. Значения и синтаксис см. в справочнике ключевых слов.

Исключение контактных степеней свободы

Исключение контактных степеней свободы сокращает дополнительные контактные степени свободы, вводимые контактом SLAGRANGE, до передачи системы линейному решателю. Исключение этих степеней свободы может улучшить свойства линейной системы, обрабатываемой итерационным методом.

В автоматическом режиме по умолчанию исключение контактных степеней свободы включено для итерационных методов и отключено для прямых. Для прямых методов предусмотрен путь непосредственного решения расширенной системы, содержащей контактные степени свободы.

Если явно указан CONTACT_ELIM, исключение контактных степеней свободы можно выполнять и при использовании прямого метода. Выбор типа контакта, контактной пары и контактного алгоритма во входных данных см. на странице «Контакт и встраивание».

Вспомогательные функции

Для исследования сходимости и производительности решателя можно использовать оценку числа обусловленности, дамп матрицы и журналирование. В обычных расчётах эти функции не нужны и включаются главным образом для отладки и оценки производительности.

Функция Назначение Примечания
Оценка числа обусловленности Выводит показатель числа обусловленности для CG и GMRES. Доступно в сборках с включённым LAPACK.
Дамп матрицы Сохраняет в файл матрицу и правую часть, передаваемые решателю. Поддерживает форматы Matrix Market, CSR и BSR.
DUMPEXIT Завершает расчёт после дампа матрицы. Используется, когда требуется извлечь только матрицу для внешней проверки.
ITERLOG Выводит историю сходимости итерационного метода. Используется для просмотра изменения невязки.
TIMELOG Выводит время вычислений решателя. VERBOSE выводит более подробную разбивку.
STEPLOG Выводит информацию о шагах. Используется для проверки хода анализа.
LOGLEVEL Выводит диагностическую информацию, например о построении иерархии предобусловливателей AMG. Задаётся независимо от ITERLOG и TIMELOG. Чем выше значение, тем больше объём вывода.

Дамп матрицы позволяет проверить внешними средствами матрицу коэффициентов, собранную в ходе анализа. При включённом DUMPEXIT расчёт завершается после сохранения матрицы и правой части. Оценка числа обусловленности — экспериментальная функция для CG и GMRES, используемая для диагностики сходимости.

Связанные разделы