!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 : (Блоковий) SSOR (з багатоколірним упорядкуванням лише для задач із 3 ступенями свободи)
3 : (Блокове) діагональне масштабування
5 : AMG з використанням пакета багатосіткового передобумовлення ML
10 : Блокове ILU(0)
11 : Блокове ILU(1)
12 : Блокове ILU(2)
22 : AMG із вбудованим у HEC-MW SA-AMG (AMG зі згладженою агрегацією)
10, 11 і 12 доступні лише для задач із 3 ступенями свободи
22 доступний лише у збірках з увімкненим LAPACK
Для потокового паралелізму OpenMP рекомендовано SSOR, діагональне масштабування, 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 : Блоковий формат 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-й і наступні рядки **
| Назва змінної | Атрибут | Опис |
|---|---|---|
| NITER | I | Кількість ітерацій (за замовчуванням: 100) |
| iterPREmax | I | Кількість ітерацій передобумовлення адитивним методом Шварца (за замовчуванням: 1) (Рекомендоване значення: 1; у деяких паралельних обчисленнях може бути ефективним 2) |
| NREST | I | Розмір підпростору Крилова (за замовчуванням: 10) (Дійсне лише коли методом розв’язання вибрано GMRES) |
| NCOLOR_IN | I | Цільова кількість кольорів для багатоколірного упорядкування (за замовчуванням: 10) (Дійсне лише коли кількість потоків OpenMP становить 2 або більше) |
| RECYCLEPRE | I | Кількість повторних використань інформації про побудову передобумовлювача (за замовчуванням: 3) (Дійсне лише в нелінійному аналізі) |
| Назва змінної | Атрибут | Опис |
|---|---|---|
| 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-й рядок ігнорується. Четвертий і п’ятий рядки можна повністю пропустити; також можна пропустити кінцеві елементи кожного з них. Для кожного елемента зі значенням 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 завжди використовує незв’язану агрегацію, ненульове значення спричиняє попередження та ігнорується |
| SA_ChebyDegree | I | Степінь полінома згладжувача Chebyshev (за замовчуванням: 2) |
| SA_CoarseSize | I | Граничний розмір грубої сітки (за замовчуванням: 50000, якщо MUMPS використовується як розв’язувач грубої сітки; інакше 100) |
| SA_MaxAggSize | I | Максимальний розмір агрегату (за замовчуванням: 96) |
| SA_GalerkinLowMem | I | Спосіб обчислення матриці грубої сітки (0: звичайний (пріоритет швидкості), додатне значення: економія пам’яті) (за замовчуванням: 0) (Задайте додатне значення, якщо під час налаштування недостатньо пам’яті) |
| (не використовується) | I | Зарезервовано для майбутніх розширень |
П’ятий рядок призначений лише для 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
Використовуйте GMRES із передобумовленням SSOR та встановіть розмір підпростору Крилова — 40, а цільову кількість кольорів для багатоколірного упорядкування — 100
Використовуйте CG із передобумовленням ILU(0) та встановіть масштабний коефіцієнт для діагональних елементів під час обчислення матриці передобумовлення рівним 1.1
Використовуйте AMG за допомогою ML як передобумовлювач для CG
Використовуйте AMG за допомогою ML як передобумовлювач для CG і MUMPS як розв’язувач грубої сітки (для складних задач)
Використовуйте AMG за допомогою ML як передобумовлювач для CG і W-cycle як багатосітковий цикл (для складних задач)
Використовуйте AMG за допомогою ML як передобумовлювач для CG, MUMPS як розв’язувач грубої сітки та встановіть максимальну кількість рівнів 2 (для дуже складних задач)
Використовуйте вбудований у HEC-MW SA-AMG як передобумовлювач для CG
Використовуйте SA-AMG як передобумовлювач для CG, а MUMPS — як розв’язувач грубої сітки
Для аналізу контакту з тертям використовуйте BiCGSTAB з передобумовленням SA-AMG і виводьте ієрархію передобумовлювача AMG