Aller au contenu

!SOLVER

Contrôle du solveur

Donnée de contrôle obligatoire.

Paramètres

METHOD =    Méthode de résolution (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
            DIRECT     : Méthode directe sauf pour l’analyse de contact (traitement série uniquement) (actuellement indisponible)
            DIRECTmkl  : Méthode directe utilisant Intel MKL
            MUMPS      : Méthode directe utilisant MUMPS
            Lorsqu’une méthode directe est sélectionnée, les lignes de données sont ignorées.
            Les méthodes itératives pour les problèmes à 3 DDL prennent en charge l’exécution parallèle par threads avec OpenMP

PRECOND =   Méthode de préconditionnement des solveurs itératifs (1, 2, 3, 5, 10, 11, 12, 22)
            1, 2       : SSOR (par blocs) (avec ordonnancement multicolore uniquement pour les problèmes à 3 DDL)
            3          : Mise à l’échelle diagonale (par blocs)
            5          : AMG utilisant le paquet de préconditionnement multigrille ML
            10         : ILU(0) par blocs
            11         : ILU(1) par blocs
            12         : ILU(2) par blocs
            22         : AMG utilisant le SA-AMG intégré à HEC-MW (AMG par agrégation lissée)
            10, 11 et 12 ne sont disponibles que pour les problèmes à 3 DDL
            22 n’est disponible que dans les compilations avec LAPACK activé
            Pour l’exécution parallèle par threads OpenMP, SSOR, la mise à l’échelle diagonale, ML ou SA-AMG sont recommandés

ITERLOG =   Indique s’il faut produire l’historique de convergence du solveur itératif          (YES/NO)(Valeur par défaut : NO)

TIMELOG =   Indique s’il faut produire le temps de calcul du solveur                       (YES/NO/VERBOSE)(Valeur par défaut : NO)

LOGLEVEL =  Niveau de sortie des informations de diagnostic du préconditionneur             (entier)(Valeur par défaut : aucune sortie)
            Spécifié indépendamment de ITERLOG et TIMELOG
            À partir de 1, produit la construction de la hiérarchie et d’autres informations sur les préconditionneurs AMG (PRECOND=5,22)
            À partir de 2, produit des informations plus détaillées (notamment l’utilisation de la mémoire)

USEJAD =    Indique s’il faut utiliser l’ordonnancement pour les processeurs vectoriels                    (YES/NO)(Valeur par défaut : NO)
            Valide uniquement lorsqu’une méthode itérative est utilisée pour un problème à 3 DDL

SCALING =   Indique s’il faut mettre la matrice à l’échelle pour que les termes diagonaux valent 1       (YES/NO)(Valeur par défaut : NO)
            Valide uniquement lorsqu’une méthode itérative est utilisée pour un problème à 3 DDL

DUMPTYPE =  Format de vidage de la matrice (NONE, MM, CSR, BSR) (principalement pour le débogage)
            NONE : Aucun vidage (valeur par défaut)
            MM   : Format Matrix Market
            CSR  : Format Compressed Sparse Row (CSR)
            BSR  : Format CSR par blocs

DUMPEXIT =  Termine le programme immédiatement après le vidage de la matrice           (YES/NO)(Valeur par défaut : NO)

MPCMETHOD = Méthode de traitement des contraintes multipoints (1, 3)
            1: Méthode de pénalisation (valeur par défaut lorsqu’une méthode directe est utilisée)
            3: Élimination explicite des DDL (valeur par défaut lorsqu’une méthode itérative est utilisée)
            La méthode MPC-CG (2) a été supprimée. Si 2 est spécifié, un avertissement est émis et la méthode par défaut est utilisée.

ESTCOND =   Fréquence d’estimation du nombre de conditionnement (expérimental)
            Estime le nombre de conditionnement à chaque intervalle d’itération spécifié et à la fin des itérations
            Aucune estimation n’est effectuée lorsque 0 est spécifié

RECOMPUTE_RESIDUAL = Fréquence de recalcul du vecteur des résidus
            Valide uniquement lorsque CG, BiCGSTAB, GPBiCG ou PipeCG est spécifié pour METHOD
            Les méthodes itératives mettent à jour le vecteur des résidus par une relation de récurrence, ce qui accumule les erreurs d’arrondi
            À chaque intervalle d’itérations spécifié, le vecteur des résidus est recalculé à partir de {b}-[A]{x}
            Lorsque 0 est spécifié, la valeur par défaut de chaque méthode est utilisée (CG : 50, BiCGSTAB : 100, GPBiCG : 20, PipeCG : 50)
            Lorsqu’une valeur négative est spécifiée, aucun recalcul périodique n’est effectué
            Le recalcul destiné à confirmer la convergence lorsqu’un critère de convergence est satisfait est toujours effectué, indépendamment de ce paramètre
            Une période trop courte augmente non seulement le nombre de produits matrice-vecteur,
            mais peut aussi dégrader la convergence elle-même, voire empêcher la convergence
            Après modification de la valeur par défaut, vérifier l’historique de convergence et le résidu relatif final

METHOD2 =   Méthode de résolution secondaire (BiCGSTAB, GMRES, GPBiCG) (expérimental)
            Valide uniquement lorsque CG est spécifié pour METHOD
            Si CG diverge, bascule automatiquement vers la méthode secondaire et poursuit la résolution
            Les mêmes valeurs sont utilisées pour les autres paramètres et lignes de données

CONTACT_ELIM = Spécifie si l’élimination des DDL est effectuée dans l’analyse de contact (0,1)
               0: Effectue l’élimination des DDL uniquement lorsqu’une méthode itérative est utilisée (valeur par défaut)
               1: Effectue toujours l’élimination des DDL (y compris lorsqu’une méthode directe est utilisée)

** 2e ligne et suivantes **

(2e ligne) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
Nom de variable Type Description
NITER I Nombre d’itérations (valeur par défaut : 100)
iterPREmax I Nombre d’itérations du préconditionnement Additive Schwarz (valeur par défaut : 1)
(Valeur recommandée : 1 ; 2 peut être efficace dans certains calculs parallèles)
NREST I Nombre de sous-espaces de Krylov (valeur par défaut : 10)
(Valide uniquement lorsque GMRES est sélectionné comme méthode de résolution)
NCOLOR_IN I Nombre cible de couleurs pour l’ordonnancement multicolore (valeur par défaut : 10)
(Valide uniquement lorsque le nombre de threads OpenMP est supérieur ou égal à 2)
RECYCLEPRE I Nombre de réutilisations des informations de configuration du préconditionneur (valeur par défaut : 3)
(Valide uniquement en analyse non linéaire)
(3e ligne) RESID, SIGMA_DIAG, SIGMA
Nom de variable Type Description
RESID R Erreur de troncature (valeur par défaut : 1.0e-8)
SIGMA_DIAG R Facteur d’échelle appliqué aux termes diagonaux lors du calcul de la matrice de préconditionnement (valeur par défaut : 1.0)
(Si une division par zéro ou une divergence se produit avec le préconditionnement ILU, le problème peut converger lorsqu’une valeur supérieure à 1.0 est spécifiée)
SIGMA R Non utilisé (valeur par défaut : 0.0)

Lorsque PRECOND=5 (facultatif)

Si PRECOND reçoit une valeur autre que 5 ou 22, la 4e ligne est ignorée.

(4e ligne) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
Nom de variable Type Description
ML_CoarseSolver I Solveur de grille grossière pour ML (1 : utiliser le lisseur, 2 : KLU (méthode directe série), 3 : MUMPS (méthode directe parallèle)) (valeur par défaut : 1)
(Recommandation : 3 ou 2 pour les problèmes difficiles, 1 pour les problèmes ordinaires)
ML_Smoother I Lisseur ML (1 : Chebyshev, 2 : SymBlockGaussSeidel, 3 : Jacobi) (valeur par défaut : 1)
(Recommandation : 1)
ML_MGCycle I Cycle multigrille ML (1 : cycle V, 2 : cycle W, 3 : cycle V complet) (valeur par défaut : 1)
(Recommandation : 2 pour les problèmes difficiles, 1 pour les problèmes ordinaires)
ML_MaxLevels I Nombre maximal de niveaux ML (valeur par défaut : 10)
(Pour les problèmes particulièrement difficiles, utilisez un solveur direct sur la grille grossière et 2 niveaux (ou 3 si la mémoire est insuffisante) ; pour les problèmes ordinaires, 10 est recommandé)
ML_CoarseningScheme I Schéma de grossissement ML (1 : UncoupledMIS, 2 : METIS, 4 : Zoltan, 5 : DD) (valeur par défaut : 1)
(Recommandation : 1 ou 5)
ML_NumSweep I Nombre de balayages du lisseur ML (degré du polynôme pour Chebyshev) (valeur par défaut : 2)
(Recommandation : 2 pour Chebyshev, 1 pour SymBlockGaussSeidel)

Lorsque PRECOND=22 (facultatif)

Si PRECOND reçoit une valeur autre que 22, la 5e ligne est ignorée. Les 4e et 5e lignes peuvent chacune être entièrement omises ; les éléments situés à la fin de l’une ou l’autre ligne peuvent également être omis. La valeur par défaut est utilisée pour tout élément spécifié à 0.

Les éléments 1 à 7 de la 4e ligne sont disposés dans le même ordre que la ligne d’options de PRECOND=5 (ML), de sorte que la ligne d’options ML peut être réutilisée telle quelle. Les éléments 8 à 10 sont propres à SA-AMG.

(4e ligne) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (non utilisé), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (non utilisé)
Nom de variable Type Description
SA_CoarseSolver I Solveur de grille grossière (0 : automatique, 1 : utiliser le lisseur, 2 : méthode directe pour matrice dense, 3 : MUMPS (méthode directe parallèle)) (valeur par défaut : 0)
(En mode automatique, MUMPS est utilisé dans les compilations où MUMPS est activé ; sinon, la méthode directe pour matrice dense est utilisée)
SA_Smoother I Lisseur (0 ou 1 : Chebyshev) (valeur par défaut : 0)
(Seul Chebyshev est pris en charge. Si une autre valeur est spécifiée, un avertissement est produit et Chebyshev est utilisé)
SA_MGCycle I Cycle multigrille (0 : valeur par défaut (cycle W), 1 : cycle V, 2 : cycle W) (valeur par défaut : 0)
(Le cycle V complet n’est pas pris en charge)
SA_MaxLevels I Nombre maximal de niveaux (valeur par défaut : 20)
(non utilisé) I Position correspondant au schéma de grossissement ML. Comme SA-AMG utilise toujours une agrégation non couplée, une valeur différente de 0 déclenche un avertissement et est ignorée
SA_ChebyDegree I Degré du polynôme du lisseur de Chebyshev (valeur par défaut : 2)
SA_CoarseSize I Taille seuil de la grille grossière (valeur par défaut : 50000 lorsque MUMPS est utilisé comme solveur de grille grossière ; sinon 100)
SA_MaxAggSize I Taille maximale d’un agrégat (valeur par défaut : 96)
SA_GalerkinLowMem I Mode de calcul de la matrice de grille grossière (0 : normal (priorité à la vitesse), valeur positive : économie de mémoire) (valeur par défaut : 0)
(Spécifier une valeur positive si la mémoire est insuffisante pendant la configuration)
(non utilisé) I Réservé aux extensions futures

La 5e ligne est propre à SA-AMG et n’est pas lue par ML.

(5e ligne) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
Nom de variable Type Description
SA_Theta R Seuil de détermination des connexions fortes (valeur par défaut : 0.0)
(À 0.0, la structure non nulle de la matrice est utilisée directement comme graphe)
SA_ChebyAlpha R Rapport déterminant la borne inférieure de l’intervalle de valeurs propres ciblé par le lisseur de Chebyshev (valeur par défaut : 20.0)
SA_Safety R Facteur de sécurité appliqué à la valeur propre maximale estimée (valeur par défaut : 1.1)
SA_TaperK R Coefficient K d’atténuation du grossissement (valeur par défaut : 100)
(À partir du niveau 2, le grossissement est rendu plus progressif afin de conserver au moins environ K agrégats. Une valeur négative désactive l’atténuation)
SA_AggOrder R Ordre de parcours de l’agrégation (0 : valeur par défaut (ordre BFS), 1 : ordre BFS, 2 : ordre de hachage des numéros de nœud (expérimental), 3 : ordre croissant du degré (expérimental), 4 : ordre décroissant du degré (expérimental), valeur négative : ordre des numéros de nœud) (valeur par défaut : 0)
SA_MinAggSize R Taille minimale d’un agrégat (valeur par défaut : 3)
SA_Verify R Indique s’il faut exécuter un autocontrôle pendant la configuration (0 : non, valeur positive : oui) (valeur par défaut : 0) (principalement pour le débogage)
SA_DumpVTK R Indique s’il faut produire l’agrégation du niveau le plus élevé au format VTK (0 : aucune sortie, valeur positive : sortie) (valeur par défaut : 0) (principalement pour le débogage)

Exemples

Utiliser CG avec préconditionnement SSOR et fixer le nombre maximal d’itérations à 10000 et l’erreur de troncature à 1.0e-8

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

Utiliser GMRES avec préconditionnement SSOR et fixer le nombre de sous-espaces de Krylov à 40 et le nombre cible de couleurs pour l’ordonnancement multicolore à 100

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

Utiliser CG avec préconditionnement ILU(0) et fixer à 1.1 le facteur d’échelle appliqué aux termes diagonaux lors du calcul de la matrice de préconditionnement

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

Utiliser AMG par ML comme préconditionneur pour CG

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

Utiliser AMG par ML comme préconditionneur pour CG et MUMPS comme solveur de grille grossière (pour les problèmes difficiles)

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

Utiliser AMG par ML comme préconditionneur pour CG et le cycle W comme cycle multigrille (pour les problèmes difficiles)

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

Utiliser AMG par ML comme préconditionneur pour CG, MUMPS comme solveur de grille grossière et fixer le nombre maximal de niveaux à 2 (pour les problèmes très difficiles)

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

Utiliser le SA-AMG intégré à HEC-MW comme préconditionneur pour CG

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

Utiliser SA-AMG comme préconditionneur pour CG et MUMPS comme solveur de grille grossière

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

Pour une analyse de contact avec frottement, utiliser BiCGSTAB avec le préconditionnement SA-AMG et produire la hiérarchie du préconditionneur AMG

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