C OPEVOL SOURCE BP208322 12/07/10 21:15:24 7432 C SUBROUTINE OPEVOL(IPO1,ICALC, IPO2) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) ************************************************************************ * * O P E V O L * ----------- * * FONCTION: * --------- * * EFFECTUE DIVERSES OPERATIONS SUR UNE EVOLUTION * * MODULES UTILISES: * ----------------- * -INC CCOPTIO -INC CCREEL -INC SMEVOLL -INC SMLREEL * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * IPO1 (E) POINTEUR SUR UNE EVOLUTION. * ICALC (E) NUMERO DU TYPE DE CALCUL: * = 1 COSINUS. * = 2 SINUS. * = 7 EXPONENTIELLE. * = 8 LOGARITHME. * = 9 VALEUR ABSOLUE. * =10 COSINUS HYPERBOLIQUE * =11 SINUS HYPERBOLIQUE * =12 TANGENTE HYPERBOLIQUE * =13 FONCTION D'ERREUR ERF * IPO2 (S) POINTEUR SUR L EVOLUTION RESULTAT. * = 0 , SI OPERATION IMPOSSIBLE. * * AUTEUR, DATE DE CREATION: * ------------------------- * * BP 06/07/2012 : adaptation de OPLREE.eso * * LANGAGE: * -------- * * ESOPE + FORTRAN77 * ************************************************************************ * SEGMENT MEVOLL MEVOLL = IPO1 segact,MEVOLL segini,MEVOL1=MEVOLL IPO2 = MEVOL1 N=IEVOLL(/1) ***** Boucle sur les EVOLUTIONS ELEMENTAIRES ************************** DO 999 K=1,N * SEGMENT KEVOLL KEVOLL = IEVOLL(K) SEGACT,KEVOLL SEGINI,KEVOL1=KEVOLL MEVOL1.IEVOLL(K)=KEVOL1 * LISTREEL MLREEL = KEVOLL.IPROGY SEGACT MLREEL LDIM = PROG(/1) JG = LDIM SEGINI MLREE1 KEVOL1.IPROGY=MLREE1 * recopie de OPLREE.eso IF (ICALC.EQ.1) THEN DO 10 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = COS(XX * XPI / 180.D0) 10 CONTINUE ELSE IF (ICALC.EQ.2) THEN DO 20 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = SIN(XX * XPI / 180.D0) 20 CONTINUE ELSE IF (ICALC.EQ.7) THEN DO 70 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = EXP(XX) 70 CONTINUE ELSE IF (ICALC.EQ.8) THEN DO 80 I = 1,LDIM XX = MLREEL.PROG(I) IF (XX.GT.0.D0) THEN MLREE1.PROG(I) = LOG(XX) ELSE CALL ERREUR (36) *+* NUMERO D'ERREUR PAS FIGNOLE. IPO2 = 0 RETURN END IF 80 CONTINUE ELSE IF (ICALC.EQ.9) THEN DO 90 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = ABS(XX) 90 CONTINUE ELSE IF (ICALC.EQ.10) THEN DO 100 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = COSH(XX) 100 CONTINUE ELSE IF (ICALC.EQ.11) THEN DO 110 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = SINH(XX) 110 CONTINUE ELSE IF (ICALC.EQ.12) THEN DO 120 I = 1,LDIM XX = MLREEL.PROG(I) MLREE1.PROG(I) = TANH(XX) 120 CONTINUE ELSE IF (ICALC.EQ.13) THEN DO 130 I = 1,LDIM XX = MLREEL.PROG(I) YY = ERGAUS(XX) MLREE1.PROG(I) = YY 130 CONTINUE ELSE * EN FAIT, CE CAS NE PEUT PAS ARRIVER EN DEHORS DE LA PERIODE * DE TEST. IPO2 = 0 ENDIF * SEGDES,MLREE1,MLREEL SEGDES,KEVOL1,KEVOLL 999 CONTINUE ***** fin de Boucle sur les EVOLUTIONS ELEMENTAIRES ******************** segdes,MEVOL1,MEVOLL * END