Sari la conținut

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, 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ă. AMG este disponibil ca implementare Trilinos-ML și ca SA-AMG integrat în HEC-MW; alegeți în funcție de configurația compilării.
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 (Trilinos-ML) se utilizează într-o compilare legată cu bibliotecile corespunzătoare. AMG (SA-AMG) se utilizează într-o compilare cu LAPACK activat.

Î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.

CG, BiCGSTAB, GPBiCG și PipeCG actualizează vectorul rezidual printr-o relație de recurență. Pe măsură ce iterațiile avansează, erorile de rotunjire se acumulează, iar reziduul actualizat recurent poate devia de la reziduul real. Pentru a evita acest lucru, vectorul rezidual este recalculat la intervale regulate de iterații din membrul drept și produsul matrice-vector. Acest interval poate fi specificat prin RECOMPUTE_RESIDUAL. Un interval mai lung reduce numărul de produse matrice-vector, dar mărește riscul ca reziduul actualizat recurent să se îndepărteze de reziduul real și ca o soluție neconvergentă să fie considerată convergentă. În schimb, dacă intervalul este prea scurt, nu numai că crește numărul produselor matrice-vector, ci se poate perturba și relația dintre reziduu și vectorii auxiliari menținută de recurență, degradând convergența însăși. Valoarea implicită este aleasă pentru fiecare metodă ca un compromis între aceste efecte; dacă o modificați, verificați istoricul convergenței și reziduul relativ final.

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 (Trilinos-ML) Multigrilă algebrică bazată pe biblioteca externă Trilinos-ML. Opțiune pentru probleme mari sau probleme dominate de componente de eroare ierarhice.
AMG (SA-AMG) Multigrilă algebrică de tip agregare netezită (Smoothed Aggregation), integrată în HEC-MW. Ca mai sus; opțiune pentru utilizarea AMG fără adăugarea unei biblioteci externe.
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 (multigrilă algebrică) are două implementări: una bazată pe biblioteca externă Trilinos-ML și SA-AMG integrat în HEC-MW. Sunt implementări independente, cu cerințe diferite de compilare și opțiuni disponibile diferite.

AMG bazat pe Trilinos-ML necesită activarea ML la compilare. Se pot specifica netezitorul, ciclul multigrilă, schema de grosierizare și alte setări; valorile detaliate sunt descrise în referința cuvintelor-cheie.

SA-AMG este un precondiționator multigrilă algebric de tip agregare netezită și nu necesită Trilinos-ML. Totuși, utilizează intern LAPACK, astfel încât este necesară o compilare cu LAPACK activat; dacă este selectat într-o compilare fără LAPACK, execuția se încheie fără a începe analiza. Pentru rezolvarea pe grila grosieră, MUMPS poate fi utilizat în compilări cu MUMPS activat; în caz contrar se utilizează metoda directă integrată pentru matrici dense.

SA-AMG vizează în principal sisteme simetrice pozitiv definite (CG), dar acceptă și sisteme reduse nesimetrice apărute din contactul cu frecare (BiCGSTAB, GMRES și altele). Acceptă 1 (conducție termică), 2 (plan), 3 (solid) și 6 (înveliș) grade de libertate pe nod, dar nu acceptă matrici în care numărul gradelor de libertate diferă de la un nod la altul. Se pot specifica solverul grilei grosiere, ciclul multigrilă, ordinul netezitorului și alte opțiuni, însă valorile implicite pot fi utilizate pentru analize standard. Valorile și sintaxa sunt descrise în referința cuvintelor-cheie. În compilările cu GPU (OpenACC) activat, faza de aplicare a precondiționatorului se execută pe GPU.

Dacă SAINV este utilizat într-o analiză paralelă care include contact sau constrângeri MPC, adâncimea de suprapunere folosită 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.
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, care putea fi selectată anterior, a fost eliminată; pentru datele de intrare care specifică MPCMETHOD=2, se emite un avertisment și se aplică aceste setări implicite.

În eliminarea explicită a gradelor de libertate, masele concentrate utilizate în analiza modală și în analiza dinamică explicită sunt reduse prin aceeași transformare ca matricea de rigiditate. Deoarece matricea de masă redusă nu este, în general, diagonală, suma fiecărei linii a acesteia este utilizată drept masă concentrată. Pentru constrângerile de legătură sau de interpolare în care suma coeficienților ecuației de constrângere este 1, masa gradelor de libertate slave este distribuită gradelor de libertate master proporțional cu coeficienții.

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ă.
LOGLEVEL Produce informații de diagnostic, precum construirea ierarhiei precondiționatoarelor AMG. Se specifică independent de ITERLOG și TIMELOG. Valorile mai mari măresc cantitatea de ieșire.

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