1 : * DYNAMODE PROCEDUR NOBODY 92/01/01 00:00:00 001 2 : 'DEBPROC' DYNAMODE _OPERAT_*'MOT ' TEMPCALC*'LISTREEL' 3 : _BASMOD_*'BASEMODA' MOT1/'MOT ' MOT2/'MOT ' MOT3/'MOT ' 4 : MOT4/'MOT ' MOT5/'MOT ' MOT6/'MOT ' MOT7/'MOT ' 5 : MOT8/'MOT ' MOT9/'MOT ' MO10/'MOT ' MO11/'MOT ' 6 : AMORT/'LISTREEL' ENT1/'ENTIER ' CHP1/'CHPOINT ' CHP2/'CHPOINT ' 7 : SOLPRE/'SOLUTION' TAB1/'TABLE ' TAB2/'TABLE ' TAB3/'TABLE ' 8 : TAB4/'TABLE ' TAB5/'TABLE ' ; 9 : ************************************************************************ 10 : * 11 : * D Y N A M O D E 12 : * --------------- 13 : * 14 : * FONCTION: 15 : * --------- 16 : * 17 : * CALCUL DE LA REPONSE DYNAMIQUE D'UNE STRUCTURE SELON LE SCHEMA 18 : * SUIVANT: 19 : * 1) PROJECTION SUR LA BASE MODALE, 20 : * 2) INTEGRATION EXPLICITE EN TEMPS, 21 : * 3) RECOMBINAISON MODALE DE LA REPONSE. 22 : * 23 : * PHRASE D'APPEL (EN GIBIANE): 24 : * ---------------------------- 25 : * 26 : * RESU = DYNAMODE 'OPERAT' TEMPCALC BAS1 (AMORT) 27 : * ('BLOC' NBLOC) ('DEPL' CHDEP) ('VITE' CHVIT) 28 : * ('SAUV') ('SUIT' SOLPRE) ('GDPL') 29 : * 30 : * ('CHAR' TABLCHAR ) 31 : * 32 : * ('SEIS' TABLSEIS ) 33 : * 34 : * ('RECO' TABLRECO ) 35 : * 36 : * ('MAXI' TABLMAXI ) 37 : * 38 : * ('EVOL' TABLEVOL ) ; 39 : * 40 : * OPERANDES: 41 : * ---------- 42 : * 43 : * OPERAT 'MOT' NOM DE L'OPERATEUR DE RESOLUTION DE 44 : * L'EQUATION DU MOUVEMENT ("DEVO" OU 45 : * "PLEX"). 46 : * TEMPCALC 'LISTREEL' INSTANTS DE CALCUL. 47 : * BAS1 'BASEMODA' CONTIENT LES MODES DES SOUS-STRUCTURES, LES 48 : * SOLUTIONS STATIQUES, LES PSEUDO-MODES 49 : * ASSOCIES AUX EFFETS DE TRONCATURE ET 50 : * EVENTUELLEMENT LES LIAISONS. 51 : * AMORT 'LISTREEL' AMORTISSEMENT. 52 : * BLOC 'MOT' DECOUPAGE DU CALCUL EN PLUSIEURS BLOCS DE 53 : * PAS DE TEMPS. 54 : * NBLOC 'ENTIER' NOMBRE DE BLOCS. 55 : * DEPL 'MOT' DONNEE DE DEPLACEMENTS INITIAUX. 56 : * CHDEP 'CHPOINT' VALEURS DES DEPLACEMENTS INITIAUX. 57 : * VITE 'MOT' DONNEE DE VITESSES INITIALES. 58 : * CHVIT 'CHPOINT' VALEURS DES VITESSES INITIALES. 59 : * SAUV 'MOT' DEMANDE DE SAUVEGARDE DES RESULTATS DU 60 : * DERNIER "BLOC" EN VUE D'UNE REPRISE 61 : * ULTERIEURE EVENTUELLE DU CALCUL. 62 : * SUIT 'MOT' INDICATION DE REPRISE D'UN CALCUL. 63 : * SOLPRE 'SOLUTIO' CONDITIONS INITIALES POUR UNE REPRISE 64 : * (= CONDITIONS FINALES DU CALCUL PRECEDENT). 65 : * GDPL 'MOT' INDICATION DE CALCUL AVEC GRANDS 66 : * DEPLACEMENTS (POUR L'OPERATEUR "PLEXUS" 67 : * SEULEMENT). 68 : * 69 : * CHAR 'MOT' MOT CLE, CREATION D'UN OBJET CHARGEMENT. 70 : * TABLCHAR 'TABLE' TABLE CONTENANT AUTANT DE TABLE (N) QUE 71 : * CHARGEMENT 72 : * I POUVANT VARIER DE 1 A N 73 : * TABLCHAR I 'CHARGEMENT' : OBJET CHARGEMENT. 74 : * TABLCHAR I 'STRUCTURE' : OBJET STRUCTURE, 75 : * (FACULTATIF) SOUS-STRUCTURE OU EST 76 : * APPLIQUEE LE CHARGEMENT. 77 : * TABLCHAR I 'NUMERO' : OBJET ENTIER, (FACULTATIF) 78 : * NUMERO DE LA SOUS-STRUCTURE. 79 : * 80 : * SEIS 'MOT' MOT CLE, CREATION D'UN OBJET CHARGEMENT. 81 : * TABLSEIS 'TABLE' TABLE CONTENANT AU PLUS 3 TABLES 82 : * I POUVANT VARIER DE 1 A 3 83 : * TABLSEIS I 'EVOLUTION' : OBJET EVOLUTION CONTENANT 84 : * LA DISCRETISATION DU SEISME. 85 : * TABLSEIS I 'COEFFICIENT' : OBJET FLOTTANT, COEFF 86 : * MULTIPLICATIF APPLIQUE AU SEISME. 87 : * TABLSEIS I 'DIRECTION' : OBJET MOT, INDIQUANT LA 88 : * DIRECTION DU SEISME (UX, UY, UZ). 89 : * 90 : * RECO 'MOT' DEMANDE DE RECOMBINAISON MODALE POUR TOUTE 91 : * LA STRUCTURE, A DES INSTANTS DONNES. 92 : * TABLRECO 'TABLE' TABLE CONTENANT AUTANT DE TABLES (N) QUE DE 93 : * RECOMBINAISONS DEMANDEES. 94 : * I VARIANT DE 1 A N 95 : * TABLRECO I 'TYPE' : UN MOT, TYPE DEMANDE 96 : * (DEPL,ACCE, VITE,LIAI,CONT). 97 : * TABLRECO I 'TEMPS' : OBJET FLOTTANT, TEMPS OU DOIT 98 : * S'EFFECTUER LA RECOMBINAISON POUR TOUTE LA 99 : * STRUCTURE. 100 : * TABLRECO I 'STRUCTURE' : OBJET STRUCTURE, 101 : * (FACULTATIF) SOUS-STRUCTURE OU DOIT 102 : * S'EFFECTUER LA RECOMBINAISON. 103 : * TABLRECO I 'NUMERO' : OBJET ENTIER, (FACULTATIF) 104 : * NUMERO DE LA SOUS-STRUCTURE OU DOIT 105 : * S'EFFECTUER LA RECOMBINAISON. 106 : * 107 : * MAXI 'MOT' DEMANDE DU MAXIMUM, EN VALEUR ABSOLUE D'UNE 108 : * COMPOSANTE AU COURS DU TEMPS APRES UNE 109 : * RECOMBINAISON MODALE. 110 : * TABLMAXI 'TABLE' TABLE CONTENANT AUTANT DE TABLES (N) QUE DE 111 : * MAXIMA DEMANDES. 112 : * I VARIANT DE 1 A N 113 : * TABLMAXI I 'TYPE' : UN MOT, TYPE DU MAXIMUM 114 : * DEMANDE (DEPL,ACCE, VITE,LIAI,CONT). 115 : * TABLMAXI I 'STRUCTURE' : OBJET STRUCTURE, 116 : * (FACULTATIF) SOUS-STRUCTURE OU DOIT 117 : * S'EFFECTUER LA RECOMBINAISON. 118 : * TABLMAXI I 'NUMERO' : OBJET ENTIER, (FACULTATIF) 119 : * NUMERO DE LA SOUS-STRUCTURE OU DOIT 120 : * S'EFFECTUER LA RECOMBINAISON. 121 : * PUIS, 122 : * TABLMAXI I 'POINT' : OBJET POINT,MAILLAGE,ATTACHE. 123 : * POINTS OU DOIT S'EFFECTUER LA RECHERCHE DU 124 : * MAXIMUM. 125 : * TABLMAXI I 'COMPOSANTE' : UN MOT, NOM DE LA 126 : * COMPOSANTE DU POINT. 127 : * OU, 128 : * TABLMAXI I 'CHPOINT' : OBJET CHPOINT, CHAMP 129 : * CONTENANT LES POINTS ET LES COMPOSANTES OU 130 : * DOIT S'EFFECTUER LA RECHERCHE DES MAXIMA. 131 : * 132 : * EVOL 'MOT' DEMANDE DE RECOMBINAISON MODALE EN QUELQUES 133 : * POINTS, EN FONCTION DU TEMPS. 134 : * TABLEVOL 'TABLE' TABLE CONTENANT AUTANT DE TABLES (N) QUE DE 135 : * DEMANDES DE RECOMBINAISON. 136 : * I VARIANT DE 1 A N 137 : * TABLEVOL I 'NPAS' : UN ENTIER, SORTIE TOUS LES 138 : * "NPAS" DE CALCUL. 139 : * (FACULTATIF) EGAL A 1 PAR DEFAUT. 140 : * TABLEVOL I 'TYPE' : UN MOT, TYPE DE LA COMPOSANTE 141 : * TRAITEE (DEPL,ACCE, VITE,LIAI,CONT). 142 : * TABLEVOL I 'STRUCTURE' : OBJET STRUCTURE, 143 : * (FACULTATIF) SOUS-STRUCTURE OU DOIT 144 : * S'EFFECTUER LA RECOMBINAISON. 145 : * TABLEVOL I 'NUMERO' : OBJET ENTIER, (FACULTATIF) 146 : * NUMERO DE LA SOUS-STRUCTURE OU DOIT 147 : * S'EFFECTUER LA RECOMBINAISON. 148 : * PUIS, 149 : * TABLEVOL I 'POINT' : OBJET POINT,MAILLAGE,ATTACHE. 150 : * POINTS OU DOIT S'EFFECTUER LA RECOMBINAISON 151 : * TABLEVOL I 'COMPOSANTE' : UN MOT, NOM DE LA 152 : * COMPOSANTE DU POINT. 153 : * OU, 154 : * TABLEVOL I 'CHPOINT' : OBJET CHPOINT, CHAMP 155 : * CONTENANT LES POINTS ET LES COMPOSANTES OU 156 : * DOIT S'EFFECTUER LA RECOMBINAISON. 157 : * 158 : * 159 : * RESULTATS: 160 : * ---------- 161 : * 162 : * RESU 'TABLE' RESULTATS, REPARTIS COMME SUIT: 163 : * 164 : * INDICE 'SAUV' OBJET SOLUTION. 165 : * RESU 'SAUV' : LA SOLUTION A L'INSTANT FINAL DE 166 : * L'EQUATION DANS LA BASE MODALE. 167 : * INDICE 'RECO' OBJET TABLE, INDICEE 1 A N. 168 : * RESU 'RECO' I : LA RECOMBINAISON MODALE (CHPOINT OU 169 : * CHAMELEM) POUR LA STRUCTURE A L'INSTANT T . 170 : * INDICE 'MAXI' OBJET TABLE, INDICEE 1 A N. 171 : * RESU 'MAXI' I : LE MAXIMUM DEMANDE DE LA COMPOSANTE 172 : * EN VALEUR ABSOLUE (FLOTANT). 173 : * INDICE 'EVOL' OBJET TABLE, INDICEE 1 A N. 174 : * RESU 'EVOL' I : LA RECOMBINAISON MODALE (EVOLUTION) 175 : * EN QUELQUES POINTS SUR L'INTERVALLE DE 176 : * TEMPS DE CALCUL. 177 : * 178 : * VARIABLES : 179 : * ----------- 180 : * 181 : * LISTEM : LISTREEL DE TEMPS POUR LE CALCUL D'UN BLOC 182 : * 183 : * 184 : * AUTEUR, DATE DE CREATION: 185 : * ------------------------- 186 : * 187 : * P.M. L.V. 17 MARS 1988 188 : * 189 : ************************************************************************ 190 : * 191 : SI = 'MOT' 'SI' ; SINON = 'MOT' 'SINON' ; FINSI = 'MOT' 'FINSI' ; 192 : REPETER ='MOT' 'REPETER' ;QUITTER ='MOT' 'QUITTER' ;FIN ='MOT' 'FIN' ; 193 : EXISTE = 'MOT' 'EXISTE' ; EGA = 'MOT' 'EGA' ; 194 : DEPL = 'MOT' 'DEPL' ; VITE = 'MOT' 'VITE' ; 195 : GDPL = 'MOT' 'GDPL' ; SUIT = 'MOT' 'SUIT' ; 196 : * 197 : NBLOCS = 1 ; 198 : DEPL_OUI = FAUX ; 199 : VITE_OUI = FAUX ; 200 : SAUV_OUI = FAUX ; 201 : SUIT_OUI = FAUX ; 202 : GDPL_OUI = FAUX ; 203 : CHAR_OUI = FAUX ; 204 : SEIS_OUI = FAUX ; 205 : RECO_OUI = FAUX ; 206 : MAXI_OUI = FAUX ; 207 : EVOL_OUI = FAUX ; 208 : _NBINS_ = 1 ; 209 : * 210 : DEB_ERR = '***** ERREUR *****' ; 211 : * 212 : * OBJET "BOUCLE" CREE POUR PERMETTRE UNE SORTIE PREMATUREE DE 213 : * LA PROCEDURE EN CAS D'ERREUR. 214 : REPETER PROC 1 ; 215 : * 216 : * 217 : * -------------------------------------------------------------------- 218 : * RECUPERATION DES OPERANDES 219 : * -------------------------------------------------------------------- 220 : * 221 : SI (EXISTE MOT1); 222 : TAB_MOT = 'TABLE' ; 223 : TAB_MOT.1 = 'MOT' MOT1 ; 224 : SI (EXISTE MOT2); 225 : TAB_MOT.2 = 'MOT' MOT2 ; 226 : SI (EXISTE MOT3); 227 : TAB_MOT.3 = 'MOT' MOT3 ; 228 : SI (EXISTE MOT4); 229 : TAB_MOT.4 = 'MOT' MOT4 ; 230 : SI (EXISTE MOT5); 231 : TAB_MOT.5 = 'MOT' MOT5 ; 232 : SI (EXISTE MOT6); 233 : TAB_MOT.6 = 'MOT' MOT6 ; 234 : SI (EXISTE MOT7); 235 : TAB_MOT.7 = 'MOT' MOT7 ; 236 : SI (EXISTE MOT8); 237 : TAB_MOT.8 = 'MOT' MOT8 ; 238 : SI (EXISTE MOT9); 239 : TAB_MOT.9 = 'MOT' MOT9 ; 240 : SI (EXISTE MO10); 241 : TAB_MOT.10 = 'MOT' MO10 ; 242 : SI (EXISTE MO11); 243 : TAB_MOT.11 = 'MOT' MO11 ; 244 : NB_MOT = 11 ; 245 : SINON; 246 : NB_MOT = 10 ; 247 : FINSI ; 248 : SINON; 249 : NB_MOT = 9 ; 250 : FINSI ; 251 : SINON; 252 : NB_MOT = 8 ; 253 : FINSI ; 254 : SINON; 255 : NB_MOT = 7 ; 256 : FINSI ; 257 : SINON; 258 : NB_MOT = 6 ; 259 : FINSI ; 260 : SINON; 261 : NB_MOT = 5 ; 262 : FINSI ; 263 : SINON; 264 : NB_MOT = 4 ; 265 : FINSI ; 266 : SINON; 267 : NB_MOT = 3 ; 268 : FINSI ; 269 : SINON; 270 : NB_MOT = 2 ; 271 : FINSI ; 272 : SINON; 273 : NB_MOT = 1 ; 274 : FINSI ; 275 : SINON; 276 : NB_MOT = 0 ; 277 : FINSI ; 278 : * 279 : SI (EXISTE TAB1); 280 : TAB_TAB = 'TABLE' ; 281 : TAB_TAB.1 = TAB1 ; 282 : SI (EXISTE TAB2); 283 : TAB_TAB.2 = TAB2 ; 284 : SI (EXISTE TAB3); 285 : TAB_TAB.3 = TAB3 ; 286 : SI (EXISTE TAB4); 287 : TAB_TAB.4 = TAB4 ; 288 : SI (EXISTE TAB5); 289 : TAB_TAB.5 = TAB5 ; 290 : NB_TAB = 5 ; 291 : SINON; 292 : NB_TAB = 4 ; 293 : FINSI ; 294 : SINON; 295 : NB_TAB = 3 ; 296 : FINSI ; 297 : SINON; 298 : NB_TAB = 2 ; 299 : FINSI ; 300 : SINON; 301 : NB_TAB = 1 ; 302 : FINSI ; 303 : SINON; 304 : NB_TAB = 0 ; 305 : FINSI ; 306 : * 307 : SI (EXISTE CHP1); 308 : TAB_CHP = 'TABLE' ; 309 : TAB_CHP.1 = CHP1 ; 310 : SI (EXISTE CHP2); 311 : TAB_CHP.2 = CHP2 ; 312 : NB_CHP = 2 ; 313 : SINON; 314 : NB_CHP = 1 ; 315 : FINSI ; 316 : SINON; 317 : NB_CHP = 0 ; 318 : FINSI ; 319 : * 320 : * ------------------------------------------------------------------- 321 : * VERIFICATION DES OPERANDES 322 : * ------------------------------------------------------------------- 323 : * 324 : I_MOT = 0 ; 325 : I_TAB = 0 ; 326 : I_CHP = 0 ; 327 : * 328 : REPETER LECTURE ; 329 : * 330 : I_MOT = I_MOT '+' 1 ; 331 : SI (I_MOT '>' NB_MOT) ; 332 : QUITTER LECTURE ; 333 : FINSI; 334 : * 335 : MOT_CLE = 'MOT' TAB_MOT.I_MOT ; 336 : SI (EGA MOT_CLE 'BLOC') ; 337 : SI ('NON' (EXISTE ENT1) ) ; 338 : 'MESSAGE' DEB_ERR ; 339 : 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "ENTIER"' ; 340 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 341 : QUITTER PROC ; 342 : FINSI; 343 : SI (ENT1 '<' 0) ; 344 : 'MESSAGE' DEB_ERR ; 345 : 'MESSAGE' 'VOUS AVEZ DONNE UN NOMBRE DE BLOCS NEGATIF.' ; 346 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 347 : QUITTER PROC ; 348 : FINSI; 349 : SI (EGA ENT1 0) ; 350 : ENT1 = 1 ; 351 : FINSI ; 352 : NBLOCS = ENT1 ; 353 : SINON; SI (EGA MOT_CLE 'DEPL') ; 354 : I_CHP = I_CHP '+' 1 ; 355 : SI (I_CHP '>' NB_CHP) ; 356 : 'MESSAGE' DEB_ERR ; 357 : 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "CHPOINT"' ; 358 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 359 : QUITTER PROC ; 360 : FINSI; 361 : CHP_DEP = TAB_CHP.I_CHP ; 362 : DEPL_OUI = VRAI ; 363 : SINON; SI (EGA MOT_CLE 'VITE') ; 364 : I_CHP = I_CHP '+' 1 ; 365 : SI (I_CHP '>' NB_CHP) ; 366 : 'MESSAGE' DEB_ERR ; 367 : 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "CHPOINT"' ; 368 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 369 : QUITTER PROC ; 370 : FINSI; 371 : CHP_VIT = TAB_CHP.I_CHP ; 372 : VITE_OUI = VRAI ; 373 : SINON; SI (EGA MOT_CLE 'SAUV') ; 374 : SAUV_OUI = VRAI ; 375 : SINON; SI (EGA MOT_CLE 'SUIT') ; 376 : SI ('NON' (EXISTE SOLPRE) ) ; 377 : 'MESSAGE' DEB_ERR ; 378 : 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "SOLUTION"' ; 379 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 380 : QUITTER PROC ; 381 : FINSI; 382 : SUIT_OUI = VRAI ; 383 : SINON; SI (EGA MOT_CLE 'GDPL') ; 384 : 'MESSAGE' DEB_ERR ; 385 : 'MESSAGE' 'OPTION GDPL INDISPONIBLE' ; 386 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 387 : QUITTER PROC ; 388 : GDPL_OUI = VRAI ; 389 : SINON; SI (EGA MOT_CLE 'CHAR') ; 390 : I_TAB = I_TAB '+' 1 ; 391 : SI (I_TAB '>' NB_TAB) ; 392 : 'MESSAGE' DEB_ERR ; 393 : 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 394 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 395 : QUITTER PROC ; 396 : FINSI; 397 : TABL_CHA = TAB_TAB.I_TAB ; 398 : CHAR_OUI = VRAI ; 399 : SINON; SI (EGA MOT_CLE 'SEIS') ; 400 : I_TAB = I_TAB '+' 1 ; 401 : SI (I_TAB '>' NB_TAB) ; 402 : 'MESSAGE' DEB_ERR ; 403 : 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 404 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 405 : QUITTER PROC ; 406 : FINSI; 407 : TABL_SEI = TAB_TAB.I_TAB ; 408 : SEIS_OUI = VRAI ; 409 : SINON; SI (EGA MOT_CLE 'RECO') ; 410 : I_TAB = I_TAB '+' 1 ; 411 : SI (I_TAB '>' NB_TAB) ; 412 : 'MESSAGE' DEB_ERR ; 413 : 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 414 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 415 : QUITTER PROC ; 416 : FINSI; 417 : TABL_REC = TAB_TAB.I_TAB ; 418 : RECO_OUI = VRAI ; 419 : SINON; SI (EGA MOT_CLE 'MAXI') ; 420 : * ZEXISTE = 'TYPE' DYNAMOD3 ; 421 : * SI ('NEG' ZEXISTE 'PROCEDUR') ; 422 : * 'MESSAGE' DEB_ERR ; 423 : * 'MESSAGE' 'LE MOT "DYNAMOD3" SE TROUVE DANS VOTRE FICHIER,' ; 424 : * 'MESSAGE' 'CE MOT "DYNAMOD3" EST RESERVE POUR L"APPEL ' ; 425 : * 'MESSAGE' 'D"UNE PROCEDURE INTERNE.' ; 426 : * 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE' ; 427 : * QUITTER PROC ; 428 : * FINSI ; 429 : I_TAB = I_TAB '+' 1 ; 430 : SI (I_TAB '>' NB_TAB) ; 431 : 'MESSAGE' DEB_ERR ; 432 : 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 433 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 434 : QUITTER PROC ; 435 : FINSI; 436 : TABL_MAX = TAB_TAB.I_TAB ; 437 : MAXI_OUI = VRAI ; 438 : SINON; SI (EGA MOT_CLE 'EVOL') ; 439 : * ZEXISTE = 'TYPE' DYNAMOD2 ; 440 : * SI ('NEG' ZEXISTE 'PROCEDUR') ; 441 : * 'MESSAGE' DEB_ERR ; 442 : * 'MESSAGE' 'LE MOT "DYNAMOD2" SE TROUVE DANS VOTRE FICHIER,' ; 443 : * 'MESSAGE' 'CE MOT "DYNAMOD2" EST RESERVE POUR L"APPEL ' ; 444 : * 'MESSAGE' 'D"UNE PROCEDURE INTERNE.' ; 445 : * 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE' ; 446 : * QUITTER PROC ; 447 : * FINSI ; 448 : I_TAB = I_TAB '+' 1 ; 449 : SI (I_TAB '>' NB_TAB) ; 450 : 'MESSAGE' DEB_ERR ; 451 : 'MESSAGE' 'IL MANQUE LA DONNEE D"UN OBJET DE TYPE "TABLE"' ; 452 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 453 : QUITTER PROC ; 454 : FINSI; 455 : TABL_EVO = TAB_TAB.I_TAB ; 456 : EVOL_OUI = VRAI ; 457 : FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; FINSI; 458 : FINSI; FINSI; 459 : * 460 : FIN LECTURE ; 461 : * 462 : * -------------------------------------------------------------------- 463 : * DEBUT DES CALCULS 464 : * -------------------------------------------------------------------- 465 : * 466 : * 467 : _BRIGID_ = 'RIGI' _BASMOD_ ; 468 : _BMASSE_ = 'MASS' _BASMOD_ ; 469 : * 470 : *---- ECRITURE DE LA SYNTAXE POUR L'APPEL DE PLEX OU DEVO ---- 471 : * 472 : * 473 : TXT_OPER = 'TEXTE' '_BRIGID_' '_BMASSE_' '_BASMOD_' '_NBINS_' ; 474 : TX2_OPER = 'TEXTE' ' ' ; 475 : SI (EXISTE AMORT) ; 476 : _BAMORT_ = 'AMOR' _BASMOD_ AMORT ; 477 : TXT_OPER = 'TEXTE' TXT_OPER '_BAMORT_' ; 478 : FINSI; 479 : SI CHAR_OUI ; 480 : NB_CHAR = 'DIMENSION' TABL_CHA ; 481 : I = 0 ; 482 : REPETER BOUC_CHA NB_CHAR ; 483 : I = I '+' 1 ; 484 : TAB_CHAR = TABL_CHA.I ; 485 : _CHARG_ = TAB_CHAR.'CHARGEMENT' ; 486 : TXT_CHAR = 'TEXTE' '_BASMOD_' ; 487 : SI (EXISTE TAB_CHAR 'STRUCTURE') ; 488 : _STRUC_ = TAB_CHAR.'STRUCTURE' ; 489 : TXT_CHAR = 'TEXTE' TXT_CHAR '_STRUC_' ; 490 : SI (EXISTE TAB_CHAR 'NUMERO') ; 491 : _NUME_ = TAB_CHAR.'NUMERO' ; 492 : TXT_CHAR = 'TEXTE' TXT_CHAR '_NUME_' ; 493 : FINSI ; 494 : FINSI ; 495 : TXT_CHAR = 'TEXTE' TXT_CHAR '_CHARG_' ; 496 : _BCHAR_ = 'PJBA' TXT_CHAR ; 497 : SI (EGA I 1) ; 498 : _BCHARG_ = _BCHAR_ ; 499 : SINON ; 500 : _BCHARG_ = _BCHARG_ 'ET' _BCHAR_ ; 501 : FINSI ; 502 : FIN BOUC_CHA ; 503 : FINSI; 504 : SI SEIS_OUI ; 505 : NB_SEIS = 'DIMENSION' TABL_SEI ; 506 : I = 0 ; 507 : REPETER BOUC_SEI NB_SEIS ; 508 : I = I '+' 1 ; 509 : TAB_SEIS = TABL_SEI.I ; 510 : EVOL_I = TAB_SEIS.'EVOLUTION' ; 511 : COEF_I = TAB_SEIS.'COEFFICIENT' ; 512 : DIR_I = 'MOT' TAB_SEIS.'DIRECTION' ; 513 : _SCHAR_ = 'SEISME' EVOL_I _BASMOD_ COEF_I DIR_I ; 514 : SI (EGA I 1) ; 515 : _SCHARG_ = _SCHAR_ ; 516 : SINON ; 517 : _SCHARG_ = _SCHARG_ 'ET' _SCHAR_ ; 518 : FINSI ; 519 : FIN BOUC_SEI ; 520 : FINSI; 521 : SI SEIS_OUI ; 522 : SI CHAR_OUI ; 523 : _BCHARG_ = _SCHARG_ 'ET' _BCHARG_ ; 524 : SINON ; 525 : _BCHARG_ = _SCHARG_ ; 526 : FINSI ; 527 : TXT_OPER = 'TEXTE' TXT_OPER '_BCHARG_' ; 528 : SINON ; SI CHAR_OUI ; 529 : TXT_OPER = 'TEXTE' TXT_OPER '_BCHARG_' ; 530 : FINSI ; FINSI ; 531 : SI DEPL_OUI ; 532 : RMASSE = 'EXTR' _BASMOD_ 'MASS' ; 533 : MACHDE = RMASSE '*' CHP_DEP ; 534 : PROJDE = 'PJBA' _BASMOD_ MACHDE ; 535 : _CHPDEP_ = 'RESO' _BMASSE_ PROJDE ; 536 : _DEPL_ = 'MOT' 'DEPL' ; 537 : TX2_OPER = 'TEXTE' TX2_OPER '_DEPL_' '_CHPDEP_' ; 538 : FINSI; 539 : SI VITE_OUI ; 540 : RMASSE = 'EXTR' _BASMOD_ 'MASS' ; 541 : MACHVI = RMASSE '*' CHP_VIT ; 542 : PROJVI = 'PJBA' _BASMOD_ MACHVI ; 543 : _CHPVIT_ = 'RESO' _BMASSE_ PROJVI ; 544 : _VITE_ = 'MOT' 'VITE' ; 545 : TX2_OPER = 'TEXTE' TX2_OPER '_VITE_' '_CHPVIT_' ; 546 : FINSI; 547 : SI GDPL_OUI ; 548 : _GDPL_ = 'MOT' 'GDPL' ; 549 : TXT_OPER = 'TEXTE' TXT_OPER '_GDPL_' ; 550 : FINSI; 551 : SI ( (EGA _OPERAT_ 'DEVO') 'OU' (EGA _OPERAT_ 'PLEX') ) ; 552 : TXT_OPER = 'TEXTE' '_OPERAT_' TXT_OPER ; 553 : SINON ; 554 : 'MESSAGE' DEB_ERR ; 555 : 'MESSAGE' 'NOM INCORRECT POUR L"OPERATEUR DE RESOLUTION DYNAMIQUE'; 556 : 'MESSAGE' 'ARRET DE LA PROCEDURE DYNAMODE.' ; 557 : QUITTER PROC ; 558 : FINSI ; 559 : * 560 : RESU = 'TABLE' ; 561 : * 562 : * ---------- INITIALISATION POUR L'OPERATEUR RECO ---------- 563 : * 564 : SI RECO_OUI ; 565 : DIM_SORT = 'DIMENSION' TABL_REC ; 566 : RECOMBIN = 'TABLE' ; 567 : RESU.'RECO' = RECOMBIN ; 568 : FINSI ; 569 : * 570 : * ------------------ CALCUL PAR BLOC --------------------- 571 : * 572 : DIM_CALC = 'DIMENSION' TEMPCALC ; 573 : DIM_CAL2 = DIM_CALC '-' 1 ; 574 : N1_TEMPS = (DIM_CAL2 '/' NBLOCS) ; 575 : N1_TEMP1 = N1_TEMPS '+' 1 ; 576 : N2_TEMPS = N1_TEMPS '*' NBLOCS ; 577 : N3_TEMPS = DIM_CAL2 '-' N2_TEMPS ; 578 : IBLOC = 0 ; I_REC2 = 0 ; ITEMP = 1 ; 579 : * 580 : REPETER CALCUL NBLOCS ; 581 : * 582 : IBLOC = IBLOC '+' 1 ; 583 : SI ( EGA NBLOCS 1 ) ; 584 : LISTEM = TEMPCALC ; 585 : DIM_LIST = DIM_CALC ; 586 : SINON ; 587 : ITEMP = ITEMP '-' 1 ; 588 : SI ( IBLOC '<EG' N3_TEMPS ) ; 589 : DIM_LIST = N1_TEMP1 '+' 1 ; 590 : SINON ; 591 : DIM_LIST = N1_TEMP1 ; 592 : FINSI ; 593 : DIM_LIS2 = 0 ; 594 : LISTEM = 'PROG' DIM_LIST '*' 0. ; 595 : REPETER LLREEL01 DIM_LIST ; 596 : ITEMP = ITEMP '+' 1 ; 597 : DIM_LIS2 = DIM_LIS2 '+' 1 ; 598 : TEMPS = 'EXTR' TEMPCALC ITEMP ; 599 : 'REMPLACER' LISTEM DIM_LIS2 TEMPS ; 600 : FIN LLREEL01 ; 601 : FINSI ; 602 : * 603 : SI ( EGA IBLOC 1 ) ; 604 : SI SUIT_OUI ; 605 : SOLUDY = LISTEM TXT_OPER TX2_OPER SUIT SOLPRE ; 606 : SINON ; 607 : SOLUDY = LISTEM TXT_OPER TX2_OPER ; 608 : FINSI ; 609 : SINON ; 610 : SOLUDY = LISTEM TXT_OPER SUIT SOLPRE ; 611 : 'DETR' SOLPRE ; 612 : FINSI ; 613 : * 614 : * ----- OPERATEUR RECO ----- 615 : * 616 : SI RECO_OUI ; 617 : N4_TEMPS = 'EXTR' LISTEM 1 ; 618 : N5_TEMPS = 'EXTR' LISTEM DIM_LIST ; 619 : I_RECO = 0 ; 620 : REPETER OPE_RECO DIM_SORT ; 621 : I_RECO = I_RECO '+' 1 ; 622 : TABL_RE1 = TABL_REC.I_RECO ; 623 : TEM_RCO = TABL_RE1.'TEMPS' ; 624 : SI ((TEM_RCO '>EG' N4_TEMPS) 'ET' (TEM_RCO '<EG' N5_TEMPS)) ; 625 : TYP_RCO = 'MOT' TABL_RE1.'TYPE' ; 626 : TY2_RCO = 'MOT' TYP_RCO ; 627 : SI ( EGA _OPERAT_ 'DEVO' ) ; 628 : SI ( (EGA TYP_RCO 'VITE') 'OU' (EGA TYP_RCO 'ACCE') ) ; 629 : TY2_RCO = 'MOT' 'DEPL' ; 630 : FINSI ; 631 : FINSI ; 632 : CHP_RCO = 'TIRE' SOLUDY.TYP_RCO 'TEMP' TEM_RCO ; 633 : I_REC2 = I_REC2 '+' 1 ; 634 : TXT_RECO = 'TEXTE' ' ' ; 635 : SI (EXISTE TABL_RE1 'STRUCTURE') ; 636 : _RSTRUC_ = TABL_RE1.'STRUCTURE' ; 637 : TXT_RECO = 'TEXTE' TXT_RECO '_RSTRUC_' ; 638 : SI (EXISTE TABL_RE1 'NUMERO') ; 639 : _RNUME_ = TABL_RE1.'NUMERO' ; 640 : TXT_RECO = 'TEXTE' TXT_RECO '_RNUME_' ; 641 : FINSI ; 642 : FINSI ; 643 : RECOMBIN.I_REC2 = 'RECO' CHP_RCO _BASMOD_ TXT_RECO TY2_RCO ; 644 : FINSI ; 645 : FIN OPE_RECO ; 646 : FINSI ; 647 : * 648 : * ----- OPERATEUR MAXI ----- 649 : * 650 : SI MAXI_OUI ; 651 : SI ( EGA IBLOC 1 ) ; 652 : TAB_MAX1 = DYNAMOD3 _BASMOD_ SOLUDY TABL_MAX ; 653 : SINON ; 654 : TAB_MAX2 = DYNAMOD3 _BASMOD_ SOLUDY TABL_MAX ; 655 : NB_MAXI = 'DIMENSION' TAB_MAX2 ; 656 : I_MAX = 0 ; 657 : REPETER VAL_MAXI NB_MAXI ; 658 : I_MAX = I_MAX '+' 1 ; 659 : MAXI1 = TAB_MAX1.I_MAX ; 660 : MAXI2 = TAB_MAX2.I_MAX ; 661 : SI ( MAXI2 '>' MAXI1 ) ; 662 : TAB_MAX1.I_MAX = MAXI2 ; 663 : FINSI ; 664 : FIN VAL_MAXI ; 665 : FINSI ; 666 : FINSI ; 667 : * 668 : * ----- OPERATEUR EVOL ----- 669 : * 670 : SI EVOL_OUI ; 671 : SI ( EGA IBLOC 1 ) ; 672 : RESUEVO1 = DYNAMOD2 SOLUDY _BASMOD_ LISTEM TEMPCALC TABL_EVO ; 673 : TAB_EVO1 = RESUEVO1.'EVOLUTION' ; 674 : TABL_PAS = RESUEVO1.'PAS-EVOL' ; 675 : SINON ; 676 : RESUEVO2 = DYNAMOD2 SOLUDY _BASMOD_ LISTEM TEMPCALC 677 : TABL_EVO TABL_PAS ; 678 : TAB_EVO2 = RESUEVO2.'EVOLUTION' ; 679 : TABL_PAS = RESUEVO2.'PAS-EVOL' ; 680 : NB_EVOL = 'DIMENSION' TAB_EVO2 ; 681 : I_EVO = 0 ; 682 : REPETER OPE_CONC NB_EVOL ; 683 : I_EVO = I_EVO '+' 1 ; 684 : EVOL1 = TAB_EVO1.I_EVO ; 685 : EVOL2 = TAB_EVO2.I_EVO ; 686 : EVOL3 = 'CONCAT' EVOL1 EVOL2 ; 687 : 'DETR' EVOL1 'TOUT' ; 'DETR' EVOL2 'TOUT' ; 688 : TAB_EVO1.I_EVO = EVOL3 ; 689 : FIN OPE_CONC ; 690 : FINSI ; 691 : FINSI ; 692 : * 693 : SI ( 'NEG' DIM_LIST DIM_CALC ) ; 694 : 'DETR' LISTEM ; 695 : FINSI ; 696 : * 697 : SOLPRE = SOLUDY ; 698 : * 699 : FIN CALCUL ; 700 : * 701 : * 702 : * -------------------------------------------------------------------- 703 : * RECUPERATION DES RESULTATS 704 : * -------------------------------------------------------------------- 705 : * 706 : SI MAXI_OUI ; 707 : RESU.'MAXI' = TAB_MAX1 ; 708 : FINSI ; 709 : SI EVOL_OUI ; 710 : RESU.'EVOL' = TAB_EVO1 ; 711 : FINSI ; 712 : SI SAUV_OUI ; 713 : RESU.'SAUV' = SOLUDY ; 714 : SINON ; 715 : 'DETR' SOLUDY ; 716 : FINSI ; 717 : * 718 : FIN PROC ; 719 : * 720 : 'FINPROC' RESU ;
© Cast3M 2003 - All rights reserved.
Disclaimer