





![[BIG]](../icons/zoom18.gif)
![[Normal]](../icons/zoom14.gif)
![[small]](../icons/zoom10.gif)
Suiv.: 2.2 Les algorithmes
Sup.: Liste des méthodes itératives
Préc.: Liste des méthodes itératives
Index
Table des matières
Cette partie est une présentation des différents modules
actuellement disponibles dans le code, avec le cadre de leur utilisation
et leurs paramètres. Des exemples concrets de calcul sont rassemblés au chapitre 6.
But : assemble les seconds membres élémentaires
(efforts, pressions, contraintes, flux, ...) par paquets,
pour utiliser au mieux les
possibilités de parallélisation ou de vectorisation de l'ordinateur.
Le même module est utilisé pour les méthodes directes, il est décrit au paragraphe 1.2.1.
But : assemble les matrices élémentaires symétriques ou
non, sous la forme d'une matrice A en stockage compact
(matrice de raideur, matrice de masse, ...) en mémoire centrale.
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer la structure de données d'entrée TAE (et éventuellement NDL1)
- exécuter le module PREPGC qui initialise la structure AMAT, et crée les pointeurs
AMAT4 et AMAT5
Appel du module :
CALL ASSAMA(M,NOT,NFTAE,NITAE,NFNDL1,NINDL1,NFAMAE,NIAMAE,
+ NFAMAS,NIAMAS)
avec
- M : le super-tableau
- NOT : le numéro du tableau à assembler parmi les tableaux élémentaires
de la structure TAE
- NFAMAE : le numéro du fichier support de la SDE AMAT (incomplète, contient uniquement des pointeurs)
- NIAMAE : son numéro de niveau
- NFTAE : le numéro du fichier support de la SDE TAE
- NITAE : son numéro de niveau
- NFNDL1 : le numéro du fichier support de la SDE NDL1
- NINDL1 : son numéro de niveau
- NFAMAS : le numéro du fichier support de la SDS AMAT
- NIAMAS : son numéro de niveau (la SDS peut être distincte de la SDE,
par exemple si on veut
assembler de manière indépendante plusieurs tableaux élémentaires de la structure TAE)
But : prend en compte les conditions aux
limites
de type valeur imposée, ou relation linéaire.
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer les structures de données d'entrée AMAT et B (et éventuellement NDL1)
(exécuter le module PREPGC, puis les modules ASSAMA et ASEMBV, qui créent les
structures AMAT et B)
Appel du module :
CALL CLIMGC(M,NIVO,VTG,NFNDL1,NINDL1,
+ NFAMAE,NIAMAE,NFBE,NIBE,
+ NFBDCL,NIBDCL,NFAMAS,NIAMAS,NFBS,NIBS)
avec
- M : le super-tableau
- NIVO : le type de conditions aux limites imposées :
- si NIVO = 0, les conditions aux limites
portent sur la matrice A uniquement, et sont de la forme
= VTG
- si NIVO
0, les conditions aux limites
portent sur A et B, et sont effectuées suivant
= VTG et
=VTG * V pour tout degré
de liberté i bloqué, puis pour tout k
i tel que 
0,
V et enfin
= 0
- VTG : valeur de multiplication des coefficients diagonaux des degrés de liberté bloqués
- NFNDL1 : le numéro du fichier support de la SDE NDL1
- NINDL1 : son numéro de niveau
- NFAMAE : le numéro du fichier support de la SDE AMAT
- NIAMAE : son numéro de niveau
- NFBDCL : le numéro du fichier support de la SDE BDCL
- NIBDCL : son numéro de niveau
- NFBE : le numéro du fichier support de la SDE B
- NIBE : son numéro de niveau
- NFAMAS : le numéro du fichier support de la SDS AMAT
- NIAMAS : son numéro de niveau (la SDS peut être distincte de la SDE ou confondue)
But : effectue la factorisation incomplète de Gauss,
en mémoire centrale, d'une matrice A,
déjà assemblée dans la structure AMAT. La matrice doit être
non symétrique. Pour stabiliser éventuellement la factorisation incomplète en
renforçant la dominante diagonale, le module factorise la matrice
A +
diagonale(A)
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer la structure de données d'entrée AMAT
Appel du module :
CALL CONDLU(M,SIGMA,NIVEAU,NFAMAT,NIAMAT,NFAMAC,NIAMAC)
avec
- M : le super-tableau
- SIGMA : paramètre pour renforcer la dominante diagonale
- NIVEAU : le niveau de factorisation incomplète (toujours
0)
- NFAMAT : le numéro du fichier support de la SDE AMAT (la matrice du système)
- NIAMAT : son numéro de niveau
- NFAMAC : le numéro du fichier support de la SDS AMAT (la matrice de préconditionnement)
- NIAMAC : son numéro de niveau
But : construit la SD NDL1 à partir de la SD MAIL. Les algorithmes décrits
dans ce guide font appel à la fonction NDL, qui affecte à NDL(I+1)
le numéro du dernier degrés de liberté associé au noeud I (avec la convention NDL(1)=0).
Pour initialiser cette fonction, le module fait un appel à la fonction LRNDL1, et ensuite
- si le nombre de degré de liberté en chaque noeud ND est constant, NDL(I+1) = I * ND
- sinon NDL(I+1) = le numéro du dernier degrés de liberté associé au noeud I est lu dans NDL1
Ce module est utilisé aussi pour les méthodes directes, il est décrit au paragraphe 1.2.9
But : détermine une matrice de préconditionnement par sélection des coefficients
dans une matrice A déjà factorisée stockée dans une structure de données MUA.
La matrice de
préconditionnement résultante est stockée dans une structure AMAT. Il
s'agit d'extraire les coefficients significatifs, suivant le
critère :
Cette procédure permet de calculer une matrice de
préconditionnement de manière très efficace, mais nécessite
l'assemblage en mémoire secondaire de la matrice A sous forme profil.
Cette technique est intéressante lorsqu'il faut résoudre de nombreux
systèmes linéaires avec la même matrice.
Si
ce module transforme une structure de données MUA
en mémoire secondaire en une structure de données AMAT.
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer la structure de données d'entrée MUA, et factoriser la matrice
à l'aide des modules ASMAPS et CHOLPS
Appel du module :
CALL CSAMAT(M,RAPORT,NFACTO,NFMUA,NIMUA,
+ NFAMAT,NIAMAT,NTAMAT)
avec
- M : le super-tableau
- RAPORT : la valeur du paramètre
- NFACTO : l'option de factorisation de la matrice de la SDE MUA
- si NFACTO = 0, la matrice n'a pas encore été factorisée
- si NFACTO = 1, factorisation de Cholesky
- si NFACTO = 2, factorisation de Crout
- NFMUA : le numéro du fichier support de la SDE MUA
- NIMUA : son numéro de niveau
- NFAMAT : le numéro du fichier support de la SDS AMAT
- NIAMAT : son numéro de niveau
- NTAMAT : le nombre de tableaux associés
But : effectue la
résolution du système linéaire par itérations de double gradient
conjugué accéléré, avec préconditionnement lorsque la matrice A n'est
pas symétrique définie positive. La matrice du système linéaire, et la
matrice de préconditionnement sont déjà stockées dans des structures
AMAT.
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer les structures de données d'entrée AMAT, B (et éventuellement BDCL et NDL1)
- exécuter le module CONDLU qui crée la structure de données AMAC,
contenant la matrice de préconditionnement
Appel du module :
CALL DGRADA(M,EPS,NOMTA0,NCLRL,
+ NFBDCL,NIBDCL,NFNDL1,NINDL1,
+ NFAMAT,NIAMAT,NFBE,NIBE,
+ NFAMAC,NIAMAC,NFBS,NIBS)
avec
- M : le super-tableau
- EPS :
le seuil de convergence, suivant le critère
- NOMTA0 : le nom du tableau contenant le vecteur X0, pour l'initialisation de l'algorithme
du double gradient conjugué accéléré
- NCLRL : nombre de conditions aux limites en relation linéaire
- NFBDCL : le numéro du fichier support de la SDE BDCL
- NIBDCL : son numéro de niveau
- NFNDL1 : le numéro du fichier support de la SDE NDL1
- NINDL1 : son numéro de niveau
- NFAMAT : le numéro du fichier support de la SDE AMAT (la matrice du système)
- NIAMAT : son numéro de niveau
- NFBE : le numéro du fichier support de la SDE B (le second membre)
- NIBE : son numéro de niveau
- NFAMAC : le numéro du fichier support de la SDE AMAC (la matrice de préconditionnement)
- NIAMAC : son numéro de niveau
- NFBS : le numéro du fichier support de la SDS B (la solution)
- NIBS : son numéro de niveau
But : effectue la factorisation incomplète de Cholesky,
ou de Crout , en mémoire centrale, d'une matrice A symétrique,
déjà assemblée dans la structure MUA.
Suivant l'option choisie par l'utilisateur, le module effectue une factorisation incomplète
de Cholesky, de Crout.
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer les structures de données d'entrée AMAT, B (et éventuellement BDCL et NDL1)
Appel du module :
CALL FANIGC(M,NIVEAU,NFACTO,
+ NFAMAT,NIAMAT,NFAMAP,NIAMAP,NBPIVO)
avec
- M : le super-tableau
- NIVEAU : le niveau de factorisation incomplète (toujours
0) (plus le niveau croît,
plus il y a remplissage de la matrice) ; si le niveau est suffisamment élevé une factorisation exacte est obtenue,
- NFACTO : l'option de factorisation de la matrice de la SDE AMAT
- si NFACTO = 1, factorisation de Cholesky incomplète
- si NFACTO = 2, factorisation de Crout incomplète
- NFAMAT : le numéro du fichier support de la SDE AMAT (la matrice du système)
- NIAMAT : son numéro de niveau
- NFAMAC : le numéro du fichier support de la SDS AMAT (la matrice de préconditionnement)
- NIAMAC : son numéro de niveau
- NBPIVO : le nombre de pivots incorrects (remplacés par leur prédécesseur)
Remarque : Ce module remplace FAINGC. Attention,il y des paramètres de plus. L'ancienne version,
FANIGC correspond à NIVEAU=0
But : effectue la
résolution du système linéaire par itérations de gradient conjugué
avec préconditionnement par la diagonale , lorsque la matrice A est symétrique définie
positive. Seule la matrice du système linéaire doit être
stockée dans une structure AMAT, la matrice de
préconditionnement étant déterminée par le programme.
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer les structures de données d'entrée AMAT, B (et éventuellement BDCL et NDL1)
Appel du module :
CALL GCDIAG(M,EPS,NOMTA0,NFNDL1,NINDL1,
+ NFBE,NIBE,NFAMAT,NIAMAT,NFBS,NIBS)
avec
- M : le super-tableau
- EPS : le seuil de convergence
, suivant le critère
- NOMTA0 : le nom du tableau contenant le vecteur X0, pour l'initialisation de l'algorithme
du gradient conjugué préconditionné, si ce tableau n'existe pas X0 est initialisé à 0
- NFNDL1 : le numéro du fichier support de la SDE NDL1
- NINDL1 : son numéro de niveau
- NFBE : le numéro du fichier support de la SDE B (le second membre)
- NIBE : son numéro de niveau
- NFAMAT : le numéro du fichier support de la SDE AMAT (la matrice du système)
- NIAMAT : son numéro de niveau
- NFBS : le numéro du fichier support de la SDS B (la solution)
- NIBS : son numéro de niveau
But : effectue la
résolution du système linéaire par itérations de gradient conjugué
avec préconditionnement lorsque la matrice A est symétrique définie
positive. La matrice du système linéaire, et la matrice de
préconditionnement sont déjà stockées dans des structures AMAT.
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer la structure de données d'entrée AMAT de la matrice
du système linéaire (avec le module ASSAMA) et celle du préconditionneur
(avec le module FANIGC), puis la structure de données B (et éventuellement BDCL et NDL1)
Appel du module :
CALL ICHRGC(M,EPS,NOMTA0,NCLRL,
+ NFBDCL,NIBDCL,NFNDL1,NINDL1,
+ NFBE,NIBE,NFAMAC,NIAMAC,
+ NFAMAT,NIAMAT,NFBS,NIBS)
avec
- M : le super-tableau
- EPS : le seuil de convergence
, suivant le critère
- NOMTA0 : le nom du tableau contenant le vecteur X0, pour l'initialisation de l'algorithme
du gradient conjugué préconditionné, si ce tableau n'existe pas X0 est initialisé à 0
- NCLRL : nombre de conditions aux limites en relation linéaire
- NFBDCL : le numéro du fichier support de la SDE BDCL
- NIBDCL : son numéro de niveau
- NFNDL1 : le numéro du fichier support de la SDE NDL1
- NINDL1 : son numéro de niveau
- NFBE : le numéro du fichier support de la SDE B (le second membre)
- NIBE : son numéro de niveau
- NFAMAC : le numéro du fichier support de la SDE AMAC (la matrice de préconditionnement)
- NIAMAC : son numéro de niveau
- NFAMAT : le numéro du fichier support de la SDE AMAT (la matrice du système)
- NIAMAT : son numéro de niveau
- NFBS : le numéro du fichier support de la SDS B (la solution)
- NIBS : son numéro de niveau
But : détermine les pointeurs AMAT3, AMAT4 et
AMAT5 de la structure de données AMAT, et
calcule la place mémoire nécessaire au stockage de la matrice A.
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer les structures de données d'entrée NOPO et éventuellement
NDL1 et BDCL
Appel du module :
CALL PREPGC(M,ND,NCODSA,NTY,NCLRL,NFBDCL,NIBDCL,
+ NFNDL1,NINDL1,NFNOPO,NINOPO,
+ NFAMAT,NIAMAT,NTAMAT,MCAMAT)
avec
- M : le super-tableau
- ND : le nombre de degré de liberté en chaque noeud, s'il est constant (0 sinon)
- NCODSA : le code de stockage de la matrice
- NCODSA > 0 : stockage symétrique de la partie triangulaire inférieure
- NCODSA = 0 : stockage diagonal de la matrice supposée diagonale
- NCODSA < 0 : stockage non symétrique de la matrice complète
- NTY : le type des tableaux AMAT6 et B4 à assembler
- NCLRL : le nombre de conditions aux limites en relation linéaire
- NFBDCL : le numéro du fichier support de la SDE BDCL
- NIBDCL : son numéro de niveau
- NFNDL1 : le numéro du fichier support de la SDE NDL1
- NINDL1 : son numéro de niveau
- NFNOPO : le numéro du fichier support de la SDE NOPO
- NINOPO : son numéro de niveau
- NFAMAT : le numéro du fichier support de la SDS AMAT
- NIAMAT : son numéro de niveau
- NTAMAT : le nombre de tableaux associés
- MCAMAT : le nombre de mots de la structure AMAT
But : effectue la
résolution du système linéaire par itérations de gradient conjugué
sans préconditionnement, lorsque la matrice A est symétrique
définie positive. La matrice du système linéaire doit être
stockée dans une structure AMAT symétrique.
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer les structures de données d'entrée AMAT et B (et éventuellement BDCL et NDL1)
Appel du module :
CALL SIMPGC(M,EPS,NOMTA0,NCLRL,
+ NFBDCL,NIBDCL,NFNDL1,NINDL1,
+ NFBE,NIBE,NFAMAT,NIAMAT,NFBS,NIBS)
avec
- M : le super-tableau
- EPS : le seuil de convergence
, suivant le critère
- NOMTA0 : le nom du tableau contenant le vecteur X0, pour l'initialisation de l'algorithme
du gradient conjugué, si ce tableau n'existe pas X0 est initialisé à 0
- NCLRL : nombre de conditions aux limites en relation linéaire
- NFBDCL : le numéro du fichier support de la SDE BDCL
- NIBDCL : son numéro de niveau
- NFNDL1 : le numéro du fichier support de la SDE NDL1
- NINDL1 : son numéro de niveau
- NFBE : le numéro du fichier support de la SDE B (le second membre)
- NIBE : son numéro de niveau
- NFAMAT : le numéro du fichier support de la SDE AMAT (la matrice du système)
- NIAMAT : son numéro de niveau
- NFBS : le numéro du fichier support de la SDS B (la solution)
- NIBS : son numéro de niveau
But : effectue la
résolution du système linéaire par itérations de gradient conjugué
avec préconditionnement SSO R , lorsque la matrice A est symétrique définie
positive. Seule la matrice du système linéaire doit être
stockées dans une structure AMAT, la matrice de
préconditionnement étant déterminée par le programme, sans augmentation
de place mémoire.
Utilisation :
- dimensionner le tableau M (dans le common blanc)
- appeler INITI
- créer les structures de données d'entrée AMAT et B (et éventuellement BDCL et NDL1)
Appel du module :
CALL SSORGC(M,OMEGA,EPS,NOMTA0,NCLRL,
+ NFBDCL,NIBDCL,NFNDL1,NINDL1,
+ NFBE,NIBE,NFAMAT,NIAMAT,NFBS,NIBS)
avec
- M : le super-tableau
- OMEGA : le paramètre de relaxation
0
2
- EPS : le seuil de convergence
, suivant le critère
- NOMTA0 : le nom du tableau contenant le vecteur X0, pour l'initialisation de l'algorithme
du gradient conjugué préconditionné, si ce tableau n'existe pas X0 est initialisé à 0
- NCLRL : nombre de conditions aux limites en relation linéaire
- NFBDCL : le numéro du fichier support de la SDE BDCL
- NIBDCL : son numéro de niveau
- NFNDL1 : le numéro du fichier support de la SDE NDL1
- NINDL1 : son numéro de niveau
- NFBE : le numéro du fichier support de la SDE B (le second membre)
- NIBE : son numéro de niveau
- NFAMAT : le numéro du fichier support de la SDE AMAT (la matrice du système)
- NIAMAT : son numéro de niveau
- NFBS : le numéro du fichier support de la SDS B (la solution)
- NIBS : son numéro de niveau






![[BIG]](../icons/zoom18.gif)
![[Normal]](../icons/zoom14.gif)
![[small]](../icons/zoom10.gif)
Suiv.: 2.2 Les algorithmes
Sup.: Liste des méthodes itératives
Préc.: Liste des méthodes itératives
Index
Table des matières