[updated 3.Nov.2008]

Librairie syslin > Fichier gcprep.f

Qui appelle gcprep ?

line
      SUBROUTINE GCPREP (NMMATR,NVMATR,NMSCMB,NVSCMB,NMPREC,NVPREC
     &                  ,NMSOLU,NVSOLU,NBLIGN,TYMATR,ITYSYM,INSTOK
     &                  ,NMSTOK,NVSTOK,TYSCMB,TYPREC,NUFACT
     &                  ,INDSTP,NMSTOP,NVSTOP,TYSOLU,NM2MMB,NV2MMB
     &                  ,NBVAUX,NBFACT,OKFACT,MCWORK,MCMATR
     &                  ,MCSTOK,MCPREC,MCSTOP,MC2MMB,MCSOLU,NIVIMP)
line
  Auteur : D.Martin (7 Juillet 1997)
  Derniere modification : D.Martin (3 novembre 2008)
  Version 3
 
  Preparation d'un systeme lineaire pour resolution par une methode de
  Gradient Conjugue avec ou sans Preconditionnement.
  (sous-procedure de Gbct, Gcj, Gcs)
 
 -- Arguments d'entree -- 
  NMMATR,NVMATR nom,niveau de la matrice du systeme stockee Bimorse ou Morse
  NMSCMB,NVSCMB nom,niveau du second membre
  NMPREC,NVPREC nom,niveau de la matrice de precond. Bimorse,Morseou Profil 
               (NMPREC=' ' pour le cas sans preconditionnement)
  NMSOLU,NVSOLU nom, niveau de la solution
  NBLIGN rang du systeme lineaire
  TYMATR type de la matrice
  ITYSYM type de symetrie de la matrice du systeme
  INSTOK type de stockage de la matrice du systeme
  NMSTOK,NVSTOK nom,niveau du tableau de stockage de la matrice du systeme
  TYSCMB type du second membre
  TYPREC type de la matrice de preconditionnement
  NUFACT numero de type de factorisation de la matrice de preconditionnement
  INDSTP type de stockage de la matrice de preconditionnement
  NMSTOP,NVSTOP nom,niveau du tableau de stockage de la matrice de precond.
  TYSOLU type de la solution
  NM2MMB,NV2MMB nom,niveau du second membre intermediaire
  NBVAUX nombre de vecteurs auxiliaires
  NBFACT nombre de type de factorisation autorise
  OKFACT numeros de type de factorisation autorises
  MCWORK adresse du tableau contenant les vecteurs auxiliaires
  MCMATR adresse de la matrice du systeme
  MCSTOK adresse du tableau de stockage de la matrice du systeme
  MCPREC adresse de la matrice de preconditionnement
  MCSTOP adresse du tableau de stockage de la matrice de preconditionnement
  MC2MMB adresse du tableau contenant le second membre intermediaire
  MCSOLU adresse du tableau contenant la solution
  NIVIMP niveau d'impression
line
      IMPLICIT NONE
      CHARACTER*(*) NMMATR,NMSCMB,NMPREC,NMSOLU,TYMATR,NMSTOK,TYSCMB
     &             ,TYPREC,NMSTOP,TYSOLU,NM2MMB,OKFACT(*)
      INTEGER       NVMATR,NVSCMB,NVPREC,NVSOLU,NIVIMP,NBLIGN,ITYSYM
     &             ,INSTOK,NVSTOK,NUFACT,INDSTP,NVSTOP,NV2MMB,NBVAUX
     &             ,NBFACT,MCWORK,MCMATR,MCSTOK,MCPREC,MCSTOP,MC2MMB
     &             ,MCSOLU
   
      INCLUDE 'ALLOC'
      INCLUDE 'CONTEX'
 
      INTEGER INDFAC,INDSTO,INTYKL,INTTYP
      INTEGER MCDTRM,LGETRM,NBTERM,INCTRM,NCHTRM
     &       ,NVDSMA,NUINLM,NCPINL,NVDULA,NBNELM,NVNULM,NVCOMA,NVDSSC
     &       ,NVDUSC,NBNESC,NVNUSC,ITFACT,NBSCMB,ITSOLU,I
      CHARACTER     ERCODE*120,STODLN*6
      COMMON/FORMAH/ERCODE 
line
      CALL PRFXMJ (1,'*GCprep*')
 
      CALL TBAR1  (ERCODE,'$SDTRM',1,MCDTRM)
      CALL SDEXDB (IST(MCDTRM),LGETRM,NBTERM,INCTRM,NCHTRM)             !SDexplo
 
 
      Caracteristiques du systeme et de la matrice de preconditionnement
 
      CALL SYPREP (NMMATR,NVMATR,NMSCMB,NVSCMB,NMPREC,NVPREC,TYMATR
     &            ,ITYSYM,NVDSMA,NUINLM,NCPINL,NVDULA,NBNELM,NVNULM
     &            ,INSTOK,NVSTOK,NVCOMA,TYSCMB,NVDSSC,NVDUSC,NBNESC
     &            ,NVNUSC,TYPREC,ITFACT,NUFACT,INDSTP,NVSTOP,NBLIGN)    !Syslin
      NMSTOK = STODLN (INSTOK, NCPINL, NCPINL)
      IF (NMSTOK(1:4).EQ.'&BMO') THEN
         NBLIGN=NBNELM*NCPINL
         IF (NVDSMA.NE.NDFDSM.AND.NUINLM.EQ.NDFINC) NBLIGN=NBNELM
      ELSEIF (NMSTOK(1:4).EQ.'&PLA') THEN
         NBLIGN=NBNELM*NCPINL
      ELSE
         CALL ERTERM (18,NMMATR,NVMATR)                                 !Utilite
      ENDIF
      CALL TBRR2  (ERCODE,NMMATR,NVMATR,MCMATR,NMSTOK,NVSTOK,MCSTOK)
 
      IF (NMPREC(1:1).NE.' ') THEN
         IF (ITFACT.NE.INTYKL ('FACTOR')) 
     &      CALL ERTERM (14,NMPREC,NVPREC)                              !Utilite
         DO 10 I=1,NBFACT
            IF (NUFACT.EQ.INDFAC (OKFACT(I))) GOTO 11
10       CONTINUE
         CALL ERTERM (19,NMPREC,NVPREC)                                 !Utilite
11       IF (INDSTP.EQ.INSTOK) THEN
            NMSTOP = NMSTOK
         ELSE
            NMSTOP = STODLN (INDSTP, NCPINL, NCPINL)                    !utilite
         ENDIF
         CALL TBRR2 (ERCODE,NMPREC,NVPREC,MCPREC,NMSTOP,NVSTOP,MCSTOP)
      ENDIF
 
      Vecteur solution
 
      TYSOLU=TYSCMB
      IF (TYMATR(:1).EQ.'C'.OR.TYPREC(:1).EQ.'C') TYSOLU='COMPLEXE'
      NBSCMB=1
      CALL SOPREP (NMSCMB,NVSCMB,NBSCMB,TYSCMB,NVDSSC,NVDUSC,NBNESC
     &            ,NVNUSC,NMSOLU,NVSOLU,TYSOLU,NUINLM,NCPINL,NVDULA
     &            ,NBNELM,NVNULM,NVCOMA,NIVIMP,NVDSMA,NM2MMB,NV2MMB)    !Syslin
      ITSOLU=INTTYP (TYSOLU)                                            !Utilite
    
      Creation des vecteurs de travail pour les iterations de gradient
 
      CALL TBCREE ('$WORK$',0,ITSOLU,NBVAUX*NBLIGN,'c')
      MCPREC=0
      MCSTOP=0
      CALL TBAR5  (ERCODE,NMMATR,NVMATR,MCMATR,NMSOLU,NVSOLU,MCSOLU       
     &            ,NMSTOK,NVSTOK,MCSTOK
     &            ,'$WORK$',0,MCWORK,NM2MMB(:NCHTRM),NV2MMB,MC2MMB)
      IF (NMPREC(1:1).NE.' ')
     &   CALL TBAR2  (ERCODE,NMPREC,NVPREC,MCPREC,NMSTOP,NVSTOP,MCSTOP)
      CALL TAZERO (NBVAUX*NBLIGN,TYSOLU,MCWORK,AST,IST,RST,CST)         !Utilite
 
      CALL PRFXMJ (-1,'*GCprep*')
line
 -- File history
  Version 3 : D.Martin (08 octobre/03 novembre 2008)
   Changement de nom des structures en DL (appel de STODLN)
  Version 2 : D.Martin (13 Octobre 1997)
line
                                                                    END !GCprep
line
top

gcprep est appelé dans (3 procédures)

gbct.f (syslin) gcj.f (syslin) gcs.f (syslin)

top