Download evorig.eso

Back to the list

   1 : C EVORIG    SOURCE    CHAT      05/01/12    23:47:33     5004           
   2 :       SUBROUTINE EVORIG(IROT,ICDG,IBOO,ILEX,ITYP,ILEXRO,ILEXVI,IDEFO)   
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8(A-H,O-Z) 
   5 : *-----------------------------------------------------------------------*
   6 : *                                                                       *          
   7 : *    Sous-programme appelé par EVRECO de l'opérateur EVOL option RECO   *
   8 : *                                                                       *
   9 : *       Pour les rotations de corps rigides, recombine les déplacements *     *
  10 : *    les vitesses ou les accélérations .                                *
  11 : *                                                                       *
  12 : *                                                                       *
  13 : *     Paramètres                                                        *
  14 : *                                                                       *
  15 : * e  IROT   Position du mode de rotation                                *
  16 : * e  ICDG   Numéro du point centre de gravité                           *
  17 : * e  IDEFO  Numéro de la déformée modale de rotation                    *
  18 : * e  ITYP   = 0 si on recombine les déplacements                        *
  19 : *           = 1 pour les vitesses                                       *
  20 : *           =-1 pour les accélérations                                  *
  21 : *           = 2 pour les contraintes                                    *
  22 : * es IBOO   Segment des résultats                                       *
  23 : * e  ILEX   Suite des chpoints des contributions modales                *
  24 : * e  ILEXRO Suite des chpoints des déplacements modaux                  *
  25 : *                              (sert pour les vitesses et accélérations)*
  26 : * e  ILEXVI Suite des chpoints des vitessess modales                    *
  27 : *                              (sert pour les   accélérations)          *                                   
  28 : *                                                                       *
  29 : *                                                                       *
  30 : *     Auteur, date de création:                                         *          
  31 : *                                                                       *          
  32 : *     Samuel DURAND      : le 14 Octobre 1996 : Création                * 
  33 : *                                                                       *
  34 : *-----------------------------------------------------------------------*
  35 : -INC CCOPTIO 
  36 : -INC SMLENTI
  37 : -INC SMLREEL  
  38 : -INC SMCHPOI
  39 : -INC SMELEME
  40 : *                                                                 
  41 :       SEGMENT NUMOO                                                             
  42 :        INTEGER NUMO(N),KLIST(N)                                                 
  43 :        CHARACTER*4 NUDDL(N)                                                     
  44 :       ENDSEGMENT  
  45 : *                 
  46 :       CHARACTER*4 MOTCOM                                             
  47 :       CHARACTER*4 NOMTRI(3)                                     
  48 :       REAL*8 XAXROT(3),XROTA(2,6)                                                     
  49 : *
  50 :       DATA NOMTRI/'UX  ','UY  ','UZ  '/                    
  51 : *                                                                               
  52 : *
  53 : * Création d'un listréel composé des valeurs du mode
  54 : * de rotation au cours du temps
  55 : *
  56 :        MLENTI=ILEX
  57 :        SEGACT MLENTI
  58 :        LTEMP=LECT(/1)
  59 : * Recherche de la position du mode de rotation, dans le premier
  60 : * chpoint des variables généralisées
  61 :        MCHPOI=LECT(1)
  62 :        SEGACT MCHPOI
  63 :        NSOUP=IPCHP(/1)
  64 :        KT=0
  65 :  15    CONTINUE
  66 :           KT=KT+1
  67 :           MSOUPO=IPCHP(KT)
  68 :           SEGACT MSOUPO
  69 :           MELEME = IGEOC
  70 :           SEGACT MELEME
  71 :           NE = NUM(/2)
  72 :           IE=0
  73 :  16       CONTINUE
  74 :              IE=IE+1
  75 :              IF ((NUM(1,IE).EQ.IROT)) THEN
  76 : *               RIEN
  77 :                 SEGDES MELEME,MSOUPO
  78 :              ELSE
  79 :                 IF (IE.NE.NE) THEN
  80 :                     GOTO 16
  81 :                 ELSE
  82 :                     SEGDES MELEME,MSOUPO
  83 :                     GOTO 15
  84 :                 ENDIF
  85 :              ENDIF
  86 :        SEGDES MCHPOI
  87 : *
  88 : * Boucle sur tous les instants pour remplir le listréel
  89 :        JG = LTEMP
  90 :        SEGINI,MLREEL
  91 :        DO 20 JT=1,LTEMP
  92 :           MCHPOI=LECT(JT)
  93 :           SEGACT MCHPOI
  94 :           MSOUPO=IPCHP(KT)
  95 :           SEGACT MSOUPO
  96 :           MPOVAL=IPOVAL
  97 :           SEGACT MPOVAL
  98 :           MLREEL.PROG(JT)=VPOCHA(IE,1)
  99 :           SEGDES MPOVAL,MSOUPO,MCHPOI
 100 :  20    CONTINUE
 101 :        SEGDES MLENTI
 102 :        IF (ITYP.EQ.1.OR.ITYP.EQ.-1) THEN
 103 : * Récupération des angles de rotation à chaque pas de temps
 104 :           JG=LTEMP
 105 :           SEGINI MLREE2
 106 :           MLENTI=ILEXRO
 107 :           SEGACT MLENTI
 108 :           DO 21 JT=1,LTEMP
 109 :               MCHPOI=LECT(JT)
 110 :               SEGACT MCHPOI
 111 :               MSOUPO=IPCHP(KT)
 112 :               SEGACT MSOUPO
 113 :               MPOVAL=IPOVAL
 114 :               SEGACT MPOVAL
 115 :               MLREE2.PROG(JT)=VPOCHA(IE,1)
 116 :               SEGDES MPOVAL,MSOUPO,MCHPOI
 117 :  21       CONTINUE
 118 :           SEGDES MLENTI
 119 :           IF (ITYP.EQ.-1) THEN
 120 : * Récupération des vitesses de rotation à chaque pas de temps
 121 :             JG=LTEMP
 122 :             SEGINI MLREE3
 123 :             MLENTI=ILEXVI
 124 :             SEGACT MLENTI
 125 :             DO 22 JT=1,LTEMP
 126 :               MCHPOI=LECT(JT)
 127 :               SEGACT MCHPOI
 128 :               MSOUPO=IPCHP(KT)
 129 :               SEGACT MSOUPO
 130 :               MPOVAL=IPOVAL
 131 :               SEGACT MPOVAL
 132 :               MLREE3.PROG(JT)=VPOCHA(IE,1)
 133 :               SEGDES MPOVAL,MSOUPO,MCHPOI
 134 :  22         CONTINUE
 135 :             SEGDES MLENTI
 136 : *
 137 :           else
 138 : *            rien
 139 :           ENDIF
 140 :        else
 141 : *         rien
 142 :        ENDIF
 143 :        NUMOO = IBOO
 144 :        SEGACT NUMOO
 145 :        N=NUMO(/1)
 146 : *
 147 : *
 148 : * Boucle sur tous les points de recombinaison
 149 : **
 150 :           IF (IDIM.EQ.3) THEN
 151 :              IDIMB=6
 152 :           ELSE
 153 :              IDIMB=3
 154 :           ENDIF
 155 :        DO 10 IPOINT=1,N
 156 :           MERR=0
 157 : * Recherche de l axe de rotation
 158 :           MCHPOI=IDEFO
 159 :           SEGACT,MCHPOI
 160 :           NSO=IPCHP(/1)
 161 :           ISOU=0
 162 :  11       CONTINUE
 163 :              ISOU=ISOU+1
 164 :              MSOUPO=IPCHP(ISOU)
 165 :              SEGACT,MSOUPO
 166 :              MELEME=IGEOC
 167 :              SEGACT,MELEME
 168 :              MPOVAL=IPOVAL
 169 :              SEGACT,MPOVAL
 170 :              NEL=NUM(/2)
 171 :              IE=0
 172 :  12          CONTINUE
 173 :                 IE=IE+1
 174 :                 IF (NUM(1,IE).EQ.NUMO(IPOINT)) THEN
 175 :                     DO 13 ID=(IDIM+1),IDIMB
 176 :                         XAXROT(ID-IDIM)=VPOCHA(IE,ID)
 177 :  13                 CONTINUE
 178 :                     SEGDES MPOVAL,MELEME,MSOUPO
 179 :                 ELSE
 180 :                     IF (IE.NE.NEL) THEN
 181 :                        GOTO 12
 182 :                     ELSE
 183 :                        SEGDES MPOVAL,MELEME,MSOUPO
 184 :                        GOTO 11
 185 :                     ENDIF
 186 :                 ENDIF
 187 :                 SEGDES MCHPOI
 188 : *                    
 188 :           CALL DYNE41(XAXROT,MERR,IDIM)
 189 : *       Calcul des fausses déformées modales de rotation
 189 :           CALL DYNE42(XROTA,XAXROT,NUMO(IPOINT),ICDG,IDIMB,MERR)
 190 :           MOTCOM=NUDDL(IPOINT)
 190 :           CALL PLACE5(NOMTRI,IDIM,IPOSI,MOTCOM)
 191 :           IF (IPOSI.NE.0) THEN
 192 : *          Boucle sur tous les instants
 193 : *
 194 :              MLREE1=KLIST(IPOINT)
 195 :              SEGACT MLREE1*MOD
 196 :              DO 30 IT=1,LTEMP
 197 :                  XVAL=MLREEL.PROG(IT)
 198 :                IF (ITYP.EQ.0) THEN
 199 :                  MLREE1.PROG(IT)=MLREE1.PROG(IT)+(XROTA(1,IPOSI)*
 200 :      &(COS(XVAL)-1) + XROTA(2,IPOSI)*SIN(XVAL))
 201 :                ELSE
 202 :                  XANG=MLREE2.PROG(IT)
 203 :                  MLREE1.PROG(IT)=MLREE1.PROG(IT)+XVAL*
 204 :      &(COS(XANG)*XROTA(2,IPOSI)-SIN(XANG)*XROTA(1,IPOSI))
 205 :                  IF (ITYP.EQ.-1) THEN
 206 :                     XVIT=MLREE3.PROG(IT)
 207 :                     MLREE1.PROG(IT)=MLREE1.PROG(IT)-XVIT*XVIT*
 208 :      &(COS(XANG)*XROTA(1,IPOSI)+SIN(XANG)*XROTA(2,IPOSI))
 209 :                  else
 210 : *                   rien
 211 :                  ENDIF
 212 :                ENDIF
 213 :  30          CONTINUE
 214 :              SEGDES MLREE1
 215 :           else
 216 : *            rien
 217 :           ENDIF
 218 :  10    CONTINUE
 219 :        SEGSUP,MLREEL
 220 :        IF (ITYP.EQ.1.OR.ITYP.EQ.-1) THEN
 221 :            SEGSUP MLREE2
 222 :            IF (ITYP.EQ.-1) SEGSUP MLREE3
 223 :         else
 224 : *           rien
 225 :         ENDIF
 226 :        END
 227 :  
 228 :  
 229 :  

© Cast3M 2003 - All rights reserved.
Disclaimer