dyne13
C DYNE13 SOURCE CB215821 24/04/12 21:15:38 11897 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Op{rateur DYNE : algorithme de Fu - de Vogelaere * * ________________________________________________ * * * * V{rification des objets TBAS, TKM, et notamment de * * leurs supports. Liste des points de r{f{rence. * * * * Param}tres: * * * * e ITBAS Table repr{sentant une base modale * * e ITKM Table contenant les matrices de raideur et de masse * * s KPREF Segment des points de r{f{rence * * s KCPR Segment des points * * * * Auteur, date de cr{ation: * * * * Denis ROBERT-MOUGIN, le 30 mai 1989. * * * *--------------------------------------------------------------------* -INC PPARAM -INC CCOPTIO -INC SMRIGID -INC SMCHPOI -INC SMELEME -INC SMCOORD -INC SMMODEL * SEGMENT,ICPR(nbpts) SEGMENT,MPREF INTEGER IPOREF(NPREF) ENDSEGMENT * LOGICAL L0,L1,LMODYN CHARACTER*4 MO2 CHARACTER*8 TYPRET,CHARRE CHARACTER*40 MONMOT * IK = 0 IRIG = 0 IMAS = 0 IMESS = 0 SEGINI,ICPR KCPR = ICPR LCPR = nbpts * * 1/ Cas oº la base modale est d{finie seule * IF (ITBAS.NE.0 .AND.ITKM.EQ.0.and.(.not.lmodyn)) THEN & 'MOT',I1,X1,MONMOT,L1,IP1) IF (IERR.NE.0) RETURN * * Cas oº la base est unique * IF (MONMOT(1:11).EQ.'BASE_MODALE') THEN * * On r{cup}re la base de modes * & 'TABLE',I1,X1,' ',L1,IBAS) IF (IERR.NE.0) RETURN IF (IERR.NE.0) RETURN * * Cas oº on a un ensemble de bases * ELSE IF (MONMOT(1:17).EQ.'ENSEMBLE_DE_BASES') THEN * * On boucle sur le nombre de bases * IB = 0 10 CONTINUE IB = IB + 1 TYPRET = ' ' & TYPRET,I1,X1,CHARRE,L1,ITTBAS) IF (IERR.NE.0) RETURN IF (ITTBAS.NE.0) THEN IF (TYPRET.EQ.'TABLE ') THEN & 'TABLE',I1,X1,' ',L1,IBAS) IF (IERR.NE.0) RETURN IF (IERR.NE.0) RETURN GOTO 10 ELSE RETURN ENDIF ENDIF * * Cas oº le SOUSTYPE est incorrect * ELSE RETURN ENDIF * * 2/ Cas oº les matrices raideur et de masse sont d{finies seules * ELSE IF (ITBAS.EQ.0 .AND. ITKM.NE.0.and.(.not.lmodyn)) THEN TYPRET = ' ' & TYPRET,I1,X1,CHARRE,L1,IRIG) IF (IERR.NE.0) RETURN IF (IRIG.NE.0 .AND. TYPRET.EQ.'RIGIDITE') THEN MRIGID = IRIG SEGACT,MRIGID NRIG = IRIGEL(/2) DO 20 I=1,NRIG MELEME = IRIGEL(1,I) SEGACT,MELEME NBNN = NUM(/1) DO 26 K=1,NBNN KNOE = NUM(K,J) IF (ICPR(KNOE).EQ.0) THEN IK = IK + 1 ICPR(KNOE) = IK IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNE13 : raideur ICPR(',KNOE,')=',ICPR(KNOE) ENDIF ENDIF 26 CONTINUE * end do 25 CONTINUE * end do SEGDES,MELEME 20 CONTINUE * end do SEGDES,MRIGID * * Cas oº le SOUSTYPE est incorrect * ELSE RETURN ENDIF * TYPRET = ' ' & TYPRET,I1,X1,CHARRE,L1,IMAS) IF (IERR.NE.0) RETURN IF (IMAS.NE.0 .AND. TYPRET.EQ.'RIGIDITE') THEN MRIGID = IMAS SEGACT,MRIGID NMAS = IRIGEL(/2) DO 30 I=1,NMAS MELEME = IRIGEL(1,I) SEGACT,MELEME NBNN = NUM(/1) DO 36 K=1,NBNN KNOE = NUM(K,J) IF (ICPR(KNOE).EQ.0) THEN IK = IK + 1 ICPR(KNOE) = IK IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNE13 : masse ICPR(',KNOE,')=',ICPR(KNOE) ENDIF ENDIF 36 CONTINUE * end do 35 CONTINUE * end do SEGDES,MELEME 30 CONTINUE * end do SEGDES,MRIGID * * Cas oº le SOUSTYPE est incorrect * ELSE RETURN ENDIF * * 3/ Cas oº la base modale est d{finie * et les matrices masse et rigidit{ sont d{finies * ELSE IF (ITBAS.NE.0 .AND. ITKM.NE.0.and.(.not.lmodyn)) THEN RETURN * * table pasapas ELSE IF (LMODYN) THEN mmodel = itbas segact mmodel do im = 1,kmodel(/1) imodel = kmodel(im) segact imodel if (nefmod.ne.45) goto 45 meleme = imamod segact meleme do ip = 1,num(/2) knoe = num(1,ip) IF (KNOE.NE.0) THEN IF (ICPR(KNOE).EQ.0) THEN IK = IK + 1 ICPR(KNOE) = IK IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNE25 : basemo. ICPR(',KNOE,')=',ICPR(KNOE) ENDIF ENDIF ENDIF enddo segdes meleme 45 continue segdes imodel enddo segdes mmodel ENDIF * * 5/ Cr{ation du segment d{finissant les points supports: * NPREF = IK SEGINI,MPREF KPREF = MPREF IF (IIMPI.EQ.333) WRITE(IOIMP,*)'DYNE13 : KPREF=',KPREF,NPREF DO 100 I=1,LCPR IF (ICPR(I).NE.0) THEN IREF = ICPR(I) IPOREF(IREF) = I IF (IIMPI.EQ.333) THEN WRITE(IOIMP,*)'DYNE13 : IPOREF(',IREF,')=',IPOREF(IREF) ENDIF ENDIF 100 CONTINUE * end do * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales