Download dynamic.procedur

Back to the list

   1 : * DYNAMIC   PROCEDUR  JC220346  12/09/12    21:15:07     7501           
   2 : *---------------------------------------------------------------------
   3 : *             PROCEDURE DYNAMIC   VERSION DU 22/02/88
   4 : *---------------------------------------------------------------------
   5 : *   CETTE PROCEDURE EFFECTUE UN CALCUL DYNAMIQUE PAS A PAS
   6 : *
   7 : *   EN ENTREE :
   8 : *   ---------
   9 : *             ETAB    TABLE CONTENANT  :
  10 : *                     INDICE  'DEPL'   : LE DEPLACEMENT INITIAL
  11 : *                     INDICE  'VITE'   : LA VITESSE INITIALE
  12 : *                     INDICE  'CHAR'   : LE CHARGEMENT
  13 : *                     INDICE  'RIGI'   : LA RIGIDITE
  14 : *                     INDICE  'MASS'   : LA MASSE
  15 : *                     INDICE  'AMOR'   : L'AMORTISSEMENT
  16 : *                     INDICE  'FREQ'   : LA FREQUENCE DE COUPURE
  17 : *                     INDICE  'INST'   : LES INSTANTS DE SORTIE
  18 : *                     INDICE  'DEBU'   : LE TEMPS INITIAL
  19 : *                                        ( 0. PAR DEFAUT )
  20 : *                     INDICE  'SAUV'   : LOGIQUE EGAL VRAI SI ON VEUT
  21 : *                                        GARDER LES RESULTATS
  22 : *                     INDICE  'SORT'   : Geométrie sur laquelle on veut
  23 : *                                        les résultats (par défaut sur
  24 : *                                        toute la structure)
  25 : *   EN SORTIE :
  26 : *   ---------
  27 : *             STAB    TABLE CONTENANT AUTANT DE TABLES QUE D'INSTANTS
  28 : *                     DE SORTIE
  29 : *                     INDICE   N       : NUMERO DE L'INSTANT
  30 : *
  31 : *                     LA TABLE  STAB N  CONTIENT  :
  32 : *                     INDICE  'TEMP'   : L'INSTANT
  33 : *                     INDICE  'DEPL'   : LE DEPLACEMENT
  34 : *                     INDICE  'VITE'   : LA VITESSE
  35 : *
  36 : *---------------------------------------------------------------------
  37 : *
  38 :       DEBPROC DYNAMIC ETAB*'TABLE' ;
  39 : *
  40 : *----------------------------------------------------------------------
  41 : *  ON COMMENCE PAR TESTER SI NEWMARK EXISTE TOUJOURS  |
  42 : *------------------------------------------------------
  43 : * ZNEW = 'TYPE' NEWMARK ;
  44 : * 'SI' ( 'NEG' ZNEW 'PROCEDUR' ) ;
  45 : * 'MESS'  '   ***********    ERREUR   ********** ' ;
  46 : * 'MESS'  '   LA PROCEDURE NEWMARK A ETE ECRASEE ' ;
  47 : * 'MESS'  '   ********************************** ' ;
  48 : * 'ERREUR'   ' ARRET DE LA PROCEDURE DYNAMIC ' ;
  49 : * 'FINSI';
  50 : *------------------------------
  51 : *  ON RECUPERE L'INFORMATION
  52 : *------------------------------
  53 : ECONOM=FAUX;
  54 : ISAUV=FAUX;
  55 : 'SI' ('EXIS' ETAB  'ECON'); ECONOM=ETAB.'ECON';'FINSI';
  56 : 'SI' ('EXIS' ETAB  'SAUV'); ISAUV=ETAB .'SAUV'; 'FINSI';
  57 : 
  58 :   U0 = 'COPIER' ( ETAB.'DEPL' ) 'GEOM' ;
  59 :   V0 = 'COPIER' ( ETAB.'VITE' ) 'GEOM' ;
  60 :   CHA= ETAB.'CHAR' ;
  61 :   K  = ETAB.'RIGI' ;
  62 :   M   = ETAB.'MASS' ;
  63 :  TSORT = 'ORDONNER' ( ETAB.'INST' ) ;
  64 :  FCOUP = ETAB.'FREQ' ;
  65 :  IAMOR = 'EXISTE' ETAB 'AMOR' ;
  66 :  IRED= 'EXISTE' ETAB 'SORT';
  67 :  'SI' IRED  ; AZ= 'TYPE' ETAB.'SORT';
  68 :     'SI' ( NEG AZ 'MAILLAGE' );
  69 :         'MESS' 'L INDICE SORT DOIT CONTENIR UN MAILLAGE';
  70 :         'QUITTER' DYNAMIC;
  71 :     'FINSI';
  72 :  'FINSI';
  73 :  'SI' IAMOR ;
  74 :  C   = ETAB.'AMOR' ;
  75 : *MODIF 20/02/92 NADINE POUR OTER LES MULTIPLICATEURS DE LA MATRICE
  76 : *D'AMORTISSEMENT.
  77 :  C   = 'EXTR' C 'RIGI' 'NOMU' ;
  78 :  'FINSI' ;
  79 :  'SI' ( 'EXISTE' ETAB 'DEBU' ) ;
  80 :  T0 = ETAB.'DEBU' ;
  81 :  'SINON' ;
  82 :  T0 = 0. ;
  83 : 'FINSI' ;
  84 : *-------------------------------------------------------------
  85 : *  CALCUL DU PAS DE TEMPS A PARTIR DE LA FREQUENCE DE COUPURE
  86 : *-------------------------------------------------------------
  87 :   SCA = 0.25 ;
  88 :   'SI' ( FCOUP 'EGA' 0. ) ;
  89 :   'ERREUR' ' LA FREQUENCE DE COUPURE EST NULLE ' ;
  90 :   'SINON' ;
  91 :   DT = SCA / FCOUP ;
  92 :   'FINSI' ;
  93 : 'MESS' ' PAS DE TEMPS UTILISE DANS LE CALCUL  ' DT ;
  94 : *
  95 : *-----------------------------------------------------
  96 : *   ON RECUPERE LES INSTANTS DE SORTIE DES RESULTATS
  97 : *-----------------------------------------------------
  98 : TMAX = 'MAXI' TSORT ;
  99 : *
 100 :   ITEM = 0 ;
 101 :   'REPETER' ETEM0 ;
 102 :   ITEM=ITEM + 1 ;
 103 :   T  = 'EXTRAI' TSORT ITEM ;
 104 :   'SI' ( T '>EG' T0 ) ;
 105 :   'QUITTER' ETEM0 ;
 106 :   'FINSI' ;
 107 :   'FIN' ETEM0 ;
 108 : *
 109 : *--------------------------------------------
 110 : *    INITIALISATION DES TABLES DE RESULTATS
 111 : *--------------------------------------------
 112 : STAB = TABLE ; etab.'RESULTATS'=STAB;
 113 : 
 114 : *
 115 : *  STAB EST UNE TABLE DE TABLES INDICEE PAR LE NUMERO DU CAS SORTI
 116 : *
 117 :   ISTOC = 0 ;
 118 : *
 119 : *  STOCKAGE DE L'INSTANT INITIAL SI DEMANDE
 120 : *
 121 :  'SI' ( T 'EGA' T0 ) ;
 122 :   'MESS' ' SORTIE D UN RESULTAT POUR LE TEMPS   ' T ;
 123 :   STN = 'TABLE' ;
 124 :   ISTOC = 1 ;
 125 :   STAB.ISTOC  = 'TABLE' STN ;
 126 :   STN.'TEMP' = T0 ;
 127 :   STN.'DEPL' = ETAB.'DEPL' ;
 128 :   STN.'VITE' = ETAB.'VITE' ;
 129 :   ITEM=ITEM + 1 ;
 130 :   T = 'EXTRAI' TSORT ITEM ;
 131 :  'FINSI' ;
 132 : *
 133 : F0 = 'TIRER' CHA T0 ;
 134 : *
 135 : *--------------------------------
 136 : *   FABRICATION DE L'OPERATEUR
 137 : *--------------------------------
 138 : DT2 = DT * DT ;
 139 : SCA1 = 4. / DT2 ;
 140 : MM = SCA1 * M ;
 141 : 'SI' IAMOR ;
 142 : SCA2 = 2. / DT ;
 143 : CC = SCA2 * C ;
 144 : OPER = K 'ET' MM 'ET' CC ;
 145 : 'DETR' CC ;
 146 : 'SINON';
 147 : OPER = K 'ET' MM ;
 148 : 'FINSI' ;
 149 : 'DETR' MM ;
 150 : *
 151 : *-----------------------------------
 152 : *    BOUCLE SUR LES PAS DE TEMPS
 153 : *-----------------------------------
 154 :   IPAS=0 ;
 155 :     'REPETER' ETIPAS ;
 156 :     IPAS = IPAS + 1 ;
 157 : 'MESS' ' PAS NUMERO ' IPAS ;
 158 :     T1 = T0 + DT ;
 159 :     F1 = 'TIRER' CHA  T1 ;
 160 : *
 161 : *--------------------------------------------
 162 : *  APPEL A LA PROCEDURE DE CALCUL D'UN PAS
 163 : *--------------------------------------------
 164 : *
 165 :     U1 V1 = NEWMARK U0 V0 OPER K M F0 F1 DT ;
 166 : *
 167 : *--------------------------------------
 168 : *  ARCHIVAGE DES RESULTATS SI BESOIN
 169 : *--------------------------------------
 170 :  'REPETER' ETEMP ;
 171 :   'SI' ( T >   T0 ) ;
 172 :   'SI' ( T '<EG' T1 ) ;
 173 :   ISTOC = ISTOC + 1 ;
 174 :   STN = 'TABLE' ;
 175 :   STAB.ISTOC = 'TABLE' STN ;
 176 :   STN.'TEMP' = T ;
 177 : 'MESS' ' SORTIE D UN RESULTAT POUR LE TEMPS ' T ;
 178 : *
 179 : *    ON INTERPOLE LE RESULTAT
 180 : *
 181 :   TAU =  ( T - T0 ) / DT ;
 182 :   TAU2 = TAU ** 2 ;
 183 :   UMTAU = 1. - TAU ;
 184 :   UMTAU2 = 1. - TAU2 ;
 185 :   TAUMT = ( T - T0 ) * UMTAU ;
 186 :   UX0 = 'ENLEVER' U0 'LX' ;
 187 :   UX1 = 'ENLEVER' U1 'LX' ;
 188 :   ULX0 = 'EXCO' 'LX' U0 'NOID' 'LX' ;
 189 :   ULX1 = 'EXCO' 'LX' U1 'NOID' 'LX' ;
 190 :   UX2 = 'COLI' UX1 TAU2 UX0 UMTAU2 V0 TAUMT ;
 191 :   'DETR' UX0 ; 'DETR' UX1 ;
 192 :   ULX2 = 'COLI' ULX1 TAU ULX0 UMTAU ;
 193 :   'DETR' ULX0 ; 'DETR' ULX1 ;
 194 :    XDEP=  UX2 + ULX2 ;  'DETR' UX2 ;
 195 :    XVIT=   'COLI' V0 UMTAU V1 TAU ;
 196 :   'SI'  IRED  ;
 197 :      XDEP= ('REDU' XDEP ETAB.'SORT') + ULX2;
 198 :      XVIT= 'REDU' XVIT ETAB.'SORT';
 199 :   'FINSI';
 200 :   'DETR' ULX2 ;
 201 :   STN.'DEPL' = XDEP ;
 202 :   STN.'VITE' = XVIT ;
 203 : 
 204 : *------------------------------
 205 : *    SAUVETAGE incrementale des résultas
 206 : *-----------------------------
 207 :   'SI'  ISAUV  ;
 208 :     etab.'OPER'=OPER;
 209 :     'SAUVER' 'MUET'  ETAB ;
 210 : * on fantomise les resultats sauvés
 211 :     'SI' ECONOM;
 212 :        'FANTOM' stn 'DEPL';
 213 :        'FANTOM' stn 'VITE';
 214 :     'FINSI';
 215 :   'FINSI' ;
 216 : 
 217 : *-------------------------------------------
 218 : *    RECHERCHE DU NOUVEAU TEMPS DE SORTIE
 219 : *-------------------------------------------
 220 :     'SI' ( T '>EG' TMAX ) ;
 221 : 
 222 :     'QUITTER' ETIPAS ;
 223 :     'SINON' ;
 224 :     ITEM = ITEM + 1 ;
 225 :     T = 'EXTRAI' TSORT ITEM ;
 226 :     'FINSI' ;
 227 : 'SINON';
 228 : 'QUITTER' ETEMP;
 229 : 'FINSI';
 230 : 'FINSI';
 231 : 'FIN' ETEMP ;
 232 : 
 233 : 'DETR' U0 ;
 234 : 'DETR' V0 ;
 235 : 'DETR' F0 ;
 236 : T0 = T1 ;
 237 : U0 = U1 ;
 238 : V0 = V1 ;
 239 : F0 = F1 ;
 240 : 'FIN' ETIPAS ;
 241 : *----------------------------------------------------------------------
 242 : *                    SORTIE DE LA PROCEDURE
 243 : *----------------------------------------------------------------------
 244 : 'FINPROC' STAB ;
 245 : *----------------------------------------------------------------------
 246 : 
 247 : 
 248 : 
 249 : 
 250 : 
 251 :  

© Cast3M 2003 - All rights reserved.
Disclaimer