Download @pomi.procedur

Back to the list

   1 : * @POMI     PROCEDUR  PYROS1    96/07/16    21:15:03     2225           
   2 : *-----------------------------------------------------------
   3 : ******              PROCEDURE @POMI                   ******
   4 : *-----------------------------------------------------------
   5 : *
   6 : *    CETTE PROCEDURE A ETE MISE GRACIEUSEMENT
   7 : *   A DISPOSITION DE LA COMMUNAUTE  CASTEM2000
   8 : * PAR  DELERUYELLE Fr.  (SOCOTEC-INDUSTRIE à l'IPSN/DES)
   9 : *
  10 : *-----------------------------------------------------------
  11 : *  CALCUL DU POLYNOME MINIMISANT LA DISTANCE A UNE EVOLUTION
  12 : *----------------------------------------------------------
  13 : 'DEBP' @POMI EV0*'EVOLUTION' N*'ENTIER' PAS1/'FLOTTANT' MT1/'MOT' ;
  14 : 'SI' ('EGA' N 0) ;
  15 :   'MESS' '    ' ;
  16 :   'MESS' '*** POMI ==> Il faut un degré supérieur ou égal à 1' ;
  17 :   'MESS' '    ' ;
  18 : 'SINON' ;
  19 : LX = 'EXTR' EV0 'ABSC' ;
  20 : LY = 'EXTR' EV0 'ORDO' ;
  21 : GN = 'DIME' LX ;
  22 : LKJU = 'PROG' ; LFU = 'PROG' ;
  23 : 
  24 : * CALCUL DES COEF K
  25 : U = -1 ;
  26 : 'REPE' BOU1 (N + 1) ;
  27 :   U = U + 1 ;
  28 :   J = -1 ;
  29 :   'REPE' BOU2 (U + 1) ;
  30 :     J = J + 1 ;
  31 :     SOM = 0 ;
  32 :     I = 0 ;
  33 :     'REPE' BOU3 (GN - 1) ;
  34 :       I = I + 1 ;
  35 :       XI = 'EXTR' LX I ;
  36 :       XIP1 = 'EXTR' LX (I + 1) ;
  37 :   SOM = SOM + (( XIP1 ** (J + U + 1)) - (XI ** (J + U + 1))) ;
  38 :     'FIN' BOU3 ;
  39 :     KJU = SOM / (J + U + 1) ;
  40 :     LKJU = LKJU 'ET' ('PROG' KJU) ;
  41 :   'FIN' BOU2 ;
  42 : 'FIN' BOU1 ;
  43 : 
  44 : * CALCUL DES COEF F
  45 : U = -1 ;
  46 : 'REPE' BOU4 (N + 1) ;
  47 :   U = U + 1 ;
  48 :   I = 0 ;
  49 :   SOM1 = 0 ; SOM2 = 0 ;
  50 :   'REPE' BOU5 (GN - 1) ;
  51 :     I = I + 1 ;
  52 :     XI = 'EXTR' LX I ;
  53 :     XIP1 = 'EXTR' LX (I + 1) ;
  54 :     YI = 'EXTR' LY I ;
  55 :     YIP1 = 'EXTR' LY (I + 1) ;
  56 :     PENTE = (YIP1 - YI) / (XIP1 - XI) ;
  57 :  SOM1 = SOM1 + (((XIP1 ** (U + 1)) - (XI ** (U + 1))) *
  58 :                (YI - (PENTE * XI))) ;
  59 :  SOM2 = SOM2 + (((XIP1 ** (U + 2)) - (XI ** (U + 2))) * PENTE) ;
  60 :   'FIN' BOU5 ;
  61 :   FU = (SOM1 / (U + 1)) + (SOM2 / (U + 2)) ;
  62 :   LFU = LFU 'ET' (PROG FU) ;
  63 : 'FIN' BOU4 ;
  64 : 
  65 : * CREATION D UNE GEOMETRIE FICTIVE
  66 : 'SI' ('EGA' ('VALE' 'DIME') 3) ;
  67 :   GEO = 0 0 0 ; NP = 0 ;
  68 :   'REPE' BOU63 N ;
  69 :     NP = NP + 1 ;
  70 :     GEO = GEO 'ET' (NP 0. 0.) ;
  71 :   'FIN' BOU63 ;
  72 : 'SINON' ;
  73 :   'SI' ('NON' ('EGA' ('VALE' 'DIME') 2)) ;
  74 :     'MESS' '*** POMI ==> On se met en dimension 2 pour résoudre.' ;
  75 :     'OPTI' 'DIME' 2 ;
  76 :   'FINSI' ;
  77 :   GEO = 0 0 ; NP = 0 ;
  78 :   'REPE' BOU6 N ;
  79 :     NP = NP + 1 ;
  80 :     GEO = GEO 'ET' (NP 0.) ;
  81 :   'FIN' BOU6 ;
  82 : 'FINSI' ;
  83 : 
  84 : * ON DEFINIT LA RIGIDITE
  85 : GEO1 = 'MANU' 'SUPE' GEO ;
  86 : RI = 'MANU' 'RIGIDITE' TYPE 'RIGIDITE' GEO1 ('MOTS' 'T') LKJU ;
  87 : 
  88 : * ON DEFINIT LE SECOND MEMBRE
  89 : FO = 'MANU' 'CHPO' GEO1 1 'Q' LFU ;
  90 : 
  91 : * ON RESOUD LE SYSTEME D EQUATION
  92 : CA = 'RESO' RI FO ;
  93 : 
  94 : * ON EXTRAIT LES TERMES DU POLYNOME
  95 : TA = 'TABLE' ; NA = -1 ;
  96 : 'REPE' BOU7 (N + 1) ;
  97 :   NA = NA + 1 ;
  98 :   TA.NA = 'EXTR' CA 'T' (GEO 'POIN' (NA + 1)) ;
  99 : 'FIN' BOU7 ;
 100 : 
 101 : * ON TRACE LE POLYNOME
 102 : 'SI' ('EXISTE' MT1) ;
 103 :   'SI' ('EGA' MT1 IDEM ) ;
 104 :     XX = LX ; YY = PROG ('DIME' XX) * (TA.0) ;
 105 :     'SI' ('EXISTE' PAS1) ;
 106 :       'MESS' '    ' ;
 107 :       'MESS' '*** POMI ==> Option IDEM, le pas ' PAS1 'est ignoré' ;
 108 :       'MESS' '    ' ;
 109 :     'FINSI' ;
 110 :     NA = 0 ;
 111 :     'REPE' BOU9 N ;
 112 :       NA = NA + 1 ;
 113 :       YY = YY + ((XX ** NA) * (TA.NA)) ;
 114 :     'FIN' BOU9 ;
 115 :   'SINON' ;
 116 :     'MESS' '    ' ;
 117 :     'MESS' '*** POMI ==> Mot clé: ' MT1 ' incorrect.' ;
 118 :     'MESS' '    ' ;
 119 :   'FINSI' ;
 120 : 'SINON' ;
 121 :   X1  = 'EXTR' LX 1 ;
 122 :   XGN = 'EXTR' LX GN ;
 123 :   'SI' ('NON' ('EXISTE' PAS1)) ;
 124 :     PAS1 = ((XGN - X1) / (GN - 1)) / 4. ;
 125 :   'FINSI' ;
 126 :   XX = 'PROG' X1 'PAS' PAS1 XGN ; YY = PROG ('DIME' XX) * (TA.0) ;
 127 :     NA = 0 ;
 128 :     'REPE' BOU10 N ;
 129 :       NA = NA + 1 ;
 130 :       YY = YY + ((XX ** NA) * (TA.NA)) ;
 131 :     'FIN' BOU10 ;
 132 : 'FINSI' ;
 133 : EV1 = 'EVOL' 'ROUG' 'MANU' 'X' XX 'Y' YY ;
 134 : 'FINSI' ;
 135 : 'FINP' TA EV1 ;
 136 :  

© Cast3M 2003 - All rights reserved.
Disclaimer