





![[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 = VTG
-  si NIVO  0, les conditions aux limites
    portent sur A et B, et sont effectuées suivant 0, les conditions aux limites
    portent sur A et B, et sont effectuées suivant = VTG et = VTG et =VTG *  V pour tout degré 
    de liberté i bloqué, puis pour tout k =VTG *  V pour tout degré 
    de liberté i bloqué, puis pour tout k i tel que i tel que  0, 0, V et enfin V et enfin = 0 = 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)
 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) 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.
 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 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, 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 , 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 , 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 , 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 2
-  EPS : le seuil de convergence  , suivant le critère , 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