[updated 26.Aug.2000]

Librairie cesse > Fichier cdmodc.f

Qui appelle cdmodc ?

line
      SUBROUTINE CDMODC (NBNELI,NGNELI,NBNECO,NGNECO,NULAPL,IPLAGE
     &                  ,TYMATR,MCMATR,TYSCMB,MCSCMB,NBNEES,NGNEES
     &                  ,TYESSE,MCESSE,RST,CST)
line
  Auteur : D.Martin & O.DeBayser (Avril 1989)
  Derniere modification : D.Martin (4 Juillet 1997)
  Version 1.0.0
   
  Modification d'un terme matrice 'MORSE' par annulation des colonnes
  de noeuds Dirichlet sur les lignes de noeuds non Dirichlet
  et, dans le cas d'une condition essentielle non homogene, d'un terme
  vecteur second-membre par report de l'elimination.
   
 -- Arguments --
  NBNELI Nombre de noeuds en ligne du terme
  NGNELI Numerotation globale en ligne du terme,
  NBNECO Nombre de noeuds en colonne du terme  
  NGNECO Numerotation globale en colonne du terme, 
  NULAPL Numeros de derniere plage de chaque ligne 
  IPLAGE Numeros de colonne de debut de plage et longueurs cumulees
  TYMATR Type du terme matriciel
  MCMATR Adresse en M.C. du terme matriciel
  TYSCMB Type du second membre eventuel
  MCSCMB Adresse en M.C. du second membre eventuel 
  NBNEES Nombre de noeuds 'Dirichlet'  
  NGNEES Numeros de noeuds des noeuds 'Dirichlet'  
  TYESSE Type de la donnee de Dirichlet
  MCESSE Adresse en M.C. de cette donnee
  RST,CST Super-tableau numerique, version reelle et complexe  
line
      CHARACTER*(*) TYMATR,TYSCMB,TYESSE 
      INTEGER       NBNELI,NGNELI(*),NBNECO,NGNECO(*),NULAPL(*)
     &             ,IPLAGE(2,*),MCMATR,MCSCMB,NBNEES,NGNEES(*),MCESSE
      REAL          RST(*) 
      COMPLEX       CST(*)
 
      INTEGER       NUPRPL,NUDRPL,NUMPLA,LGCUAV,LGCUAP,LGCUAW
     &             ,NULINE,IDIRLI,NXNEDI,NXCODI,KOLDEB,KOLFIN,IADRES
     &             ,LIGNEI,KOLONJ,KOLDIR,MCSCM1
line  
      CALL PRFXMJ (1,'*CdMoDc*')
   
      NUPRPL=1 
      LGCUAV=0 
      NXNEDI=1 
      MCSCM1=MCSCMB-1  
   
      DO 100 LIGNEI=1,NBNELI
         MCSCM1=MCSCM1+1
         NULINE=NGNELI(LIGNEI) 
         NUDRPL=NULAPL(LIGNEI) 
         LGCUAP=IPLAGE(2,NUDRPL)
         LGCUAW=LGCUAV
         LGCUAV=LGCUAP 
         Recherche des lignes de la matrice ne correspondant pas a un
         noeud portant la condition essentielle 
         CALL DICOTO (NXNEDI,NBNEES,NGNEES,NULINE,IDIRLI,*1)            !utilite
         NXNEDI=IDIRLI+1
         GOTO 100
   
1        NXCODI=1  
         IF (TYMATR(1:1).EQ.'R') THEN
            DO 12 NUMPLA=NUPRPL,NUDRPL 
               KOLDEB=IPLAGE(1,NUMPLA) 
               LGCUAP=IPLAGE(2,NUMPLA) 
               KOLFIN=KOLDEB-1+LGCUAP-LGCUAV
               IF (NGNECO(KOLFIN).LT.NGNEES(NXCODI)) GOTO 12
               IADRES=MCMATR+LGCUAV
               DO 11 KOLONJ=KOLDEB,KOLFIN  
                  Colonnes correspondant a des D.L. Dirichlet
                  CALL DICOTO (NXCODI,NBNEES,NGNEES,NGNECO(KOLONJ)      !utilite
     &                        ,KOLDIR,*11)
                  NXCODI=KOLDIR+1
                  Report de -Aij x Uj dans le second membre
                  IF (MCESSE.GT.0) CALL CDSCND (1,TYMATR,IADRES         !cdesse
     &                   ,TYSCMB,MCSCM1,TYESSE,MCESSE-1+KOLDIR,RST,CST)
                  Mise a zero du coefficient Aij
                  RST(IADRES)=0.
11                IADRES=IADRES+1  
               IF (NXCODI.GT.NBNEES) GOTO 100
12             LGCUAW=LGCUAP
         ELSEIF (TYMATR(1:1).EQ.'C') THEN
            DO 22 NUMPLA=NUPRPL,NUDRPL 
               KOLDEB=IPLAGE(1,NUMPLA) 
               LGCUAP=IPLAGE(2,NUMPLA) 
               KOLFIN=KOLDEB-1+LGCUAP-LGCUAV
               IF (NGNECO(KOLFIN).LT.NGNEES(NXCODI)) GOTO 22
               IADRES=MCMATR+LGCUAV
               DO 21 KOLONJ=KOLDEB,KOLFIN  
                  CALL DICOTO (NXCODI,NBNEES,NGNEES,NGNECO(KOLONJ)      !utilite
     &                        ,KOLDIR,*21)
                  NXCODI=KOLDIR+1
                  IF (MCESSE.GT.0) CALL CDSCND (1,TYMATR,IADRES         !cdesse
     &                   ,TYSCMB,MCSCM1,TYESSE,MCESSE-1+KOLDIR,RST,CST)
                  CST(IADRES)=0.
21                IADRES=IADRES+1  
               IF (NXCODI.GT.NBNEES) GOTO 100
22             LGCUAW=LGCUAP
         ENDIF
   
100   NUPRPL=NUDRPL+1  
      CALL PRFXMJ (-1,'*CdMoDc*')  
                                                                    END !CdMoDc
line
top

cdmodc est appelé dans

top