[updated 23.Jan.2001]

Librairie syslin > Fichier rsbml1.f

Qui appelle rsbml1 ?

line
      SUBROUTINE RSBML1 (RANG,NULAPL,IPLAGE,TYPM,MCT,TYPB,MCB
     &                  ,TYPX,MCX,RST,CST)
line
  Auteur : D.Martin (Novembre 91)
  Derniere modification : D.Martin (15 Novembre 1991)
  Version 1.0.0
 
  Resolution du systeme L1xX=B ou L1 est une matrice triangulaire inferieure
  a diagonale unite stockee BiMorse.
 
 -- Arguments d'entree --
  RANG   nombre de lignes de la matrice
  NULAPL tableau des numeros de derniere ligne des plages
  IPLAGE numeros de debut de plage et longueurs cumulees des plages
  TYPM   type ('REEL' ou 'COMPLEXE') de L1
  MCT    adresse (dans le s-t du bon type) de la matrice triang. inferieure L1
  TYPB   type ('REEL' ou 'COMPLEXE') de B
  MCB    adresse (dans le s-t du bon type) du second membre B
  TYPX   type ('REEL' ou 'COMPLEXE') de X
  MCX    adresse (dans le s-t du bon type) de la solution X
         MCX peut etre egal a MCB (auquel cas on doit avoir TYPX = TYPB)
  RST    tableau (cas reel) contenant la matrice L1 a l'adresse MCT,
         le 2nd membre a l'adresse MCB et le vecteur solution a l'adresse MCX
  CST    idem mais dans le cas complexe
line
      IMPLICIT NONE
      CHARACTER*(*) TYPM,TYPB,TYPX
      INTEGER       RANG,NULAPL(*),IPLAGE(2,*),MCT,MCB,MCX
      REAL          RST(*)
      COMPLEX       CST(*)
 
      INTEGER       NUPRPL,NUDRPL,NUMPL,LGCUMU,LGCUAV,KOLDEB,KOLFIN
     &             ,MCCOEF,LIGNM1,LIGNE,MCX1,MCXX,IST
      REAL          RCOEFF
      COMPLEX       CCOEFF
      EQUIVALENCE  (CCOEFF,RCOEFF)
line
      IF (MCX.NE.MCB.OR.TYPX(1:1).NE.TYPB(1:1))
     &   CALL TDANST (RANG,TYPB,MCB,IST,RST,CST,TYPX,MCX,IST,RST,CST)
 
      NUDRPL=0
      LGCUAV=1
      LIGNM1=1
      MCX1=MCX+1
 
      MCCOEF=MCT
      IF (TYPX(1:1).EQ.TYPM(1:1)) THEN
         IF (TYPX(1:1).EQ.'C') THEN
 
            DO 44 LIGNE=2,RANG
               CCOEFF=0.
               NUPRPL=NUDRPL
               NUDRPL=NULAPL(LIGNM1)
               DO 43 NUMPL=NUPRPL+1,NUDRPL
                  LGCUMU=IPLAGE(2,NUMPL)
                  KOLDEB=IPLAGE(1,NUMPL)
                  KOLFIN=KOLDEB+LGCUMU-LGCUAV
                  LGCUAV=LGCUMU+1
                  DO 43 MCXX=MCX-1+KOLDEB,MCX-1+KOLFIN
                     CCOEFF=CCOEFF+CST(MCCOEF)*CST(MCXX)
                     MCCOEF=MCCOEF+1
43                CONTINUE
               CST(MCX1)=CST(MCX1)-CCOEFF
               MCX1=MCX1+1
 
               LIGNM1=LIGNE
44          CONTINUE
         ELSE
 
            DO 22 LIGNE=2,RANG
               RCOEFF=0.
               NUPRPL=NUDRPL
               NUDRPL=NULAPL(LIGNM1)
               DO 21 NUMPL=NUPRPL+1,NUDRPL
                  LGCUMU=IPLAGE(2,NUMPL)
                  KOLDEB=IPLAGE(1,NUMPL)
                  KOLFIN=KOLDEB+LGCUMU-LGCUAV
                  LGCUAV=LGCUMU+1
                  DO 21 MCXX=MCX-1+KOLDEB,MCX-1+KOLFIN
                     RCOEFF=RCOEFF+RST(MCCOEF)*RST(MCXX)
                     MCCOEF=MCCOEF+1
21                CONTINUE
               RST(MCX1)=RST(MCX1)-RCOEFF
               MCX1=MCX1+1
 
               LIGNM1=LIGNE
22          CONTINUE
         ENDIF
      ELSEIF (TYPX(1:1).EQ.'C') THEN
 
            DO 24 LIGNE=2,RANG
               CCOEFF=0.
               NUPRPL=NUDRPL
               NUDRPL=NULAPL(LIGNM1)
               DO 23 NUMPL=NUPRPL+1,NUDRPL
                  LGCUMU=IPLAGE(2,NUMPL)
                  KOLDEB=IPLAGE(1,NUMPL)
                  KOLFIN=KOLDEB+LGCUMU-LGCUAV
                  LGCUAV=LGCUMU+1
                  DO 23 MCXX=MCX-1+KOLDEB,MCX-1+KOLFIN
                     CCOEFF=CCOEFF+RST(MCCOEF)*CST(MCXX)
                     MCCOEF=MCCOEF+1
23                CONTINUE
               CST(MCX1)=CST(MCX1)-CCOEFF
               MCX1=MCX1+1
 
               LIGNM1=LIGNE
24          CONTINUE
      ELSE
         CALL BAISE  ('*RsBmL1* Incompatibilite entre le type COMPLEXE'
     &              //' de la matrice et le type REEL de la solution')
      ENDIF
                                                                    END *RsBmL1
line
top

rsbml1 est appelé dans (7 procédures)

gbtbb1.f (syslin) gbtmb1.f (syslin) gcsbb1.f (syslin)
gcsmb1.f (syslin) rsbau1.f (syslin) rsmafa.f (syslin)
rsmafl.f (syslin)    

top