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