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

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

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

Общая структура функций

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AMG использует Trilinos-ML, поэтому ML должен быть включён при сборке. Можно задавать сглаживатели, многосеточные циклы, методы укрупнения сетки и другие параметры; подробные значения см. в справочнике ключевых слов. При использовании 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 Устаревший метод, обрабатывающий умножения матрицы на вектор с ограничениями внутри итерационного решателя. Не рекомендуется.
Явное исключение степеней свободы Исключает ограниченные степени свободы и решает редуцированную линейную систему. По умолчанию для итерационных методов.

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

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

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

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

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

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

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

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

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

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

Связанные темы