!SOLVER¶
Controllo del solver
Dati di controllo obbligatori.
Parametri¶
METHOD = Metodo di soluzione (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Metodo diretto tranne che per l'analisi di contatto (solo elaborazione seriale) (attualmente non disponibile)
DIRECTmkl : Metodo diretto con Intel MKL
MUMPS : Metodo diretto con MUMPS
Quando viene selezionato un metodo diretto, le righe dei dati vengono ignorate.
I metodi iterativi per problemi a 3 gradi di libertà supportano l'esecuzione parallela a thread con OpenMP
PRECOND = Metodo di precondizionamento per solver iterativi (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : SSOR (a blocchi) (con ordinamento multicolore solo per problemi a 3 gradi di libertà)
3 : Scaling diagonale (a blocchi)
5 : AMG mediante il pacchetto di precondizionamento multigrid ML
10 : ILU(0) a blocchi
11 : ILU(1) a blocchi
12 : ILU(2) a blocchi
22 : AMG mediante il SA-AMG integrato in HEC-MW (AMG ad aggregazione smussata)
10, 11 e 12 sono disponibili solo per problemi a 3 gradi di libertà
22 è disponibile solo nelle build con LAPACK abilitato
Per l'esecuzione parallela a thread OpenMP sono raccomandati SSOR, scaling diagonale, ML o SA-AMG
ITERLOG = Specifica se emettere la cronologia di convergenza del solver iterativo (YES/NO)(Predefinito: NO)
TIMELOG = Specifica se emettere il tempo di calcolo del solver (YES/NO/VERBOSE)(Predefinito: NO)
LOGLEVEL = Livello di output delle informazioni diagnostiche del precondizionatore (intero)(Predefinito: nessun output)
Specificato indipendentemente da ITERLOG e TIMELOG
Con un valore pari o superiore a 1, emette la costruzione della gerarchia e altre informazioni sui precondizionatori AMG (PRECOND=5,22)
Con un valore pari o superiore a 2, emette informazioni più dettagliate (ad esempio l'uso della memoria)
USEJAD = Specifica se utilizzare l'ordinamento per processori vettoriali (YES/NO)(Predefinito: NO)
Valido solo quando si utilizza un metodo iterativo per un problema a 3 gradi di libertà
SCALING = Specifica se scalare la matrice in modo che gli elementi diagonali siano pari a 1 (YES/NO)(Predefinito: NO)
Valido solo quando si utilizza un metodo iterativo per un problema a 3 gradi di libertà
DUMPTYPE = Formato di dump della matrice (NONE, MM, CSR, BSR) (principalmente per il debug)
NONE : Non eseguire il dump (Predefinito)
MM : Formato Matrix Market
CSR : Formato Compressed Sparse Row (CSR)
BSR : Formato CSR a blocchi
DUMPEXIT = Termina immediatamente il programma dopo il dump della matrice (YES/NO)(Predefinito: NO)
MPCMETHOD = Metodo di gestione dei vincoli multipunto (1, 3)
1: Metodo della penalità (Predefinito quando si usa un metodo diretto)
3: Eliminazione esplicita dei gradi di libertà (Predefinito quando si usa un metodo iterativo)
Il metodo MPC-CG (2) è stato rimosso. Se si specifica 2, viene emesso un avviso e si utilizza il metodo predefinito.
ESTCOND = Frequenza della stima del numero di condizionamento (sperimentale)
Stima il numero di condizionamento a ciascun intervallo di iterazioni specificato e al termine delle iterazioni
Se viene specificato 0, non viene eseguita alcuna stima
RECOMPUTE_RESIDUAL = Frequenza di ricalcolo del vettore dei residui
Valido solo quando per METHOD è specificato CG, BiCGSTAB, GPBiCG o PipeCG
I metodi iterativi aggiornano il vettore dei residui mediante una relazione di ricorrenza, accumulando errori di arrotondamento
A ogni intervallo di iterazioni specificato, il vettore dei residui viene ricalcolato da {b}-[A]{x}
Quando viene specificato 0, si usa il valore predefinito di ciascun metodo (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Quando viene specificato un valore negativo, non viene eseguito alcun ricalcolo periodico
Il ricalcolo per confermare la convergenza quando il criterio di convergenza è soddisfatto viene sempre eseguito, indipendentemente da questo parametro
Un intervallo troppo breve non solo aumenta il numero di prodotti matrice-vettore,
ma può anche peggiorare la convergenza stessa o persino impedirne il raggiungimento
Se si modifica il valore predefinito, verificare la cronologia di convergenza e il residuo relativo finale
METHOD2 = Metodo di soluzione secondario (BiCGSTAB, GMRES, GPBiCG) (sperimentale)
Valido solo quando per METHOD è specificato CG
Se CG diverge, passa automaticamente al metodo secondario e continua la soluzione
Per gli altri parametri e le righe dei dati vengono utilizzati gli stessi valori
CONTACT_ELIM = Specifica se nell'analisi di contatto viene eseguita l'eliminazione dei gradi di libertà (0,1)
0: Esegue l'eliminazione dei gradi di libertà solo quando si usa un metodo iterativo (Predefinito)
1: Esegue sempre l'eliminazione dei gradi di libertà (anche quando si usa un metodo diretto)
** 2ª riga e successive **
| Variabile | Tipo | Descrizione |
|---|---|---|
| NITER | I | Numero di iterazioni (Predefinito: 100) |
| iterPREmax | I | Numero di iterazioni del precondizionamento Additive Schwarz (Predefinito: 1) (Valore raccomandato: 1; 2 può essere efficace in alcuni calcoli paralleli) |
| NREST | I | Dimensione del sottospazio di Krylov (Predefinito: 10) (Valido solo quando GMRES è selezionato come metodo di soluzione) |
| NCOLOR_IN | I | Numero obiettivo di colori per l'ordinamento multicolore (Predefinito: 10) (Valido solo quando il numero di thread OpenMP è pari o superiore a 2) |
| RECYCLEPRE | I | Numero di volte in cui vengono riutilizzate le informazioni di configurazione del precondizionatore (Predefinito: 3) (Valido solo nell'analisi non lineare) |
| Variabile | Tipo | Descrizione |
|---|---|---|
| RESID | R | Errore di troncamento (Predefinito: 1.0e-8) |
| SIGMA_DIAG | R | Fattore di scala applicato agli elementi diagonali durante il calcolo della matrice di precondizionamento (Predefinito: 1.0) (Se con il precondizionamento ILU si verifica una divisione per zero o una divergenza, il problema può convergere specificando un valore maggiore di 1.0) |
| SIGMA | R | Non utilizzato (Predefinito: 0.0) |
Quando PRECOND=5 (opzionale)¶
Se per PRECOND viene specificato un valore che non sia né 5 né 22, la 4ª riga viene ignorata.
| Variabile | Tipo | Descrizione |
|---|---|---|
| ML_CoarseSolver | I | Solver su griglia grossolana per ML (1: usa lo smoother, 2: KLU (metodo diretto seriale), 3: MUMPS (metodo diretto parallelo)) (Predefinito: 1) (Raccomandato: 3 o 2 per problemi difficili, 1 per problemi ordinari) |
| ML_Smoother | I | Smoother ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (Predefinito: 1) (Raccomandato: 1) |
| ML_MGCycle | I | Ciclo multigrid ML (1: ciclo V, 2: ciclo W, 3: ciclo Full-V) (Predefinito: 1) (Raccomandato: 2 per problemi difficili, 1 per problemi ordinari) |
| ML_MaxLevels | I | Numero massimo di livelli ML (Predefinito: 10) (Per problemi particolarmente difficili, usare un solver diretto sulla griglia grossolana e 2 livelli (o 3 se la memoria non è sufficiente); per problemi ordinari è raccomandato 10) |
| ML_CoarseningScheme | I | Schema di coarsening ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (Predefinito: 1) (Raccomandato: 1 o 5) |
| ML_NumSweep | I | Numero di sweep dello smoother ML (grado del polinomio per Chebyshev) (Predefinito: 2) (Raccomandato: 2 per Chebyshev, 1 per SymBlockGaussSeidel) |
Quando PRECOND=22 (opzionale)¶
Se per PRECOND viene specificato un valore diverso da 22, la 5ª riga viene ignorata. La 4ª e la 5ª riga possono essere omesse per intero; è inoltre possibile omettere gli elementi finali di entrambe le righe. Per ogni elemento specificato come 0 viene utilizzato il valore predefinito.
Gli elementi da 1 a 7 della 4ª riga sono disposti nello stesso ordine della riga delle opzioni per PRECOND=5 (ML), quindi la riga delle opzioni ML può essere riutilizzata senza modifiche. Gli elementi da 8 a 10 sono specifici di SA-AMG.
(4ª riga) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (non utilizzato), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (non utilizzato)
| Variabile | Tipo | Descrizione |
|---|---|---|
| SA_CoarseSolver | I | Solver sulla griglia grossolana (0: automatico, 1: usa lo smoother, 2: metodo diretto per matrici dense, 3: MUMPS (metodo diretto parallelo)) (Predefinito: 0) (In modalità automatica, nelle build con MUMPS abilitato viene utilizzato MUMPS; altrimenti viene utilizzato il metodo diretto per matrici dense) |
| SA_Smoother | I | Smoother (0 o 1: Chebyshev) (Predefinito: 0) (È supportato solo Chebyshev. Se viene specificato un altro valore, viene emesso un avviso e viene utilizzato Chebyshev) |
| SA_MGCycle | I | Ciclo multigrid (0: predefinito (ciclo W), 1: ciclo V, 2: ciclo W) (Predefinito: 0) (Il ciclo Full-V non è supportato) |
| SA_MaxLevels | I | Numero massimo di livelli (Predefinito: 20) |
| (non utilizzato) | I | Posizione corrispondente allo schema di coarsening ML. Poiché SA-AMG usa sempre un'aggregazione disaccoppiata, un valore diverso da 0 genera un avviso e viene ignorato |
| SA_ChebyDegree | I | Grado del polinomio dello smoother Chebyshev (Predefinito: 2) |
| SA_CoarseSize | I | Dimensione di soglia della griglia grossolana (Predefinito: 50000 quando MUMPS viene utilizzato come solver sulla griglia grossolana; altrimenti 100) |
| SA_MaxAggSize | I | Dimensione massima dell'aggregato (Predefinito: 96) |
| SA_GalerkinLowMem | I | Metodo di calcolo della matrice della griglia grossolana (0: normale (priorità alla velocità), valore positivo: risparmio di memoria) (Predefinito: 0) (Specificare un valore positivo se la memoria è insufficiente durante la configurazione) |
| (non utilizzato) | I | Riservato per estensioni future |
La 5ª riga è specifica di SA-AMG e non viene letta da ML.
(5ª riga) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Variabile | Tipo | Descrizione |
|---|---|---|
| SA_Theta | R | Soglia per determinare le connessioni forti (Predefinito: 0.0) (Con 0.0, la struttura non nulla della matrice viene utilizzata direttamente come grafo) |
| SA_ChebyAlpha | R | Rapporto che determina il limite inferiore dell'intervallo di autovalori considerato dallo smoother Chebyshev (Predefinito: 20.0) |
| SA_Safety | R | Fattore di sicurezza applicato all'autovalore massimo stimato (Predefinito: 1.1) |
| SA_TaperK | R | Coefficiente K di attenuazione del coarsening (Predefinito: 100) (Dal livello 2 in poi, il coarsening viene reso più graduale in modo che rimangano almeno circa K aggregati. Un valore negativo disabilita l'attenuazione) |
| SA_AggOrder | R | Ordine di attraversamento dell'aggregazione (0: predefinito (ordine BFS), 1: ordine BFS, 2: ordine hash dei numeri dei nodi (sperimentale), 3: ordine crescente del grado (sperimentale), 4: ordine decrescente del grado (sperimentale), valore negativo: ordine per numero di nodo) (Predefinito: 0) |
| SA_MinAggSize | R | Dimensione minima dell'aggregato (Predefinito: 3) |
| SA_Verify | R | Se eseguire un'autoverifica durante la configurazione (0: no, valore positivo: sì) (Predefinito: 0) (principalmente per il debug) |
| SA_DumpVTK | R | Se emettere l'aggregazione del livello più alto in formato VTK (0: nessun output, valore positivo: output) (Predefinito: 0) (principalmente per il debug) |
Esempi¶
Usare CG con precondizionamento SSOR e impostare il numero massimo di iterazioni a 10000 e l'errore di troncamento a 1.0e-8
Usare GMRES con precondizionamento SSOR e impostare la dimensione del sottospazio di Krylov a 40 e il numero obiettivo di colori per l'ordinamento multicolore a 100
Usare CG con precondizionamento ILU(0) e impostare a 1.1 il fattore di scala applicato agli elementi diagonali durante il calcolo della matrice di precondizionamento
Usare AMG mediante ML come precondizionatore per CG
Usare AMG mediante ML come precondizionatore per CG e MUMPS come solver sulla griglia grossolana (per problemi difficili)
Usare AMG mediante ML come precondizionatore per CG e il ciclo W come ciclo multigrid (per problemi difficili)
Usare AMG mediante ML come precondizionatore per CG, MUMPS come solver sulla griglia grossolana e impostare il numero massimo di livelli a 2 (per problemi molto difficili)
Usare il SA-AMG integrato in HEC-MW come precondizionatore per CG
Usare SA-AMG come precondizionatore per CG e MUMPS come solver sulla griglia grossolana
Per l'analisi di contatto con attrito, usare BiCGSTAB con precondizionamento SA-AMG ed emettere la gerarchia del precondizionatore AMG