Vai al contenuto

!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 **

(2ª riga) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
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)
(3ª riga) RESID, SIGMA_DIAG, SIGMA
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.

(4ª riga) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
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

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

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

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

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

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

Usare AMG mediante ML come precondizionatore per CG

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

Usare AMG mediante ML come precondizionatore per CG e MUMPS come solver sulla griglia grossolana (per problemi difficili)

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

Usare AMG mediante ML come precondizionatore per CG e il ciclo W come ciclo multigrid (per problemi difficili)

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

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)

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

Usare il SA-AMG integrato in HEC-MW come precondizionatore per CG

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

Usare SA-AMG come precondizionatore per CG e MUMPS come solver sulla griglia grossolana

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

Per l'analisi di contatto con attrito, usare BiCGSTAB con precondizionamento SA-AMG ed emettere la gerarchia del precondizionatore AMG

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