C REACTI SOURCE CB215821 19/08/20 21:21:25 10287 SUBROUTINE REACTI IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO LOGICAL L0,L1 CHARACTER*8 TYPRET,CTYP,CHARRE PARAMETER (IUN=1) * CALL LIRTAB('LIAISONS_STATIQUES',ITBAS,0,IRET) CALL LIROBJ ('RIGIDITE',MRIGID,IUN,IRETOU) IF(IERR.NE.0) RETURN IF (IRET.NE.0) goto 1100 * * lecture d'une TABLE ou d'un objet CHPOINT * CALL QUETYP(CTYP,0 ,IRETOU) IF(IRETOU.EQ.0) THEN CALL ERREUR(533) RETURN ENDIF IF (CTYP(1:8).EQ.'TABLE ') THEN CALL LIRTAB('BASE_MODALE',ITBAS,IUN,IRET) IF (IERR.NE.0) RETURN * * On r{cup}re la base des modes * CALL ACCTAB(ITBAS,'MOT',I0,X0,'MODES',L0,IP0, & 'TABLE',I1,X1,' ',L1,IBAS) IB = 0 10 CONTINUE TYPRET = ' ' IB = IB + 1 CALL ACCTAB(IBAS,'ENTIER',IB,X0,' ',L0,IP0, & TYPRET,I1,X1,CHARRE,L1,ITTBAS) IF (ITTBAS.NE.0 .AND. TYPRET.EQ.'TABLE ') THEN CALL ACCTAB(ITTBAS,'MOT',I0,X0,'DEFORMEE_MODALE',L0,IP0, & 'CHPOINT',I1,X1,' ',L1,MCHPOI) CALL REACT1(MRIGID,MCHPOI,MCHPO1) IF(IERR.NE.0) RETURN CALL ECCTAB(ITTBAS,'MOT',I0,X0,'REACTION_MODALE',L0,IP0, & 'CHPOINT',I1,X1,' ',L1,MCHPO1) GOTO 10 ENDIF * * On r{cup}re la base des pseudo-modes * TYPRET = ' ' CALL ACCTAB(ITBAS,'MOT',I0,X0,'PSEUDO_MODES',L0,IP0, & TYPRET,I1,X1,CHARRE,L1,ITPS) IF (ITPS.NE.0 .AND. TYPRET.EQ.'TABLE ') THEN IB = 0 20 CONTINUE TYPRET = ' ' IB = IB + 1 CALL ACCTAB(ITPS,'ENTIER',IB,X0,' ',L0,IP0, & TYPRET,I1,X1,CHARRE,L1,ITTBAS) IF (ITTBAS.NE.0 .AND. TYPRET.EQ.'TABLE ') THEN CALL ACCTAB(ITTBAS,'MOT',I0,X0,'DEPLACEMENT',L0,IP0, & 'CHPOINT',I1,X1,' ',L1,MCHPOI) CALL REACT1(MRIGID,MCHPOI,MCHPO1) IF(IERR.NE.0) RETURN CALL ECCTAB(ITTBAS,'MOT',I0,X0,'REACTION',L0,IP0, & 'CHPOINT',I1,X1,' ',L1,MCHPO1) GOTO 20 ENDIF ENDIF CALL ECROBJ('TABLE ',ITBAS) RETURN ENDIF CALL LIROBJ ('CHPOINT ',MCHPOI,1,IRETOU) CALL ACTOBJ ('CHPOINT ',MCHPOI,1) IF(IERR.NE.0) RETURN CALL REACT1(MRIGID,MCHPOI,MCHPO1) IF(IERR.NE.0) RETURN CALL ACTOBJ('CHPOINT ',MCHPO1,1) CALL ECROBJ('CHPOINT ',MCHPO1) RETURN * 1100 CONTINUE IB = 0 1120 CONTINUE TYPRET = ' ' IB = IB + 1 CALL ACCTAB(ITBAS,'ENTIER',IB,X0,' ',L0,IP0, & TYPRET,I1,X1,CHARRE,L1,ITTBAS) IF (ITTBAS.NE.0 .AND. TYPRET.EQ.'TABLE ') THEN IF (MRIGID.GT.0) THEN CALL ACCTAB(ITTBAS,'MOT',I0,X0,'DEFORMEE',L0,IP0, & 'CHPOINT',I1,X1,' ',L1,MCHPOI) CALL REACT1(MRIGID,MCHPOI,MCHPO1) IF(IERR.NE.0) RETURN CALL ECCTAB(ITTBAS,'MOT',I0,X0,'REACTION',L0,IP0, & 'CHPOINT',I1,X1,' ',L1,MCHPO1) ENDIF GOTO 1120 ENDIF CALL ECROBJ('TABLE ',ITBAS) RETURN END