Download @vecoul.procedur

Back to the list

   1 : * @VECOUL   PROCEDUR  GOUNAND   13/01/22    21:15:08     7678           
   2 : * @VECOUL   PROCEDUR  AG143209  10/09/29    21:15:01     6769           
   3 : * @VECOUL   PROCEDUR  AG143209  10/08/31    00:00:00     0000
   4 : ************************************************************************
   5 : *  Procedure qui construit un objet VCTOT1 (type VECTEUR) 
   6 : *  de couleur variable en fonction de sa norme 
   7 : *  à partir d'un champs de vecteur CH1 (type CHPOINT).
   8 : *
   9 : *  L'objet VCTOT1 est constitué de 10 sous-vecteurs de couleurs
  10 : *  'VIOL' 'AZUR' 'BLEU' 'TURQ' 'OCEA' 'VERT' 'OLIV' 'JAUN' 'ORAN' 'ROUG' 
  11 : *  qui correspondent a 10 intervalles de la plage de la norme 
  12 : *  (échelle linéaire dans le sens croissant).
  13 : *
  14 : *  Les composantes des sous-vecteurs de couleurs sont renommées pour 
  15 : *  permettre l'affichage de la valeur moyenne de la norme du vecteur
  16 : *  associée à sa couleur lors du tracé graphique.
  17 : *
  18 : *  Il est possible d'extraire un pourcentage (VRED1 x 100) % 
  19 : *  (si VRED1 dans [0,1]) ou un nombre donné VRED1  (si VRED1 > 1) de ces
  20 : *  vecteurs : aléatoirement si MOT1 = ALTR, régulièrement sinon.
  21 : *
  22 : *  Postraitement TRAC VCTOT1 MAILLAGE ;
  23 : *
  24 : *  Syntaxe :
  25 : *  ---------
  26 : *            VCTOT1 = @VECOUL CH1 AMPL1 CH1  (LMOT1) (MOT1) (VRED1) ;
  27 : *
  28 : *  Entrée  :
  29 : *  ---------
  30 : *    CH1      : Champs de vecteur (type CHPOINT)
  31 : *    AMPL1    : Facteur d'amplification (FLOTTANT) OBLIGATOIRE
  32 : *    LMOT1    : Préciser les noms de composantes voulues (type LISTMOTS)
  33 : *    MOT1     : Extraction aléatoire si MOT1 = ALTR, régulière sinon
  34 : *    VRED1    : Pourcentage ([0,1]) ou nombre (>1) de vecteurs
  35 : *               extraits (type FLOTTANT)
  36 : *
  37 : *  Sortie  :
  38 : *  ---------
  39 : *    VCTOT1   : Vecteur (VECTEUR) composé de 10 sous-type vecteur de 
  40 : *               différentes couleurs.
  41 : *
  42 : ************************************************************************
  43 : * Remarques : 
  44 : *        -  Le facteur d'amplification AMPL1 est une entrée obligatoire
  45 : *        -  Si VRED1 < 0., on extrait 100 %
  46 : *        -  Extraire un faible pourcentage sur un petit nombre de
  47 : *            vecteurs peut fournir un résultat vide avec l'option
  48 : *            aléatoire (MOT1 = ALTR) alors qu'au moins 1 vecteurs par
  49 : *            couleur est extrait avec l'option régulière (gounand:
  50 : *            cette dernière remarque n'est plus valable.
  51 : * 03/12/2012 : recodage et améliorations robustesse par S. Gounand
  52 : *              ajout LMOT1 et possibilité de donner le nombre de
  53 : *              vecteurs voulus, à la place du pourcentage.
  54 : ************************************************************************
  55 : 'DEBPROC' @VECOUL CH1*'CHPOINT' AMPL1*'FLOTTANT' ;
  56 : vdim = 'VALEUR' 'DIME' ;
  57 : 'SI' ('NON' ('DANS' ('LECT' vdim) ('LECT' 2 3))) ;
  58 :    cherr  = 'CHAINE' 'This procedure only works in 2 or 3 dimensions' ;
  59 :    'ERREUR' cherr ;
  60 : 'FINSI' ;   
  61 : * Lecture des noms de composantes comme pour l'opérateur VECT
  62 : 'ARGUMENT' LMOT1/'LISTMOTS' ;
  63 : llmot = 'EXISTE' LMOT1 ;
  64 : 'SI' llmot ;
  65 :    vmot = 'DIME' lmot1 ;
  66 :    'SI' ('NEG' vmot vdim) ;
  67 :       cherr = 'CHAINE' 'The given LISTMOTS is not of dimension ' vdim ;
  68 :       'ERREUR' cherr ;
  69 :    'FINSI' ;      
  70 : 'FINSI' ;
  71 : *
  72 : 'ARGUMENT' MOT1/'MOT' VRED1/'FLOTTANT' ;
  73 : * Tests lecture MOT1 et VRED1
  74 : * Sinon options par defaut
  75 : lred = 'EXISTE' vred1 ;
  76 : 'SI' lred ;
  77 : * Vérif
  78 :    lred = ('>EG' vred1 0.) ;
  79 : 'FINSI' ;
  80 : lalea = 'EGA' MOT1 'ALTR' ;
  81 : * Extraction des noms des composantes de CH1 (2D ou 3D)
  82 : 'SI' llmot ;
  83 :    LICP1 = LMOT1 ;
  84 : 'SINON' ;
  85 : *  Problème potentiel si CH1 contient d'autres composantes que celles
  86 : *  de vitesses   
  87 :    LICP1 = 'EXTRAIRE' CH1 'COMP' ;
  88 :    vlicp1 = 'DIME' LICP1 ;
  89 :    'SI' ('NEG' vlicp1 vdim) ;
  90 :       cherr = 'CHAINE'
  91 :       'The given CHPOINT hasnt got ' vdim ' component names.' ;
  92 :       'LISTE' LICP1 ;
  93 :       'ERREUR' cherr ;
  94 :    'FINSI' ;      
  95 : 'FINSI' ;   
  96 : * Calcul de la norme
  97 : N2 = 'PSCA' CH1 CH1 LICP1 LICP1 ;
  98 : N1 = '**' N2 0.5 ;
  99 : * Extraction min max de la norme
 100 : MINI1 = 'MINI' N1 ;
 101 : MAXI1 = 'MAXI' N1 ;
 102 : * Pas de decoupage de la norme pour les couleurs (10) 
 103 : * Attention si MINI1=MAXI1 LPAS ne sera que de dimension 2...
 104 : DNN1 = (MAXI1 '-' MINI1) '/' 10.D0 ;
 105 : LPAS = 'PROG' MINI1 'PAS' DNN1 MAXI1 ;
 106 : *'LISTE' lpas ;
 107 : *
 108 : * Table des couleurs de la norme 
 109 : * de la valeur mini (Violet) a la valeur maxi (Rouge)
 110 : TAB1     = 'TABLE' ;
 111 : TAB1 . 1 = 'MOT' 'VIOL' ;
 112 : TAB1 . 2 = 'MOT' 'AZUR' ;
 113 : TAB1 . 3 = 'MOT' 'BLEU' ;
 114 : TAB1 . 4 = 'MOT' 'TURQ' ;
 115 : TAB1 . 5 = 'MOT' 'OCEA' ;
 116 : TAB1 . 6 = 'MOT' 'VERT' ;
 117 : TAB1 . 7 = 'MOT' 'OLIV' ;
 118 : TAB1 . 8 = 'MOT' 'JAUN' ;
 119 : TAB1 . 9 = 'MOT' 'ORAN' ;
 120 : TAB1 . 10 = 'MOT' 'ROUG' ;
 121 : *
 122 : * Réduction éventuelle du champ
 123 : *
 124 : geop1 = 'EXTRAIRE' N1 'MAIL' ;
 125 : nnoe = 'NBEL' geop1 ;
 126 : *debug 'MESSAGE' ('CHAINE' 'nbno=' nnoe) ;   
 127 : 'SI' lred ;
 128 :    'SI' ('<EG' vred1 1.5D0) ;
 129 :       nncib = 'ENTIER' ('+' ('*' nnoe vred1) 0.5) ;
 130 :    'SINON' ;
 131 :       nncib = 'ENTIER' ('+' vred1 0.5) ;
 132 :    'FINSI' ;
 133 : *debug 'MESSAGE' ('CHAINE' 'nbno cible=' nncib) ;   
 134 :    nncib = 'MINIMUM' ('LECT' nnoe nncib) ;
 135 :    vred1f = '/' ('FLOTTANT' nncib) ('FLOTTANT' nnoe) ;
 136 : *debug 'MESSAGE' ('CHAINE' 'vred1f=' vred1f) ;
 137 :    'SI' lalea ;
 138 :       resu1 = 'BRUI' 'BLAN' 'UNIF' 0.5 0.5 geop1 ;
 139 :       geop1 = 'POINT' RESU1 'EGSUPE' ('-' 1. VRED1F) ;
 140 :    'SINON' ;
 141 :       vpas   = '/' ('FLOTTANT' nnoe) ('FLOTTANT' nncib) ;
 142 :       lelem1 = 'ENTIER' ('PROG' 1.5 'PAS' vpas 'NPAS' ('-' nncib 1)) ;
 143 :       geop1 = 'ELEM' geop1 lelem1 ;
 144 :    'FINSI' ;
 145 :    N1   = 'REDU' N1 geop1 ;
 146 :    CH1  = 'REDU' CH1 geop1 ;
 147 : 'FINSI' ;   
 148 : nred = 'NBEL' geop1 ;
 149 : *debug 'MESSAGE' ('CHAINE' 'nbno apres red=' nred) ;   
 150 : *
 151 : VCTOT1 = 'VIDE' 'VECTEUR' ;
 152 : nnotot = 0 ;
 153 : * Boucle de decoupage  (10 couleurs ou 2 si MAXI1=MINI1)
 154 : *NBOU1 = 10 ;
 155 : NBOU1 = '-' ('DIME' LPAS) 1 ;
 156 : 'REPETER' BOU1 NBOU1 ;
 157 :    INDI1 = &BOU1 ;
 158 :    BAS1 = 'EXTRAIRE' LPAS INDI1 ;
 159 :    SUP1 = 'EXTRAIRE' LPAS ('+' INDI1 1) ;
 160 :    MAILN1 = 'EXTRAIRE' N1 'MAIL' ;
 161 :    MAIL1  = 'POIN' N1 'EGINFE' SUP1 ;
 162 :    nmail1 = 'NBEL' MAIL1 ;
 163 : *debug 'MESSAGE' ('CHAINE' 'nbno bou1=' INDI1 ' mail1=' nmail1) ;
 164 :    nnotot = '+' nnotot nmail1 ;
 165 :    mred = 'DIFF' MAIL1 MAILN1 ;
 166 :    N1 = 'REDU' N1 mred ;
 167 : * Norme moyenne de la couleur pour trace
 168 :    MOY1 = (SUP1 + BAS1) * 0.5D0 ;
 169 : * Extraction de la valeur de la norme (sans exposant) pour trace
 170 :    fMOY1 = 'CHAIN' 'FORMAT' '(1pE8.2)' MOY1 ;
 171 :    fMOY1_1 = 'EXTRAIRE' fMOY1 1 4 ;
 172 :    fMOY1_2 = 'EXTRAIRE' fMOY1 5 8 ;
 173 :    CHM1 = 'REDU' CH1 MAIL1 ;
 174 : * Changement du nom des composantes pour afficher la valeur de la norme 
 175 :    'SI' ('EGA' vdim 3) ;
 176 :       LIST2 = 'MOTS' fMOY1_1 fMOY1_2 '  ' ;
 177 :    'SINON' ;
 178 :       LIST2 = 'MOTS' fMOY1_1 fMOY1_2 ;
 179 :     'FINSI' ;
 180 :     CHM2 = 'NOMC' LICP1 LIST2 CHM1  ;
 181 : * Fabrication vecteur élémentaire de couleur TAB1.INDI1
 182 :     VCW1 = 'VECT' CHM2 AMPL1 LIST2 (TAB1 . INDI1) ;
 183 : * Assemblage vecteur total
 184 :     VCTOT1 = VCTOT1 ET VCW1 ;
 185 : 'FIN' BOU1 ;
 186 : *debug 'MESSAGE' ('CHAINE' 'nnotot=' nnotot) ;
 187 : 'SI' ('NEG' nnotot nred) ;
 188 :    'ERREUR' 5 ;
 189 : 'FINSI' ;   
 190 : *
 191 : 'FINPROC' VCTOT1 ;
 192 : *
 193 : ********************************************************************
 194 :  
 195 :  
 196 :  
 197 :  

© Cast3M 2003 - All rights reserved.
Disclaimer