Download amormo.eso

Back to the list

   1 : C AMORMO    SOURCE    FANDEUR   11/07/19    21:15:16     7042           
   2 : 
   3 :       SUBROUTINE AMORMO (IPROG,IBASE,ITABL,BASMUL, IPRIG)
   4 : 
   5 : C***********************************************************************
   6 : C                                                                      *
   7 : C      FABRICATION DE LA MATRICE D'AMORTISSEMENT MODAL                 *
   8 : C      SYNTAXE : AMO1= AMOR BASE PROG ;                                *
   9 : C        AMO1   MATRICE D'AMORTISSEMENT                                *
  10 : C        BASE   OBJET DE TYPE BASE MODALE                              *
  11 : C        PROG   OBJET DE TYPE MLREEL LISTE DES                         *
  12 : C        COEFFICIENTS D'AMORTISSEMENT REDUITS (%)                      *
  13 : C        CREATION    : 26/11/86                                        *
  14 : C        PROGRAMMEUR : GUILBAUD                                        *
  15 : C                                                                      *
  16 : C***********************************************************************
  17 : 
  18 :       IMPLICIT INTEGER(I-N)
  19 :       IMPLICIT REAL*8 (A-H,O-Z)
  20 : 
  21 : -INC CCOPTIO
  22 : 
  23 : -INC SMLREEL
  24 : -INC SMRIGID
  25 : -INC SMBASEM
  26 : -INC SMSOLUT
  27 : *
  28 :       LOGICAL BASMUL
  29 : 
  30 :       LOGICAL L0,L1
  31 :       CHARACTER*8 TYPRET,CHARRE
  32 : 
  33 :       MLREEL = IPROG
  34 :       SEGACT,MLREEL
  35 :       LON = PROG(/1)
  36 : 
  37 :       IP = 0
  38 : 
  39 :       IF (IBASE.LE.0) THEN
  40 : c* equivalent a IF (ITABL.GT.0) THEN
  41 :         IF (BASMUL) THEN
  42 :           ITBAM = ITABL
  43 :           IB = 0
  44 :  10       CONTINUE
  45 :           IB = IB + 1
  46 :           TYPRET = ' '
  46 :           CALL ACCTAB(ITBAM,'ENTIER',IB,X0,' ',L0,IP0,
  47 :      &                      TYPRET,I1,X1,CHARRE,L1,IBAS)
  48 :           IF (IBAS.NE.0 .AND. TYPRET.EQ.'TABLE   ') GOTO 10
  49 :           NBASE = IB - 1
  50 :           DO NBAS = 1, NBASE
  50 :             CALL ACCTAB(ITBAM,'ENTIER',NBAS,X0,' ',L0,IP0,
  51 :      &                        'TABLE',I1,X1,CHARRE,L1,ITBAS)
  51 :             CALL ACCTAB(ITBAS,'MOT',I0,X0,'MODES',L0,IP0,
  52 :      &                        'TABLE',I1,X1,CHARRE,L1,NTBAS)
  53 :             IB = 0
  54 :  14         CONTINUE
  55 :             IB = IB + 1
  56 :             TYPRET = ' '
  56 :             CALL ACCTAB(NTBAS,'ENTIER',IB,X0,' ',L0,IP0,
  57 :      &                        TYPRET,I1,X1,CHARRE,L1,ITMOD)
  58 :             IF (ITMOD.NE.0 .AND. TYPRET.EQ.'TABLE   ') GOTO 14
  59 :             IP = IP + IB - 1
  60 :           ENDDO
  61 :         ELSE
  62 :           ITBAS = ITABL
  63 :           NBASE = 1
  63 :           CALL ACCTAB(ITBAS,'MOT',I0,X0,'MODES',L0,IP0,
  64 :      &                      'TABLE',I1,X1,' ',L1,NTBAS)
  65 :           IB = 0
  66 :  16       CONTINUE
  67 :           IB = IB + 1
  68 :           TYPRET = ' '
  68 :           CALL ACCTAB(NTBAS,'ENTIER',IB,X0,' ',L0,IP0,
  69 :      &                      TYPRET,I1,X1,CHARRE,L1,ITMOD)
  70 :           IF (ITMOD.NE.0 .AND. TYPRET.EQ.'TABLE   ') GOTO 16
  71 :           IP = IP + IB - 1
  72 :         ENDIF
  73 :       ELSE
  74 :         MBASEM = IBASE
  75 :         SEGACT,MBASEM
  76 :         NBASE = LISBAS(/1)
  77 :         DO 20 NBAS = 1,NBASE
  78 :           MSOBAS = LISBAS(NBAS)
  79 :           SEGACT,MSOBAS
  80 :           MSOLUT = IBSTRM(2)
  81 :           SEGACT,MSOLUT
  82 :           MSOLEN = MSOLIS(4)
  83 :           SEGACT,MSOLEN
  84 :           IP = IP + ISOLEN(/1)
  85 :           SEGDES,MSOLEN,MSOLUT,MSOBAS
  86 :  20     CONTINUE
  87 :       ENDIF
  88 : 
  89 : *   le nb de modes de la base n'est pas egal au nb d'amortissements
  90 :       IF (LON.NE.IP) THEN
  90 :         CALL ERREUR(209)
  91 :         GOTO 999
  92 :       ENDIF
  93 : 
  94 :       KRIGI = 0
  95 :       IRIG = 3
  96 :       IP = 0
  97 :       DO 100 NBAS = 1,NBASE
  98 :         IF (IBASE.EQ.0) THEN
  99 :           IF ( BASMUL ) THEN
  99 :             CALL ACCTAB(ITBAM,'ENTIER',NBAS,X0,' ',L0,IP0,
 100 :      &                        'TABLE',I1,X1,' ',L1,ITBAS)
 101 :           ENDIF
 101 :           CALL ACCTAB(ITBAS,'MOT',I0,X0,'MODES',L0,IP0,
 102 :      &                      'TABLE',I1,X1,' ',L1,NTBAS)
 102 :           CALL RIGTAB(NTBAS,0,IRIG,KRIG)
 103 :         ELSE
 104 :           MSOBAS = LISBAS(NBAS)
 105 :           SEGACT,MSOBAS
 106 :           IMODE = IBSTRM(2)
 107 :           SEGDES,MSOBAS
 107 :           CALL RIGMOD(IMODE,IRIG,KRIG)
 108 :         ENDIF
 109 :         IF (KRIG.EQ.0) GOTO 999
 110 :         MRIGID = KRIG
 111 :         SEGACT MRIGID
 112 :         XMATRI = IRIGEL(4,1)
 113 :         SEGACT,XMATRI*MOD
 114 :         NELRIG = RE(/3)
 115 :         DO 40 I = 1,NELRIG
 116 :           RE(1,1,I) = RE(1,1,I) * PROG(I+IP) * 0.01D0
 117 :  40     CONTINUE
 118 :         IP = IP + NELRIG
 119 :         SEGDES,XMATRI,MRIGID
 120 :         IF (KRIGI.EQ.0) THEN
 121 :           KRIGI = KRIG
 122 :         ELSE
 122 :           CALL FUSRIG(KRIGI,KRIG,IRET)
 123 :           MRIGID = KRIGI
 124 :           SEGSUP,MRIGID
 125 :           KRIGI = IRET
 126 :         ENDIF
 127 :  100  CONTINUE
 128 :       IPRIG = KRIGI
 129 : 
 130 :  999  CONTINUE
 131 :       IF (IBASE.NE.0) SEGDES,MBASEM
 132 :       SEGDES,MLREEL
 133 : 
 134 :       RETURN
 135 :       END
 136 : 
 137 :  

© Cast3M 2003 - All rights reserved.
Disclaimer