opchpi
C OPCHPI SOURCE CB215821 20/11/25 13:35:25 10792 SUBROUTINE OPCHPi(ithr) C Cette subroutine est l'interface de calcul sur les CHPOINTS C Elle peut etre appelee en parallele C Creation 07/12/2015 C Createur CB215821 C Historique des Corrections apportees : C - C - C - C Elle realise les operations suivantes : C IOPE = 1 PUISSANCE C = 2 PRODUIT C = 3 ADDITION C = 4 SOUSTRACTION C = 5 DIVISION C = 6 COSINUS C = 7 SINUS C = 8 TANGENTE C = 9 ARCOSINUS C = 10 ARCSINUS C = 11 ARCTANGENTE C = 12 EXPONENTIELLE C = 13 LOGARITHME C = 14 VALEUR ABSOLUE C = 15 COSINUS HYPERBOLIQUE C = 16 SINUS HYPERBOLIQUE C = 17 TANGENTE HYPERBOLIQUE C = 18 ERF FONCTION D'ERRREUR DE GAUSS C = 19 ERFC FONCTION D'ERRREUR complementaire DE GAUSS (1-erf(x)) C = 20 ARGCH (Fonction reciproque de COSH) C = 21 ARGSH (Fonction reciproque de SINH) C = 22 ARGTH (Fonction reciproque de TANH) C IARG = 0 ==> ARGUMENT I1I et X1I INUTILISES C IARG = 1 ==> ARGUMENT I1I UTILISE C IARG = 2 ==> ARGUMENT X1I UTILISE IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMCHPOI -INC CCREEL C Declaration du COMMON pour le travail en parallele COMMON/opchpc/NBTHR,IPOIN,IPOIN1,IERR1,NSOUPO,IOPE,IARG,I1I,X1I SEGMENT SERROR LOGICAL BERROR(NBTHR) ENDSEGMENT MCHPOI = IPOIN MCHPO1 = IPOIN1 SERROR = IERR1 I2 = I1I IARG2=IARG GOTO ( 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17, & 18,19,20,21,22 ),IOPE C Erreur si l'operation demandee n'est pas encore possible RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C PUISSANCE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 CONTINUE IF (IARG2 .EQ. 1) THEN C PUISSANCE ENTIERE DO 101 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 101 IC=1,NC DO 101 IB = IDEB,IFIN XTRA=MPOVA1.VPOCHA(IB,IC) SERROR.BERROR(ithr) = .TRUE. RETURN ELSE ENDIF 101 CONTINUE RETURN ELSE C PUISSANCE FLOTTANT C Verification si puissance ENTIERE possible IF ( XFLOT .LE. (XZPREC*ABS(X1I)*REAL(2.D0))) THEN IARG2=1 GOTO 1 ENDIF C Verification si SQRT possible XFLOT = ABS(X1I - REAL(0.5D0)) IF (XFLOT .LE. (XZPREC*ABS(X1I)*REAL(2.D0))) THEN C RACINE CARREE DO 102 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 102 IC=1,NC DO 102 IB = IDEB,IFIN XFLO = MPOVA1.VPOCHA(IB,IC) IF (XFLO .LT. REAL(0.D0)) THEN SERROR.BERROR(ithr) = .TRUE. RETURN ELSE MPOVAL.VPOCHA(IB,IC)=SQRT(MPOVA1.VPOCHA(IB,IC)) ENDIF 102 CONTINUE RETURN ELSE C CAS GENERAL DO 103 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 103 IC=1,NC DO 103 IB = IDEB,IFIN XFLO = MPOVA1.VPOCHA(IB,IC) IF ((ABS(XFLO) .LE. XPETIT) .AND. & (X1I.LT. REAL(0.D0))) THEN SERROR.BERROR(ithr) = .TRUE. RETURN ELSEIF (XFLO .LT. REAL(0.D0)) THEN SERROR.BERROR(ithr) = .TRUE. RETURN ELSE MPOVAL.VPOCHA(IB,IC)=XFLO ** X1I ENDIF 103 CONTINUE RETURN ENDIF ENDIF CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C PRODUIT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 2 CONTINUE C DANS LE CAS *0. ON SORT DIRECT CAR VPOCHA A SEULEMENT ETE SEGINI IF (ABS(X1I) .LE. XPETIT) RETURN DO 201 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 201 IC=1,NC DO 201 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=MPOVA1.VPOCHA(IB,IC) * X1I 201 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ADDITION CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 3 CONTINUE DO 301 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 301 IC=1,NC DO 301 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=MPOVA1.VPOCHA(IB,IC) + X1I 301 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SOUSTRACTION CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 4 CONTINUE DO 401 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 IF (I1I .EQ. 1) THEN C Cas CHP1 - FLO1 DO 402 IC=1,NC DO 402 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=MPOVA1.VPOCHA(IB,IC) - X1I 402 CONTINUE ELSE C Cas FLO1 - CHP1 DO 403 IC=1,NC DO 403 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=X1I - MPOVA1.VPOCHA(IB,IC) 403 CONTINUE ENDIF 401 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C DIVISION CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 5 CONTINUE DO 501 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 501 IC=1,NC DO 501 IB = IDEB,IFIN IF (ABS(X1I) .GT. XPETIT) THEN MPOVAL.VPOCHA(IB,IC)=MPOVA1.VPOCHA(IB,IC) / X1I ELSE SERROR.BERROR(ithr) = .TRUE. RETURN ENDIF 501 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C COSINUS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 6 CONTINUE XVNOC = XPI / REAL(180.D0) DO 601 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 601 IC=1,NC DO 601 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=COS(XVNOC * MPOVA1.VPOCHA(IB,IC)) 601 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SINUS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 7 CONTINUE XVNOC = XPI / REAL(180.D0) DO 701 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 701 IC=1,NC DO 701 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=SIN(XVNOC * MPOVA1.VPOCHA(IB,IC)) 701 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C TANGENTE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 8 CONTINUE XVNOC = XPI / REAL(180.D0) DO 801 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 801 IC=1,NC DO 801 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=TAN(XVNOC * MPOVA1.VPOCHA(IB,IC)) 801 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ARCCOS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 9 CONTINUE XVNOC = REAL(180.D0) / XPI DO 901 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 901 IC=1,NC DO 901 IB = IDEB,IFIN X2 = MPOVA1.VPOCHA(IB,IC) IF ((X2 .GE. -1.) .AND. (X2 .LE. 1.)) THEN MPOVAL.VPOCHA(IB,IC)=XVNOC * ACOS(X2) ELSE SERROR.BERROR(ithr) = .TRUE. RETURN ENDIF 901 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ARCSIN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 10 CONTINUE XVNOC = REAL(180.D0) / XPI DO 1001 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 1001 IC=1,NC DO 1001 IB = IDEB,IFIN X2 = MPOVA1.VPOCHA(IB,IC) IF ((X2 .GE. -1.) .AND. (X2 .LE. 1.)) THEN MPOVAL.VPOCHA(IB,IC)=XVNOC * ASIN(X2) ELSE SERROR.BERROR(ithr) = .TRUE. RETURN ENDIF 1001 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ARCTAN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 11 CONTINUE XVNOC = REAL(180.D0) / XPI DO 1101 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 1101 IC=1,NC DO 1101 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=XVNOC * ATAN(MPOVA1.VPOCHA(IB,IC)) 1101 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C EXPONENTIELLE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 12 CONTINUE DO 1201 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 1201 IC=1,NC DO 1201 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=EXP(MPOVA1.VPOCHA(IB,IC)) 1201 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C LOGARITHME CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 13 CONTINUE DO 1301 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 1301 IC=1,NC DO 1301 IB = IDEB,IFIN X2 = MPOVA1.VPOCHA(IB,IC) IF (X2 .GE. XPETIT) THEN MPOVAL.VPOCHA(IB,IC)=LOG(X2) ELSE SERROR.BERROR(ithr) = .TRUE. RETURN ENDIF 1301 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C VALEUR ABSOLUE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 14 CONTINUE DO 1401 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 1401 IC=1,NC DO 1401 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=ABS(MPOVA1.VPOCHA(IB,IC)) 1401 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C COSINUS HYPERBOLIQUE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 15 CONTINUE DO 1501 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 1501 IC=1,NC DO 1501 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=COSH(MPOVA1.VPOCHA(IB,IC)) 1501 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SINUS HYPERBOLIQUE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 16 CONTINUE DO 1601 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 1601 IC=1,NC DO 1601 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=SINH(MPOVA1.VPOCHA(IB,IC)) 1601 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C TANGENTE HYPERBOLIQUE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 17 CONTINUE DO 1701 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 1701 IC=1,NC DO 1701 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=TANH(MPOVA1.VPOCHA(IB,IC)) 1701 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ERF (Fonction Erreur) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 18 CONTINUE DO 1801 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 1801 IC=1,NC DO 1801 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=ERF(MPOVA1.VPOCHA(IB,IC)) 1801 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ERFC (Fonction Erreur Complementaire 1-ERF(x)) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 19 CONTINUE DO 1901 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 1901 IC=1,NC DO 1901 IB = IDEB,IFIN MPOVAL.VPOCHA(IB,IC)=ERFC(MPOVA1.VPOCHA(IB,IC)) 1901 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ARCOSH CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 20 CONTINUE DO 2001 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 2001 IC=1,NC DO 2001 IB = IDEB,IFIN X2 = MPOVA1.VPOCHA(IB,IC) IF (X2 .GE. 1.) THEN MPOVAL.VPOCHA(IB,IC)=LOG(X2 + SQRT((X2**2) - 1.)) ELSE SERROR.BERROR(ithr) = .TRUE. RETURN ENDIF 2001 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ARSINH CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 21 CONTINUE DO 2101 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 2101 IC=1,NC DO 2101 IB = IDEB,IFIN X2 = MPOVA1.VPOCHA(IB,IC) MPOVAL.VPOCHA(IB,IC)=LOG(X2 + SQRT((X2**2) + 1.)) 2101 CONTINUE RETURN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ARTANH CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 22 CONTINUE DO 2201 IA=1,NSOUPO MSOUPO=MCHPOI.IPCHP(IA) MSOUP1=MCHPO1.IPCHP(IA) MPOVAL=MSOUPO.IPOVAL MPOVA1=MSOUP1.IPOVAL N =MPOVAL.VPOCHA(/1) NC=MPOVAL.VPOCHA(/2) IRES = MOD(N,NBTHR) IF (IRES .EQ. 0) THEN ILON = N / NBTHR IDEB = (ithr -1)* ILON + 1 ELSE IF (ithr .LE. IRES) THEN ILON = (N / NBTHR) + 1 IDEB = (ithr -1)* ILON + 1 ELSE ILON = N / NBTHR IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1 ENDIF ENDIF IFIN = IDEB + ILON - 1 DO 2201 IC=1,NC DO 2201 IB = IDEB,IFIN X2 = MPOVA1.VPOCHA(IB,IC) IF ((X2 .GT. -1.) .AND. (X2 .LT. 1.)) THEN MPOVAL.VPOCHA(IB,IC)=0.5*LOG((1. + X2) / (1. - X2)) ELSE SERROR.BERROR(ithr) = .TRUE. RETURN ENDIF 2201 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales