Перейти до змісту

!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-й і наступні рядки **

(2-й рядок) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
Назва змінної Атрибут Опис
NITER I Кількість ітерацій (за замовчуванням: 100)
iterPREmax I Кількість ітерацій передобумовлення адитивним методом Шварца (за замовчуванням: 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-й рядок ігнорується. Четвертий і п’ятий рядки можна повністю пропустити; також можна пропустити кінцеві елементи кожного з них. Для кожного елемента зі значенням 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

!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