C DYN204 SOURCE CHAT 05/01/12 23:10:37 5004 SUBROUTINE DYN204(I,ITLB,ITYP,KTLIAB,NPLB) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Op{rateur DYNE : algorithme de Fu - de Vogelaere * * ________________________________________________ * * * * Remplissage des tableaux de description des liaisons sur * * la base @ partir des informations contenues dans la * * table ITLB (liaison de type PROFIL_PROFIL_...) * * Liaison PROFIL_PROFIL_INTERIEUR * * Liaison PROFIL_PROFIL_EXTERIEUR * * * * Param}tres: * * * * e I Num{ro de la liaison. * * e ITLB Table rassemblant la description d'une liaison. * * e ITYP Type de la liaison. * * s KTLIAB Segment descriptif des liaisons sur base B. * * e NPLB Nombre total de points. * * * * * * Auteur, date de cr{ation: * * * * Lionel VIVAN, le 1 f{vrier 1991. * * * *--------------------------------------------------------------------* -INC CCOPTIO -INC SMCOORD -INC SMELEME * 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 * LOGICAL L1,L0 * MTLIAB = KTLIAB NLIAB = XPALB(/1) * * --- choc {l{mentaire PROFIL_PROFIL_INTERIEUR * --- choc {l{mentaire PROFIL_PROFIL_EXTERIEUR * IF (ITYP.EQ.31 .OR. ITYP.EQ.32) THEN CALL ACCTAB(ITLB,'MOT',I0,X0,'PROFIL_FIXE',L0,IP0, & 'MAILLAGE',I1,X1,' ',L1,IMA1) IF (IERR.NE.0) RETURN CALL ACCTAB(ITLB,'MOT',I0,X0,'PROFIL_MOBILE',L0,IP0, & 'MAILLAGE',I1,X1,' ',L1,IMA2) IF (IERR.NE.0) RETURN CALL ACCTAB(ITLB,'MOT',I0,X0,'NORMALE',L0,IP0, & 'POINT',I1,X1,' ',L1,INOR) IF (IERR.NE.0) RETURN CALL ACCTAB(ITLB,'MOT',I1,X0,'RAIDEUR',L0,IP0, & 'FLOTTANT',I0,XRAID,' ',L1,IP1) IF (IERR.NE.0) RETURN CALL ACCTAB(ITLB,'MOT',I1,X0,'SUPPORT',L0,IP0, & 'POINT',I0,X1,' ',L1,ISUP) IF (IERR.NE.0) RETURN CALL ACCTAB(ITLB,'MOT',I1,X0,'EXPOSANT_RAIDEUR',L0,IP0, & 'FLOTTANT',I0,XPUIS,' ',L1,IP1) IF (IERR.NE.0) RETURN * IPALB(I,1) = ITYP IPALB(I,3) = IDIM XPALB(I,1) = XRAID XPALB(I,3) = XPUIS ID1 = 3 IP1 = 5 * * le maillage IMA1 est en {l{ment de type POI1 MELEME = IMA1 SEGACT MELEME NOMBN1 = NUM(/2) IPALB(I,4) = NOMBN1 IDP = ID1 + 5*IDIM DO 12 IE = 1,NOMBN1 IPT = NUM(1,IE) INPT = ( IDIM + 1 ) * ( IPT - 1 ) DO 14 ID = 1,IDIM XPALB(I,IDP+ID) = XCOOR(INPT + ID) 14 CONTINUE * end do IDP = IDP + IDIM 12 CONTINUE * end do SEGDES MELEME * * le maillage IMA2 est en {l{ment de type POI1 MELEME = IMA2 SEGACT MELEME NOMBN2 = NUM(/2) IPALB(I,5) = NOMBN2 DO 16 IE = 1,NOMBN2 IPT = NUM(1,IE) INPT = ( IDIM + 1 ) * ( IPT - 1 ) DO 18 ID = 1,IDIM XPALB(I,IDP+ID) = XCOOR(INPT + ID) 18 CONTINUE * end do IDP = IDP + IDIM 16 CONTINUE * end do SEGDES MELEME CALL PLACE2(JPLIB,NPLB,IPLAC,ISUP) IPLIB(I,1) = IPLAC * * cr{ation d'un rep}re orthonorm{ dans le plan des maillages * le point origine est le premier point de IMA1 CALL DYNE28(INOR,ISUP,XPALB,NLIAB,I,ID1) IF (IERR.NE.0) RETURN * * coefficient des droites form{es par les {l{ments de IMA1 CALL DYNE29(IPALB,XPALB,NLIAB,NOMBN1,NOMBN2,I,ID1,IP1) * * position initiale de IMA2 par rapport @ IMA1 CALL DYNE30(IPALB,XPALB,NLIAB,NOMBN1,NOMBN2,I,ID1,IP1) * * calcul de la section du profil mobile CALL DYNE33(XPALB,IPALB,NLIAB,I,ID1,XSECT) XPALB(I,2) = XSECT * * --- choc {l{mentaire PROFIL_... * * ELSE IF (ITYP.EQ. ) THEN * ... * ... ENDIF * END