Download dyfor1.eso

Back to the list

   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