Télécharger dynamode.procedur

Retour à la liste

Numérotation des lignes :

  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 '&lt;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 '&lt;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 ;
  721.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales