C FDT SOURCE OF166741 25/02/20 21:16:36 12165 SUBROUTINE FDT C C************************************************************** C C SUBROUTINE ASSOCIE A L OPERATEUR FDT C C 26/06/86 AUTEUR D. BROCHARD (VIBR POSTE 6994) C C CREATION D UN OBJET EVOLUTION A PARTIR D UN PROG (TIROIR) C C S Y N T A X E C ------------- C C EVOL = FDT MOT ('CONS' DT FTI ) C ( ) C ('NOCO' ( 'COUP' TIFTI ) ) C ( ( ) ) C ( ( TFT ) ) C ( ) C ( PROG1 PROG2 ) C C MOT TYPE DE DONNEE (ACCE,DEPL,ETC...) C CONS SIGNAL A PAS CONSTANT C DT OBJET FLOTTANT PAS DE TEMPS C FTI OBJET LISTREEL VALEUR DU SIGNAL C NOCO SIGNAL A PAS NON CONSTANT C COUP MOT INDI QUANT QUE LE SIGNAL EST RENTRE C SOUS LA FORME DE COUPLES TIFTI(OBJET LISTREEL) C TFT OBJET LISTREEL CONTENANT T(I),I=1,N PUIS C F(TI),I=1,N C PROG1,PROG2 OBJETS DE TYPE LISTREEL . L UN DES DEUX CONTIENT C UN SEUL NOMBRE:DT C SI DT > 0 SIGNAL A PAS CONSTANT DONT LES VALEURS C SONT DANS PROG2 C SI DT < 0 SIGNAL A PAS NON CONSTANT VALEURS DANS C PROG2 : T(I),I=1,N PUIS F(TI),I=1,N C C C******************************************************************* C C C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCGEOME -INC SMEVOLL -INC SMLREEL CHARACTER*72 TI CHARACTER*4 MOT1,MOT2,MOT3 CHARACTER*4 NOMC(2) C DATA NOMC/'CONS','NOCO'/ C C LNOMC=2 C CALL LIRCHA(MOT1,1,IRETOU) CALL LIRCHA(MOT2,0,IRETOU) C C IF(IRETOU.EQ.0) GOTO 300 C CALL PLACE(NOMC,LNOMC,IMOT,MOT2) C C IF(IMOT.EQ.0) GOTO 1000 GOTO (101,102),IMOT C C 101 CONTINUE C C PAS CONSTANT DT FTI C CALL LIRREE(DFLOT,1,IRETOU) DT=DFLOT CALL LIROBJ('LISTREEL',IPO,1,IRETOU) MLREEL=IPO C C 350 CONTINUE SEGACT MLREEL LT=MLREEL.PROG(/1) JG=LT SEGINI MLREE1 T=0.D0 DO 110 I=1,LT MLREE1.PROG(I)=T T=T+DT 110 CONTINUE C C C IPX=MLREE1 IPY=MLREEL SEGDES MLREEL,MLREE1 GOTO 200 C C 102 CONTINUE C C PAS NON CONSTANT C CALL LIRCHA(MOT3,0,IRETOU) C IF(IRETOU.EQ.0) GOTO 150 C C ON A LU COUPLE LE PROG CONTIENT TI,FTI C CALL LIROBJ('LISTREEL',IPO,1,IRETOU) MLREEL=IPO SEGACT MLREEL LTFT=PROG(/1) LT=LTFT/2 JG=LT SEGINI MLREE1 SEGINI MLREE2 C DO 103 I=1,LT I1=2*I-1 I2=2*I MLREE1.PROG(I)=PROG(I1) MLREE2.PROG(I)=PROG(I2) 103 CONTINUE C C 160 CONTINUE LT1=MLREE1.PROG(/1)-1 DO 104 I=1,LT1 IF(MLREE1.PROG(I).GT.MLREE1.PROG(I+1)) GOTO 105 104 CONTINUE IPX=MLREE1 IPY=MLREE2 SEGDES MLREE1,MLREE2,MLREEL GOTO 200 C C 105 CONTINUE C C ERREUR C CALL ERREUR(285) RETURN C C 150 CONTINUE C C ON LIT UN PROG CONTENANT TI,I=1,N PUIS FTI,I=1,N C CALL LIROBJ('LISTREEL',IPO,1,IRETOU) MLREEL=IPO 360 CONTINUE SEGACT MLREEL LTFT=PROG(/1) LT=LTFT/2 JG=LT SEGINI MLREE1 SEGINI MLREE2 DO 151 I=1,LT I1=I+LT MLREE1.PROG(I)=PROG(I) MLREE2.PROG(I)=PROG(I1) 151 CONTINUE C C GOTO 160 C C 300 CONTINUE C C TIROIR ON FOURNIT DEUX PROG UN DES DEUX CONTIENT DT C CALL LIROBJ('LISTREEL',IPA,1,IRETOU) CALL LIROBJ('LISTREEL',IPB,1,IRETOU) MLREE1=IPA MLREE2=IPB SEGACT MLREE1 IF(MLREE1.PROG(/1).NE.1) GOTO 301 310 DT=MLREE1.PROG(1) SEGDES MLREE1 MLREEL=MLREE2 IF(DT.NE.0) GOTO 350 GOTO 360 C C 301 CONTINUE SEGDES MLREE1 MLREE1=IPB MLREE2=IPA SEGACT MLREE1 IF(MLREE1.PROG(/1).NE.1) GOTO 302 GOTO 310 C C 302 CALL ERREUR(294) RETURN 200 CONTINUE C C INITIALISATION DE L OBJET EVOLUTION C N=1 SEGINI MEVOLL SEGINI KEVOLL TYPX='LISTREEL' TYPY='LISTREEL' IPROGX=IPX IPROGY=IPY NOMEVX='TEMPS SEC' NOMEVY=MOT1 C ITYEVO='REEL' NUMEVX=IDCOUL NUMEVY='REEL' C SEGDES KEVOLL C TI(1:72)=TITREE IEVTEX=TI IEVOLL(1)=KEVOLL C SEGDES MEVOLL C CALL ECROBJ('EVOLUTIO',MEVOLL) RETURN C 1000 CONTINUE moterr(1:4)=mot2 call erreur(7) CALL GINT2 RETURN C END