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

!SOLVER

Управление решателем

Обязательные управляющие данные.

Параметры

METHOD =    Метод решения (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
            DIRECT     : Прямой метод, кроме контактного анализа (только последовательное выполнение) (в настоящее время недоступен)
            DIRECTmkl  : Прямой метод на основе Intel MKL
            MUMPS      : Прямой метод на основе MUMPS
            При выборе прямого метода строки данных игнорируются.
            Для итерационных методов в задачах с 3 степенями свободы доступна потоковая параллелизация OpenMP

PRECOND =   Метод предобусловливания для итерационных решателей (1, 2, 3, 5, 10, 11, 12, 22)
            1, 2       : (Block) SSOR (многоцветное упорядочивание только для задач с 3 степенями свободы)
            3          : (Block) Diagonal Scaling
            5          : AMG с использованием пакета многосеточного предобусловливания ML
            10         : Block ILU(0)
            11         : Block ILU(1)
            12         : Block ILU(2)
            22         : AMG на основе встроенного в HEC-MW SA-AMG (AMG со сглаженной агрегацией)
            10, 11 и 12 доступны только для задач с 3 степенями свободы
            22 доступен только в сборках с включённым LAPACK
            При потоковой параллелизации OpenMP рекомендуется SSOR, Diagonal Scaling, ML или SA-AMG

ITERLOG =   Выводить ли историю сходимости итерационного решателя          (YES/NO)(по умолчанию: NO)

TIMELOG =   Выводить ли время вычислений решателя                           (YES/NO/VERBOSE)(по умолчанию: NO)

LOGLEVEL =  Уровень вывода диагностической информации предобусловливателя             (целое число)(по умолчанию: без вывода)
            Задаётся независимо от ITERLOG и TIMELOG
            При значении не менее 1 выводятся построение иерархии и другие сведения о предобусловливателях AMG (PRECOND=5,22)
            При значении не менее 2 выводятся более подробные сведения (например, об использовании памяти)

USEJAD =    Использовать ли упорядочивание для векторных процессоров        (YES/NO)(по умолчанию: NO)
            Действительно только при использовании итерационного метода для задачи с 3 степенями свободы

SCALING =   Масштабировать ли матрицу так, чтобы диагональные элементы были равны 1 (YES/NO)(по умолчанию: NO)
            Действительно только при использовании итерационного метода для задачи с 3 степенями свободы

DUMPTYPE =  Формат дампа матрицы (NONE, MM, CSR, BSR) (главным образом для отладки)
            NONE : Не создавать дамп (по умолчанию)
            MM   : Формат Matrix Market
            CSR  : Формат Compressed Sparse Row (CSR)
            BSR  : Формат Blocked CSR

DUMPEXIT =  Завершить программу сразу после создания дампа матрицы           (YES/NO)(по умолчанию: NO)

MPCMETHOD = Метод обработки многоточечных ограничений (1, 3)
            1: Метод штрафных функций (по умолчанию при прямом методе)
            3: Явное исключение степеней свободы (по умолчанию при итерационном методе)
            Метод MPC-CG (2) удалён. При указании 2 выдаётся предупреждение и используется метод по умолчанию.

ESTCOND =   Частота оценки числа обусловленности (экспериментально)
            Оценка числа обусловленности выполняется через заданное число итераций и по завершении итераций
            При значении 0 оценка не выполняется

RECOMPUTE_RESIDUAL = Частота повторного вычисления вектора невязки
            Действительно только если для METHOD указан CG, BiCGSTAB, GPBiCG или PipeCG
            Итерационные методы обновляют вектор невязки по рекуррентной формуле, поэтому накапливаются ошибки округления
            Через заданное число итераций вектор невязки повторно вычисляется как {b}-[A]{x}
            При значении 0 используется значение по умолчанию для каждого метода (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
            При отрицательном значении периодическое повторное вычисление не выполняется
            Повторное вычисление для подтверждения сходимости при выполнении критерия сходимости всегда выполняется независимо от этого параметра
            Слишком короткий интервал не только увеличивает число умножений матрицы на вектор,
            но и может ухудшить саму сходимость или даже привести к отсутствию сходимости
            При изменении значения по умолчанию проверьте историю сходимости и конечную относительную невязку

METHOD2 =   Вторичный метод решения (BiCGSTAB, GMRES, GPBiCG) (экспериментально)
            Действительно только если для METHOD указан CG
            При расходимости CG автоматически выполняется переключение на вторичный метод и решение продолжается
            Для остальных параметров и строк данных используются те же значения

CONTACT_ELIM = Задаёт, выполнять ли исключение степеней свободы при контактном анализе (0,1)
               0: Выполнять исключение степеней свободы только при итерационном методе (по умолчанию)
               1: Всегда выполнять исключение степеней свободы (в том числе при прямом методе)

** 2-я и последующие строки **

(2-я строка) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
Переменная Тип Описание
NITER I Число итераций (по умолчанию: 100)
iterPREmax I Число итераций предобусловливания Additive Schwarz (по умолчанию: 1)
(Рекомендуется 1; при параллельных вычислениях иногда эффективно 2)
NREST I Размер подпространства Крылова (по умолчанию: 10)
(Действительно только при выборе GMRES)
NCOLOR_IN I Целевое число цветов при многоцветном упорядочивании (по умолчанию: 10)
(Действительно только при числе потоков OpenMP 2 или более)
RECYCLEPRE I Число повторных использований данных настройки предобусловливателя (по умолчанию: 3)
(Действительно только при нелинейном анализе)
(3-я строка) RESID, SIGMA_DIAG, SIGMA
Переменная Тип Описание
RESID R Ошибка отсечения (по умолчанию: 1.0e-8)
SIGMA_DIAG R Коэффициент, применяемый к диагональным элементам при вычислении матрицы предобусловливателя (по умолчанию: 1.0)
(Если при предобусловливании ILU возникает деление на ноль или расходимость, значение больше 1.0 иногда позволяет решить задачу)
SIGMA R Не используется (по умолчанию: 0.0)

При PRECOND=5 (необязательно)

Если для PRECOND задано значение, отличное от 5 и 22, 4-я строка игнорируется.

(4-я строка) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
Переменная Тип Описание
ML_CoarseSolver I Решатель грубой сетки ML (1: использовать сглаживатель, 2: KLU (последовательный прямой метод), 3: MUMPS (параллельный прямой метод)) (по умолчанию: 1)
(Рекомендуется 3 или 2 для трудных задач, 1 для обычных)
ML_Smoother I Сглаживатель ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (по умолчанию: 1)
(Рекомендуется 1)
ML_MGCycle I Многосеточный цикл ML (1: V-cycle, 2: W-cycle, 3: Full-V-cycle) (по умолчанию: 1)
(Рекомендуется 2 для трудных задач, 1 для обычных)
ML_MaxLevels I Максимальное число уровней ML (по умолчанию: 10)
(Для особенно трудных задач рекомендуется прямой решатель грубой сетки и 2 уровня (3 при нехватке памяти), для обычных задач — 10)
ML_CoarseningScheme I Схема огрубления ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (по умолчанию: 1)
(Рекомендуется 1 или 5)
ML_NumSweep I Число проходов сглаживателя ML (для Chebyshev — степень полинома) (по умолчанию: 2)
(Рекомендуется 2 для Chebyshev и 1 для SymBlockGaussSeidel)

При PRECOND=22 (необязательно)

Если для PRECOND задано значение, отличное от 22, 5-я строка игнорируется. 4-ю и 5-ю строки можно полностью опустить; также можно опустить элементы в конце любой из них. Для каждого элемента, заданного как 0, используется значение по умолчанию.

Элементы 1–7 в 4-й строке расположены в том же порядке, что и в строке параметров для PRECOND=5 (ML), поэтому строку параметров ML можно использовать без изменений. Элементы 8–10 относятся только к SA-AMG.

(4-я строка) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (не используется), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (не используется)
Переменная Тип Описание
SA_CoarseSolver I Решатель грубой сетки (0: автоматически, 1: использовать сглаживатель, 2: прямой метод для плотной матрицы, 3: MUMPS (параллельный прямой метод)) (по умолчанию: 0)
(В автоматическом режиме в сборках с включённым MUMPS используется MUMPS, в остальных случаях — прямой метод для плотной матрицы)
SA_Smoother I Сглаживатель (0 или 1: Chebyshev) (по умолчанию: 0)
(Поддерживается только Chebyshev. Если задано другое значение, выводится предупреждение и используется Chebyshev)
SA_MGCycle I Многосеточный цикл (0: по умолчанию (W-cycle), 1: V-cycle, 2: W-cycle) (по умолчанию: 0)
(Full-V-cycle не поддерживается)
SA_MaxLevels I Максимальное число уровней (по умолчанию: 20)
(не используется) I Позиция, соответствующая схеме огрубления ML. Поскольку SA-AMG всегда использует несвязанную агрегацию, при значении, отличном от 0, выводится предупреждение, а значение игнорируется
SA_ChebyDegree I Степень полинома сглаживателя Chebyshev (по умолчанию: 2)
SA_CoarseSize I Пороговый размер грубой сетки (по умолчанию: 50000, когда MUMPS используется как решатель грубой сетки; в остальных случаях 100)
SA_MaxAggSize I Максимальный размер агрегата (по умолчанию: 96)
SA_GalerkinLowMem I Метод вычисления матрицы грубой сетки (0: обычный (приоритет скорости), положительное значение: экономия памяти) (по умолчанию: 0)
(При нехватке памяти во время настройки задайте положительное значение)
(не используется) I Зарезервировано для будущих расширений

5-я строка предназначена только для SA-AMG и не считывается ML.

(5-я строка) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
Переменная Тип Описание
SA_Theta R Порог определения сильных связей (по умолчанию: 0.0)
(При 0.0 ненулевая структура матрицы непосредственно используется как граф)
SA_ChebyAlpha R Отношение, задающее нижнюю границу интервала собственных значений, на который рассчитан сглаживатель Chebyshev (по умолчанию: 20.0)
SA_Safety R Коэффициент запаса, применяемый к оценке максимального собственного значения (по умолчанию: 1.1)
SA_TaperK R Коэффициент K плавности огрубления (по умолчанию: 100)
(Начиная с уровня 2 огрубление выполняется более постепенно, чтобы оставалось не менее приблизительно K агрегатов. Отрицательное значение отключает регулирование плавности)
SA_AggOrder R Порядок обхода при агрегации (0: по умолчанию (порядок BFS), 1: порядок BFS, 2: хеш-порядок номеров узлов (экспериментально), 3: по возрастанию степени (экспериментально), 4: по убыванию степени (экспериментально), отрицательное значение: по номерам узлов) (по умолчанию: 0)
SA_MinAggSize R Минимальный размер агрегата (по умолчанию: 3)
SA_Verify R Выполнять ли самопроверку при настройке (0: нет, положительное значение: да) (по умолчанию: 0) (главным образом для отладки)
SA_DumpVTK R Выводить ли агрегацию верхнего уровня в формате VTK (0: без вывода, положительное значение: вывод) (по умолчанию: 0) (главным образом для отладки)

Примеры

Использовать CG с предобусловливанием SSOR, задать максимальное число итераций 10000 и ошибку отсечения 1.0e-8

!SOLVER, METHOD=CG, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Использовать GMRES с предобусловливанием SSOR, задать размер подпространства Крылова 40 и целевое число цветов многоцветного упорядочивания 100

!SOLVER, METHOD=GMRES, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1, 40, 100
  1.0e-8, 1.0, 0.0

Использовать CG с предобусловливанием ILU(0) и задать коэффициент для диагональных элементов при вычислении матрицы предобусловливателя равным 1.1

!SOLVER, METHOD=CG, PRECOND=10, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.1, 0.0

Использовать AMG на основе ML в качестве предобусловливателя для CG

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Использовать AMG на основе ML как предобусловливатель для CG, а MUMPS — как решатель грубой сетки (для трудных задач)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

Использовать AMG на основе ML как предобусловливатель для CG и W-cycle как многосеточный цикл (для трудных задач)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  1, 1, 2

Использовать AMG на основе ML как предобусловливатель для CG, MUMPS как решатель грубой сетки и задать максимальное число уровней 2 (для очень трудных задач)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3, 1, 1, 2

Использовать встроенный в HEC-MW SA-AMG как предобусловливатель для CG

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Использовать SA-AMG как предобусловливатель для CG, а MUMPS — как решатель грубой сетки

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

Для анализа фрикционного контакта использовать BiCGSTAB с предобусловливанием SA-AMG и вывести иерархию предобусловливателя AMG

!SOLVER, METHOD=BiCGSTAB, PRECOND=22, ITERLOG=YES, TIMELOG=YES, LOGLEVEL=1
  10000, 1
  1.0e-8, 1.0, 0.0