Vai al contenuto

Solver e precondizionamento

I solver lineari di FrontISTR vengono configurati scegliendo un metodo diretto oppure iterativo; i metodi iterativi vengono combinati con un precondizionatore per risolvere le equazioni lineari. Il metodo di trattamento MPC e l'eliminazione dei gradi di libertà di contatto sono scelte ausiliarie che determinano come viene gestito un sistema lineare contenente vincoli multipunto o di contatto.

Panoramica funzionale

Le impostazioni del solver e del precondizionamento comprendono le scelte seguenti. Selezionare innanzitutto un metodo iterativo o diretto come solver lineare. Un precondizionatore viene combinato soltanto con un metodo iterativo.

Categoria Opzioni principali Ruolo
Metodi iterativi CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN Risolvono grandi matrici sparse con un uso della memoria relativamente efficiente.
Precondizionatori per metodi iterativi SSOR, scalatura diagonale, BILU, AMG, SAINV, RIF Migliorano la convergenza dei metodi iterativi. Non vengono utilizzati con i metodi diretti.
Metodi diretti MUMPS, MKL Risolvono in modo robusto le equazioni lineari mediante fattorizzazione della matrice.
Metodi di trattamento MPC Metodo della penalità, metodo MPC-CG, eliminazione esplicita dei DOF Incorporano i vincoli multipunto nel sistema lineare.
Eliminazione dei DOF di contatto Automatica, sempre abilitata Controlla il trattamento dei gradi di libertà di contatto aggiunti dal contatto SLAGRANGE.
Funzioni ausiliarie Stima del numero di condizionamento, dump della matrice, logging Supportano il debug, la valutazione della convergenza e l'analisi delle prestazioni.

Per l'esecuzione parallela, il parallelismo MPI basato sulla decomposizione del dominio può essere combinato con il parallelismo a thread OpenMP. I metodi iterativi sono la scelta standard per le analisi parallele su larga scala, mentre i metodi diretti vengono utilizzati quando sono collegate le librerie necessarie ed è richiesta una soluzione più robusta.

Scelta del solver e del precondizionatore

Decidere innanzitutto se utilizzare un metodo iterativo o diretto. Se si seleziona un metodo iterativo, scegliere quindi un precondizionatore.

Fattore decisionale Approccio consigliato
Dimensione del problema I metodi diretti sono stabili e facili da usare per problemi di piccola e media dimensione. I metodi iterativi sono più efficienti in termini di memoria per problemi di grandi dimensioni.
Simmetria della matrice Considerare CG per problemi simmetrici definiti positivi. Per problemi non simmetrici, considerare BiCGSTAB, GMRES, GPBiCG o metodi analoghi.
Ambiente parallelo Con il parallelismo MPI, combinare un metodo iterativo con la decomposizione del dominio. Per il precondizionamento con parallelismo OpenMP, considerare un'implementazione SSOR multicolore.
Precondizionatore (quando si usa un metodo iterativo) Provare prima SSOR predefinito, quindi considerare AMG. SSOR ha un costo computazionale ridotto quando la convergenza è buona; AMG è adatto a problemi complessi e su larga scala.
Contatto e MPC Nelle analisi che contengono contatto o vincoli multipunto, la scelta del metodo di trattamento MPC e dell'eliminazione dei DOF di contatto influisce sulla convergenza e sulla robustezza.
Librerie esterne MUMPS, MKL e AMG sono disponibili nelle build collegate alle librerie corrispondenti.

Per le analisi standard, la tolleranza di convergenza predefinita, il numero massimo di iterazioni e il coefficiente di correzione diagonale del precondizionatore sono in genere sufficienti. Solo quando la convergenza è lenta o la soluzione diverge è opportuno riconsiderare, nell'ordine, il metodo iterativo, il precondizionatore, il metodo di trattamento MPC e l'eliminazione dei DOF di contatto. Per i valori e la sintassi dei parametri, vedere il riferimento della keyword !SOLVER.

Metodi iterativi

I metodi iterativi risolvono grandi sistemi sparsi aggiornando ripetutamente la soluzione mediante prodotti matrice-vettore e precondizionamento. FrontISTR mette a disposizione i seguenti metodi iterativi.

Metodo iterativo Applicazione tipica Note
CG Problemi simmetrici definiti positivi Candidato standard per analisi strutturali e di conduzione termica.
BiCGSTAB Problemi non simmetrici Candidato quando il contatto o gli effetti di accoppiamento producono una forte non simmetria.
GMRES Problemi non simmetrici Utilizzato con una dimensione specificata del sottospazio di Krylov.
GPBiCG Problemi non simmetrici Utilizzato come metodo migliorato della famiglia BiCGSTAB.
GMRESR Problemi non simmetrici, applicazioni avanzate Opzione che utilizza GMRES in forma annidata.
GMRESREN Problemi non simmetrici, applicazioni avanzate Variante ricorsiva della famiglia GMRESR.

CG presuppone che la matrice sia simmetrica definita positiva. Se il contatto con attrito, un trattamento non simmetrico dei vincoli, effetti di accoppiamento o fattori analoghi introducono una forte non simmetria, considerare BiCGSTAB, GMRES, GPBiCG o un altro solver non simmetrico. Con GMRES, l'aumento della dimensione del sottospazio di Krylov può migliorare la convergenza, ma aumenta anche l'uso della memoria.

Quando viene specificato METHOD2, FrontISTR può passare a un metodo iterativo alternativo se CG diverge o si interrompe. Questa funzione è un fallback per i casi in cui CG è il solver principale; il metodo alternativo utilizza le stesse impostazioni e righe di dati rimanenti del solver principale.

Precondizionamento

Il precondizionamento trasforma la matrice dei coefficienti per migliorare la convergenza di un metodo iterativo e viene applicato soltanto quando è selezionato un metodo iterativo. I metodi diretti non utilizzano precondizionamento. Anche con lo stesso metodo iterativo, la scelta del precondizionatore può modificare sensibilmente il numero di iterazioni e il tempo di calcolo necessari per la convergenza.

Precondizionatore Caratteristiche Applicazione tipica
SSOR Precondizionatore standard; supporta l'ordinamento multicolore. Prima scelta da provare; ampiamente utilizzato nell'analisi strutturale.
Scalatura diagonale Precondizionatore leggero che utilizza gli elementi diagonali. Quando si preferisce un basso costo computazionale.
BILU Fattorizzazione LU incompleta a blocchi. Candidato per problemi che convergono con difficoltà con SSOR.
AMG Multigrid algebrico basato su Trilinos-ML. Candidato per problemi su larga scala o dominati da componenti di errore gerarchiche.
SAINV Inversa approssimata sparsa. Opzione di precondizionamento specializzata per problemi di contatto o ambienti a memoria distribuita.
RIF Fattorizzazione incompleta robusta. Un'altra opzione di fattorizzazione incompleta.

SSOR è la scelta standard e, con il parallelismo OpenMP, viene utilizzata una versione con ordinamento multicolore. La scalatura diagonale è leggera, anche se il miglioramento della convergenza dipende dal problema. BILU è implementato come fattorizzazione LU incompleta a blocchi e supporta anche matrici con un numero generale di gradi di libertà. Per la famiglia BILU esiste un percorso che, quando un metodo iterativo diverge, aumenta automaticamente il coefficiente di correzione diagonale SIGMA_DIAG e riprova; per la modalità di specifica del valore, vedere il riferimento delle keyword.

AMG utilizza Trilinos-ML, quindi ML deve essere abilitato in fase di build. È possibile specificare smoother, cicli multigrid, metodi di coarsening e altre impostazioni, ma per i valori dettagliati vedere il riferimento delle keyword. Quando SAINV viene utilizzato in un'analisi parallela contenente vincoli di contatto o MPC, la profondità di sovrapposizione usata per la decomposizione del dominio può influire sulla convergenza.

Metodi diretti

I metodi diretti risolvono le equazioni lineari fattorizzando la matrice dei coefficienti. Poiché non dipendono da un numero di iterazioni, sono robusti e possono costituire una scelta stabile per analisi che contengono condizioni di contatto o di vincolo. Il loro consumo di memoria, tuttavia, aumenta con la dimensione del problema.

Metodo diretto Ambiente parallelo Applicazione
MUMPS Parallelo MPI Risolve matrici sparse con un metodo diretto in ambienti a memoria distribuita.
MKL Intel MKL / OpenMP Solver diretto basato su Intel MKL. Internamente viene utilizzato Intel PARDISO. Con più processi MPI viene utilizzato il percorso Cluster MKL. DIRECTmkl è un alias di MKL.

I metodi diretti possono essere utilizzati sia per matrici simmetriche sia per matrici non simmetriche. MUMPS e MKL richiedono che le librerie corrispondenti siano collegate in fase di build. Non possono essere utilizzati in ambienti privi di tali librerie; per le dipendenze necessarie e le opzioni CMake vedere la guida alla build.

FrontISTR contiene anche un percorso di solver diretto integrato che non utilizza una libreria esterna, ma per le normali analisi che richiedono un metodo diretto si dovrebbe in genere considerare prima MUMPS o MKL.

Il precondizionamento non viene applicato ai metodi diretti. Anche se in !SOLVER viene specificato un precondizionatore, esso non viene consultato nel percorso del solver diretto.

Metodi di trattamento MPC

Il metodo di trattamento MPC determina come i gradi di libertà collegati da vincoli multipunto vengono incorporati nelle equazioni lineari. Anche con le stesse equazioni di vincolo nei dati di input, il metodo di trattamento modifica le proprietà e il comportamento di convergenza della matrice dei coefficienti.

Metodo di trattamento MPC Posizionamento Utilizzo predefinito
Metodo della penalità Soddisfa approssimativamente i vincoli aggiungendo termini di rigidezza elevati alle equazioni di vincolo. Predefinito per i metodi diretti.
Metodo MPC-CG Metodo legacy che gestisce all'interno del solver iterativo i prodotti matrice-vettore contenenti vincoli. Deprecato.
Eliminazione esplicita dei DOF Elimina i gradi di libertà vincolati e risolve il sistema lineare ridotto. Predefinito per i metodi iterativi.

Il metodo della penalità è quello predefinito per i metodi diretti, mentre l'eliminazione esplicita dei DOF è quella predefinita per i metodi iterativi. Il metodo MPC-CG è un'opzione legacy di compatibilità e non è consigliato per nuove analisi; normalmente utilizzare l'eliminazione esplicita dei DOF o il trattamento predefinito per il metodo diretto selezionato.

Il metodo di trattamento MPC può essere specificato esplicitamente in !SOLVER mediante MPCMETHOD. Per il significato e la sintassi dei valori, vedere il riferimento delle keyword.

Eliminazione dei DOF di contatto

L'eliminazione dei DOF di contatto riduce i gradi di libertà di contatto aggiuntivi introdotti dal contatto SLAGRANGE prima di passare il sistema al solver lineare. L'eliminazione di questi gradi di libertà di contatto può migliorare le proprietà del sistema lineare gestito da un metodo iterativo.

Nella modalità automatica predefinita, l'eliminazione dei DOF di contatto è abilitata per i metodi iterativi e disabilitata per i metodi diretti. Per i metodi diretti è disponibile un percorso che risolve direttamente il sistema ampliato contenente i gradi di libertà di contatto.

Quando CONTACT_ELIM viene specificato esplicitamente, l'eliminazione dei DOF di contatto può essere eseguita anche quando si utilizza un metodo diretto. Per la scelta del tipo di contatto, della coppia di contatto e dell'algoritmo di contatto lato input, vedere la pagina Contatto e incorporamento.

Funzioni ausiliarie

La stima del numero di condizionamento, i dump della matrice e il logging possono essere utilizzati per analizzare la convergenza e le prestazioni del solver. Queste funzioni non sono necessarie per le analisi normali e vengono abilitate principalmente per il debug o la valutazione delle prestazioni.

Funzione Scopo Note
Stima del numero di condizionamento Produce un indicatore del numero di condizionamento per CG e GMRES. Disponibile nelle build con LAPACK abilitato.
Dump della matrice Salva la matrice e il termine noto passati al solver. Supporta i formati Matrix Market, CSR e BSR.
DUMPEXIT Termina l'analisi dopo il dump della matrice. Utilizzato quando è richiesta soltanto la matrice per una verifica esterna.
ITERLOG Produce la cronologia di convergenza di un metodo iterativo. Utilizzato per esaminare l'andamento dei residui.
TIMELOG Produce il tempo di calcolo del solver. VERBOSE produce una scomposizione più dettagliata.
STEPLOG Produce le informazioni sugli step. Utilizzato per esaminare la procedura di analisi.

Il dump della matrice consente di esaminare con strumenti esterni la matrice dei coefficienti assemblata dall'analisi. Quando DUMPEXIT è abilitato, l'analisi termina dopo il salvataggio della matrice e del termine noto. La stima del numero di condizionamento è una funzione sperimentale disponibile con CG e GMRES e può essere utilizzata per diagnosticare il comportamento di convergenza.

Argomenti correlati