dyne14
C DYNE14 SOURCE BP208322 20/03/26 21:15:53 10562 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Operateur DYNE : * * Remplissage du tableau contenant les paramètres de liaison en * * cas de reprise. * * * *--------------------------------------------------------------------* * * * Paramètres: * * * * e IPALB Renseigne sur la liaison. * * e/s XPALB Tableau contenant les paramètres de la liaison. * * e NLIAB Nombre de liaisons sur la base B. * * e IDIM Nombre de directions. * * * *--------------------------------------------------------------------* * -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC SMLENTI LOGICAL L0,L1 SEGMENT,MTLIAB INTEGER IPALB(NLIAB,NIPALB),IPLIB(NLIAB,NPLBB),JPLIB(NPLB) REAL*8 XPALB(NLIAB,NXPALB) REAL*8 XABSCI(NLIAB,NIP),XORDON(NLIAB,NIP) ENDSEGMENT MTLIAB = KTLIAB NLIAB = XPALB(/1) * *--------------------------------------------------------------------* * Boucle sur les liaisons *--------------------------------------------------------------------* * ID0 = 0 ID1 = 0 ID2 = 0 DO 10 I = 1,NLIAB ITYP = IPALB(I,1) & 'TABLE',I1,X1,' ',L1,ITREFI) IF (IERR.NE.0) RETURN & 'ENTIER',ITYPR,X1,' ',L1,ITR) IF (IERR.NE.0) RETURN IF (ITYP.NE.ITYPR) THEN RETURN ENDIF * * ------ choc elementaire POINT_CERCLE_MOBILE * sans amortissement * cbp,2020 IF (ITYP.EQ.23. OR. ITYP.EQ.33) THEN IF (ITYP.EQ.33) THEN IDIM = IPALB(I,3) ID0 = 6 + 6*IDIM ID1 = 6 + 7*IDIM ID2 = 6 + 8*IDIM * * ------ choc elementaire POINT_CERCLE_FROTTEMENT * ELSE IF (ITYP.EQ.23) THEN IDIM = IPALB(I,3) ID0 = 10 + 6*IDIM ID1 = 10 + 7*IDIM ID2 = 10 + 8*IDIM * * ------ choc elementaire POINT_CERCLE_MOBILE * avec amortissement * cbp,2020 ELSE IF (ITYP.EQ.24 .OR. ITYP.EQ.34) THEN ELSE IF (ITYP.EQ.34) THEN IDIM = IPALB(I,3) ID0 = 7 + 6*IDIM ID1 = 7 + 7*IDIM ID2 = 7 + 8*IDIM * * ------ choc elementaire CERCLE_PLAN_FROTTEMENT ELSE IF (ITYP.EQ.5) THEN IDIM = IPALB(I,3) ID0 = 6 + 4*IDIM ID1 = 6 + 5*IDIM ID2 = 6 + 6*IDIM * * ------ choc elementaire POINT_PLAN_FROTTEMENT * ELSE IF (ITYP.EQ.3 .OR. ITYP.EQ.103 ) THEN IDIM = IPALB(I,3) cbp,2020 ID0 = 7 + 4*IDIM cbp,2020 ID1 = 7 + 5*IDIM cbp,2020 ID2 = 7 + 6*IDIM ID0 = 9 + 5*IDIM ID1 = 9 + 6*IDIM ID2 = 9 + 7*IDIM * * ------ choc elementaire POINT_POINT_FROTTEMENT * et CERCLE_PLAN_FROTTEMENT avec amortissement * ELSE IF (ITYP.EQ.13 .OR. ITYP.EQ.113 .OR. ITYP.EQ.6) THEN IDIM = IPALB(I,3) ID0 = 7 + 4*IDIM ID1 = 7 + 5*IDIM ID2 = 7 + 6*IDIM * * ------ choc elementaire CERCLE_CERCLE_FROTTEMENT * ELSE IF (ITYP.EQ.25 .OR. ITYP.EQ.26) THEN IF (ITYP.EQ.23) THEN IDD = 6 ELSE IDD = 7 ENDIF IDIM = IPALB(I,3) ID0 = IDD + 6*IDIM ID1 = IDD + 7*IDIM ID2 = IDD + 8*IDIM ID3 = IDD + 2*IDIM & L0,IP0,'POINT',I1,X1,' ',L1,IPOR0) IF (IERR.NE.0) RETURN IPN0 = (IDIM + 1) * (IPOR0 - 1) & 'POINT',I1,X1,' ',L1,IPOR1) IF (IERR.NE.0) RETURN IPN1 = (IDIM + 1) * (IPOR1 - 1) & L0,IP0,'POINT',I1,X1,' ',L1,IPOR2) IF (IERR.NE.0) RETURN IPN2 = (IDIM + 1) * (IPOR2 - 1) & L0,IP0,'POINT',I1,X1,' ',L1,IPOR3) IF (IERR.NE.0) RETURN IPN3 = (IDIM + 1) * (IPOR3 - 1) DO 40 ID = 1,IDIM XPALB(I,ID0+ID) = XCOOR(IPN0 + ID) XPALB(I,ID1+ID) = XCOOR(IPN1 + ID) XPALB(I,ID2+ID) = XCOOR(IPN2 + ID) XPALB(I,ID3+ID) = XCOOR(IPN3 + ID) 40 CONTINUE * end do & 'ENTIER',IGP,X1,' ',L1,IRP) IF (IERR.NE.0) RETURN IPALB(I,2) = IGP * GOTO 10 * * * * ------ choc elementaire POINT_PLAN_FLUIDE * ELSE IF (ITYP.EQ.7) THEN IDIM = IPALB(I,3) ID1 = 6 + IDIM & 'POINT',I1,X1,' ',L1,IPDEP) IF (IERR.NE.0) RETURN & 'POINT',I1,X1,' ',L1,IPVIT) IF (IERR.NE.0) RETURN & 'POINT',I1,X1,' ',L1,IPACC) IF (IERR.NE.0) RETURN IPND = (IDIM + 1) * (IPDEP - 1) IPNV = (IDIM + 1) * (IPVIT - 1) IPNA = (IDIM + 1) * (IPACC - 1) XPALB(I,ID1+1) = XCOOR(IPND + 1) XPALB(I,ID1+2) = XCOOR(IPNV + 1) XPALB(I,ID1+3) = XCOOR(IPNA + 1) GOTO 10 ** ianis * * ------ choc elementaire POINT_PLAN avec plasticite * ELSE IF (ITYP.EQ.100 .OR. ITYP.EQ.101 ) THEN C chargement du deplacement plastique & L0,IP0,'FLOTTANT',I1,XDPLAS,' ',L1,IPOR2) IF (IERR.NE.0) RETURN IDIM = IPALB(I,3) id1 = 4 XPALB(I,(ID1+IDIM+1)) = XDPLAS GOTO 10 * * ------ choc elementaire POINT_POINT_DEPLACEMENT_PLASTIQUE * ELSE IF (ITYP.EQ.16 .OR. ITYP.EQ.17) THEN C chargement du deplacement plastique et de la limite elastique & L0,IP0,'FLOTTANT',I1,XDPLAS,' ',L1,IPOR2) IF (IERR.NE.0) RETURN * * le depl limite elastique ne sert plus a rien & L0,IP0,'FLOTTANT',I1,XELA,' ',L1,IPOR2) IF (IERR.NE.0) RETURN & L0,IP0,'FLOTTANT',I1,XDPLAC,' ',L1,IPOR2) IF (IERR.NE.0) RETURN idim = IPALB(I,3) if (ityp.eq.16) nn = 4 + idim if (ityp.eq.17) nn = 5 + idim XPALB(I,nn-2) = XDPLAS XPALB(I,nn-1) = XELA XPALB(I,nn) = XDPLAC GOTO 10 * * ------ choc elementaire POINT_POINT_ROTATION_PLASTIQUE * ELSE IF (ITYP.EQ.50 .OR. ITYP.EQ.51) THEN * chargement de la rotation plastique et de la limite elastique & L0,IP0,'FLOTTANT',I1,XDPLAS,' ',L1,IPOR2) IF (IERR.NE.0) RETURN * * la rot limite elastique ne sert plus a rien & L0,IP0,'FLOTTANT',I1,XELA,' ',L1,IPOR2) IF (IERR.NE.0) RETURN & L0,IP0,'FLOTTANT',I1,XDPLAC,' ',L1,IPOR2) IF (IERR.NE.0) RETURN idim = IPALB(I,3) if (ityp.eq.50) nn = 4 + idim if (ityp.eq.51) nn = 5 + idim XPALB(I,nn-2) = XDPLAS XPALB(I,nn-1) = XELA XPALB(I,nn) = XDPLAC GOTO 10 C * -------choc elementaire LIGNE_LIGNE_FROTTEMENT * ELSE IF (ITYP.EQ.35.OR.ITYP.EQ.36) THEN * Chargement des noeudS leS plus proche & 'LISTENTI',I1,X1,' ',L1,IVOIS1) IF (IERR.NE.0) RETURN MLENTI = IVOIS1 SEGACT,MLENTI NNOE=LECT(/1) DO 30 JVOI=1,NNOE IPALB(I,26+JVOI)=LECT(JVOI) 30 CONTINUE SEGDES,MLENTI * -------chocS elementaireS SEGMENT_CERCLE_FROTTEMENT_sanreac ET ..._REACNOR * ELSE IF (ITYP.EQ.37 .OR. ITYP.EQ.38 & .OR. ITYP.EQ.39 .OR. ITYP.EQ.40) THEN * Chargement des noeudS leS plus proche & 'LISTENTI',I1,X1,' ',L1,IVOIS1) IF (IERR.NE.0) RETURN MLENTI = IVOIS1 SEGACT,MLENTI NNOE=LECT(/1) DO 32 JVOI=1,NNOE IPALB(I,26+JVOI)=LECT(JVOI) 32 CONTINUE SEGDES,MLENTI * * * * ------ choc .... * * ELSE IF (ITYP.EQ. ) THEN * ... * * ELSE GOTO 10 ENDIF * IF (ITYP.NE.35 .AND. ITYP.NE.36 .AND. ITYP.NE.37 & .AND. ITYP.NE.38 .AND. ITYP.NE.39 .AND. ITYP.NE.40) THEN * * Chargement de la position origine d'adherence * & L0,IP0,'POINT',I1,X1,' ',L1,IPOR0) IF (IERR.NE.0) RETURN IPN0 = (IDIM + 1) * (IPOR0 - 1) * * Chargement de la vitesse tangentielle * & 'POINT',I1,X1,' ',L1,IPOR1) IF (IERR.NE.0) RETURN IPN1 = (IDIM + 1) * (IPOR1 - 1) * * Chargement de la force tangentielle * & L0,IP0,'POINT',I1,X1,' ',L1,IPOR2) IF (IERR.NE.0) RETURN IPN2 = (IDIM + 1) * (IPOR2 - 1) DO 20 ID = 1,IDIM XPALB(I,ID0+ID) = XCOOR(IPN0 + ID) XPALB(I,ID1+ID) = XCOOR(IPN1 + ID) XPALB(I,ID2+ID) = XCOOR(IPN2 + ID) 20 CONTINUE * end do ENDIF * * Chargement de l'etat tangentiel de la liaison * & 'ENTIER',IGP,X1,' ',L1,IRP) IF (IERR.NE.0) RETURN IPALB(I,2) = IGP * 10 CONTINUE * end do * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales