Download extr52.eso

Back to the list

   1 : C EXTR52    SOURCE    CHAT      05/01/12    23:52:48     5004           
   2 :         SUBROUTINE EXTR52(IPOINT,MINI,IPOSI)
   3 : 
   4 : **********************************************************************
   5 : *
   6 : *   Extraction de la borne inf. ou sup. d'un objet NUAGE selon
   7 : *   les donnees du nom d'une composante reelle et de sa valeur
   8 : *
   9 : *    INTEGER   (E)   IPOINT   pointeur sur un objet NUAGE
  10 : *    LOGICAL   (E)   BORNINF  logique valant vrai si l'on veut la
  11 : *                             borne inf. du nuage
  12 : *    FLOTTANT  (E)   XVAL     valeur de la composante reelle pour
  13 : *                             laquelle on desire le n-uplet inferieur
  14 : *                             ou superieur
  15 : *    INTEGER   (E)   IPOSI    Position informatique de la composante
  16 : *                             reelle du nuage
  17 : *
  18 : ***********************************************************************
  19 : 
  20 :       IMPLICIT INTEGER(I-N)
  21 : -INC SMNUAGE
  22 : 
  23 :         REAL*8      XVAL,XVAL1,XVAL2,XVAL3
  24 :         INTEGER     IPOINT,IPOSI,IPOSI3
  25 :         LOGICAL     MINI,MAXI
  26 :         CHARACTER*8 TYPR
  27 : 
  28 :         MAXI = .NOT.MINI
  29 : 
  30 :         MNUAG1 = IPOINT
  31 :         SEGACT MNUAG1
  32 :         IDIM1 = MNUAG1.NUANOM(/2)
  33 :         TYPR = MNUAG1.NUATYP(IPOSI)
  34 :         IF (TYPR.NE.'FLOTTANT') THEN
  35 :            SEGDES MNUAG1
  36 : *- Le nom de la composante ne correspond pas a des variables reelles -
  36 :            CALL ERREUR(671)
  37 :            RETURN
  38 :         ENDIF
  39 :         NUAVF1 = MNUAG1.NUAPOI(IPOSI)
  40 :         SEGACT NUAVF1
  41 :         IDIM2 = NUAVF1.NUAFLO(/1)
  42 :         XVAL1 = NUAVF1.NUAFLO(1)
  43 :         XVAL2 = NUAVF1.NUAFLO(2)
  44 :         IPOSI3 = 1
  45 :         XVAL3 = XVAL1
  46 :         IF (XVAL2.LE.XVAL3.AND.MINI) THEN
  47 :             IPOSI3 = 2
  48 :             XVAL3 = XVAL2
  49 :         ENDIF
  50 :         IF (XVAL2.GE.XVAL3.AND.MAXI) THEN
  51 :             IPOSI3 = 2
  52 :             XVAL3 = XVAL2
  53 :         ENDIF
  54 : 
  55 :         DO 11 I=3,IDIM2
  56 :            XVAL1 = XVAL2
  57 :            XVAL2 = NUAVF1.NUAFLO(I)
  58 :            IF (XVAL2.LE.XVAL3.AND.MINI) THEN
  59 :                IPOSI3 = I
  60 :                XVAL3 = XVAL2
  61 :            ENDIF
  62 :            IF (XVAL2.GE.XVAL3.AND.MAXI) THEN
  63 :                IPOSI3 = I
  64 :                XVAL3 = XVAL2
  65 :            ENDIF
  66 :  11     CONTINUE
  67 : 
  68 :         SEGDES NUAVF1
  69 : 
  70 :         NVAR = IDIM1
  71 :         NBCOUP = 1
  72 :         SEGINI MNUAGE
  73 :         IPO2 = MNUAGE
  74 :         DO 10 I=1,IDIM1
  75 :            NUANOM(I)=MNUAG1.NUANOM(I)
  76 :            NUATYP(I)=MNUAG1.NUATYP(I)
  77 :            IF (NUATYP(I).EQ.'INTEGER ') THEN
  78 :               SEGINI NUAVIN
  79 :               NUAPOI(I) = NUAVIN
  80 :               NUAVI1 = MNUAG1.NUAPOI(I)
  81 :               SEGACT NUAVI1
  82 :               NUAINT(1) = NUAVI1.NUAINT(IPOSI3)
  83 :               SEGDES NUAVI1
  84 :               SEGDES NUAVIN
  85 :            ELSE IF (NUATYP(I).EQ.'FLOTTANT') THEN
  86 :               SEGINI NUAVFL
  87 :               NUAPOI(I) = NUAVFL
  88 :               NUAVF1 = MNUAG1.NUAPOI(I)
  89 :               SEGACT NUAVF1
  90 :               NUAFLO(1) = NUAVF1.NUAFLO(IPOSI3)
  91 :               SEGDES NUAVF1
  92 :               SEGDES NUAVFL
  93 :            ELSE IF (NUATYP(I).EQ.'MOT     ') THEN
  94 :               SEGINI NUAVMO
  95 :               NUAPOI(I) = NUAVMO
  96 :               NUAVM1 = MNUAG1.NUAPOI(I)
  97 :               SEGACT NUAVM1
  98 :               NUAMOT(1) = NUAVM1.NUAMOT(IPOSI3)
  99 :               SEGDES NUAVM1
 100 :               SEGDES NUAVMO
 101 :            ELSE IF (NUATYP(I).EQ.'LOGIQUE ') THEN
 102 :               SEGINI NUAVLO
 103 :               NUAPOI(I) = NUAVLO
 104 :               NUAVL1 = MNUAG1.NUAPOI(I)
 105 :               SEGACT NUAVL1
 106 :               NUALOG(1) = NUAVL1.NUALOG(IPOSI3)
 107 :               SEGDES NUAVL1
 108 :               SEGDES NUAVLO
 109 :            ELSE
 110 :               SEGINI NUAVIN
 111 :               NUAPOI(I) = NUAVIN
 112 :               NUAVI1 =  MNUAG1.NUAPOI(I)
 113 :               SEGACT NUAVI1
 114 :               NUAINT(1) = NUAVI1.NUAINT(IPOSI3)
 115 :               SEGDES NUAVI1
 116 :               SEGDES NUAVIN
 117 :            END IF
 118 :  10     CONTINUE
 119 : 
 120 :         SEGDES MNUAGE
 121 :         SEGDES MNUAG1
 121 :         CALL ECROBJ('NUAGE   ',IPO2)
 122 :         RETURN
 123 :         END
 124 : 
 125 :  

© Cast3M 2003 - All rights reserved.
Disclaimer