Sari la conținut

!SOLVER

Controlul solverului

Date de control obligatorii.

Parametri

METHOD =    Metoda de rezolvare (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
            DIRECT     : metodă directă, cu excepția analizei de contact (numai procesare serială) (indisponibilă în prezent)
            DIRECTmkl  : metodă directă utilizând Intel MKL
            MUMPS      : metodă directă utilizând MUMPS
            Când este selectată o metodă directă, liniile de date sunt ignorate.
            Metodele iterative pentru probleme cu 3 GDL acceptă execuția paralelă pe fire cu OpenMP

PRECOND =   Metoda de precondiționare pentru solverele iterative (1, 2, 3, 5, 10, 11, 12, 22)
            1, 2       : SSOR (pe blocuri) (cu ordonare multicoloră numai pentru probleme cu 3 GDL)
            3          : scalare diagonală (pe blocuri)
            5          : AMG utilizând pachetul de precondiționare multigrilă ML
            10         : ILU(0) pe blocuri
            11         : ILU(1) pe blocuri
            12         : ILU(2) pe blocuri
            22         : AMG utilizând SA-AMG integrat în HEC-MW (AMG cu agregare netezită)
            10, 11 și 12 sunt disponibile numai pentru probleme cu 3 GDL
            22 este disponibil numai în compilări cu LAPACK activat
            Pentru paralelismul pe fire OpenMP se recomandă SSOR, Diagonal Scaling, ML sau SA-AMG

ITERLOG =   Dacă se produce istoricul de convergență al solverului iterativ          (YES/NO)(Implicit: NO)

TIMELOG =   Dacă se produce timpul de calcul al solverului                           (YES/NO/VERBOSE)(Implicit: NO)

LOGLEVEL =  Nivelul de ieșire al informațiilor de diagnostic ale precondiționerului (întreg)(implicit: fără ieșire)
            Se specifică independent de ITERLOG și TIMELOG
            La valoarea 1 sau mai mare se produc structura ierarhiei și alte informații pentru precondiționerele AMG (PRECOND=5,22)
            La valoarea 2 sau mai mare se produc informații mai detaliate (de exemplu, utilizarea memoriei)

USEJAD =    Dacă se utilizează ordonarea pentru procesoare vectoriale                (YES/NO)(Implicit: NO)
            Valabil numai când se utilizează o metodă iterativă pentru o problemă cu 3 GDL

SCALING =   Dacă matricea este scalată astfel încât elementele diagonale să fie 1    (YES/NO)(Implicit: NO)
            Valabil numai când se utilizează o metodă iterativă pentru o problemă cu 3 GDL

DUMPTYPE =  Formatul dump-ului matricei (NONE, MM, CSR, BSR) (în principal pentru depanare)
            NONE : fără dump (Implicit)
            MM   : format Matrix Market
            CSR  : format Compressed Sparse Row (CSR)
            BSR  : format CSR pe blocuri

DUMPEXIT =  Încheie programul imediat după dump-ul matricei                          (YES/NO)(Implicit: NO)

MPCMETHOD = Metoda de tratare a constrângerilor multipunct (1, 3)
            1: metoda penalizării (implicit când se utilizează o metodă directă)
            3: eliminarea explicită a GDL (implicit când se utilizează o metodă iterativă)
            Metoda MPC-CG (2) a fost eliminată. Dacă se specifică 2, se emite un avertisment și se folosește metoda implicită.

ESTCOND =   Frecvența estimării numărului de condiționare (experimental)
            Estimează numărul de condiționare la fiecare interval de iterații specificat și la sfârșitul iterațiilor
            Nu se efectuează nicio estimare când se specifică 0

RECOMPUTE_RESIDUAL = Frecvența recalculării vectorului rezidual
            Valabil numai când pentru METHOD este specificat CG, BiCGSTAB, GPBiCG sau PipeCG
            Metodele iterative actualizează vectorul rezidual printr-o relație de recurență, astfel încât se acumulează erori de rotunjire
            La fiecare interval de iterații specificat, vectorul rezidual este recalculat din {b}-[A]{x}
            Dacă se specifică 0, se utilizează valoarea implicită a fiecărei metode (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
            Dacă se specifică o valoare negativă, nu se efectuează recalcularea periodică
            Recalcularea pentru confirmarea îndeplinirii criteriului de convergență se efectuează întotdeauna, indiferent de această setare
            Un interval prea scurt nu numai că mărește numărul produselor matrice-vector, ci poate și
            degrada convergența însăși sau chiar împiedica convergența
            Dacă modificați valoarea implicită, verificați istoricul convergenței și reziduul relativ final

METHOD2 =   Metoda secundară de rezolvare (BiCGSTAB, GMRES, GPBiCG) (experimental)
            Valabilă numai când pentru METHOD este specificat CG
            Dacă CG diverge, comută automat la metoda secundară și continuă rezolvarea
            Pentru ceilalți parametri și liniile de date se utilizează aceleași valori

CONTACT_ELIM = Specifică dacă se efectuează eliminarea GDL în analiza de contact (0,1)
               0: efectuează eliminarea GDL numai când se utilizează o metodă iterativă (Implicit)
               1: efectuează întotdeauna eliminarea GDL (inclusiv când se utilizează o metodă directă)

** A doua linie și liniile următoare **

(a doua linie) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
Variabilă Atribut Descriere
NITER I Numărul de iterații (implicit: 100)
iterPREmax I Numărul de iterații de precondiționare Additive Schwarz (implicit: 1)
(Valoare recomandată: 1; 2 poate fi eficient în anumite calcule paralele)
NREST I Numărul de subspații Krylov (implicit: 10)
(Valabil numai când GMRES este selectat ca metodă de rezolvare)
NCOLOR_IN I Numărul țintă de culori pentru ordonarea multicoloră (implicit: 10)
(Valabil numai când numărul de fire OpenMP este cel puțin 2)
RECYCLEPRE I Numărul de reutilizări ale informațiilor de configurare ale precondiționerului (implicit: 3)
(Valabil numai în analiza neliniară)
(a treia linie) RESID, SIGMA_DIAG, SIGMA
Variabilă Atribut Descriere
RESID R Eroare de trunchiere (implicit: 1.0e-8)
SIGMA_DIAG R Factor de scalare aplicat elementelor diagonale la calcularea matricei de precondiționare (implicit: 1.0)
(Dacă la precondiționarea ILU apare o împărțire la zero sau divergență, problema poate converge când se specifică o valoare mai mare decât 1.0)
SIGMA R Neutilizat (implicit: 0.0)

Când PRECOND=5 (opțional)

Dacă pentru PRECOND este specificată o valoare diferită de 5 sau 22, a patra linie este ignorată.

(a patra linie) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
Variabilă Atribut Descriere
ML_CoarseSolver I Solver pentru grila grosieră ML (1: utilizează netezitorul, 2: KLU (metodă directă serială), 3: MUMPS (metodă directă paralelă)) (implicit: 1)
(Recomandat: 3 sau 2 pentru probleme dificile, 1 pentru probleme obișnuite)
ML_Smoother I Netezitor ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (implicit: 1)
(Recomandat: 1)
ML_MGCycle I Ciclul multigrilă ML (1: ciclu V, 2: ciclu W, 3: ciclu Full-V) (implicit: 1)
(Recomandat: 2 pentru probleme dificile, 1 pentru probleme obișnuite)
ML_MaxLevels I Numărul maxim de niveluri ML (implicit: 10)
(Pentru probleme deosebit de dificile, utilizați un solver direct pe grila grosieră și 2 niveluri (sau 3 dacă memoria este insuficientă); pentru probleme obișnuite se recomandă 10)
ML_CoarseningScheme I Schema de grosierizare ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (implicit: 1)
(Recomandat: 1 sau 5)
ML_NumSweep I Numărul de treceri ale netezitorului ML (gradul polinomului pentru Chebyshev) (implicit: 2)
(Recomandat: 2 pentru Chebyshev, 1 pentru SymBlockGaussSeidel)

Când PRECOND=22 (opțional)

Dacă pentru PRECOND este specificată o valoare diferită de 22, a cincea linie este ignorată. Atât a patra, cât și a cincea linie pot fi omise integral; pot fi omise și elementele finale ale fiecărei linii. Pentru orice element specificat cu valoarea 0 se utilizează valoarea implicită.

Elementele 1–7 de pe a patra linie sunt dispuse în aceeași ordine ca pe linia de opțiuni PRECOND=5 (ML), astfel încât linia de opțiuni ML poate fi reutilizată fără modificări. Elementele 8–10 sunt specifice SA-AMG.

(a patra linie) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (neutilizat), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (neutilizat)
Variabilă Atribut Descriere
SA_CoarseSolver I Solver pentru grila grosieră (0: automat, 1: utilizează netezitorul, 2: metodă directă pentru matrice densă, 3: MUMPS (metodă directă paralelă)) (implicit: 0)
(În modul automat, MUMPS este utilizat în compilările cu MUMPS activat; în caz contrar se utilizează metoda directă pentru matrice densă)
SA_Smoother I Netezitor (0 sau 1: Chebyshev) (implicit: 0)
(Este acceptat numai Chebyshev. Dacă este specificată altă valoare, se produce un avertisment și se utilizează Chebyshev)
SA_MGCycle I Ciclu multigrilă (0: implicit (ciclu W), 1: ciclu V, 2: ciclu W) (implicit: 0)
(Ciclul Full-V nu este acceptat)
SA_MaxLevels I Numărul maxim de niveluri (implicit: 20)
(neutilizat) I Poziția corespunzătoare schemei de grosierizare ML. Deoarece SA-AMG utilizează întotdeauna agregare necuplată, o valoare nenulă produce un avertisment și este ignorată
SA_ChebyDegree I Gradul polinomului netezitorului Chebyshev (implicit: 2)
SA_CoarseSize I Dimensiunea de tăiere a grilei grosiere (implicit: 50000 când MUMPS este utilizat ca solver pentru grila grosieră; în caz contrar 100)
SA_MaxAggSize I Dimensiunea maximă a agregatului (implicit: 96)
SA_GalerkinLowMem I Metoda de calcul a matricei grilei grosiere (0: normală (prioritizează viteza), valoare pozitivă: economie de memorie) (implicit: 0)
(Specificați o valoare pozitivă dacă memoria este insuficientă în timpul configurării)
(neutilizat) I Rezervat pentru extensii viitoare

A cincea linie este specifică SA-AMG și nu este citită de ML.

(a cincea linie) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
Variabilă Atribut Descriere
SA_Theta R Pragul pentru determinarea conexiunilor puternice (implicit: 0.0)
(La 0.0, structura nenulă a matricei este utilizată direct ca graf)
SA_ChebyAlpha R Raportul care determină limita inferioară a intervalului valorilor proprii vizat de netezitorul Chebyshev (implicit: 20.0)
SA_Safety R Factorul de siguranță aplicat valorii proprii maxime estimate (implicit: 1.1)
SA_TaperK R Coeficientul K pentru temperarea grosierizării (implicit: 100)
(De la nivelul 2, grosierizarea devine mai graduală astfel încât să rămână cel puțin aproximativ K agregate. O valoare negativă dezactivează temperarea)
SA_AggOrder R Ordinea de parcurgere a agregării (0: implicită (ordine BFS), 1: ordine BFS, 2: ordinea hash a numerelor nodurilor (experimental), 3: ordine crescătoare după grad (experimental), 4: ordine descrescătoare după grad (experimental), valoare negativă: ordinea numerelor nodurilor) (implicit: 0)
SA_MinAggSize R Dimensiunea minimă a agregatului (implicit: 3)
SA_Verify R Dacă se execută o autoverificare în timpul configurării (0: nu, valoare pozitivă: da) (implicit: 0) (în principal pentru depanare)
SA_DumpVTK R Dacă agregarea de la nivelul superior este produsă în format VTK (0: fără ieșire, valoare pozitivă: ieșire) (implicit: 0) (în principal pentru depanare)

Exemple

Utilizați CG cu precondiționare SSOR și setați numărul maxim de iterații la 10000 și eroarea de trunchiere la 1.0e-8

!SOLVER, METHOD=CG, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Utilizați GMRES cu precondiționare SSOR și setați numărul de subspații Krylov la 40 și numărul țintă de culori pentru ordonarea multicoloră la 100

!SOLVER, METHOD=GMRES, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1, 40, 100
  1.0e-8, 1.0, 0.0

Utilizați CG cu precondiționare ILU(0) și setați factorul de scalare aplicat elementelor diagonale la calcularea matricei de precondiționare la 1.1

!SOLVER, METHOD=CG, PRECOND=10, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.1, 0.0

Utilizați AMG prin ML ca precondiționer pentru CG

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Utilizați AMG prin ML ca precondiționer pentru CG și MUMPS ca solver pentru grila grosieră (pentru probleme dificile)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

Utilizați AMG prin ML ca precondiționer pentru CG și ciclul W ca ciclu multigrilă (pentru probleme dificile)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  1, 1, 2

Utilizați AMG prin ML ca precondiționer pentru CG, utilizați MUMPS ca solver pentru grila grosieră și setați numărul maxim de niveluri la 2 (pentru probleme foarte dificile)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3, 1, 1, 2

Utilizați SA-AMG integrat în HEC-MW ca precondiționer pentru CG

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Utilizați SA-AMG ca precondiționer pentru CG și MUMPS ca solver pentru grila grosieră

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

Pentru analiza contactului cu frecare, utilizați BiCGSTAB cu precondiționare SA-AMG și produceți ierarhia precondiționerului AMG

!SOLVER, METHOD=BiCGSTAB, PRECOND=22, ITERLOG=YES, TIMELOG=YES, LOGLEVEL=1
  10000, 1
  1.0e-8, 1.0, 0.0