1 : C DYFOR1 SOURCE CHAT 05/01/12 23:09:00 5004 2 : C DYFORC SOURCE LAVARENN 96/11/05 21:22:41 2357 3 : SUBROUTINE DYFOR1(XPTB,XVALB,IPALB,IPLIB,XPALB,NLIAB,NPLB,IND 4 : &,IND2,PDTS2,I,iannul,IESC,IROLE,XCHPFB) 5 : IMPLICIT INTEGER(I-N) 6 : IMPLICIT REAL*8(A-H,O-Z) 7 : *--------------------------------------------------------------------* 8 : * * 9 : * Opérateur DYNE : algorithme de Fu - de Vogelaere * 10 : * ________________________________________________ * 11 : * * 12 : * Calcul des forces de choc sur base B pour les liaisons de * 13 : * type ligne_cercle * 14 : * * 15 : * Paramètres: * 16 : * * 17 : * e XPTB Tableau des déplacements des points * 18 : * e IPALB Renseigne sur la liaison. * 19 : * e IPLIB Tableau contenant les numéros "DYNE" de la liaison. * 20 : * e XPALB Tableau contenant les paramètres de la liaison. * 21 : * es XVALB Tableau contenant les variables internes de liaisons. * 22 : * es XCHPFB Tableau contenant les valeurs des futurs chpoints * 23 : * e NLIAB Nombre de liaisons sur la base B. * 24 : * e NPLB Nombre total de points intervenant dans les liaisons. * 25 : * e IND Indice du pas. * 26 : * e I numéro de la liaison. * 27 : * e IESC numéro DYNE du noeud esclave * 28 : * e IROLE indique qui est le maitre et l'esclave * 29 : * = 0 premiere passe , =1 deuxième passe * 30 : * * 31 : * * 32 : * Auteur, date de création: ** 33 : * * 34 : * Auteur, date de création: * 35 : * * 36 : * Ibrahim PINTO, 05/97 ,liaisons ligne_cercle * 37 : *--------------------------------------------------------------------* 38 : * 39 : INTEGER IPALB(NLIAB,*),IPLIB(NLIAB,*) 40 : INTEGER ICAND(2) 41 : REAL*8 XPALB(NLIAB,*),XPTB(NPLB,4,*),XVALB(NLIAB,4,*) 42 : REAL*8 XXXN(3),XCHPFB(2,NLIAB,4,*),XTE(3),XNET 43 : 44 : 45 : 46 : * 47 : XEPSI = 0.0001 48 : IGP = IPALB(I,2) 49 : IDIM = IPALB(I,3) 50 : * ILOCAL = IPALB(I,23) 51 : ITYP = IPALB(I,1) 52 : 53 : XPOID = 0.D0 54 : 55 : 56 : XRAY=XPALB(I,2) 57 : * 58 : IF (ITYP.EQ.37 .OR. ITYP.EQ.39) THEN 59 : ID1 = 6 60 : ELSE 61 : ID1 = 7 62 : ENDIF 63 : * 64 : IF (IROLE.EQ.0) THEN 65 : KMAI = 0 66 : IMAI = ID1 +4*IDIM 67 : IBUT = IMAI + IPALB(I,21)*IDIM 68 : KBUT = IPALB(I,21) 69 : LMAI = ID1 + (IPALB(I,21)+IPALB(I,22)+4)*IDIM 70 : LBUT = LMAI +IPALB(I,21)*IDIM 71 : JMAI = 26 + IPALB(I,21)+IPALB(I,22) 72 : JBUT = JMAI + IPALB(I,21) 73 : MBUT = LBUT +IPALB(I,22)*IDIM + 74 : & IPALB(I,21) 75 : NBUT = MBUT +IPALB(I,21)+IPALB(I,22) 76 : ELSE 77 : KMAI = IPALB(I,21) 78 : IBUT = ID1 + 4*IDIM 79 : IMAI = IBUT + IPALB(I,21)*IDIM 80 : KBUT = 0 81 : LBUT = ID1 + (IPALB(I,21)+IPALB(I,22)+4)*IDIM 82 : LMAI = LBUT +IPALB(I,21)*IDIM 83 : JBUT = 26 + 2*(IPALB(I,21)+IPALB(I,22)) 84 : JMAI = JBUT +IPALB(I,21) 85 : MBUT = LMAI +IPALB(I,22)*IDIM 86 : NBUT = MBUT +IPALB(I,21)+IPALB(I,22) 87 : ENDIF 88 : ID2 = ID1 + IDIM 89 : ID4 = ID1 +3*IDIM 90 : 90 : CALL DYCAN1(IPALB,IPLIB,XPALB,XPTB,IND,I,NLIAB,NPLB, 91 : & XXXN,XNET,XTE,XPOID,ICAND,IESC,IROLE) 92 : 93 : 94 : XVITN =0.D0 95 : IDCAN1 = IMAI + (ICAND(1)-1)*IDIM 96 : IDCAN2 = IMAI + (ICAND(2)-1)*IDIM 97 : 98 : 99 : DO 80 ID=1,IDIM 100 : * 101 : * Déplacement du point de contact au pas courant 102 : 103 : 104 : x1=(XPTB(IPLIB(I,KMAI+ICAND(2)),IND,ID))*(1-XPOID) 105 : 106 : x2=(XPTB(IPLIB(I,KMAI+ICAND(1)),IND,ID))*XPOID 107 : 108 : xde2=x1+x2 109 : 110 : 111 : XVALB(I,IND,3+ID) = XVALB(I,IND,3+ID)+ 112 : &XPALB(I,IDCAN1+ID)*XPOID +XPALB(I,IDCAN2+ID)*(1-XPOID) 113 : 114 : 115 : * Déplacement du point de contact au pas précédent 116 : XDM2 =(XPTB(IPLIB(I,KMAI+ICAND(2)),IND2,ID))*(1-XPOID) 117 : & + (XPTB(IPLIB(I,KMAI+ICAND(1)),IND2,ID))*XPOID 118 : 119 : 120 : *-----Déplacement de la butee(point de contact sur le cercle) 121 : *-----on a neglige les rotations des butees 122 : XDB = (XPTB(IPLIB(I,KBUT+IESC),IND,ID) 123 : & -XPTB(IPLIB(I,KBUT+IESC),IND2,ID)) 124 : 125 : 126 : 127 : * Vitesse de glissement 128 : XPALB(I,ID2+ID)=(XDB+XDM2-XDE2)/PDTS2 129 : * Vitesse normale 130 : XVITN = XVITN + ((XDB+XDM2-XDE2)*XXXN(ID)/PDTS2) 131 : 80 CONTINUE 132 : 133 : 134 : DO 82 ID=1,IDIM 135 : * Vitesse tangentielle 136 : XPALB(I,ID2+ID) = XPALB(I,ID2+ID) - (XVITN*XXXN(ID)) 137 : 82 CONTINUE 138 : * Calcul de la force de choc 139 : XPALB(I,1) = XPALB(I,MBUT+IESC) 140 : 141 : IF (ITYP.EQ.37 .OR. ITYP.EQ.39) THEN 141 : CALL DYCHE5(XNET,XTE,XXXN,IDIM,IGP,XPALB,NLIAB,I 142 : & ,IPALB,XFN,XFT,XPUS,iannul) 143 : ELSE 144 : 145 : XPALB(I,7) = XPALB(I,NBUT+IESC) 145 : CALL DYCHA5(XNET,XTE,XXXN,XVITN,IDIM,IGP,XPALB,NLIAB, 146 : &I,IPALB,XFN,XFT,XPUS,iannul) 147 : 148 : 149 : ENDIF 150 : 151 : 152 : XVALB(I,IND,3) = XVALB(I,IND,3) + XVITN 153 : IPALB(I,2) = IGP 154 : 155 : 156 : IF (IGP.EQ.1) THEN 157 : PS =0.D0 158 : DO 84 ID=1,IDIM 159 : PS=PS+(XPALB(I,ID2+ID)*XPALB(I,ID2+ID)) 160 : 84 CONTINUE 161 : XVITT = SQRT(PS) 162 : ELSE 163 : XVITT = 0.D0 164 : ENDIF 165 : XVALB(I,IND,11) = XVALB(I,IND,11)+XVITT 166 : 167 : 168 : 169 : 170 : 171 : IF (XNET.GE.XRAY) THEN 172 : 173 : DO 90 ID=1,IDIM 174 : XPALB(I,ID+LMAI+(ICAND(1)-1)*IDIM) =XPALB(I,ID+LMAI+ 175 : &(ICAND(1)-1)*IDIM)-XPOID * (XFN*XXXN(ID) + XPALB(I,ID4+ID)) 176 : XPALB(I,ID+LMAI+(ICAND(2)-1)*IDIM) =XPALB(I,ID+LMAI+(ICAND 177 : &(2)-1)*IDIM)- ( 1.-XPOID )*(XFN*XXXN(ID) + XPALB(I,ID4+ID)) 178 : XPALB(I,ID+LBUT+(IESC-1)*IDIM) =XPALB(I,ID+LBUT+ 179 : &(IESC-1)*IDIM) + XFN * XXXN(ID) + XPALB(I,ID4+ID) 180 : 90 CONTINUE 181 : XCHPFB(1,I,IND,IPLIB(I,KBUT+IESC))= 182 : &XCHPFB(1,I,IND,IPLIB(I,KBUT+IESC))+XFN 183 : 184 : 185 : 186 : 187 : XCHPFB(2,I,IND,IPLIB(I,KBUT+IESC))= 188 : &XCHPFB(2,I,IND,IPLIB(I,KBUT+IESC))+ABS(XFT) 189 : 190 : XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(1)))= 191 : &XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(1)))+XPOID *XFN 192 : XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(1)))= 193 : &XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(1)))+XPOID *ABS(XFT) 194 : XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(2)))= 195 : &XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(2)))+( 1.-XPOID )*XFN 196 : XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(2)))= 197 : &XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(2)))+( 1.-XPOID )*ABS(XFT) 198 : IF (XPOID.GT.XEPSI) THEN 199 : IPALB(I,JMAI+ICAND(1))=1 200 : ENDIF 201 : IF ((1.0-XPOID).GT.XEPSI) THEN 202 : IPALB(I,JMAI+ICAND(2))=1 203 : ENDIF 204 : IPALB(I,JBUT+IESC) = 1 205 : XVALB(I,IND,1) = XVALB(I,IND,1)+XFN 206 : XVALB(I,IND,10) = XVALB(I,IND,10)+ ABS(XFT) 207 : XVALB(I,IND,12) = XVALB(I,IND,12)+ XPUS 208 : ENDIF 209 : * 210 : 211 : 212 : END 213 : 214 : 215 : 216 :
© Cast3M 2003 - All rights reserved.
Disclaimer