1 : C DYFORC SOURCE CHAT 05/01/12 23:09:17 5004 2 : SUBROUTINE DYFORC(XPTB,XVALB,IPALB,IPLIB,XPALB,NLIAB,NPLB,IND 3 : &,IND2,PDTS2,I,iannul,IESC,IROLE,XCHPFB) 4 : IMPLICIT INTEGER(I-N) 5 : IMPLICIT REAL*8(A-H,O-Z) 6 : *--------------------------------------------------------------------* 7 : * * 8 : * Opérateur DYNE : algorithme de Fu - de Vogelaere * 9 : * ________________________________________________ * 10 : * * 11 : * Calcul des forces de choc sur base B pour les liaisons de * 12 : * type POINT_PLAN. * 13 : * * 14 : * Paramètres: * 15 : * * 16 : * e XPTB Tableau des déplacements des points * 17 : * e IPALB Renseigne sur la liaison. * 18 : * e IPLIB Tableau contenant les numéros "DYNE" de la liaison. * 19 : * e XPALB Tableau contenant les paramètres de la liaison. * 20 : * es XVALB Tableau contenant les variables internes de liaisons. * 21 : * es XCHPFB Tableau contenant les valeurs des futurs chpoints * 22 : * e NLIAB Nombre de liaisons sur la base B. * 23 : * e NPLB Nombre total de points intervenant dans les liaisons. * 24 : * e IND Indice du pas. * 25 : * e I numéro de la liaison. * 26 : * e IESC numéro DYNE du noeud esclave * 27 : * e IROLE indique qui est le maitre et l'esclave * 28 : * = 0 premiere passe , =1 deuxième passe * 29 : * * 30 : * * 31 : * Auteur, date de création: ** 32 : * * 33 : * Auteur, date de création: * 34 : * * 35 : * Samuel DURAND : le 19 Octobre 1996 : Création * 36 : * * 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,*) 43 : * 44 : XEPSI = 0.0001 45 : IGP = IPALB(I,2) 46 : IDIM = IPALB(I,3) 47 : * ILOCAL = IPALB(I,23) 48 : ITYP = IPALB(I,1) 49 : XPOID = 0.D0 50 : * 51 : IF (ITYP.EQ.35) THEN 52 : ID1 = 6 53 : ELSE 54 : ID1 = 7 55 : ENDIF 56 : * 57 : IF (IROLE.EQ.0) THEN 58 : KMAI = 0 59 : IMAI = ID1 +4*IDIM 60 : IBUT = IMAI + IPALB(I,21)*IDIM 61 : KBUT = IPALB(I,21) 62 : LMAI = ID1 + (IPALB(I,21)+IPALB(I,22)+4)*IDIM 63 : LBUT = LMAI +IPALB(I,21)*IDIM 64 : JMAI = 26 + IPALB(I,21)+IPALB(I,22) 65 : JBUT = JMAI + IPALB(I,21) 66 : MBUT = LBUT +IPALB(I,22)*IDIM + 67 : &IPALB(I,21) 68 : NBUT = MBUT +IPALB(I,21)+IPALB(I,22) 69 : ELSE 70 : KMAI = IPALB(I,21) 71 : IBUT = ID1 + 4*IDIM 72 : IMAI = IBUT + IPALB(I,21)*IDIM 73 : KBUT = 0 74 : LBUT = ID1 + (IPALB(I,21)+IPALB(I,22)+4)*IDIM 75 : LMAI = LBUT +IPALB(I,21)*IDIM 76 : JBUT = 26 + 2*(IPALB(I,21)+IPALB(I,22)) 77 : JMAI = JBUT +IPALB(I,21) 78 : MBUT = LMAI +IPALB(I,22)*IDIM 79 : NBUT = MBUT +IPALB(I,21)+IPALB(I,22) 80 : ENDIF 81 : ID2 = ID1 + IDIM 82 : ID4 = ID1 +3*IDIM 82 : CALL DYCAND(IPALB,IPLIB,XPALB,XPTB,IND,I,NLIAB,NPLB, 83 : & XXXN,XDEP,XPOID,ICAND,IESC,IROLE) 84 : XVITN =0.D0 85 : IDCAN1 = IMAI + (ICAND(1)-1)*IDIM 86 : IDCAN2 = IMAI + (ICAND(2)-1)*IDIM 87 : DO 80 ID=1,IDIM 88 : * 89 : * Déplacement du point de contact au pas courant 90 : XDE2 =(XPTB(IPLIB(I,KMAI+ICAND(2)),IND,ID))*(1-XPOID) 91 : & + (XPTB(IPLIB(I,KMAI+ICAND(1)),IND,ID))*XPOID 92 : XVALB(I,IND,3+ID) = XVALB(I,IND,3+ID)+ 93 : & XPALB(I,IDCAN1+ID)*XPOID +XPALB(I,IDCAN2+ID)*(1-XPOID) 94 : * Déplacement du point de contact au pas précédent 95 : XDM2 =(XPTB(IPLIB(I,KMAI+ICAND(2)),IND2,ID))*(1-XPOID) 96 : & + (XPTB(IPLIB(I,KMAI+ICAND(1)),IND2,ID))*XPOID 97 : * Déplacement de la butee 98 : XDB = (XPTB(IPLIB(I,KBUT+IESC),IND,ID) 99 : & -XPTB(IPLIB(I,KBUT+IESC),IND2,ID)) 100 : * Vitesse de glissement 101 : XPALB(I,ID2+ID)=(XDB+XDM2-XDE2)/PDTS2 102 : * Vitesse normale 103 : XVITN = XVITN + ((XDB+XDM2-XDE2)*XXXN(ID)/PDTS2) 104 : 80 CONTINUE 105 : DO 82 ID=1,IDIM 106 : * Vitesse tangentielle 107 : XPALB(I,ID2+ID) = XPALB(I,ID2+ID) - (XVITN*XXXN(ID)) 108 : 82 CONTINUE 109 : * Calcul de la force de choc 110 : XPALB(I,1) = XPALB(I,MBUT+IESC) 111 : IF (ITYP.EQ.35) THEN 111 : CALL DYCHE4(XDEP,IDIM,IGP,XPALB,NLIAB,I,XFN,XFT,XPUS, 112 : &iannul) 113 : ELSE 114 : XPALB(I,7) = XPALB(I,NBUT+IESC) 114 : CALL DYCHA4(XDEP,XVITN,IDIM,IGP,XPALB,NLIAB,I,XFN,XFT 115 : &,XPUS,iannul) 116 : ENDIF 117 : XVALB(I,IND,3) = XVALB(I,IND,3) + XVITN 118 : IPALB(I,2) = IGP 119 : IF (IGP.EQ.1) THEN 120 : PS =0.D0 121 : DO 84 ID=1,IDIM 122 : PS=PS+(XPALB(I,ID2+ID)*XPALB(I,ID2+ID)) 123 : 84 CONTINUE 124 : XVITT = SQRT(PS) 125 : ELSE 126 : XVITT = 0.D0 127 : ENDIF 128 : XVALB(I,IND,11) = XVALB(I,IND,11)+XVITT 129 : IF (XDEP.GT.0) THEN 130 : DO 90 ID=1,IDIM 131 : XPALB(I,ID+LMAI+(ICAND(1)-1)*IDIM) =XPALB(I,ID+LMAI+ 132 : &(ICAND(1)-1)*IDIM)-XPOID * (XFN*XXXN(ID) + XPALB(I,ID4+ID)) 133 : XPALB(I,ID+LMAI+(ICAND(2)-1)*IDIM) =XPALB(I,ID+LMAI+ 134 : &(ICAND(2)-1)*IDIM)- ( 1.-XPOID )*(XFN*XXXN(ID) + XPALB(I,ID4+ID)) 135 : XPALB(I,ID+LBUT+(IESC-1)*IDIM) =XPALB(I,ID+LBUT+ 136 : &(IESC-1)*IDIM) + XFN * XXXN(ID) + XPALB(I,ID4+ID) 137 : 90 CONTINUE 138 : XCHPFB(1,I,IND,IPLIB(I,KBUT+IESC))= 139 : &XCHPFB(1,I,IND,IPLIB(I,KBUT+IESC))+XFN 140 : XCHPFB(2,I,IND,IPLIB(I,KBUT+IESC))= 141 : &XCHPFB(2,I,IND,IPLIB(I,KBUT+IESC))+ABS(XFT) 142 : XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(1)))= 143 : &XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(1)))+XPOID *XFN 144 : XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(1)))= 145 : &XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(1)))+XPOID *ABS(XFT) 146 : XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(2)))= 147 : &XCHPFB(1,I,IND,IPLIB(I,KMAI+ICAND(2)))+( 1.-XPOID )*XFN 148 : XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(2)))= 149 : &XCHPFB(2,I,IND,IPLIB(I,KMAI+ICAND(2)))+( 1.-XPOID )*ABS(XFT) 150 : IF (XPOID.GT.XEPSI) THEN 151 : IPALB(I,JMAI+ICAND(1))=1 152 : ENDIF 153 : IF ((1.0-XPOID).GT.XEPSI) THEN 154 : IPALB(I,JMAI+ICAND(2))=1 155 : ENDIF 156 : IPALB(I,JBUT+IESC) = 1 157 : XVALB(I,IND,1) = XVALB(I,IND,1)+XFN 158 : XVALB(I,IND,10) = XVALB(I,IND,10)+ ABS(XFT) 159 : XVALB(I,IND,12) = XVALB(I,IND,12)+ XPUS 160 : ENDIF 161 : * 162 : END 163 : 164 :
© Cast3M 2003 - All rights reserved.
Disclaimer