[updated 8.Sep.2008]

Librairie assembl > Fichier axterm.f

Qui appelle axterm ?

line
      SUBROUTINE AXTERM (NMTRM1,NVTRM1,NMDON1,NMTRM2,NVTRM2,NIVIMP)  
line
  Auteur : D.Martin (Octobre 1991) 
  Derniere modification : D.Martin (9 Juin 2000)
  Version 1.0.1
   
  Multiplication d'un terme par une constante et resultat dans un autre
  La constante multiplicative est la constante associee au terme
  (lorsque le nom de la donnee est ' ')
   
 -- Arguments d'entree -- 
  NMTRM1,NVTRM1 nom et niveau du 1er terme
  NMDON1        nom de la donnee multiplicative (le cas echeant)
  NMTRM2,NVTRM2 nom et niveau du 2nd terme
  NIVIMP        niveau d'impression du 2nd terme
 
  Remarque : Si les termes different, les attributs du terme resultat sont
             ceux du 1er terme de la liste
             Le terme resultat n'a pas de constante associee.
line
      INTEGER       NVTRM1,NVTRM2,NIVIMP
      CHARACTER*(*) NMTRM1,NMTRM2,NMDON1
   
      INCLUDE 'CONTEX'
      INCLUDE 'ALLOC'
 
      INTEGER       INDASS,INTTYP,INTDON,INTYKL,KLTERM,KELCHN
      INTEGER       MCMTRM,MCDTRM,LGETRM,NBTERM,INCTRM,NCHTRM
     &             ,MCMDON,MCDONN,LGEDON,NBDONN,INCDON,NCHDON
     &             ,ITYDO1,NIVDO1,ITYPD1,LNDON1
     &             ,NUTERM,IADTRM,NIVEAU,ITTRM1,ITYCA1,NUKAL1,NUDON1
     &             ,ITYSYM,NVDSMB,NUINCC,NVDUCR,NBNECR,NVNUCR,NUINCL
     &             ,NVDUCL,NBNECL,NVNULR,INDSTK,NVNUSR,NVCOOR,IATRDO
     &             ,NIVIMR,LGTRM1,MCTRM1,MCCSTE
     &             ,MCTRM2,ITTRM2,ITYCA2,NUKAL2
      LOGICAL       IDMTRM,CRETRM
      CHARACTER*8   ERCODE*120,TYPINT,TYTRM1,TYTRM2,TYDON1
      COMMON/FORMAH/ERCODE 
      EQUIVALENCE  (ERCODE(113:113),TYTRM1),(ERCODE(105:105),TYTRM2)
     &            ,(ERCODE(97:97),TYDON1) 
line
      CALL PRFXMJ (1,'*AxTerm*')
      IDMTRM=NMTRM1.EQ.NMTRM2.AND.NVTRM1.EQ.NVTRM2
   
      CALL TBAR2  (ERCODE,'#OMTRM',1,MCMTRM,'$SDTRM',1,MCDTRM)
      CALL SDEXDB (IST(MCDTRM),LGETRM,NBTERM,INCTRM,NCHTRM)             !utilite
 
      Recherche des caracteristiques du 1er vecteur
      NUTERM=KLTERM (NMTRM1,NVTRM1,AST(MCMTRM),IST(MCDTRM))             !sdexplo
      IF (NUTERM.LE.0) CALL ERTERM (1,NMTRM1,NVTRM1)                    !utilite
      IADTRM=MCDTRM+LGETRM+INCTRM*(NUTERM-1)
      CALL GETTRM (IST(IADTRM)  ,NIVEAU,ITTRM1,ITYCA1,NUKAL1
     &            ,NUDON1,ITYSYM,NVDSMB,NUINCC,NVDUCR,NBNECR,NVNUCR
     &            ,NUINCL,NVDUCL,NBNECL,NVNULR,INDSTK,NVNUSR,NVCOOR
     &            ,IATRDO,NIVIMR)                                       !sdexplo
      TYTRM1=TYPINT (ITTRM1)                                            !utilite
      CALL TBRR1  (ERCODE,NMTRM1,NVTRM1,LGTRM1)
 
      CALL TBAR2  (ERCODE,'#OMDON',1,MCMDON,'$DONNE',1,MCDONN)
      CALL SDEXDB (IST(MCDONN),LGEDON,NBDONN,INCDON,NCHDON)             !utilite
 
      Recherche du numero et des caract. de la constante multiplicative
 
      LNDON1=LEN (NMDON1)
      ERCODE(1:LNDON1)=' '
      IF (NMDON1.NE.ERCODE(1:LNDON1)) THEN
         Le nom de la donnee 1 figure dans la liste des arguments,
         elle est utilisee dans la multiplication
         NUDON1=KELCHN (NMDON1,AST(MCMDON),NBDONN,NCHDON)               !sdexplo
         IF (NUDON1.LE.0) CALL ERDONN (1,NMDON1)                        !utilite
         CALL SDEXCO (NUDON1,IST(MCDONN),ITYDO1,NIVDO1,ITYPD1)          !utilite
         La donnee de la liste d'entree DOIT ici etre une constante
         IF (ITYDO1.NE.INTDON ('CONSTANTE')) CALL ERDONN (2,NMDON1)     !utilite
      ENDIF
      TYDON1=' '
      IF (NUDON1.GT.0) THEN
         CALL SDEXCO (NUDON1,IST(MCDONN),ITYDO1,NIVDO1,ITYPD1)          !utilite
         Le terme peut avoir une donnee associee qui n'est pas une constante
         auquel cas elle est ignoree (et remplacee par la constante 1)
         IF (ITYDO1.EQ.INTDON ('CONSTANTE')) THEN
            TYDON1=TYPINT (ITYPD1)                                      !utilite
         ELSE
            Si on arrive ici, pas de donnee (donc la constante 1)
            NUDON1=0
         ENDIF
      ENDIF
      CALL SDEXCO (NUDON1,IST(MCDONN),ITYDO1,NIVDO1,ITYPD1)             !utilite
      IF (ITYDO1.NE.INTDON ('CONSTANTE')) CALL ERDONN (2,NMDON1)        !utilite
 
      TYTRM2=TYTRM1
      IF (TYDON1(1:1).EQ.'C') TYTRM2=TYDON1
      ITTRM2=INTTYP (TYTRM2)                                            !utilite
 
      Creation (si necessaire) du 2eme terme
      CRETRM=.FALSE.
      IF (.NOT.IDMTRM) THEN
         ITYCA2=INTYKL ('ASSEMB')                                       !utilite
         NUKAL2=-INDASS(' ')
      ELSE
         ITYCA2=ITYCA1
         NUKAL2=-ABS(NUKAL1)
      ENDIF
      CALL CRTERM (NMTRM2,NVTRM2,LGTRM1,ITTRM2,ITYCA2,NUKAL2
     &            ,NDFDON,ITYSYM,NVDSMB,NUINCC,NVDUCR,NBNECR,NVNUCR
     &            ,NUINCL,NVDUCL,NBNECL,NVNULR,INDSTK,NVNUSR
     &            ,NVCOOR,IATRDO,NIVIMP,IDMTRM,CRETRM)                  !sdexplo
 
      Report du 1er terme multiplie par la constante dans le second
 
      IF (TYDON1(1:1).EQ.'R') THEN
         CALL TBAR2 (ERCODE,'$RCSTE',1,MCCSTE,NMTRM1,NVTRM1,MCTRM1)
      ELSEIF (TYDON1(1:1).EQ.'C') THEN
         CALL TBAR2 (ERCODE,'$CCSTE',1,MCCSTE,NMTRM1,NVTRM1,MCTRM1)
      ELSEIF (TYDON1(1:1).EQ.'E') THEN
         CALL TBAR2 (ERCODE,'$ECSTE',1,MCCSTE,NMTRM1,NVTRM1,MCTRM1)
      ENDIF
      MCTRM2=MCTRM1
      IF (.NOT.IDMTRM) CALL TBAR1  (ERCODE,NMTRM2,NVTRM2,MCTRM2)
 
      CALL TEQAT (LGTRM1,TYTRM1,MCTRM1,RST,CST
     &           ,TYDON1,MCCSTE+NIVDO1,IST,RST,CST
     &           ,TYTRM2,MCTRM2,RST,CST)                                !utilite
 
      CALL TBSAVE (NMTRM1,NVTRM1)
      IF (.NOT.IDMTRM) CALL TBSAVE (NMTRM2,NVTRM2)
      CALL PRFXMJ (-1,'*AxTerm*')  
                                                                    END !AxTerm
line
top

axterm est appelé dans (6 procédures)

gettrm-calls.txt iteinv.f (valpro) itinv.f (A_mode_guide)
itinva.f (A_mode_guide) lap_neu_gc.f (A_1lap_neuman) ppgalbrun.f (A_galbrun)

top