Download yofxcu.eso

Back to the list

   1 : C YOFXCU    SOURCE    CHAT      05/01/13    04:20:13     5004           
   2 :       SUBROUTINE YOFXCU(X,CURVE,NCURV,  Y,DYSDX,KERRE)
   3 : C
   4 : C============================================================
   5 : C  Routine qui lit la valeur d'une courbe et de sa derivee
   6 : C  quand on lui donne l'abscisse
   7 : C
   8 : C  ENTREES:
   9 : C    NCURV : Nombre de points de la courbe
  10 : C    X     : Abscisse
  11 : C    CURVE : Courbe
  12 : C
  13 : C SORTIES
  14 : C    Y     : Valeur de la fonction en X
  15 : C    DYSDX : Valeur de la derivee en X
  16 : C
  17 : C WARNING  : On suppose que les abscisses varient de facon monotone
  18 : C            (croissante OU decroissante)
  19 : C=============================================================
  20 : 
  21 :       IMPLICIT INTEGER(I-N)
  22 :       IMPLICIT REAL*8(A-H,O-Z)
  23 :       DIMENSION CURVE(2,NCURV)
  24 :       PARAMETER(ZERO=0.D0)
  25 : C
  26 :       IF(CURVE(1,2)-CURVE(1,1).GT.0.D0)THEN
  27 : C
  28 : C    CAS X CROISSANT
  29 : C
  30 :         IF (X.LT.CURVE(1,1)) THEN
  31 :           KERRE=32
  32 :           Y=0.D0
  33 :           DYSDX=ZERO
  34 :         ELSE
  35 :           KERRE=0
  36 :           IF (X.EQ.CURVE(1,1)) THEN
  37 :             Y=CURVE(2,1)
  38 :             DYSDX=(CURVE(2,2)-CURVE(2,1))/(CURVE(1,2)-CURVE(1,1))
  39 :           ELSEIF(X.GE.CURVE(1,NCURV))THEN
  40 :             Y=CURVE(2,NCURV)
  41 :             DYSDX=ZERO
  42 :           ELSE
  43 :             DO IE1=2,NCURV
  44 :               IF (X.LE.CURVE(1,IE1)) GOTO 1
  45 :             ENDDO
  46 :  1          DYSDX=(CURVE(2,IE1)-CURVE(2,IE1-1))/
  47 :      >            (CURVE(1,IE1)-CURVE(1,IE1-1))
  48 :             Y=CURVE(2,IE1)+DYSDX*(X-CURVE(1,IE1))
  49 :           ENDIF
  50 :         ENDIF
  51 : C
  52 :       ELSE
  53 : C
  54 : C    CAS X DECROISSANT
  55 : C
  56 :         IF (X.GT.CURVE(1,1)) THEN
  57 :           KERRE=32
  58 :           Y=0.D0
  59 :           DYSDX=ZERO
  60 :         ELSE
  61 :           KERRE=0
  62 :           IF (X.EQ.CURVE(1,1)) THEN
  63 :             Y=CURVE(2,1)
  64 :             DYSDX=(CURVE(2,2)-CURVE(2,1))/(CURVE(1,2)-CURVE(1,1))
  65 :           ELSEIF(X.LE.CURVE(1,NCURV))THEN
  66 :             Y=CURVE(2,NCURV)
  67 :             DYSDX=ZERO
  68 :           ELSE
  69 :             DO IE1=2,NCURV
  70 :               IF (X.GE.CURVE(1,IE1)) GOTO 2
  71 :             ENDDO
  72 :  2          DYSDX=(CURVE(2,IE1)-CURVE(2,IE1-1))/
  73 :      >            (CURVE(1,IE1)-CURVE(1,IE1-1))
  74 :             Y=CURVE(2,IE1)+DYSDX*(X-CURVE(1,IE1))
  75 :           ENDIF
  76 :         ENDIF
  77 : C
  78 :       ENDIF
  79 : C
  80 :       RETURN
  81 :       END
  82 : 
  83 :  
  84 :  

© Cast3M 2003 - All rights reserved.
Disclaimer