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