[updated 8.Sep.2008]

Librairie syslin > Fichier gbct.f

Qui appelle gbct ?

line
      SUBROUTINE GBCT (NMMATR,NVMATR,NMSCMB,NVSCMB,NMPREC,NVPREC
     &                ,EPSIL,MXITER,NMSOLU,NVSOLU,NIVIMP,*)
line
  Auteur : D.Martin (Juillet 1990)
  Derniere modification : D.Martin (24 Janvier 2001)
  Version 1.0.1
   
  Resolution d'un systeme lineaire reel ou complexe par la methode du
  Gradient BiConjugue avec ou sans Preconditionnement.
   
 -- Arguments d'entree -- 
  NMMATR nom du tableau contenant la matrice stockee Bimorse ou Morse
  NVMATR son niveau
  NMSCMB nom du tableau contenant le second membre
  NVSCMB son niveau
  NMPREC nom de la matrice de preconditionnement stockee Bimorse,Morse
          ou Profil (Poser NMPREC=' ' pour le cas sans preconditionnement)
  NVPREC son niveau
  EPSIL  seuil de d'arret des iterations de gradient  
  MXITER nombre maximum d'iterations de gradient
         Si nul on choisit 30% du nombre de lignes de la matrice
  NMSOLU nom du tableau contenant la solution
  NVSOLU son niveau
  NIVIMP niveau d'impression pour la solution 
   (*)   etiquette de retour en cas de non-convergence
line
      IMPLICIT NONE
      CHARACTER*(*) NMMATR,NMPREC,NMSCMB,NMSOLU
      INTEGER       NVMATR,NVSCMB,NVPREC,MXITER,NVSOLU,NIVIMP
      REAL          EPSIL
   
      INCLUDE 'ALLOC'
      INCLUDE 'CONTEX'
 
      INTEGER       INDFAC
      CHARACTER     FACIND*3
      INTEGER       NBVAUX,NBFACT,NBITER,NBLIGN,ITYSYM,INDSTK,NUFACT
     &             ,INDSTP,NV2MMB,MCMATR,MCSTOK,MCPREC,MCSTOP,MC2MMB
     &             ,MCSOLU,MCWORK,IRETUR,NVSTOK,NVSTOP,MAXITE
      REAL          RESIDU
      CHARACTER     ERCODE*120,FACTOK
      CHARACTER*3   OKFACT
      CHARACTER*8   TYMATR,TYSCMB,TYPREC,TYSOLU,NM2MMB
      CHARACTER*6   NMSTOK,NMSTOP
      COMMON/FORMAH/ERCODE 
      EQUIVALENCE  (ERCODE(49:49),OKFACT),(ERCODE(57:57),NMSTOP)
     &            ,(ERCODE(65:65),NMSTOK),(ERCODE(73:73),TYPREC)
     &            ,(ERCODE(81:81),TYMATR),(ERCODE(89:89),TYSCMB)
     &            ,(ERCODE(97:97),TYSOLU),(ERCODE(105:105),NM2MMB)
line
      CALL PRFXMJ (1,'*GbCt  *')
 
      FACTOK='N'
      NBVAUX = 5
      NBFACT = 1
      OKFACT = 'L.U'
      CALL GCPREP (NMMATR,NVMATR,NMSCMB,NVSCMB,NMPREC,NVPREC
     &            ,NMSOLU,NVSOLU,NBLIGN
     &            ,TYMATR,ITYSYM,INDSTK,NMSTOK,NVSTOK
     &            ,TYSCMB,TYPREC,NUFACT,INDSTP,NMSTOP,NVSTOP
     &            ,TYSOLU,NM2MMB,NV2MMB,NBVAUX,NBFACT,OKFACT,MCWORK
     &            ,MCMATR,MCSTOK,MCPREC,MCSTOP,MC2MMB,MCSOLU,NIVIMP)    !syslin
 
      IF (NUFACT.EQ.INDFAC (OKFACT))
     &   FACTOK='Y'
      MAXITE=MXITER
      IF (MAXITE.LE.0) THEN
         MAXITE=MAX(10,40*NBLIGN/100)
         IF (NBLIGN.LE.200) MAXITE=NBLIGN
      ENDIF
 
      IF (NMSTOK(1:4).EQ.'&BMO') THEN
         IF (NMPREC(1:1).NE.' ') THEN
            IF (FACTOK.EQ.'Y') THEN
               IF (INDSTP.EQ.INDSTK) THEN
 
                  Matrice BiMorse - Precond. L.U incomplet BiMorse
                  CALL GBTBB1 (MAXITE,EPSIL,ITYSYM
     &                        ,IST(MCSTOK),TYMATR,MCMATR,TYSCMB,MC2MMB 
     &                        ,IST(MCSTOP),TYPREC,MCPREC,TYSOLU,MCSOLU 
     &                        ,MCWORK,MCWORK+NBLIGN,MCWORK+2*NBLIGN
     &                        ,MCWORK+3*NBLIGN,MCWORK+4*NBLIGN
     &                        ,RST,CST,NBITER,RESIDU
     &                        ,NIVIMP,IMPSDR)                           !syslin
               ELSEIF (NMSTOP(1:4).EQ.'&PRO') THEN
 
                  Matrice BiMorse - Precond. L.U Profil
                  CALL GBTBP1 (MAXITE,EPSIL,ITYSYM
     &                        ,IST(MCSTOK),TYMATR,MCMATR,TYSCMB,MC2MMB
     &                        ,IST(MCSTOP),TYPREC,MCPREC,TYSOLU,MCSOLU
     &                        ,MCWORK,MCWORK+NBLIGN,MCWORK+2*NBLIGN
     &                        ,MCWORK+3*NBLIGN,MCWORK+4*NBLIGN
     &                        ,RST,CST,NBITER,RESIDU
     &                        ,NIVIMP,IMPSDR)                           !syslin
               ENDIF
            ENDIF
         ELSE
 
            Matrice BiMorse - Sans Preconditionnement
            CALL GBTB   (MAXITE,EPSIL,ITYSYM
     &                  ,IST(MCSTOK),TYMATR,MCMATR,TYSCMB,MC2MMB
     &                  ,TYSOLU,MCSOLU
     &                  ,MCWORK,MCWORK+NBLIGN,MCWORK+2*NBLIGN
     &                  ,MCWORK+3*NBLIGN,MCWORK+4*NBLIGN
     &                  ,RST,CST,NBITER,RESIDU
     &                  ,NIVIMP,IMPSDR)                                 !syslin
         ENDIF
 
      ELSEIF (NMSTOK.EQ.'&PLAGE') THEN
         IF (NMPREC(1:1).NE.' ') THEN
            IF (FACTOK.EQ.'Y') THEN
               IF (INDSTP.EQ.INDSTK) THEN
 
                  Matrice Morse-L - Precond. L.U incomplet Morse-L
                  CALL GBTMM1 (MAXITE,EPSIL
     &                        ,IST(MCSTOK),TYMATR,MCMATR,TYSCMB,MC2MMB 
     &                        ,IST(MCSTOP),TYPREC,MCPREC,TYSOLU,MCSOLU 
     &                        ,MCWORK,MCWORK+NBLIGN,MCWORK+2*NBLIGN
     &                        ,MCWORK+3*NBLIGN,MCWORK+4*NBLIGN
     &                        ,RST,CST,NBITER,RESIDU
     &                        ,NIVIMP,IMPSDR)                           !syslin
               ELSEIF (NMSTOP.EQ.'&BMORS') THEN
 
                  Matrice Morse-L - Precond. L.U incomplet BiMorse
                  CALL GBTMB1 (MAXITE,EPSIL
     &                        ,IST(MCSTOK),TYMATR,MCMATR,TYSCMB,MC2MMB 
     &                        ,IST(MCSTOP),TYPREC,MCPREC,TYSOLU,MCSOLU 
     &                        ,MCWORK,MCWORK+NBLIGN,MCWORK+2*NBLIGN
     &                        ,MCWORK+3*NBLIGN,MCWORK+4*NBLIGN
     &                        ,RST,CST,NBITER,RESIDU
     &                        ,NIVIMP,IMPSDR)                           !syslin
               ELSEIF (NMSTOP(1:4).EQ.'&PRO') THEN
 
                  Matrice Morse-L - Precond. L.U Profil
                  CALL GBTMP1 (MAXITE,EPSIL
     &                        ,IST(MCSTOK),TYMATR,MCMATR,TYSCMB,MC2MMB
     &                        ,IST(MCSTOP),TYPREC,MCPREC,TYSOLU,MCSOLU
     &                        ,MCWORK,MCWORK+NBLIGN,MCWORK+2*NBLIGN
     &                        ,MCWORK+3*NBLIGN,MCWORK+4*NBLIGN
     &                        ,RST,CST,NBITER,RESIDU
     &                        ,NIVIMP,IMPSDR)                           !syslin
               ENDIF
            ENDIF
         ELSE
 
            Matrice Morse-L - Sans Preconditionnement
            CALL GBTM   (MAXITE,EPSIL
     &                  ,IST(MCSTOK),TYMATR,MCMATR,TYSCMB,MC2MMB
     &                  ,TYSOLU,MCSOLU
     &                  ,MCWORK,MCWORK+NBLIGN,MCWORK+2*NBLIGN
     &                  ,MCWORK+3*NBLIGN,MCWORK+4*NBLIGN
     &                  ,RST,CST,NBITER,RESIDU
     &                  ,NIVIMP,IMPSDR)                                 !syslin
         ENDIF
      ELSE
         CALL ERTERM (18,NMMATR,NVMATR)                                 !utilite
      ENDIF
 
      IRETUR=0
      OKFACT=' '
      IF (NMPREC.NE.' ') OKFACT=FACIND(NUFACT)
      CALL GCFINA (NMMATR,NVMATR,NMSCMB,NVSCMB,NMPREC,NVPREC
     &            ,NMSOLU,NVSOLU,NBLIGN
     &            ,'Gradient Biconjugue',OKFACT
     &            ,NMSTOK,NVSTOK,NMSTOP,NVSTOP,NM2MMB,NV2MMB
     &            ,NBITER,MAXITE,RESIDU,NIVIMP,IMPPAL,IMPSDR,IRETUR)    !syslin
      CALL PRFXMJ (-1,'*GbCt  *')
      IF (IRETUR.EQ.1) RETURN 1
      RETURN
                                                                    END !GbCt
line
top

gbct est appelé dans

top