1 : C PLACE3 SOURCE CHAT 05/01/13 02:14:36 5004 2 : SUBROUTINE PLACE3 (XLIST,IL,JL,RR, IR,AR) 3 : ************************************************************************ 4 : * 5 : * P L A C E 3 6 : * ----------- 7 : * 8 : * FONCTION: 9 : * --------- 10 : * 11 : * DONNER LA POSITION D'UN REEL DANS UNE LISTE DE REELS ORDONNES 12 : * EN ORDRE STRICTEMENT CROISSANT. 13 : * LE REEL PEUT NE PAS APPARTENIR A LA LISTE. 14 : * 15 : * MODULES UTILISES: 16 : * ----------------- 17 : * 18 : IMPLICIT INTEGER(I-N) 19 : -INC CCREEL 20 : * 21 : * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) 22 : * ----------- 23 : * 24 : * XLIST (E) LISTE DE REELS EN ORDRE STRICTEMENT CROISSANT. 25 : * IL (E) DEBUT DE LA PARTIE UTILE DE "XLIST". 26 : * JL (E) FIN DE LA PARTIE UTILE DE "XLIST". 27 : * RR (E) REEL A POSITIONNER DANS LA PARTIE (IL,JL) DE "XLIST". 28 : * IR (S) POSITION, DANS LA LISTE, DU REEL IMMEDIATEMENT 29 : * INFERIEUR (OU EGAL) A "RR". 30 : * = (IL-1) SI RR < XLIST(IL) 31 : * = JL SI RR > XLIST(JL) 32 : * 33 : * AR (S) DISTANCE RELATIVE DE "RR" AVEC SON VOISIN DANS LA 34 : * LISTE. PLUS PRECISEMENT: 35 : * 36 : * RR - XLIST(IR) 37 : * AR = ----------------------- 38 : * XLIST(IR+1) - XLIST(IR) 39 : * 40 : * XLIST(IL) - RR 41 : * OU ----------------------- SI IR=IL-1 42 : * MIN(|XLIST(IL)|,|RR|) 43 : * 44 : * RR - XLIST(JL) 45 : * OU ----------------------- SI IR=JL 46 : * MIN(|RR|,|XLIST(JL)|) 47 : * 48 : * RQ: RR = (1-AR)*XLIST(IR) + AR*XLIST(IR+1) 49 : * (SAUF SI "IR" VAUT "(IL-1)" OU "JL"). 50 : * 51 : INTEGER IL,JL,IR 52 : REAL*8 XLIST(*),RR,AR 53 : * 54 : * VARIABLES: 55 : * ---------- 56 : * 57 : REAL*8 RR1 58 : * 59 : * MODE DE FONCTIONNEMENT: 60 : * ----------------------- 61 : * 62 : * L'INDICE "IL" EST SUPPOSE BIEN CHOISI POUR QU'UNE RECHERCHE PAS A 63 : * PAS DANS LE SENS DES INDICES CROISSANTS SOIT LA METHODE LA PLUS 64 : * RAPIDE POUR POSITIONNER "RR". 65 : * 66 : * AUTEUR, DATE DE CREATION: 67 : * ------------------------- 68 : * 69 : * PASCAL MANIGOT 24 MARS 1988 70 : * 71 : * LANGAGE: 72 : * -------- 73 : * 74 : * FORTRAN77 75 : * 76 : ************************************************************************ 77 : * 78 : IR = JL 79 : * 80 : DO 100 I=IL,JL 81 : IF (XLIST(I) .GT. RR) THEN 82 : IR = I - 1 83 : * EXIT 84 : GOTO 102 85 : END IF 86 : 100 CONTINUE 87 : * END DO 88 : 102 CONTINUE 89 : * 90 : IF (IR .EQ. (IL-1) ) THEN 91 : RR1 = MIN( ABS(RR),ABS(XLIST(IL)) ) 92 : RR1 = MAX(RR1,XPETIT) 93 : AR = (XLIST(IL) - RR) / RR1 94 : ELSE IF (IR .EQ. JL) THEN 95 : RR1 = MIN( ABS(RR),ABS(XLIST(JL)) ) 96 : RR1 = MAX(RR1,XPETIT) 97 : AR = (RR - XLIST(JL) ) / RR1 98 : ELSE 99 : AR = (RR - XLIST(IR) ) / (XLIST(IR+1) - XLIST(IR) ) 100 : END IF 101 : * 102 : END 103 : 104 : 105 :
© Cast3M 2003 - All rights reserved.
Disclaimer