Solvere și precondiționare¶
Solverul liniar FrontISTR este configurat astfel încât să rezolve ecuațiile liniare prin alegerea unei metode directe sau iterative, iar în cazul metodei iterative să combine aceasta cu o precondiționare. Metoda de tratare MPC și eliminarea gradelor de libertate de contact sunt opțiuni auxiliare care stabilesc forma în care este tratat sistemul liniar ce conține constrângeri multipunct sau constrângeri de contact.
Prezentare generală a funcției¶
Solverele și precondiționarea sunt alcătuite din opțiunile de mai jos. Mai întâi se alege o metodă iterativă sau directă pentru solverul liniar, iar precondiționarea se combină numai atunci când este aleasă metoda iterativă.
| Categorie | Opțiuni principale | Rol |
|---|---|---|
| Metode iterative | CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN |
Rezolvă matrici rare de mari dimensiuni cu utilizare eficientă a memoriei. |
| Precondiționare pentru metode iterative | SSOR, scalare diagonală, BILU, AMG, SAINV, RIF | Îmbunătățește convergența metodei iterative. Nu se utilizează cu metode directe. |
| Metode directe | MUMPS, MKL |
Rezolvă robust ecuațiile liniare prin factorizare. |
| Metode de tratare MPC | Metoda penalizării, metoda MPC-CG, eliminarea explicită a gradelor de libertate | Introduc constrângerile multipunct în sistemul liniar. |
| Eliminarea gradelor de libertate de contact | Automat, activ permanent | Comută modul de tratare a gradelor de libertate de contact adăugate de contactul SLAGRANGE. |
| Funcții auxiliare | Estimarea numărului de condiționare, exportul matricei, ieșire în jurnal | Ajută la depanare, verificarea convergenței și evaluarea performanței. |
În execuția paralelă pot fi combinate paralelismul MPI prin descompunerea domeniului și paralelismul pe fire OpenMP. Metodele iterative sunt alegerea standard pentru analize paralele de mari dimensiuni, iar metodele directe se utilizează într-un mediu în care bibliotecile corespunzătoare sunt legate și este necesară o rezolvare mai robustă.
Alegerea solverului și a precondiționării¶
Mai întâi decideți dacă utilizați o metodă iterativă sau directă; dacă alegeți metoda iterativă, selectați apoi precondiționarea.
| Criteriu de decizie | Recomandare |
|---|---|
| Dimensiunea problemei | Pentru probleme mici și medii, metoda directă este stabilă și ușor de utilizat. Pentru probleme mari, metoda iterativă este mai eficientă din punctul de vedere al memoriei. |
| Simetria matricei | Pentru probleme simetrice pozitiv definite, luați în considerare CG. Pentru probleme nesimetrice, luați în considerare BiCGSTAB, GMRES, GPBiCG etc. |
| Mediul paralel | În paralelism MPI, combinați metoda iterativă cu descompunerea domeniului. Pentru precondiționarea sub OpenMP, luați în considerare SSOR cu suport pentru multicolor. |
| Precondiționare (când este aleasă metoda iterativă) | Încercați mai întâi SSOR implicit, apoi luați în considerare AMG. Dacă convergența este bună, SSOR are un cost redus; pentru probleme complexe și mari, precondiționarea AMG poate fi potrivită. |
| Contact și MPC | În analizele care includ contact sau constrângeri multipunct, metoda de tratare MPC și eliminarea gradelor de libertate de contact influențează convergența și robustețea. |
| Biblioteci externe | MUMPS, MKL și AMG se utilizează într-o compilare legată cu bibliotecile corespunzătoare. |
În analizele standard, valorile implicite pentru criteriul de convergență, numărul maxim de iterații și coeficientul de corecție diagonală al precondiționării sunt, în general, suficiente. Numai dacă convergența este lentă sau apare divergența, revizuiți pe rând metoda iterativă, precondiționarea, metoda de tratare MPC și eliminarea gradelor de libertate de contact. Pentru valorile și sintaxa parametrilor, consultați !SOLVER din referința cuvintelor-cheie.
Metode iterative¶
Metodele iterative actualizează soluția prin repetarea produselor matrice-vector și a precondiționării pentru matrici rare de mari dimensiuni. FrontISTR permite alegerea următoarelor metode iterative.
| Metodă iterativă | Domeniu orientativ de utilizare | Observații |
|---|---|---|
CG |
Probleme simetrice pozitiv definite | O alegere standard pentru analiza structurală și analiza conducției termice. |
BiCGSTAB |
Probleme nesimetrice | O opțiune când nesimetria este puternică din cauza contactului sau a cuplării. |
GMRES |
Probleme nesimetrice | Se utilizează cu o dimensiune specificată a subspațiului Krylov. |
GPBiCG |
Probleme nesimetrice | Se utilizează ca metodă îmbunătățită din familia BiCGSTAB. |
GMRESR |
Probleme nesimetrice, utilizări avansate | Opțiune care utilizează GMRES în mod imbricat. |
GMRESREN |
Probleme nesimetrice, utilizări avansate | Versiune recursivă din familia GMRESR. |
CG presupune că matricea este simetrică pozitiv definită. Dacă nesimetria este puternică din cauza contactului cu frecare, a tratării nesimetrice a constrângerilor, a efectelor de cuplare etc., luați în considerare BiCGSTAB, GMRES, GPBiCG și altele. În GMRES, creșterea dimensiunii subspațiului Krylov poate îmbunătăți convergența, dar mărește și utilizarea memoriei.
Dacă se specifică METHOD2, solverul poate comuta la o metodă iterativă alternativă atunci când CG diverge sau eșuează. Această funcție este un mecanism de rezervă pentru cazul în care CG este solverul principal; celelalte valori de configurare și liniile de date sunt aceleași ca pentru solverul principal.
Precondiționare¶
Precondiționarea este un proces de transformare a matricei coeficienților pentru îmbunătățirea convergenței metodei iterative și se aplică numai atunci când este aleasă o metodă iterativă. Pentru metodele directe nu se utilizează precondiționare. Chiar pentru aceeași metodă iterativă, alegerea precondiționării poate modifica semnificativ numărul de iterații până la convergență și timpul de calcul.
| Precondiționare | Caracteristici | Domeniu orientativ de utilizare |
|---|---|---|
| SSOR | Precondiționare standard. Acceptă ordonarea multicolor. | Prima opțiune de încercat. Utilizată pe scară largă în analiza structurală. |
| Scalare diagonală | Precondiționare ușoară bazată pe componentele diagonale. | Când se dorește reducerea costului de calcul. |
| BILU | Factorizare LU incompletă pe blocuri. | Opțiune pentru probleme care converg greu cu SSOR. |
| AMG | Multigrid algebric prin Trilinos-ML. | Opțiune pentru probleme mari sau probleme dominate de componente de eroare ierarhice. |
| SAINV | Sparse Approximate Inverse. | Opțiune specială pentru probleme de contact sau medii distribuite. |
| RIF | Robust Incomplete Factorization. | O alternativă din familia factorizărilor incomplete. |
SSOR este o opțiune standard, iar în paralelism OpenMP se utilizează versiunea cu ordonare multicolor. Scalarea diagonală are un cost redus, însă efectul asupra convergenței depinde de problemă. BILU este implementată ca factorizare LU incompletă pe blocuri și acceptă și matrici cu număr general de grade de libertate. Pentru familia BILU există o cale prin care, dacă metoda iterativă diverge, coeficientul de corecție diagonală SIGMA_DIAG este mărit automat și rezolvarea este reîncercată; specificarea valorii este descrisă în referința cuvintelor-cheie.
AMG utilizează Trilinos-ML, prin urmare ML trebuie activat la compilare. Pot fi specificate netezitorul, ciclul multigrid, metoda de coarsening și alți parametri, însă valorile detaliate sunt descrise în referința cuvintelor-cheie. Dacă SAINV este utilizat în analize paralele care includ contact sau MPC, adâncimea de suprapunere la descompunerea domeniului poate influența convergența.
Metode directe¶
Metodele directe rezolvă ecuațiile liniare prin factorizarea matricei coeficienților. Deoarece nu depind de numărul de iterații, sunt robuste și reprezintă o opțiune stabilă pentru analize cu contact sau constrângeri. Pe de altă parte, utilizarea memoriei crește odată cu dimensiunea problemei.
| Metodă directă | Mediu paralel | Utilizare |
|---|---|---|
MUMPS |
Paralelism MPI | Rezolvă matrici rare prin metodă directă într-un mediu cu memorie distribuită. |
MKL |
Intel MKL / OpenMP | Metoda directă din Intel MKL. Intern funcționează Intel PARDISO. Pentru mai multe procese MPI se utilizează calea Cluster MKL. DIRECTmkl este un alias pentru MKL. |
Metodele directe pot fi utilizate atât pentru matrici simetrice, cât și pentru matrici nesimetrice. MUMPS și MKL necesită ca bibliotecile corespunzătoare să fie legate la compilare. Deoarece nu pot fi utilizate într-un mediu fără aceste biblioteci, consultați ghidul de compilare pentru bibliotecile dependente și opțiunile CMake necesare.
FrontISTR are și o cale de metodă directă încorporată, fără biblioteci externe, însă pentru analiza obișnuită, atunci când se alege o metodă directă, luați în considerare MUMPS sau MKL.
Precondiționarea nu este aplicată pentru metodele directe. Chiar dacă în !SOLVER este specificată o precondiționare, aceasta nu este consultată pe calea metodei directe.
Metode de tratare MPC¶
Metoda de tratare MPC stabilește modul în care gradele de libertate conectate prin constrângeri multipunct sunt introduse în ecuațiile liniare. Chiar dacă ecuațiile de constrângere din datele de intrare sunt aceleași, metoda de tratare modifică proprietățile matricei coeficienților și convergența.
| Metodă de tratare MPC | Poziționare | Utilizare implicită |
|---|---|---|
| Metoda penalizării | Satisface aproximativ ecuația de constrângere prin adăugarea unei rigidități mari. | Implicită pentru metodele directe. |
| Metoda MPC-CG | Metodă tradițională care tratează produsul matrice-vector ce include constrângeri în cadrul metodei iterative. | Nerecomandată. |
| Eliminarea explicită a gradelor de libertate | Elimină gradele de libertate constrânse și rezolvă sistemul liniar redus. | Implicită pentru metodele iterative. |
Pentru metodele directe, metoda implicită este metoda penalizării, iar pentru metodele iterative, metoda implicită este eliminarea explicită a gradelor de libertate. Metoda MPC-CG este o opțiune tradițională păstrată pentru compatibilitate; în analizele noi obișnuite se utilizează eliminarea explicită a gradelor de libertate sau setarea implicită a metodei directe.
Metoda de tratare MPC poate fi specificată explicit prin MPCMETHOD din !SOLVER. Pentru semnificația valorilor și sintaxă consultați referința cuvintelor-cheie.
Eliminarea gradelor de libertate de contact¶
Eliminarea gradelor de libertate de contact este o funcție care reduce gradele de libertate de contact adăugate de contactul SLAGRANGE înainte de a transmite sistemul solverului liniar. Eliminarea gradelor de libertate de contact poate îmbunătăți proprietățile sistemului liniar tratat de metoda iterativă.
În modul automat implicit, eliminarea gradelor de libertate de contact este efectuată când se utilizează o metodă iterativă și nu este efectuată când se utilizează o metodă directă. Pentru metodele directe există o cale care tratează direct sistemul extins ce include gradele de libertate de contact.
Dacă CONTACT_ELIM este specificat explicit, eliminarea gradelor de libertate de contact poate fi efectuată și la utilizarea metodei directe. Pentru alegerea tipului de contact, a perechii de contact și a algoritmului de contact consultați pagina Contact și încorporare.
Funcții auxiliare¶
Pentru investigarea convergenței și performanței solverului pot fi utilizate estimarea numărului de condiționare, exportul matricei și ieșirea în jurnal. Aceste funcții nu sunt necesare în analiza obișnuită și se activează pentru depanare sau evaluarea performanței.
| Funcție | Utilizare | Observații |
|---|---|---|
| Estimarea numărului de condiționare | Produce un indicator al numărului de condiționare pentru CG și GMRES. |
Disponibilă într-o compilare cu LAPACK activat. |
| Exportul matricei | Salvează într-un fișier matricea și membrul drept transmise solverului. | Acceptă formatele Matrix Market, CSR și BSR. |
DUMPEXIT |
Încheie analiza după exportul matricei. | Se utilizează când se dorește extragerea numai a matricei pentru verificare externă. |
ITERLOG |
Produce istoricul convergenței metodei iterative. | Permite verificarea evoluției reziduului. |
TIMELOG |
Produce timpul de calcul al solverului. | Cu VERBOSE produce o defalcare detaliată. |
STEPLOG |
Produce informații despre pași. | Se utilizează pentru verificarea procedurii de analiză. |
Exportul matricei este o funcție pentru verificarea cu instrumente externe a matricei coeficienților asamblate în analiză. Dacă DUMPEXIT este activat, analiza se încheie după salvarea matricei și a membrului drept. Estimarea numărului de condiționare este o funcție experimentală utilizabilă cu CG și GMRES pentru diagnosticarea convergenței.
Subiecte conexe¶
- Solver liniar (teorie) — Principiile matematice ale metodelor iterative și precondiționării.
- Iterații neliniare și integrare în timp — Cadrul iterațiilor Newton, iterațiilor de contact și integrării în timp care apelează solverul liniar.
- Descompunerea domeniului — Analiza paralelă MPI și specificarea adâncimii de suprapunere.
- Contact și încorporare — Alegerea tipului de contact și a algoritmului de contact.
- !SOLVER — Valorile și sintaxa parametrilor solverului și precondiționării.
- Dependențe obligatorii și opționale — Biblioteci dependente precum
MUMPS,MKL(Intel PARDISO), Trilinos-ML și LAPACK.