evorig
C EVORIG SOURCE BP208322 22/09/09 21:15:04 11448 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *-----------------------------------------------------------------------* * * * Sous-programme appelé par EVRECO de l'opérateur EVOL option RECO * * * * Pour les rotations de corps rigides, recombine les déplacements * * * les vitesses ou les accélérations . * * * * * * Paramètres * * * * e IROT Position du mode de rotation * * e ICDG Numéro du point centre de gravité * * e IDEFO Numéro de la déformée modale de rotation * * e ITYP = 0 si on recombine les déplacements * * = 1 pour les vitesses * * =-1 pour les accélérations * * = 2 pour les contraintes * * es IBOO Segment des résultats * * e ILEX Suite des chpoints des contributions modales * * e ILEXRO Suite des chpoints des déplacements modaux * * (sert pour les vitesses et accélérations)* * e ILEXVI Suite des chpoints des vitessess modales * * (sert pour les accélérations) * * * * * * Auteur, date de création: * * * * Samuel DURAND : le 14 Octobre 1996 : Création * * * *-----------------------------------------------------------------------* -INC PPARAM -INC CCOPTIO -INC SMLENTI -INC SMLREEL -INC SMCHPOI -INC SMELEME -INC SMCOORD * SEGMENT NUMOO CHARACTER*(LOCHPO) NUDDL(N) ENDSEGMENT * CHARACTER*4 MOTCOM CHARACTER*4 NOMTRI(3) REAL*8 XAXROT(3),XROTA(2,6) * DATA NOMTRI/'UX ','UY ','UZ '/ * segact mcoord * * Création d'un listréel composé des valeurs du mode * de rotation au cours du temps * MLENTI=ILEX SEGACT MLENTI LTEMP=LECT(/1) * Recherche de la position du mode de rotation, dans le premier * chpoint des variables généralisées MCHPOI=LECT(1) SEGACT MCHPOI NSOUP=IPCHP(/1) KT=0 15 CONTINUE KT=KT+1 MSOUPO=IPCHP(KT) SEGACT MSOUPO MELEME = IGEOC SEGACT MELEME NE = NUM(/2) IE=0 16 CONTINUE IE=IE+1 IF ((NUM(1,IE).EQ.IROT)) THEN * RIEN SEGDES MELEME,MSOUPO ELSE IF (IE.NE.NE) THEN GOTO 16 ELSE SEGDES MELEME,MSOUPO GOTO 15 ENDIF ENDIF SEGDES MCHPOI * * Boucle sur tous les instants pour remplir le listréel JG = LTEMP SEGINI,MLREEL DO 20 JT=1,LTEMP MCHPOI=LECT(JT) SEGACT MCHPOI MSOUPO=IPCHP(KT) SEGACT MSOUPO MPOVAL=IPOVAL SEGACT MPOVAL SEGDES MPOVAL,MSOUPO,MCHPOI 20 CONTINUE SEGDES MLENTI IF (ITYP.EQ.1.OR.ITYP.EQ.-1) THEN * Récupération des angles de rotation à chaque pas de temps JG=LTEMP SEGINI MLREE2 MLENTI=ILEXRO SEGACT MLENTI DO 21 JT=1,LTEMP MCHPOI=LECT(JT) SEGACT MCHPOI MSOUPO=IPCHP(KT) SEGACT MSOUPO MPOVAL=IPOVAL SEGACT MPOVAL SEGDES MPOVAL,MSOUPO,MCHPOI 21 CONTINUE SEGDES MLENTI IF (ITYP.EQ.-1) THEN * Récupération des vitesses de rotation à chaque pas de temps JG=LTEMP SEGINI MLREE3 MLENTI=ILEXVI SEGACT MLENTI DO 22 JT=1,LTEMP MCHPOI=LECT(JT) SEGACT MCHPOI MSOUPO=IPCHP(KT) SEGACT MSOUPO MPOVAL=IPOVAL SEGACT MPOVAL SEGDES MPOVAL,MSOUPO,MCHPOI 22 CONTINUE SEGDES MLENTI * else * rien ENDIF else * rien ENDIF NUMOO = IBOO SEGACT NUMOO * * * Boucle sur tous les points de recombinaison ** IF (IDIM.EQ.3) THEN IDIMB=6 ELSE IDIMB=3 ENDIF DO 10 IPOINT=1,N MERR=0 * Recherche de l axe de rotation MCHPOI=IDEFO SEGACT,MCHPOI NSO=IPCHP(/1) ISOU=0 11 CONTINUE ISOU=ISOU+1 MSOUPO=IPCHP(ISOU) SEGACT,MSOUPO MELEME=IGEOC SEGACT,MELEME MPOVAL=IPOVAL SEGACT,MPOVAL NEL=NUM(/2) IE=0 12 CONTINUE IE=IE+1 DO 13 ID=(IDIM+1),IDIMB XAXROT(ID-IDIM)=VPOCHA(IE,ID) 13 CONTINUE SEGDES MPOVAL,MELEME,MSOUPO ELSE IF (IE.NE.NEL) THEN GOTO 12 ELSE SEGDES MPOVAL,MELEME,MSOUPO GOTO 11 ENDIF ENDIF SEGDES MCHPOI * * Calcul des fausses déformées modales de rotation MOTCOM=NUDDL(IPOINT) IF (IPOSI.NE.0) THEN * Boucle sur tous les instants * MLREE1=KLIST(IPOINT) SEGACT MLREE1*MOD DO 30 IT=1,LTEMP IF (ITYP.EQ.0) THEN &(COS(XVAL)-1) + XROTA(2,IPOSI)*SIN(XVAL)) ELSE &(COS(XANG)*XROTA(2,IPOSI)-SIN(XANG)*XROTA(1,IPOSI)) IF (ITYP.EQ.-1) THEN &(COS(XANG)*XROTA(1,IPOSI)+SIN(XANG)*XROTA(2,IPOSI)) else * rien ENDIF ENDIF 30 CONTINUE SEGDES MLREE1 else * rien ENDIF 10 CONTINUE SEGSUP,MLREEL IF (ITYP.EQ.1.OR.ITYP.EQ.-1) THEN SEGSUP MLREE2 IF (ITYP.EQ.-1) SEGSUP MLREE3 else * rien ENDIF END
© Cast3M 2003 - Tous droits réservés.
Mentions légales