C TOTEMP SOURCE PV 11/03/07 21:18:36 6885 SUBROUTINE TOTEMP IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C C======================================================================= C = CALCUL DU TEMPS TOTAL OU LES ORDONNEES D'UNE COURBE SONT = C = SUPERIEURES A UN SEUIL DONNE; LE SEUIL EST DEFINI PAR UN % DU = C = NIVEAU MAXIMA DES CHOC. = C = LA COURBE EST DANS UN OBJET DE TYPE EVOLUTIO; CET OBJET PEUT = C = AVOIR PLUSIEURS EVOLUTIO ELEMENTAIRES = C = = C = = C = SYNTAXE : TEMP = TOTE EVOL DECL ; = C = = C = LES ABSCISSES SONT CLASSEES DANS UN ORDRE STRICTEMENT CROISSANT = C = LE RESULTAT EST UN FLOTTANT. = C = = C = = C = TEMP : OBJET DE TYPE LISTREEL RESULTAT = C = EVOL : OBJET DE TYPE EVOLUTIO CONTENANT LES ENREGISTREMENTS= C = DECL : OBJET DE TYPE FLOTTANT % DU NIVEAU MAXIMA = C======================================================================= C -INC CCOPTIO -INC SMEVOLL -INC SMLREEL C REAL*8 NIVMAX C CALL LIROBJ('EVOLUTIO',IPEVO,1,IRET) IF(IERR.NE.0) GOTO 100 C CALL LIRREE(DECLE,0,IDECL) IF(IERR.NE.0) GOTO 100 IF((DECLE.LT.0.D0).OR.(DECLE.GT.100.D0))THEN MOTERR(1:8)='DECLENCH' REAERR(1)=DECLE REAERR(2)=0.D0 REAERR(3)=100.D0 CALL ERREUR(42) GOTO 100 ENDIF C MEVOLL=IPEVO SEGACT MEVOLL NC=IEVOLL(/1) JG = NC SEGINI MLREEL IPORE=MLREEL C C BOUCLE SUR LES COURBES C DO 1 IC=1,NC KEVOLL=IEVOLL(IC) SEGACT KEVOLL MLREE1=IPROGX SEGACT MLREE1 MLREE2=IPROGY SEGACT MLREE2 L1=MLREE1.PROG(/1) TEMP=0.D0 NP=0 NIVMAX=0.D0 C C CALCUL LE SEUIL DE DECLENCHEMENT C DO 10 I=1,L1 FORC=MLREE2.PROG(I) IF(ABS(FORC).GT.NIVMAX) NIVMAX=ABS(FORC) 10 CONTINUE SEUIL=NIVMAX*DECLE/100.D0 IF(IDECL.EQ.0) SEUIL=1.D-10 IF(IIMPI.EQ.1) WRITE(IOIMP,1000)SEUIL 1000 FORMAT(' SEUIL D''ACQUISITION : ',1PE12.5) C C ELIMINE LE CHOC A CHEVAL SUR LE DEBUT DE L'ENREGISTREMENT C MIN=1 MAX=L1 FORC=MLREE2.PROG(1) IF(ABS(FORC).GT.1.D-20) THEN IF(IIMPI.EQ.1) WRITE(IOIMP,1001) 1001 FORMAT(' CHOC A CHEVAL DEBUT BLOC') DO 11 I=2,L1 FORC=MLREE2.PROG(I) IF(ABS(FORC).LE.1.D-20) THEN MIN=I GOTO 12 ENDIF 11 CONTINUE C C MAIS GARDE UN SIGNAL JAMAIS NUL C TEMP=MLREE1.PROG(L1)-MLREE1.PROG(1) GOTO 21 ENDIF 12 CONTINUE C C ELIMINE LE CHOC A CHEVAL SUR LA FIN DE L'ENREGISTREMENT C FORC=MLREE2.PROG(L1) IF(ABS(FORC).GT.1.D-20) THEN IF(IIMPI.EQ.1) WRITE(IOIMP,1002) 1002 FORMAT(' CHOC A CHEVAL SUR FIN BLOC') DO 13 I=1,L1 FORC=MLREE2.PROG(L1-I) IF(ABS(FORC).LE.1.D-20) THEN MAX=L1-I GOTO 14 ENDIF 13 CONTINUE ENDIF 14 CONTINUE C C CALCUL LA DUREE OU LE SIGNAL EST SUPERIEUR AU SEUIL C DO 20 I=MIN,MAX FORC=MLREE2.PROG(I) IF(ABS(FORC).GT.SEUIL) THEN IF(IIMPI.EQ.1) WRITE(IOIMP,1003) FORC,I 1003 FORMAT(' VALEUR = ',1PE12.5,' > SEUIL AU PT ',I5) NP=1 PAS=MLREE1.PROG(I)-MLREE1.PROG(I-1) TEMP=TEMP+PAS ELSE IF(NP.EQ.1) THEN PAS=MLREE1.PROG(I)-MLREE1.PROG(I-1) TEMP=TEMP+PAS NP=0 ENDIF C 20 CONTINUE 21 CONTINUE C C DESACTIVE TOUT C SEGDES MLREE1,MLREE2 SEGDES KEVOLL C MLREEL=IPORE PROG(IC)=TEMP C 1 CONTINUE SEGDES MEVOLL SEGDES MLREEL C CALL ECROBJ('LISTREEL',IPORE) C 100 CONTINUE RETURN END