[updated 16.Jun.2009]

Librairie multmat > Fichier matmpc.f

Qui appelle matmpc ?

line
      SUBROUTINE MATMPC (NBLIGN,NBCOLO,NMSTOK,MCSTOK,ITYSYM,TYMATR
     &                  ,MCMATR,NBCOPL,TYMAPL,MCMAPL,TYRESU,MCRESU
     &                  ,IST,RST,CST)
line
  Auteurs : D.Martin (Fevrier 1997)
  Derniere modification : D.Martin (14 decembre 2006)
  Version 2
   
  Calcul du produit R = A * P d'une matrice A par une matrice pleine P
  (operande a droite)
 
  La matrice (operande a gauche) peut etre stockee sous forme  
          'MORSE-Ligne', 'MORSE-Colonne', 'BIMORSE', 'PROFIL',
          'PLEIN-L'   ou 'PLEIN-C'.
  et dans les cas 'BIMORSE' et 'PROFIL', elle peut etre
        'SYMETRIQUE', 'AUTOADJOINTE', 'ANTISYMETRIQUE' ou 'ANTIADJOINTE'.
 
  La matrice pleine, operande a droite, et la matrice pleine resultat
  sont rangees a la fortran (PLEIN-C : colonne apres colonne).
  On suppose que la matrice R est adressee dans le super-tableau du bon type.
   
 -- Arguments d'entree -- 
  NBLIGN nombre de lignes de la matrice A et de la matrice resultat R
  NBCOLO nombre de colonnes de la matrice A et de lignes de la matrice pleine P
  NMSTOK nom du type de stockage de la matrice A
  MCSTOK adresse du tableau de stockage de la matrice A (le cas echeant).
  ITYSYM indicateur de symetrie de la matrice A
  TYMATR type (reel ou complexe) de la matrice A 
  MCMATR adresse de la diagonale de la matrice A dans le super-tableau ad hoc
  NBCOPL nombre de colonnes de la matrice pleine P et de colonnes du resultat R
  TYMAPL type (reel ou complexe) de la matrice pleine P (operande a droite)
  MCMAPL adresse de la matrice pleine P (operande a droite)
  TYRESU type (reel ou complexe) de la matrice resultat R
  MCRESU adresse de la matrice resultat R
  IST,RST,CST super-tableau considere entier, reel ou complexe
 
 -- Procedures appelees -- (autres que sdexplo & Utiliter)
 
  BMVC  /multmat multiplication matrice (stockage Bimorse) x vecteur
  MOVC  /multmat multiplication matrice (stockage Morse-L) x vecteur
  MOTVC /multmat multiplication matrice (stockage Morse-C) x vecteur
  PRVC  /multmat multiplication matrice (stockage Profil) x vecteur
  PLXPL /multmat multiplication matrice pleine x matrice pleine
line
      IMPLICIT NONE
      CHARACTER*(*) NMSTOK,TYMATR,TYMAPL,TYRESU
      INTEGER       NBLIGN,NBCOLO,MCSTOK,ITYSYM,MCMATR,NBCOPL,MCMAPL
      INTEGER       MCRESU,IST(*)
      REAL          RST(*)
      COMPLEX       CST(*)
 
      CHARACTER AST
      INTEGER   INDSTO
      INTEGER   ITMATR,ITMAPL,MCMAP1,MCRES1,MCPLAL,MCPLIL,MCPLAU,MCPLIU
     &         ,MCLENV,MCUENV,LGL,LGU,NBC,NBL,MCL,NBP,NBPLAL,NBPLAU,I
line
      CALL PRFXMJ (1,'*MatMPc*')
 
      Initialisation du resultat
      CALL TAZERO (NBLIGN*NBCOPL,TYRESU,MCRESU,AST,IST,RST,CST)         !utilite
 
      MCMAP1=MCMAPL
      MCRES1=MCRESU
 
      IF (NMSTOK(1:4).EQ.'&BMO') THEN
 
         CALL EXBMOR (MCSTOK,IST(MCSTOK),NBL,NBPLAL,MCPLAL,MCPLIL,LGL
     &                                  ,NBC,NBPLAU,MCPLAU,MCPLIU,LGU) !sdexplo
         MCL=MCMATR+MIN(NBL,NBC)
 
         Matrice a gauche stockee BiMorse
 
         MCMAP1=MCMAPL
         DO 10 I=1,NBCOPL
            CALL BMVC   (NBLIGN,IST(MCPLAL),IST(MCPLIL)
     &                  ,NBCOLO,IST(MCPLAU),IST(MCPLIU)
     &                  ,ITYSYM,TYMATR,MCMATR,MCL,MCL+LGL
     &                  ,TYMAPL,MCMAP1,TYRESU,MCRES1,RST,CST)           !multmat
            MCMAP1=MCMAP1+NBCOLO
            MCRES1=MCRES1+NBLIGN
10       CONTINUE
 
      ELSEIF (NMSTOK(1:4).EQ.'&PLA') THEN 
 
         CALL EXMORS (MCSTOK,IST(MCSTOK),NBL,NBC,NBP,MCPLAL,MCPLIL,LGL) !sdexplo
 
         Matrice a gauche stockee Morse-L : par ligne
 
         MCMAP1=MCMAPL
         DO 20 I=1,NBCOPL
            CALL MOVC   (NBLIGN,NBCOLO,IST(MCPLAL),IST(MCPLIL) 
     &                  ,TYMATR,MCMATR,TYMAPL,MCMAP1,TYRESU,MCRES1
     &                  ,RST,CST)                                       !multmat
            MCMAP1=MCMAP1+NBCOLO
            MCRES1=MCRES1+NBLIGN
20       CONTINUE
    
      ELSEIF (NMSTOK(1:4).EQ.'&EGA') THEN
 
         CALL EXMORS (MCSTOK,IST(MCSTOK),NBC,NBL,NBP,MCPLAL,MCPLIL,LGL) !sdexplo
 
         Matrice a gauche stockee Morse-C : par colonne
 
         MCMAP1=MCMAPL
         DO 30 I=1,NBCOPL
            CALL MOTVC  (NBCOLO,NBLIGN,IST(MCPLAL),IST(MCPLIL)
     &                  ,TYMATR,MCMATR,TYMAPL,MCMAP1,TYRESU,MCRES1
     &                  ,RST,CST)                                       !multmat
            MCMAP1=MCMAP1+NBCOLO
            MCRES1=MCRES1+NBLIGN
30       CONTINUE
 
      ELSEIF (NMSTOK(1:4).EQ.'&PRO') THEN
 
         CALL EXPROF (MCSTOK,IST(MCSTOK),NBL,MCLENV,LGL,NBC,MCUENV,LGU) !sdexplo
         MCL=MCMATR+MIN(NBL,NBC)
 
         Matrice a gauche stockee Profil
 
         MCMAP1=MCMAPL
         DO 40 I=1,NBCOPL
            CALL PRVC   (NBLIGN,IST(MCLENV),NBCOLO,IST(MCUENV)
     &                  ,ITYSYM,TYMATR,MCMATR,MCL,MCL+LGL
     &                  ,TYMAPL,MCMAP1,TYRESU,MCRES1,RST,CST)           !multmat
            MCMAP1=MCMAP1+NBCOLO
            MCRES1=MCRES1+NBLIGN
40       CONTINUE
 
      ELSEIF (NMSTOK(1:6).EQ.'PLEINL') THEN
 
         Matrice a gauche Pleine, rangement par ligne
 
         CALL PLXPL  (TYMATR,NBLIGN,NBCOLO,'PLEIN-L',MCMATR
     &               ,TYMAPL,NBCOPL,'PLEIN-C',MCMAPL,'PLEIN-C',MCRESU
     &               ,RST,CST)                                          !multmat
 
      ELSEIF (NMSTOK(1:6).EQ.'PLEINC') THEN
 
         Matrice a gauche Pleine, rangement par colonne 'a la fortran'
 
         CALL PLXPL  (TYMATR,NBLIGN,NBCOLO,'PLEIN-C',MCMATR
     &               ,TYMAPL,NBCOPL,'PLEIN-C',MCMAPL,'PLEIN-C',MCRESU
     &               ,RST,CST)                                          !multmat
 
      ENDIF
      CALL PRFXMJ (-1,'*MatMPc*')
line
 -- File history
  Version 2 : D.Martin (14 decembre 2006)
  - utilise la routine PLXPL
  Version 1 : D.Martin (3 Juillet 1997)
line
                                                                    END !MatMPc
line
top

matmpc est appelé dans (4 procédures)

matmat.f (assembl) matvec.f (assembl) ortogm.f (valpro)
vpopel.f (valpro)    

top