devfb1
C DEVFB1 SOURCE BP208322 20/09/18 21:15:26 10718 & NPLB,IND,IND1,INDM1,NPA,NPAM1,IND2,PDT,PDTS2, & FEXPSM,NPC1,XABSCI,XORDON,NIP,I,iannul, & KTOTXB,KTOTVB,IDIMB,GETJAC) *--------------------------------------------------------------------* * * * Operateur DYNE et DYNC : * * Calcul des forces de choc pour les liaisons B de type : * * - POINT_PLAN avec ou sans amortissement * * - POINT_PLAN_FROTTEMENT avec ou sans amortissement * * - CERCLE_PLAN_FROTTEMENT avec ou sans amortissement * * - POINT_PLAN_FLUIDE * * * *--------------------------------------------------------------------* * * * Parametres: * * * * e ITYP type de la liaison. * * es FTOTB Forces exterieures totalisees sur la base B. * * e XPTB Tableau des deplacements des points * * e IPALB Renseigne sur la liaison. * * e IPLIB Tableau contenant les numeros "DYNE" de la liaison. * * e XPALB Tableau contenant les parametres de la liaison. * * es XVALB Tableau contenant les variables internes de liaisons. * * e NLIAB Nombre de liaisons sur la base B. * * e NPLB Nombre total de points intervenant dans les liaisons. * * e IND Indice du pas. * * e IND1 Indice du pas (ou demi-pas si De Vogelaere) precedent. * * e I numero de la liaison. * * e PDT pas de temps * * e PDTS2 = | pas de temps/2 si devogelaere * * | pas de temps si differences centrees * * * *--------------------------------------------------------------------* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * INTEGER IPALB(NLIAB,*),IPLIB(NLIAB,*) REAL*8 XPALB(NLIAB,*),XPTB(NPLB,2,*),FTOTB(NPLB,*) REAL*8 XVALB(NLIAB,4,*),FEXPSM(NPLB,NPC1,2,*) REAL*8 XPTP2(3),XPTPP2(3),XFNT(3),XPSMP(3),XPSMPM(3) REAL*8 XABSCI(NLIAB,NIP),XORDON(NLIAB,NIP) * en + pour DYNC : REAL*8 KTOTXB(NPLB,IDIMB,IDIMB),KTOTVB(NPLB,IDIMB,IDIMB) LOGICAL GETJAC * *--------------------------------------------------------------------* * --- choc elementaire POINT_PLAN * avec ou sans amortissement *--------------------------------------------------------------------* * IF (ITYP.EQ.1 .OR. ITYP.EQ.100 & .OR. ITYP.EQ.101 .OR. ITYP.EQ.102) THEN NPOI = IPLIB(I,1) IDIM = IPALB(I,3) IPERM = IPALB(I,4) XRAID = XPALB(I,1) XJEU = XPALB(I,2) XAMO = XPALB(I,3) ETA = 0.D0 IF (ITYP.EQ.1 .OR. ITYP.EQ.102) THEN ID1 = 3 ELSE ID1 = 4 XSEUIL = XPALB(I,ID1) XDPLAS = XPALB(I,(ID1+IDIM+1)) ENDIF * c XDEP : deplacement normal = x(t_{ind})*n c XDEPM1 : deplacement normal = x(t_{ind2})*n c XVIT : vitesse normale = v(t_{ind})*n XDEP = 0.D0 DO 10 ID = 1,IDIM IDD1 = 3 + ID XDE2 = XPTB(NPOI,1,ID) XVALB(I,IND,IDD1) = XDE2 XDE2 = XDE2 + FEXPSM(NPOI,NPA,IND1,ID) XDEP = XDEP + XDE2 * XPALB(I,ID1+ID) 10 CONTINUE c XDEPM1 = 0.D0 c DO 12 ID = 1,IDIM c XDM2 = XPTB(NPOI,IND2,ID) + FEXPSM(NPOI,NPAM1,INDM1,ID) c XDEPM1 = XDEPM1 + XDM2 * XPALB(I,ID1+ID) c 12 CONTINUE c XVIT = (XDEP - XDEPM1) / PDTS2 cbp,2020-09 : la vitesse liee aux pseudo modes FEXPSM est negligee... cbp,2020-09 : XPTB(,2,)=vitesse XVIT = 0.D0 DO 12 ID = 1,IDIM XVIT = XVIT + XPTB(NPOI,2,ID) * XPALB(I,ID1+ID) 12 CONTINUE XVALB(I,IND,3) = XVIT IF (ITYP.EQ.1) THEN & XFL,DFDX,DFDV,IPERM,iannul) ELSEIF (ITYP.EQ.102) THEN & NLIAB,I,XFL,IPERM,iannul) ELSEIF (ITYP.EQ.101) THEN & XABSCI,XORDON,NIP,NLIAB,I,XFL,IPERM,iannul) ELSEIF (ITYP.EQ.100) THEN & XFL,IPERM,iannul) ENDIF IF (ITYP.EQ.100 .OR. ITYP.EQ.101) THEN XPALB(I,(ID1+IDIM+1)) = XDPLAS XVALB(I,IND,13) = XDPLAS ENDIF XVALB(I,IND,1) = XFL DO 14 ID = 1,IDIM FTOTB(NPOI,ID) = FTOTB(NPOI,ID) + XFL * XPALB(I,ID1+ID) 14 CONTINUE IF(GETJAC.AND.ITYP.EQ.1) THEN DO IE = 1,IDIM DO ID = 1,IDIM KTOTXB(NPOI,ID,IE) = KTOTXB(NPOI,ID,IE) + & DFDX*(XPALB(I,ID1+ID)*XPALB(I,ID1+IE)) KTOTVB(NPOI,ID,IE) = KTOTVB(NPOI,ID,IE) + & DFDV*(XPALB(I,ID1+ID)*XPALB(I,ID1+IE)) ENDDO ENDDO ENDIF * *--------------------------------------------------------------------* * --- choc elementaire POINT_PLAN_FROTTEMENT * avec ou sans amortissement *--------------------------------------------------------------------* * ELSEIF (ITYP.EQ.3 .OR. ITYP.EQ.103) THEN NPOI = IPLIB(I,1) IGP = IPALB(I,2) IDIM = IPALB(I,3) Cbp, 2020 : on intercale 2 regul + Ve ID1 = 9 IDVe = ID1 + IDIM ID2 = ID1 + 2*IDIM ID3 = ID1 + 3*IDIM ID4 = ID1 + 4*IDIM ID5 = ID1 + 5*IDIM ID6 = ID1 + 6*IDIM ID7 = ID1 + 7*IDIM * Si glissement au pas precedent, reactualisation de la position * origine d'adherence IF (IGP.EQ.1 .OR. IGP.EQ.-1) THEN DO 30 ID=1,IDIM XPALB(I,ID5+ID) = XPTB(NPOI,1,ID) + & FEXPSM(NPOI,NPA,IND1,ID) 30 CONTINUE c si adherence et entrainement, le point d'origine avance ! ELSEIF (IND.ne.3) THEN DO ID=1,IDIM XPALB(I,ID5+ID)=XPALB(I,ID5+ID) + XPALB(I,IDVe+ID)*PDTS2 ENDDO ENDIF * Calcul de l'enfoncement et de la vitesse normale c XDEP : deplacement normal = x(t_{ind})*n c XVITN : vitesse normale = v(t_{ind})*n = (dx*n)/dt XDEP = 0.D0 XVITN = 0.D0 PSN0 = 0.D0 DO 32 ID = 1,IDIM IDD1 = 3 + ID XDE2 = XPTB(NPOI,1,ID) cbp,2020-09 XDM2 = XPTB(NPOI,IND2,ID) XVALB(I,IND,IDD1) = XDE2 XDE2 = XDE2 + FEXPSM(NPOI,NPA,IND1,ID) cbp,2020-09 XDM2 = XDM2 + FEXPSM(NPOI,NPAM1,INDM1,ID) cbp,2020-09c XPALB(I,ID2+ID) = dx = x(t_ind)-x(t_ind2) cbp,2020-09 XPALB(I,ID2+ID) = XDE2 - XDM2 cbp,2020-09 : la vitesse liee aux pseudo modes FEXPSM est negligee... c XPALB(I,ID2+ID) = v(t_ind) XPALB(I,ID2+ID) = XPTB(NPOI,2,ID) c XPALB(I,ID3+ID) = dx_adhe = x(t_ind)-x(t_adherence) XPALB(I,ID3+ID) = XDE2 - XPALB(I,ID5+ID) XDEP = XDEP + XDE2 * XPALB(I,ID1+ID) XVITN = XVITN + XPALB(I,ID2+ID) * XPALB(I,ID1+ID) PSN0 = PSN0 + XPALB(I,ID3+ID) * XPALB(I,ID1+ID) 32 CONTINUE * Projette sur le plan tangent la vitesse et la variation de deplacement * par rapport a la position origine d'adherence sur le plan tangent * XPALB(I,ID2+ID) = (dx - (dx*n)*n)/dt * avec dx = x(t_ind)-x(t_ind2) * XPALB(I,ID3+ID) = dx_adhe - (dx_adhe*n)*n * avec dx_adhe = x(t_ind)-x(t_adherence) DO 34 ID = 1,IDIM XPALB(I,ID2+ID) = (XPALB(I,ID2+ID) - XVITN*XPALB(I,ID1+ID)) cbp,2020-09 & / PDTS2 XPALB(I,ID3+ID) = XPALB(I,ID3+ID) - PSN0 * XPALB(I,ID1+ID) 34 CONTINUE cbp,2020 vitesse relative = absolue - entrainement DO ID=1,IDIM XPALB(I,ID2+ID)=XPALB(I,ID2+ID) - XPALB(I,IDVe+ID) ENDDO c Vitesse normale cbp,2020-09 XVITN = XVITN / PDTS2 XVALB(I,IND,3) = XVITN IF (ITYP.EQ.3) THEN cbp,2020 CALL DYCHA4(XDEP,XVITN,IDIM,IGP,XPALB,NLIAB,I,XFN,XFT,XPUS, & iannul) ELSE cbp,2020 CALL DYCHA41(XDEP,XVITN,IDIM,IGP,XPALB,NLIAB,I,XFN,XFT,XPUS, & XABSCI,XORDON,NIP,iannul) ENDIF XVALB(I,IND,1) = XFN XVALB(I,IND,10) = ABS(XFT) XVALB(I,IND,12) = XPUS IGPM1 = IPALB(I,2) IPALB(I,2) = IGP * vitesse tangentielle de glissement IF (IGP.EQ.1) THEN PS = 0.D0 DO 20 ID = 1,IDIM PS = PS + (XPALB(I,ID2+ID)*XPALB(I,ID2+ID)) 20 CONTINUE XVITT = SQRT(PS) ELSE XVITT = 0.D0 ENDIF XVALB(I,IND,11) = XVITT * si glissement, stockage de la vitesse et force tangentielle IF (IGP.EQ.1.OR.IGP.EQ.-1) THEN DO 36 ID = 1,IDIM XPALB(I,ID6+ID) = XPALB(I,ID2+ID) XPALB(I,ID7+ID) = XPALB(I,ID4+ID) 36 CONTINUE ENDIF * Stockage de la force F = F + Fn*n + Ft DO 38 ID = 1,IDIM FTOTB(NPOI,ID) = FTOTB(NPOI,ID) + XFN * XPALB(I,ID1+ID) & + XPALB(I,ID4+ID) 38 CONTINUE *--------------------------------------------------------------------* * --- choc elementaire CERCLE_PLAN_FROTTEMENT * avec ou sans amortissement *--------------------------------------------------------------------* * ELSE IF (ITYP.EQ.5 .OR. ITYP.EQ.6) THEN NPOI = IPLIB(I,1) IGP = IPALB(I,2) IDIM = IPALB(I,3) IF (ITYP.EQ.5) THEN ID1 = 6 ELSE ID1 = 7 ENDIF ID2 = ID1 + IDIM ID3 = ID1 + 2*IDIM ID4 = ID1 + 3*IDIM ID5 = ID1 + 4*IDIM ID6 = ID1 + 5*IDIM ID7 = ID1 + 6*IDIM ID8 = ID1 + 1 + 7*IDIM * XMP = n * Rayon XMP1 = XPALB(I,ID1+1) * XPALB(I,ID8) XMP2 = XPALB(I,ID1+2) * XPALB(I,ID8) XMP3 = XPALB(I,ID1+3) * XPALB(I,ID8) cbp,2020-09* calcul du deplacement du point de contact au pas precedent cbp,2020-09* XPTPP2 = Ucontact(t) = Ucentre(t) + R(t) ∧ (n * Rayon) cbp,2020-09 XPTPP2(1) = XPTB(NPOI,IND2,1) + cbp,2020-09 & ( ( XPTB(NPOI,IND2,5) * XMP3 ) - cbp,2020-09 & ( XPTB(NPOI,IND2,6) * XMP2 ) ) cbp,2020-09 XPTPP2(2) = XPTB(NPOI,IND2,2) + cbp,2020-09 & ( ( XPTB(NPOI,IND2,6) * XMP1 ) - cbp,2020-09 & ( XPTB(NPOI,IND2,4) * XMP3 ) ) cbp,2020-09 XPTPP2(3) = XPTB(NPOI,IND2,3) + cbp,2020-09 & ( ( XPTB(NPOI,IND2,4) * XMP2 ) - cbp,2020-09 & ( XPTB(NPOI,IND2,5) * XMP1 ) ) cbp,2020-09 XPSMPM(1) = FEXPSM(NPOI,NPAM1,INDM1,1) + cbp,2020-09 & ( ( FEXPSM(NPOI,NPAM1,INDM1,5) * XMP3 ) - cbp,2020-09 & ( FEXPSM(NPOI,NPAM1,INDM1,6) * XMP2 ) ) cbp,2020-09 XPSMPM(2) = FEXPSM(NPOI,NPAM1,INDM1,2) + cbp,2020-09 & ( ( FEXPSM(NPOI,NPAM1,INDM1,6) * XMP1 ) - cbp,2020-09 & ( FEXPSM(NPOI,NPAM1,INDM1,4) * XMP3 ) ) cbp,2020-09 XPSMPM(3) = FEXPSM(NPOI,NPAM1,INDM1,3) + cbp,2020-09 & ( ( FEXPSM(NPOI,NPAM1,INDM1,4) * XMP2 ) - cbp,2020-09 & ( FEXPSM(NPOI,NPAM1,INDM1,5) * XMP1 ) ) cbp,2020-09 : la vitesse liee aux pseudo modes FEXPSM est negligee... * calcul de la vitesse du point de contact au pas courant * XPTPP2 = Vcontact(t) = Vcentre(t) + dR/dt(t) ∧ (n * Rayon) XPTPP2(1) = XPTB(NPOI,2,1) + & ( ( XPTB(NPOI,2,5) * XMP3 ) - & ( XPTB(NPOI,2,6) * XMP2 ) ) XPTPP2(2) = XPTB(NPOI,2,2) + & ( ( XPTB(NPOI,2,6) * XMP1 ) - & ( XPTB(NPOI,2,4) * XMP3 ) ) XPTPP2(3) = XPTB(NPOI,2,3) + & ( ( XPTB(NPOI,2,4) * XMP2 ) - & ( XPTB(NPOI,2,5) * XMP1 ) ) * calcul du deplacement du point de contact au pas courant * XPTP2 = Ucontact(t+dt) = Ucentre(t+dt) + R(t+dt) ∧ (n * Rayon) XPTP2(1) = XPTB(NPOI,1,1) + & ( ( XPTB(NPOI,1,5) * XMP3 ) - & ( XPTB(NPOI,1,6) * XMP2 ) ) XPTP2(2) = XPTB(NPOI,1,2) + & ( ( XPTB(NPOI,1,6) * XMP1 ) - & ( XPTB(NPOI,1,4) * XMP3 ) ) XPTP2(3) = XPTB(NPOI,1,3) + & ( ( XPTB(NPOI,1,4) * XMP2 ) - & ( XPTB(NPOI,1,5) * XMP1 ) ) XPSMP(1) = FEXPSM(NPOI,NPA,IND1,1) + & ( ( FEXPSM(NPOI,NPA,IND1,5) * XMP3 ) - & ( FEXPSM(NPOI,NPA,IND1,6) * XMP2 ) ) XPSMP(2) = FEXPSM(NPOI,NPA,IND1,2) + & ( ( FEXPSM(NPOI,NPA,IND1,6) * XMP1 ) - & ( FEXPSM(NPOI,NPA,IND1,4) * XMP3 ) ) XPSMP(3) = FEXPSM(NPOI,NPA,IND1,3) + & ( ( FEXPSM(NPOI,NPA,IND1,4) * XMP2 ) - & ( FEXPSM(NPOI,NPA,IND1,5) * XMP1 ) ) c write(*,*) 'devfb1: XPTB(ind )=',(XPTB(NPOI,IND,iou),iou=1,6) c write(*,*) 'devfb1: XPTB(ind2)=',(XPTB(NPOI,IND2,iou),iou=1,6) * * Si glissement au pas precedent, reactualisation de la position * origine d'adherence IF (IGP.EQ.1 .OR. IGP.EQ.-1) THEN DO 50 ID=1,IDIM XPALB(I,ID5+ID) = XPTP2(ID) + XPSMP(ID) 50 CONTINUE ENDIF * Calcul de l'enfoncement et de la vitesse normale XDEP = 0.D0 XVITN = 0.D0 PSN0 = 0.D0 DO 52 ID = 1,IDIM IDD1 = 3 + ID IDD2 = 6 + ID IDD3 = 15 + ID XDE2 = XPTP2(ID) cbp,2020-09 XDM2 = XPTPP2(ID) XVI2 = XPTPP2(ID) XVALB(I,IND,IDD1) = XPTB(NPOI,1,ID) cbp,2020-09 XVALB(I,IND,IDD2) = (XDE2 - XDM2 ) / pdts2 XVALB(I,IND,IDD2) = XVI2 XVALB(I,IND,IDD3) = XPTB(NPOI,1,ID+3) XDE2 = XDE2 + XPSMP(ID) cbp,2020-09 XDM2 = XDM2 + XPSMPM(ID) cbp,2020-09 XPALB(I,ID2+ID) = XDE2 - XDM2 XPALB(I,ID2+ID) = XVI2 c XPALB(I,ID3+ID) = dx_adhe = x(t_ind)-x(t_adherence) XPALB(I,ID3+ID) = XDE2 - XPALB(I,ID5+ID) XDEP = XDEP + XDE2 * XPALB(I,ID1+ID) XVITN= XVITN+ XPALB(I,ID2+ID) * XPALB(I,ID1+ID) PSN0 = PSN0 + XPALB(I,ID3+ID) * XPALB(I,ID1+ID) 52 CONTINUE * Projette la vitesse et la variation de deplacement par rapport a * la position origine d'adherence sur le plan tangent DO 54 ID = 1,IDIM XPALB(I,ID2+ID) = (XPALB(I,ID2+ID) - XVITN*XPALB(I,ID1+ID)) cbp,2020-09 & / PDTS2 XPALB(I,ID3+ID) = XPALB(I,ID3+ID) - PSN0 * XPALB(I,ID1+ID) 54 CONTINUE IF (ITYP.EQ.5) THEN & iannul) ELSE cbp,2020-09 XVITN = PSN / PDTS2 XVALB(I,IND,3) = XVITN & iannul) ENDIF XVALB(I,IND, 1) = XFN XVALB(I,IND,10) = ABS(XFT) XVALB(I,IND,12) = XPUS IPALB(I,2) = IGP * Si glissement, memorisation de la vitesse tangentielle et de la force * tangentielle IF (IGP.EQ.1.OR.IGP.EQ.-1) THEN DO 56 ID = 1,IDIM XPALB(I,ID6+ID) = XPALB(I,ID2+ID) XPALB(I,ID7+ID) = XPALB(I,ID4+ID) 56 CONTINUE ENDIF * calcul de la force : F = Fn*n + Ft DO 58 ID = 1,IDIM XFOR = ( XFN * XPALB(I,ID1+ID) ) + XPALB(I,ID4+ID) XFNT(ID) = XFOR FTOTB(NPOI,ID) = FTOTB(NPOI,ID) + XFOR 58 CONTINUE * calcul du moment : M = R ∧ F XMPFP1 = ( XMP2 * XFNT(3) ) - ( XMP3 * XFNT(2) ) XMPFP2 = ( XMP3 * XFNT(1) ) - ( XMP1 * XFNT(3) ) XMPFP3 = ( XMP1 * XFNT(2) ) - ( XMP2 * XFNT(1) ) XVALB(I,IND,13) = XMPFP1 XVALB(I,IND,14) = XMPFP2 XVALB(I,IND,15) = XMPFP3 FTOTB(NPOI,4) = FTOTB(NPOI,4) + XMPFP1 FTOTB(NPOI,5) = FTOTB(NPOI,5) + XMPFP2 FTOTB(NPOI,6) = FTOTB(NPOI,6) + XMPFP3 *--------------------------------------------------------------------* * --- choc elementaire POINT_PLAN_FLUIDE *--------------------------------------------------------------------* * ELSE IF (ITYP.EQ.7) THEN NPOI = IPLIB(I,1) IDIM = IPALB(I,3) XINER = XPALB(I,1) XVISC = XPALB(I,3) XPCEL = XPALB(I,4) XPCRA = XPALB(I,5) XJEU = XPALB(I,6) ID1 = 6 ID2 = ID1 + IDIM XDEP = 0.D0 DO 70 ID = 1,IDIM XDE2 = XPTB(NPOI,1,ID) XVALB(I,IND,ID) = XDE2 XDE2 = XDE2 + FEXPSM(NPOI,NPA,IND1,ID) XDEP = XDEP + XDE2 * XPALB(I,ID1+ID) 70 CONTINUE XDEPM1 = XPALB(I,ID2+1) XVITM1 = XPALB(I,ID2+2) XACCM1 = XPALB(I,ID2+3) XVIT = (XDEP - XDEPM1) / PDTS2 XACC = (XVIT - XVITM1) / PDTS2 XPALB(I,ID2+1) = XDEP XPALB(I,ID2+2) = XVIT XPALB(I,ID2+3) = XACC XDH = XJEU - XDEP * Calcul de la force d'inertie * Calcul de la force de convection * Calcul de la force de viscosite * Calcul de la force de perte de charge * XFL = XFI + XFC + XFV + XFP DO 72 ID = 1,IDIM FTOTB(NPOI,ID) = FTOTB(NPOI,ID) + XFL * XPALB(I,ID1+ID) 72 CONTINUE XVALB(I,IND,IDIM+1) = XVIT XVALB(I,IND,IDIM+2) = XACC XVALB(I,IND,IDIM+3) = XFI XVALB(I,IND,IDIM+4) = XFC XVALB(I,IND,IDIM+5) = XFV XVALB(I,IND,IDIM+6) = XFP * *--------------------------------------------------------------------* * --- choc ........... *--------------------------------------------------------------------* * * ELSE IF (ITYP.EQ. ) THEN * ....... * ....... * ENDIF * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales