!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 (Smoothed Aggregation 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 = Формат за dump на матрицата (NONE, MM, CSR, BSR) (главно за отстраняване на грешки)
NONE : Без dump (по подразбиране)
MM : Формат Matrix Market
CSR : Формат Compressed Sparse Row (CSR)
BSR : Блоков CSR формат
DUMPEXIT = Прекратява програмата веднага след dump на матрицата (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 = Метод за решаване 2 (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-тият ред се игнорира.
| Променлива | Атрибут | Описание |
|---|---|---|
| ML_CoarseSolver | I | Решаващ алгоритъм за грубата мрежа на ML (1: използва изглаждащия алгоритъм, 2: KLU (последователен директен метод), 3: MUMPS (паралелен директен метод)) (по подразбиране: 1) (Препоръчително: 3 или 2 за трудни задачи, 1 за обикновени задачи) |
| ML_Smoother | I | Изглаждащ алгоритъм на ML (1: Чебишев, 2: симетричен блоков Гаус-Зайдел, 3: Якоби) (по подразбиране: 1) (Препоръчително: 1) |
| ML_MGCycle | I | Многостепенен цикъл на ML (1: V-цикъл, 2: W-цикъл, 3: пълен V-цикъл) (по подразбиране: 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 (полиномна степен за Чебишев) (по подразбиране: 2) (Препоръчително: 2 за Чебишев, 1 за симетричен блоков Гаус-Зайдел) |
Когато 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: Чебишев) (по подразбиране: 0) (Поддържа се само Чебишев. Ако е зададена друга стойност, се извежда предупреждение и се използва Чебишев) |
| SA_MGCycle | I | Многостепенен цикъл (0: по подразбиране (W-цикъл), 1: V-цикъл, 2: W-цикъл) (по подразбиране: 0) (Пълен V-цикъл не се поддържа) |
| SA_MaxLevels | I | Максимален брой нива (по подразбиране: 20) |
| (не се използва) | I | Позиция, съответстваща на схемата за огрубяване на ML. Тъй като SA-AMG винаги използва несвързана агрегация, ненулева стойност предизвиква предупреждение и се игнорира |
| SA_ChebyDegree | I | Степен на полинома на изглаждащия алгоритъм на Чебишев (по подразбиране: 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 | Отношение, определящо долната граница на интервала от собствени стойности, към който е насочен изглаждащият алгоритъм на Чебишев (по подразбиране: 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-цикъл като многостепенен цикъл (за трудни задачи)
Използване на AMG чрез ML като предобуславяне за CG, MUMPS като решаващ алгоритъм за грубата мрежа и максимален брой нива 2 (за много трудни задачи)
Използвайте вградения в HEC-MW SA-AMG като предобуславяне за CG
Използвайте SA-AMG като предобуславяне за CG и MUMPS като решаващ алгоритъм за грубата мрежа
При анализ на контакт с триене използвайте BiCGSTAB със SA-AMG предобуславяне и изведете йерархичната структура на AMG предобуславянето