Télécharger pasapas.procedur

Retour à la liste

Numérotation des lignes :

  1. * PASAPAS PROCEDUR MB234859 24/02/20 21:15:02 11843
  2.  
  3. 'DEBP' PASAPAS PRECED*'TABLE';
  4. 'SAUT' 1 'LIGNE';
  5. '------------------ DEBUT DE LA PROCEDURE PASAPAS --------------------';
  6. ************************************************************************
  7. * *
  8. * *
  9. *** PRECED objet de type TABLE *
  10. * C'est une table donnant , les arguments d'entrees, les *
  11. * options, puis les resultats des pas precedents *
  12. * *
  13. * Etat initial au debut du pas de temps decrit par le MCHELM WTAB.ETAT1*
  14. * champs de materiaux : *
  15. * WTAB.'MAT_REF' materiau etat a la temperature de REFERENCE *
  16. * WTAB.'MAT0' materiau etat debut de calcul *
  17. * WTAB.'MAT1' materiau fin du pas de temps *
  18. * *
  19. ************************************************************************
  20.  
  21. **************** I PARTIE ******************************************
  22. * Verifications des infos transmises et valeurs par defaut
  23. PAS_DEFA PRECED ;
  24. * Creation des tables de sortie et initialisations
  25. PAS_INIT PRECED ;
  26.  
  27. WTAB = PRECED.'WTABLE' ;
  28. conti = PRECED.'CONTINUATION';
  29. estim = PRECED.'ESTIMATION' ;
  30. *-----------------------------------------------------------------------
  31. * Appel aux procedures utilisateurs
  32. *-----------------------------------------------------------------------
  33. 'SI' WTAB.'PROCEDURE_PERSO1';
  34. PRECED.'PERSO1_APPEL' = 1 ;
  35. PERSO1 PRECED ;
  36. 'SI' ('EXIS' PRECED 'ARRET') ;
  37. WTAB.'ARRET' = PRECED.'ARRET' ;
  38. 'FINSI' ;
  39. 'FINSI';
  40. *
  41. 'SI' WTAB.'PROCEDURE_REEV_MEC' ;
  42. REEV_MEC PRECED 0 ;
  43. 'FINSI' ;
  44. *
  45. 'SI' WTAB.'PROCEDURE_REEV_THE' ;
  46. REEV_THE PRECED 0 ;
  47. 'FINSI' ;
  48. *-----------------------------------------------------------------------
  49. * Initialisation ETAT et MATERIAUX
  50. *-----------------------------------------------------------------------
  51. WTAB.'ETAT0' = PAS_ETAT PRECED WTAB.'TEMPS0' ;
  52. WTAB.'ETAT1' = WTAB.'ETAT0' ;
  53. WTAB.'MAT0' = PAS_MATE PRECED WTAB.'ETAT0' ;
  54. WTAB.'MAT1' = WTAB.'MAT0' ;
  55. *
  56. *--------- initialisation deformation thermique de reference
  57. 'SI' WTAB.'FOR_MECA' ;
  58. 'SI' (WTAB.'CHAR_THE' 'OU' WTAB.'FOR_THER' ) ;
  59. 'SI' ('EGA' WTAB.'ETREF' 'INCONNU');
  60. WTAB.'ETAT_REF'= PAS_ETAT PRECED WTAB.'TEMPS0' 'REFERENCE';
  61. WTAB.'MAT_REF' = PAS_MATE PRECED WTAB.'ETAT_REF' ;
  62. WTAB.'ETREF' ='EPTH' WTAB.'MO_TOT' WTAB.'MAT_REF' WTAB.'TEMPERATURE_REFERENCE' ;
  63. 'FINS' ;
  64. *
  65. 'SI' ('EGA' ('TYPE' WTAB.'TET1') 'CHPOINT');
  66. TET1 ='CHAN' 'CHAM' WTAB.'TET1' WTAB.'MO_TOT' 'STRESSES' 'TEMPERATURES' ;
  67. 'FINS';
  68. ETT0 = 'EPTH' WTAB.'MO_TOT' WTAB.'MAT0' TET1 ;
  69. WTAB.'ETHER1' = ETT0 - WTAB.'ETREF' ;
  70. *
  71. 'SI' WTAB.'POR1';
  72. WTAB.'MSRTHER1'= PAS_EPTH PRECED WTAB.'MO_TOT' WTAB.'MAT0' TET1 ;
  73. 'FINS' ;
  74. 'FINS' ;
  75. 'FINS' ;
  76.  
  77. ************************** II PARTIE *************************
  78. ******************************************************************
  79. ******************* boucle sur les pas de temps *****************
  80. ******************************************************************
  81. * ------------quelques initialisations de l'algorithme
  82. PASFINAL = 0 ;
  83. IPAS = 0 ;
  84. IAUTO = 1 ;
  85. IREREDU = VRAI;
  86. TEMP0 = WTAB.'TEMPS0';
  87. ISAUV = VRAI;
  88. DTV =('EXTR' WTAB.'TEMPS_CALCULES' 1) - TEMP0 ;
  89. 'SI' ( DTV '<' 1.e-15 );
  90. 'SI' WTAB.'FREQUENTIEL' ;
  91. DTV = 1.e-14 ;
  92. 'SINON' ;
  93. DTV =('EXTR' WTAB.'TEMPS_CALCULES' 2) - TEMP0 ;
  94. 'FINSI';
  95. 'FINSI';
  96. DT_AVANT = DTV ;
  97. *-----------------------------------------------------------------------
  98. * Debut de la boucle sur les pas de temps
  99. *-----------------------------------------------------------------------
  100. 'REPETER' BEXTERN ;
  101. *
  102. * ----- Determiner le nouvel instant a calculer TI
  103. *
  104. NPAS='DIME' WTAB.'TEMPS_CALCULES';
  105. ICHG = WTAB.'ICHG'; ICHG=ICHG + 1; WTAB.'ICHG'= ICHG;
  106. 'SI' ( ICHG '>' NPAS) ; 'QUITTER' BEXTERN; 'FINSI';
  107. TI = 'EXTRAIRE' WTAB.'TEMPS_CALCULES' ICHG ;
  108. TIV=TI;
  109. 'SI' WTAB.'FREQUENTIEL' ;
  110. 'SI' (TI '<' TEMP0 ) ; 'ITERER' BEXTERN ; 'FINSI' ;
  111. 'SINON' ;
  112. ITERTPS = (TI '<' TEMP0 ) 'OU' (TI 'EGA' PRECED.'TEMPS'. 0) ;
  113. 'SI' ('NON' WTAB.'REEQUILIBRAGE') ;
  114. ITERTPS = ITERTPS 'OU' ('EGA' TI TEMP0) ;
  115. 'FINSI';
  116. 'SI' ITERTPS ;
  117. 'ITERER' BEXTERN ;
  118. 'FINSI';
  119. 'FINSI';
  120. *
  121. * ----- Ajustement du pas en fonction du nb d iteration du pas precedent
  122. *
  123. PASFINAL=PASFINAL+1;
  124. 'SI' WTAB.'PAS_AJUSTE';
  125. DTV=DT_AVANT;
  126. 'SI' WTAB.'CONV';
  127. 'SI' (WTAB.'NOMBRE_ITERATIONS' > 20);
  128. DTV=DTV'/' (2. ** 0.5);
  129. 'FINSI';
  130. 'SI' (WTAB.'NOMBRE_ITERATIONS' < 7);
  131. 'SI' IREREDU;
  132. DTV=DTV '*' (2. ** 0.5);
  133. 'FINSI';
  134. 'FINSI';
  135. DT_AVANT= DTV;
  136. IREREDU=VRAI;
  137. 'SINON';
  138. DTV=0.0000000001D0* DT_AVANT;
  139. DT_AVANT= DT_AVANT /2.;
  140. IREREDU=FAUX;
  141. 'FINSI';
  142. TTI = DTV* 1.0000000001 + TEMP0;
  143. 'SI' ( TTI '&lt;EG' TIV );
  144. TI=TTI;
  145. PASFINAL=0;
  146. 'FINSI';
  147. 'FINSI';
  148. *
  149. estim.'TEMPS'=TI;
  150. 'SI' (PASFINAL '>EG' 1.5) ; DT_AVANT= TI-TEMP0; 'FINSI';
  151. WTAB.'T_FINAL' = TI;
  152. WTAB.'DT_INIT' = TI-TEMP0;
  153. 'SI'((WTAB.'CONSOLIDATION' 'OU' WTAB.'DYNAMIQUE')
  154. 'ET' (WTAB.'DT_INIT' 'EGA' 0.));
  155. 'ITERER' BEXTERN;
  156. 'FINSI';
  157. WTAB.'DT'= WTAB.'DT_INIT';
  158. *
  159. * ----- Compteur IPAS des pas de temps calcules
  160. IPAS = IPAS + 1;
  161. WTAB.'PAS'=IPAS;
  162.  
  163. * ----- Mise a jour du modele si chargement de type MODE :
  164. 'SI' WTAB.'CHAR_MODE' ;
  165. MOD1P = WTAB.'MODELE' ;
  166. MODEVOL1 = 'TIRE' PRECED.'MODELE' 'MODE' TI ;
  167. WTAB.'MODELE' = MODEVOL1 ;
  168.  
  169. 'SI' WTAB.'CHAR_MATE' ;
  170. MATEVOL1 = 'TIRE' PRECED.'CARACTERISTIQUES' 'MATE' TI ;
  171. WTAB.'CARACTERISTIQUES' = MATEVOL1 ;
  172. 'FINSI' ;
  173.  
  174. PAS_MODL PRECED ;
  175.  
  176. * MaJ table rayonnement :
  177. 'SI' WTAB.'RAYO' ;
  178. WTAB.'RAYONNEMENT' = 'PRRA' WTAB.'MOD_RAY' ;
  179. 'FINSI' ;
  180.  
  181. * On sauvegarde les modeles successifs pour analyse resultats :
  182. ESTIM.'MODELES' = WTAB.'MODELE' ;
  183.  
  184. * Initialisation TINI si thermique :
  185. 'SI' WTAB.'THE1' ;
  186. MODX = WTAB.'MOD_COND' ;
  187. MODXP = MOD1P 'EXTR' 'MATE' 'CONDUCTION' ;
  188. GEO1 = MODX 'EXTR' 'MAIL' ;
  189. GEO1P = MODXP 'EXTR' 'MAIL' ;
  190. DGEO1 = GEO1 'DIFF' GEO1P ;
  191.  
  192. * Adapation du modele : transport de la solution
  193. 'SI' ((WTAB.'ADAP_MODE') 'ET' ('NON' (TI '<' (WTAB.'TPS1_ADAP')))) ;
  194. mess '***** Transport solution adaptation' ;
  195. IADAP1 = (WTAB.'INDI_ADAP') + 1 ;
  196. 'SI' (IADAP1 '&lt;EG' ('DIME' (WTAB.'LTPS_ADAP'))) ;
  197. WTAB.'TPS1_ADAP' = WTAB.'LTPS_ADAP' 'EXTR' IADAP1 ;
  198. WTAB.'INDI_ADAP' = IADAP1 ;
  199. 'SINON' ;
  200. WTAB.'TPS1_ADAP' = 'MAXI' WTAB.'TEMPS_CALCULES' + 1. ;
  201. 'FINSI' ;
  202. *erre 21 ;
  203. * Projection du champ de temperature sur la partie adaptee :
  204. DGEO1P = DGEO1 'INTE' GEO1P ;
  205. DGEO2P = (DGEO1 'INTE' GEO1) 'INCLU' DGEO1P 'VOLU' 'BARY' ;
  206. CHT1P = (WTAB.'TET1') 'EXCO' 'T' 'T' ;
  207. CHAMT1P = 'CHAN' 'CHAM' DGEO1P CHT1P ;
  208. CHT2P = 'PROI' CHAMT1P DGEO2P ;
  209. CHT1P = ('REDU' CHT1P (GEO1P 'DIFF' DGEO1P)) 'ET' CHT2P ;
  210. WTAB.'TET1' = CHT1P ;
  211.  
  212. * Calcul de la capacite courante sur la partie adaptee :
  213. DMODX = 'REDU' MODX DGEO2P ;
  214. DMATX = 'REDU' (WTAB.'CARACTERISTIQUES') DMODX ;
  215. DMATX = 'VARI' 'NUAG' DMODX DMATX CHT2P ;
  216. CAPAX = 'CAPA' DMODX DMATX ;
  217. CAPA1P = ('REDU' (WTAB.'CAPA_COURANTE') (GEO1P 'DIFF' DGEO1P)) 'ET' CAPAX ;
  218. WTAB.'CAPA_COURANTE' = CAPA1P ;
  219.  
  220. DGEO1 = (DGEO1 'INTE' GEO1) 'DIFF' DGEO2P ;
  221. 'FINSI' ;
  222.  
  223. * Calcul temperature dans partie ajoutee du modele :
  224. 'SI' ('NON' (('VIDE' DGEO1) 'OU' ('VIDE' (DGEO1 'INTE' GEO1)))) ;
  225. * Quantite de chaleur sur geometrie GEO1P :
  226. CHT1P = (WTAB.'TET1') 'EXCO' 'T' 'T' ;
  227. CHQ1P = (WTAB.'CAPA_COURANTE' lump) * CHT1P ;
  228. * Quantite de chaleur dans ajout :
  229. DMODX = 'REDU' MODX DGEO1 ;
  230. DMATX = 'REDU' (WTAB.'CARACTERISTIQUES') DMODX ;
  231. CHTINIX = DMATX 'EXCO' 'TINI' 'T' ;
  232. CHTINIX = 'CHAN' 'CHPO' CHTINIX DMODX 'MOYE' ;
  233. DMATX = 'VARI' 'NUAG' DMODX DMATX CHTINIX ;
  234. CAPAX = 'CAPA' DMODX DMATX ;
  235. CHQX = (CAPAX lump) * CHTINIX ;
  236. * Calcul T sur GEO1 :
  237. CAPA1 = (WTAB.'CAPA_COURANTE') et CAPAX ;
  238. CHTX1 = 'MANU' 'CHPO' GEO1 1 'T' 1. 'NATURE' 'DIFFUS' ;
  239. CHQX1 = CAPA1 * CHTX1;
  240. CHT1 = (CHQ1P + CHQX) * ('INVE' CHQX1) ('MOTS' 'Q') ('MOTS' 'Q') ('MOTS' 'T') ;
  241. * CHT2 = reso (lump CAPA1) (CHQ1P + CHQX) ; mess '############ avec RESO' ;
  242. *si (ipas > 10) ; erre 21 ; fins ;
  243. WTAB.'TET1' = CHT1 ;
  244. *List ((resu (CHQ1P + CHQX)) maxi abs) ;
  245. *List ((resu (CAPA1*CHT1)) maxi abs) ;
  246. *trac CHT1 GEO1 ;
  247. 'FINSI' ;
  248. 'FINSI' ;
  249.  
  250. * Initialisation PROPORTIONS_PHASES si metallurgie :
  251. 'SI' WTAB.'FOR_METALLU' ;
  252. MODX = WTAB.'MODELE' 'EXTR' 'FORM' 'METALLURGIE' ;
  253. MODXP = MOD1P 'EXTR' 'FORM' 'METALLURGIE' ;
  254. GEO1 = MODX 'EXTR' 'MAIL' ;
  255. GEO1P = MODXP 'EXTR' 'MAIL' ;
  256. DGEO1 = GEO1 'DIFF' GEO1P ;
  257. 'SI' ('NON' (('VIDE' DGEO1) 'OU' ('VIDE' (DGEO1 'INTE' GEO1)))) ;
  258. CHMET0 = ESTIM.'PROPORTIONS_PHASES' ;
  259. DMODX = 'REDU' MODX DGEO1 ;
  260. CHMET1 = 'ZERO' DMODX 'VARINTER' ;
  261. LISCO = 'EXTR' DMODX 'VARI' ;
  262. CMP1 = 'EXCO' CHMET1 ('EXTR' LISCO 1) ('EXTR' LISCO 1) ;
  263. CHMET1 = CHMET1 + (CMP1 + 1.D0);
  264. CHMET1 = CHMET0 'ET' CHMET1 ;
  265. ESTIM.'PROPORTIONS_PHASES' = CHMET1 'REDU' MODX ;
  266. *trac CHMET1 MODX ;
  267. 'FINSI' ;
  268. 'FINS' ;
  269.  
  270. 'FINSI' ;
  271.  
  272. * ----- Mise a jour blocages passes dans chargement
  273. * Cas BLOCAGES_MECANIQUES (BLOM) :
  274. 'SI' WTAB.'CHAR_BLOM' ;
  275. BLOM1 = 'TIRE' PRECED.'BLOCAGES_MECANIQUES' 'BLOM' TI ;
  276. WTAB.'BLOCAGES_MECANIQUES' = BLOM1 ;
  277.  
  278. * MAJ Operateur Resolution :
  279. 'SI' ('EXIS' WTAB 'RRRR') ;
  280. RRRR = WTAB.'RRRR' 'EXTR' 'RIGI' 'NOMU' ;
  281. WTAB.'RRRR' = RRRR 'ET' BLOM1 ;
  282. 'FINSI' ;
  283. 'FINSI' ;
  284.  
  285. * Cas BLOCAGES_THERMIQUES (BLOT) :
  286. 'SI' WTAB.'CHAR_BLOT' ;
  287. BLOT1 = 'TIRE' PRECED.'BLOCAGES_THERMIQUES' 'BLOT' TI ;
  288. WTAB.'BLOCAGES_THERMIQUES' = BLOT1 ;
  289. 'FINSI' ;
  290.  
  291. * Cas BLOCAGES_DIFFUSIONS (BLOD) :
  292. 'SI' WTAB.'CHAR_BLOD' ;
  293. BLOD1 = 'TIRE' PRECED.'BLOCAGES_DIFFUSIONS' 'BLOD' TI ;
  294. WTAB.'BLOCAGES_DIFFUSIONS' = BLOD1 ;
  295. 'FINSI' ;
  296.  
  297. * ----- On se place dans la configuration de debut de pas
  298. 'SI'( WTAB.'GRANDS_DEPLACEMENTS' 'OU' WTAB.'FEFP_FORMULATION');
  299. 'SI' WTAB.'RECALCUL' ;
  300. 'FORM' WTAB.'GE0_DEB';
  301. 'FINSI';
  302. 'FINSI';
  303.  
  304. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  305. *++++++++++++++++++ BOUCLE interne de bouclage mec_ther ++++++++++++++
  306. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  307. I_BOTH = 0 ;
  308. 'REPETER' BO_BOTH WTAB.'BOU_METH' ;
  309. I_BOTH = I_BOTH + 1 ;
  310. *
  311. * re-initialisation de WTAB.'CHARGEMENT' en tete de boucle mec-ther
  312. *
  313. 'SI' WTAB.'CONVERGENCE_MEC_THE' ;
  314. WTAB.'CHARGEMENT' = WTAB . 'CHARGEMENT_I' ;
  315. 'FINSI';
  316. *
  317. *#######################################################################
  318. *#################### CALCUL D'UN PAS SI THERMIQUE #####################
  319. *#######################################################################
  320. 'SI' (WTAB.'FOR_THER' 'OU' WTAB.'FOR_DIFF') ;
  321. 'SI' WTAB.'FOR_MECA' ;
  322. *---------- en cas de convergence mecanique thermique
  323. 'SI' (I_BOTH > 1) ;
  324. *---------- reprise de la configuration meca de la derniere estimation
  325. * du pas present si coherence mecanique/thermique
  326. 'SI' ('EXIS' estim 'FOR' );
  327. WTAB .'RECARI' = VRAI ;
  328. WTAB .'RECADET' = VRAI ;
  329. WTAB.'REA_GEOM' = VRAI ;
  330. 'FORM' estim.'FOR' ;
  331. 'FINSI';
  332. 'FINSI' ;
  333. 'FINSI' ;
  334.  
  335. 'SI' (TI 'NEG' TEMP0);
  336. 'SI' ('NON' ('EXISTE' PRECED 'PAS_MAX'));
  337. WTAB.'TEM_CALC' = 'PROG' TI;
  338. 'SINON';
  339. 'SI' ((TEMP0 + PRECED.'PAS_MAX') '>EG' TI);
  340. WTAB.'TEM_CALC' = 'PROG' TI;
  341. 'SINON';
  342. WTAB.'TEM_CALC' = 'PROG' TEMP0
  343. 'PAS' PRECED.'PAS_MAX' TI;
  344. WTAB.'TEM_CALC' = 'ENLE' WTAB.'TEM_CALC' 1;
  345. 'FINSI';
  346. 'FINSI';
  347. *
  348. * ----- Appel a la procedure thermique (lineaire ou nonlineaire) ----
  349. *
  350. 'SI' ('NON' WTAB.'COUPLAGE'); 'MENAGE'; 'FINSI';
  351. 'SI' ('EGA' WTAB.'PROCEDURE_THERMIQUE' 'NONLINEAIRE');
  352. CHTER = TRANSNON PRECED;
  353. 'FINSI';
  354. 'SI' ('EGA' WTAB.'PROCEDURE_THERMIQUE' 'LINEAIRE');
  355. CHTER = TRANSLIN PRECED;
  356. 'FINSI';
  357. 'SI' ('EGA' WTAB.'PROCEDURE_THERMIQUE' 'DUPONT');
  358. WTAB.'NOUV_PAS' = ('EXTR' WTAB.'TEM_CALC' 1) - TEMP0;
  359. CHTER = DUPONT2 PRECED;
  360. 'FINSI';
  361.  
  362. * Verification d'une erreur en sortie
  363. 'SI' CHTER.'ERREUR';
  364. 'ERREUR' ' ';
  365. 'FINSI';
  366.  
  367. * Modele Metallurgique (T.L. en juin 2018)
  368. 'SI' WTAB.'FOR_METALLU' ;
  369. estim.'PROPORTIONS_PHASES' = CHTER.'PROPORTIONS_PHASES' ;
  370. 'FINSI';
  371.  
  372. 'SI' WTAB.'PHASE';
  373. WTAB.'PROPPHAS' = CHTER.'PROPPHAS' ;
  374. estim.'PROPORTIONS_PHASE'= CHTER.'PROPPHAS' ;
  375. 'FINSI' ;
  376.  
  377. 'SI' WTAB.'FOR_THER' ;
  378. WTAB.'TET2'=CHTER.'INITIAL(2)' ;
  379. WTAB.'CLIT'=CHTER.'CLIT' ;
  380. 'SI' ('EGA' WTAB.'PROCEDURE_THERMIQUE' 'NONLINEAIRE') ;
  381. 'SI' ('NEG' WTAB.'RIBLO_T' 'INCONNU');
  382. WTAB.'RIBLO_T' = CHTER.'RIBLO_T' ;
  383. WTAB.'LISEA_T' = CHTER.'LISEA_T' ;
  384. 'FINSI' ;
  385. 'FINSI' ;
  386. 'SI' WTAB.'RAYO' ;
  387. WTAB.'RAYONNEMENT' = CHTER.'RAYONNEMENT' ;
  388. 'FINSI' ;
  389. 'FINSI' ;
  390. 'SI' WTAB.'FOR_DIFF' ;
  391. WTAB.'CO2' =CHTER.'CO2';
  392. WTAB.'CLID'=CHTER.'CLID' ;
  393. 'FINSI' ;
  394.  
  395. 'SI' WTAB.'FOR_THER' ;
  396. estim.'TEMPERATURES' = WTAB.'TET2' ;
  397. estim.'REACTIONS_THERMIQUES'='REAC' WTAB.'CLIT' WTAB.'TET2';
  398. 'FINSI';
  399.  
  400. 'SI' WTAB.'FOR_DIFF' ;
  401. estim.'CONCENTRATIONS' = WTAB.'CO2' ;
  402. estim.'REACTIONS_DIFFUSIONS' ='REAC' WTAB.'CLID' WTAB.'CO2';
  403. 'FINSI' ;
  404. *** Reevaluation des donnees du calcul dependant de la temperature
  405. 'SI' WTAB.'PROCEDURE_REEV_THE' ;
  406. REEV_THE PRECED 1 ;
  407. 'FINSI' ;
  408. 'FINS';
  409.  
  410. *-----convergence mecanique thermique : reprise configuration ------
  411. *---------- du pas precedent pour refaire la mecanique -------------
  412. 'SI'(WTAB.'GRANDS_DEPLACEMENTS' 'OU' WTAB.'FEFP_FORMULATION');
  413. 'FORM' WTAB.'GE0_DEB';
  414. 'FINSI' ;
  415. 'FINSI' ;
  416. *################## fin du calcul d'un pas thermique #################
  417.  
  418. *#######################################################################
  419. *#################### CALCUL D'UN PAS SI MECANIQUE #####################
  420. *#######################################################################
  421. 'SI' (WTAB.'FOR_MECA' 'OU' WTAB .'NVSTNL') ;
  422. 'SAUT' 1 'LIGN';
  423. 'MESSAGE' ' Numero du pas : ' IPAS ' Indice d evolution : ' ICHG ' -> temps :' TI;
  424.  
  425. *--------------------- calcul de la temperature ---------------------
  426. * CB215821 : On met la thermique dans le Chargement pour 'TIRER' le chargement
  427. * au bon instant dans UNPAS pour la MECANIQUE
  428. * Il faudra faire de meme avec la MECANIQUE si la THERMIQUE en depend
  429. * 'SI' WTAB.'FOR_THER';
  430. * THTA1='TABLE';
  431. * THTA2='TABLE';
  432. * THTA1.0=TEMP0;
  433. * THTA1.1=TI;
  434. * THTA2.0= conti.'TEMPERATURES' 'ENLE' 'LX' ;
  435. * THTA2.1= estim.'TEMPERATURES' 'ENLE' 'LX' ;
  436. * CHTH='CHAR' 'T' THTA1 THTA2;
  437. * CHASANST= WTAB.'CHARGEMENT' 'ENLE' 'T';
  438. * WTAB.'CHARGEMENT'= CHASANST 'ET' CHTH;
  439. * 'FINSI';
  440. 'SI' WTAB.'CHAR_THE';
  441. WTAB.'TET2' ='TIRE' WTAB.'CHARGEMENT' 'T ' TI;
  442. 'FINSI';
  443.  
  444. *------- Caracteristiques initiales en cas de grands deplacements -----
  445. 'SI' WTAB.'ITCAR';
  446. 'SI' ('EGA' WTAB.'CARA' 'INCONNU');
  447. WTAB.'CARA' = WTAB.'MAT0';
  448. 'FINSI';
  449. 'FINSI';
  450.  
  451. ************************************************************************
  452. **************** APPEL A UNPAS ********************************
  453. ************************************************************************
  454. 'MENA' ;
  455. TT = UNPAS PRECED;
  456. *---------- Mise a jour du MODELE du PAS precedent ---------------
  457. WTAB.'MO_TOT_PREC' = TT.'MO_TOT_PREC' ;
  458.  
  459. *---------- retour a la configuration de reference -------------------
  460. 'SI' (WTAB.'GRANDS_DEPLACEMENTS' 'OU' WTAB.'FEFP_FORMULATION');
  461. 'FORM' WTAB.'FOR0';
  462. 'FINSI';
  463.  
  464. *------- test si on a converge
  465. WTAB.'CONV' = TT.'CONV';
  466. 'SI' ('NON' TT.'CONV' 'ET' ('NON' WTAB.'CONVERGENCE_FORCEE'));
  467. * en dynamique et en poreux on garde le PRECED.FREA1 du dernier pas
  468. * converge (dans le cas ou on voudrait continuer le calcul)
  469. * 'SI' WTAB.'DYNAMIQUE' ; WTAB.'FREA1' = F1 ; 'FINSI';
  470. * 'SI' WTAB.'CONSOLIDATION' ;WTAB.'FREA1' = FF1 ; 'FINSI';
  471. 'ERREUR' 997 ;
  472. 'FINSI';
  473.  
  474. 'SI' WTAB.'FOR_MECA' ;
  475. * Remplissage de la table ESTIMATION : champs en fin de pas
  476. DEP0= conti.'DEPLACEMENTS';
  477. * DEP = ENLEVER DEP0 'LX';
  478. estim.'DEPLACEMENTS'= TT.'ZU1' ;
  479. * 'DETRUIRE' DEP;
  480. estim.'DEFORMATIONS'= TT.'DEFF';
  481. estim.'CONTRAINTES' = TT.'SIGF' ;
  482. estim.'DFGRAD' = TT.'DFGRAD';
  483. 'SI' WTAB.'IPLAVI' ;
  484. estim.'VARIABLES_INTERNES' = TT.'VARF';
  485. estim.'DEFORMATIONS_INELASTIQUES' = TT.'DFPF';
  486. 'FINSI' ;
  487. 'SI' WTAB.'GRANDS_DEPLACEMENTS' ;
  488. estim.'FOR' = TT.'FOR' ;
  489. 'FINSI' ;
  490. 'SI' WTAB . 'DYNAMIQUE' ;
  491. estim.'VITESSES' = TT.'VITI' ;
  492. estim.'ACCELERATIONS' = TT.'ACCEI' ;
  493. 'FINSI';
  494. * 'SI' WTAB .'ITCAR';
  495. * estim.'CARA_ACTU' = TT.'CARA' ;
  496. * 'FINSI';
  497. *** Reevaluation des donnees du calcul dependant de la mecanique
  498. 'SI' WTAB.'PROCEDURE_REEV_MEC' ;
  499. REEV_MEC PRECED 1;
  500. 'FINSI' ;
  501. 'FINSI';
  502.  
  503. 'SI' WTAB.'NVSTNL' ;
  504. estim.'VITESSES_FLUIDE' = TT.'ZVIFL' ;
  505. estim.'PRESSION_FLUIDE' = TT.'ZPREFL' ;
  506. 'FINSI' ;
  507.  
  508. 'FINSI';
  509. *#######################################################################
  510. *################### FIN DU CALCUL D'UN PAS MECANIQUE ##################
  511. *#######################################################################
  512. ***
  513. *** Test de la convergence mecanique thermique
  514. ***
  515. 'SI' WTAB.'CONVERGENCE_MEC_THE' ;
  516. * je cherche la convergence thermo-mecanique : je dois au moins
  517. * calculer deux fois mon probleme
  518. 'SI' (I_BOTH > 1) ;
  519. * Test sur toutes les composantes (notamment, si DIFFUSION)
  520. CHT1 = WTAB . 'THER_COURANT' ;
  521. DUABS2 = 'ABS' (WTAB.'THER_COURANTP' - CHT1) ;
  522. CRICOH1 = 0. ;
  523. NBINCO1 = 'DIME' WTAB . 'PRIM_TOT' ;
  524. 'REPE' BINCO1 NBINCO1 ;
  525. LINCOI1 = 'MOTS' ('EXTR' WTAB.'PRIM_TOT' &BINCO1) ;
  526. MDUABSI1 = 'MAXI' DUABS2 'AVEC' LINCOI1 ;
  527. NORMI1 = 'MAXI' 'ABS' CHT1 'AVEC' LINCOI1 ;
  528. 'SI' (NORMI1 '&lt;EG' (1.E-14 * MDUABSI1)) ;
  529. NORMI1 = 1. ;
  530. 'FINS' ;
  531. CRICOHI1 = MDUABSI1 / NORMI1 ;
  532. 'SI' (CRICOHI1 '>' CRICOH1) ;
  533. CRICOH1 = CRICOHI1 ;
  534. 'FINS' ;
  535. 'FIN' BINCO1 ;
  536.  
  537. WTAB.'CONV_THMEC' = CRICOH1 '<' (WTAB . 'CRITERE_COHERENCE') ;
  538. * Fin de boucle Si ne converge Pas
  539. 'SI'('NON' WTAB.'CONV_THMEC') ;
  540. 'SI' (I_BOTH >EG WTAB.'BOU_METH');
  541. 'MESS' 'PAS DE COHERENCE TROUVEE MECANIQUE THERMIQUE' ;
  542. 'ERREUR' 999;
  543. 'FINSI' ;
  544. 'FINSI' ;
  545. 'SINON' ;
  546. * je suis sur la premiere boucle de convergence thermomecanique
  547. WTAB.'CONV_THMEC' = FAUX ;
  548. 'FINSI' ;
  549. * THER_COURANTPrecedent dans WTAB pour test CONVERGENCE_MEC_THE
  550. WTAB . 'THER_COURANTP' = WTAB . 'THER_COURANT' ;
  551. 'SINON' ;
  552. * ici je ne cherche pas la convergence thermomecanique
  553. WTAB.'CONV_THMEC' = VRAI ;
  554. 'FINSI' ;
  555.  
  556. 'SI' (WTAB.'CONV_THMEC') ;
  557. 'QUITTER' BO_BOTH ;
  558. 'FINSI' ;
  559.  
  560. 'SI' ('NEG' ('TYPE' WTAB.'GE0_DEB') 'MOT') ;
  561. FORME WTAB.'GE0_DEB';
  562. 'FINSI' ;
  563.  
  564. 'FIN' BO_BOTH ;
  565.  
  566. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  567. *++++++++++++++++ fin de boucle interne de convergence mec_ther ++++++++
  568. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  569.  
  570. *----- Preparation du pas suivant : Thermique et Diffusion
  571. 'SI' WTAB.'FOR_THER';
  572. WTAB.'TET2' = estim.'TEMPERATURES' ;
  573. WTAB.'TET1'=WTAB.'TET2';
  574. 'SI' ('EGA' WTAB.'PROCEDURE_THERMIQUE' 'DUPONT');
  575. WTAB.'TET0' = WTAB.'TET1' ;
  576. WTAB.'VIEUXPAS' = WTAB.'NOUV_PAS' ;
  577. WTAB.'RELAXATION_DUPONT' = CHTER.'RELAXATION_DUPONT';
  578. 'SI' ('EXIS' CHTER 'INITIAL(1)') ;
  579. WTAB.'TET1' = CHTER.'INITIAL(1)';
  580. 'FINSI' ;
  581. 'FINSI';
  582. 'FINSI' ;
  583.  
  584. 'SI' WTAB.'FOR_DIFF';
  585. WTAB.'CO1' = WTAB.'CO2' ;
  586. WTAB.'CO2' = estim.'CONCENTRATIONS' ;
  587. 'FINSI' ;
  588.  
  589. *----- Preparation du pas suivant : Mecanique
  590. 'SI' WTAB.'FOR_MECA' ;
  591. 'SI' ('EXISTE' TT 'SECOND_MEMBRE');
  592. WTAB . 'SECOND_MEMBRE' = TT . 'SECOND_MEMBRE' ;
  593. 'FINSI' ;
  594. 'SI' ('EXISTE' TT 'SUCCES');
  595. WTAB . 'SUCCES' = TT . 'SUCCES' ;
  596. 'FINSI' ;
  597. 'SI' ('EXISTE' TT 'AUTOCOEF');
  598. WTAB . 'AUTOCOEF' = TT . 'AUTOCOEF' ;
  599. 'FINSI' ;
  600. 'SI' ('EXISTE' TT 'AUTOREDU');
  601. WTAB . 'AUTOREDU' = TT . 'AUTOREDU' ;
  602. 'FINSI' ;
  603. 'SI' ('EXISTE' TT 'AUTORED1');
  604. WTAB . 'AUTORED1' = TT . 'AUTORED1' ;
  605. 'FINSI' ;
  606. 'SI' ('EXISTE' TT 'RIBLO_M');
  607. WTAB . 'RIBLO_M' = TT . 'RIBLO_M' ;
  608. WTAB . 'LISEA_M' = TT . 'LISEA_M' ;
  609. 'FINSI' ;
  610. 'SI' ('EXISTE' TT 'INCREMENT');
  611. WTAB . 'INCREMENT' = TT . 'INCREMENT' ;
  612. 'FINSI' ;
  613. 'SI' ('EXISTE' TT 'INITEMPS');
  614. WTAB . 'INITEMPS' = TT . 'INITEMPS' ;
  615. 'FINSI' ;
  616. 'SI' ('EXISTE' TT 'DT');
  617. WTAB . 'DT' = TT . 'DT' ;
  618. 'FINSI' ;
  619. 'SI' ('EXISTE' TT 'NBPLAS');
  620. WTAB . 'NBPLAS' = TT . 'NBPLAS' ;
  621. 'FINSI' ;
  622. 'SI' ('EXISTE' TT 'NOMBRE_ITERATIONS');
  623. WTAB . 'NOMBRE_ITERATIONS' = TT . 'NOMBRE_ITERATIONS' ;
  624. 'FINSI' ;
  625. 'SI' ('EXISTE' TT 'FFROT');
  626. WTAB . 'FFROT' = TT . 'FFROT' ;
  627. 'FINSI' ;
  628. 'SI' ('EXISTE' TT 'RESIDU');
  629. WTAB . 'RESIDU' = TT . 'RESIDU' ;
  630. 'FINSI' ;
  631. 'SI' ('EXISTE' TT 'FNONL');
  632. WTAB . 'FNONL' = TT . 'FNONL' ;
  633. 'FINSI' ;
  634. 'SI' ('EXISTE' TT 'DTPREC');
  635. WTAB . 'DTPREC' = TT . 'DTPREC' ;
  636. 'FINSI' ;
  637. * SP : Modification de WTAB.'TET2' suite a appel a UNPAS
  638. * CB : SI (IPILOT) ==> TET2 est TIRE entre TEMPS0 et TI
  639. 'SI' ('EXISTE' TT 'TET2');
  640. WTAB . 'TET2' = TT . 'TET2' ;
  641. 'FINSI' ;
  642. 'SI' ('EXISTE' TT 'XDENO');
  643. WTAB . 'XDENO' = TT . 'XDENO' ;
  644. 'FINSI' ;
  645. 'SI' ('EXISTE' TT 'XDENOM');
  646. WTAB . 'XDENOM' = TT . 'XDENOM' ;
  647. 'FINSI' ;
  648. 'SI' ('EXISTE' TT 'LASTKTAN');
  649. WTAB . 'LASTKTAN' = TT . 'LASTKTAN' ;
  650. 'FINSI' ;
  651. 'SI' ('EXISTE' TT 'DFGRAD');
  652. WTAB . 'DFGRAD'= TT .'DFGRAD';
  653. 'FINSI' ;
  654. 'SI' ('EXIS' TT 'ETHER2');
  655. WTAB.'ETHER1'= TT.'ETHER2';
  656. WTAB.'ETHER2'= TT.'ETHER2';
  657. 'FINSI';
  658. 'SI' ('EXIS' TT 'MSRTHER2');
  659. WTAB.'MSRTHER1'= TT.'MSRTHER2';
  660. WTAB.'MSRTHER2'= TT.'MSRTHER2';
  661. 'FINSI';
  662. 'SI' ('EXIS' TT 'DEFOR2');
  663. WTAB.'DEFOR1'= TT.'DEFOR2';
  664. WTAB.'DEFOR2'= TT.'DEFOR2';
  665. 'FINSI';
  666. 'SI'('EXIS' TT 'ETAT2');
  667. WTAB.'ETAT1'= TT.'ETAT2';
  668. 'FINSI';
  669.  
  670. * fin des reactualisations.
  671. *--------------------------- deplacement ------------------------------
  672. TT.'DEPTOT' = estim.'DEPLACEMENTS' ;
  673. *-------------------- forces de reaction ------------------------------
  674. TT.'REAC'= 'REAC' TT.'DEPTOT' WTAB.'CLIM';
  675. estim.'REACTIONS' = TT.'REAC' ;
  676. *------------------ deformation d'origine thermique ------------------
  677. 'SI' WTAB.'CHAR_THE';
  678. WTAB.'ETHER2' = TT.'ETHER2' ;
  679. 'SI' WTAB.'POR1' ;
  680. WTAB.'MSRTHER2' = TT.'MSRTHER2';
  681. 'FINSI';
  682. 'FINSI';
  683. *------- en dynamique : vitesse, forces de reactions, operateur -------
  684.  
  685. 'SI' WTAB . 'DYNAMIQUE' ;
  686. 'SI' WTAB . 'LIAISON_PERSISTANTE' ;
  687. * corection des vitesses pour avoir des vitesses relatives nulles
  688. * aux points qui sont en contact
  689. TT.'VITI' = TT.'VITI' + TT.'VAUX' ;
  690. 'SINON' ;
  691. * forces d'acceleration et d'amortissement a la fin du pas *
  692. WTAB.'FREA1' = TT.'FOPL' - TT.'REAC';
  693. * en cas d'appuis unilateraux avec choc elastique essai de corriger
  694. * les vitesses fournies par le schema
  695.  
  696. TT.'VITI'= VITEUNIL TT.'ZRAIDV' WTAB.'MASSE' TT.'VITI'
  697. tt.'DEPT' DEP0 WTAB.'DT' WTAB.'SECOND_MEMBRE' WTAB;
  698. 'SI' ( 'EXIS' WTAB 'RATE_VITEUNIL');
  699. 'ERREUR' 'Probleme dans viteunil' ; 'FINSI';
  700. 'FINSI' ;
  701. 'SI' ( 'NEG' WTAB.'REAPREC' 'INCONNU');
  702. 'SI' ('EGA' ('TYPE' (EXTR TT.'REAC' 'MAIL')) 'MAILLAGE');
  703. reacdif='REDU' WTAB.'REAPREC' (EXTR TT.'REAC' 'MAIL');
  704. TT.'REAC'= TT.'REAC' - REACDIF;
  705. 'FINSI' ;
  706. WTAB.'REAPREC'=TT.'REAC';
  707. 'SINON';
  708. WTAB . 'REAPREC'= TT.'REAC';
  709. 'FINSI';
  710. estim.'VITESSES' = TT.'VITI' ;
  711. estim.'REACTIONS' = TT.'REAC' ;
  712. 'FINSI';
  713.  
  714. *---------- en consolidation : operateur ------------------------------
  715. 'SI' WTAB . 'CONSOLIDATION' ;
  716. WTAB.'OPERATEUR' = ROP;
  717. 'FINSI';
  718.  
  719. *-------------------------- configuration -----------------------------
  720. 'SI' WTAB.'GRANDS_DEPLACEMENTS' ;
  721. WTAB.'RECALCUL'= VRAI ;
  722. WTAB.'GE0_DEB' = TT.'FOR' ;
  723. 'SI' WTAB.'ITCAR' ;
  724. WTAB.'CARA' = TT.'CARA' ;
  725. 'FINSI' ;
  726. 'FINSI';
  727. 'FORM' WTAB.'FOR0';
  728.  
  729. ***********************************************************************
  730. 'SI' ('ET' (WTAB.'FEFP_FORMULATION')
  731. (WTAB.'UPDATE_LAGRANGIAN')) ;
  732. * tc 'SI' ( 'NEG' WTAB.'FOR' 'INCONNU'); DETR GEOM1; 'FINSI';
  733. WTAB.'GE0_DEB' = TT.'FOR' ; WTAB.'RECALCUL'=VRAI;
  734. 'FINSI';
  735. ************************************************************************
  736.  
  737. *--------------------- destruction de l operateur ----------------------
  738. 'SI' (WTAB . 'RECADET') ;
  739. * 'DETR' RH 'ELEM';
  740. 'OUBLIER' ROP;
  741. 'FINSI';
  742.  
  743. *----------------------------- temps initial --------------------------
  744. DT2 =( TI - TEMP0)/10000.;
  745. 'SI' (WTAB . 'AUTOMATIQUE' 'OU' ('NON' WTAB.CONV));
  746. TEMP0 = ( TI - TEMP0) * WTAB.'AUTOCOEF' + TEMP0;
  747. 'MESS' ' Temps effectivement calcule et non converge : ' TEMP0;
  748. WTAB.'TEMPS0' = TEMP0;
  749. 'SINON';
  750. TEMP0=TI;
  751. WTAB.'TEMPS0' = TEMP0;
  752. 'FINSI';
  753.  
  754. *----------------- Appel a une procedure personnelle -------------------
  755. 'SI' (WTAB.'PROCEDURE_PERSO1');
  756. PRECED.'PERSO1_APPEL' = 2 ;
  757. PERSO1 PRECED;
  758. 'SI' ('EXIS' PRECED 'ARRET') ;
  759. WTAB . 'ARRET' = PRECED . 'ARRET' ;
  760. 'FINSI' ;
  761. TEMP0 = WTAB.'TEMPS0' ;
  762. 'FINSI';
  763. *----------------- On redefinit WTAB.'CHARGEMENT_I' ------------------
  764. 'SI' WTAB.'CONVERGENCE_MEC_THE' ;
  765. WTAB.'CHARGEMENT_I' = WTAB.'CHARGEMENT' ;
  766. 'FINSI';
  767. 'FINSI';
  768.  
  769. *++++++++++++++++++ fin preparation pas suivant mecanique +++++
  770. *################## Sauvegarde ###############################
  771. 'SI' ('NON' WTAB.'FOR_MECA') ;
  772. DT2 =( TI - TEMP0)/10000.;
  773. TEMP0=TI;
  774. WTAB.'TEMPS0' = TEMP0;
  775. TT = 'TABLE' ;
  776. 'FINSI';
  777. * pour ne pas sauvegarder la matrice de raideur si on doit la recalculer
  778. 'SI' ('EXIS' WTAB 'RRRR') ;
  779. 'SI' WTAB.'RECARI' ;
  780. WTAB ='ENLE' WTAB 'RRRR' ;
  781. PRECED.'WTABLE'= WTAB ;
  782. 'SI' ('EXIS' estim 'FOR') ;
  783. estim ='ENLE' estim 'FOR' ;
  784. PRECED.'ESTIMATION'=estim ;
  785. 'FINSI';
  786. 'FINSI';
  787. 'FINSI';
  788.  
  789. *-- remplissage de la table de continuation et des tables de resultats
  790. *-- s'il faut garder les resultats, sauvegarde incrementale et
  791. *-- fantomisation si economique
  792. ISAUV = PAS_RESU TEMP0 iauto PRECED ;
  793.  
  794. *******************************************
  795. ***** cas du pilotage automatique *******
  796. *******************************************
  797.  
  798. 'SI' WTAB.'AUTOMATIQUE'; IAUTO=IAUTO+1;
  799. 'SI' ((WTAB . 'AUTOCOEF' 'EGA' 0.9999999D0) 'OU'
  800. (TEMP0 '>EG' TI)) ;
  801. TEMP0=TI;
  802. 'MESS' ' Objectif atteint ';
  803. 'MESS' ' ';
  804. WTAB.'AUTODEUX' = FAUX ;
  805. WTAB.AUTORED1 = 0 ;
  806. WTAB.AUTOREDU = 1. ;
  807. IAUTO=1;
  808. 'SINON';
  809. 'MESS' ' Objectif non atteint: On recommence';
  810. 'MESS' ' ';
  811. 'SI' ( IAUTO >EG WTAB.'AUTOPAS');
  812. 'ERREUR' 1000;
  813. * 'MESS' 'Pilotage non converge apres ' IAUTO ' pas.';
  814. 'FINSI';
  815. WTAB.'AUTODEUX'=VRAI;
  816. ICHG=ICHG - 1; WTAB.'ICHG' = ICHG ;
  817. 'FINSI';
  818. 'FINSI';
  819. *
  820. 'SI'(WTAB.'CHAR_THE' 'OU' WTAB.'FOR_THER');
  821. WTAB.'TET1'=WTAB.'TET2';
  822. 'SI' WTAB.'FOR_MECA';
  823. WTAB.'ETHER1' =WTAB.'ETHER2';
  824. 'FINSI';
  825. 'SI' WTAB.'POR1';
  826. WTAB.'MSRTHER1'=WTAB.'MSRTHER2';
  827. 'FINSI';
  828. 'FINSI' ;
  829. 'SI' WTAB.'CHAR_DEFI' ; WTAB.'DEFOR1'=WTAB.'DEFOR2';'FINSI';
  830. 'SI' WTAB.'FOR_DIFF' ; WTAB.'CO1' =WTAB.'CO2' ;'FINSI' ;
  831. ************************************************************************
  832. ****** cas de la convergence forcee
  833. ************************************************************************
  834. 'SI' WTAB.'PAS_AJUSTE';
  835. 'SI' ((TI < TIV) 'OU' ('NON' WTAB.'CONV'));
  836. ICHG=ICHG-1; WTAB.'ICHG' = ICHG ;
  837. 'FINSI';
  838. 'FINSI';
  839. 'SI' WTAB.'ARRET';
  840. 'QUITTER' BEXTERN;
  841. 'FINSI';
  842. 'FIN' BEXTERN;
  843. *-----------------------------------------------------------------------
  844. * Fin de la boucle sur les pas de temps
  845. *-----------------------------------------------------------------------
  846. 'SI' ('NEG' WTAB.'AMORTISSEMENT' 'INCONNU');
  847. WTAB.'AMORTISSEMENT' = TOTO ;
  848. 'FINSI';
  849. *
  850. 'SI' ('NEG' ('TYPE' WTAB.'GE0_DEB') 'MOT') ;
  851. 'OUBL' WTAB 'GE0_DEB' ;
  852. 'FINSI' ;
  853. *
  854. * on tue WTAB.'MAT1' s'il existe car il peut etre tres gourmand en place
  855. WTAB.'MAT1' = 'MOT' 'INCONNU';
  856. *
  857. 'MESS' ' ';
  858. '------------------- FIN DE LA PROCEDURE PASAPAS ---------------------';
  859. 'SAUT' 1 'LIGNE';
  860. *
  861. ************************************************************************
  862. *
  863. 'SI' ('EXIS' WTAB 'RRRR') ;
  864. * pour forcer le calcul de la rigidite si on rappele pasapas
  865. WTAB1= 'ENLEVER' WTAB 'RRRR';
  866. PRECED .'WTABLE'= WTAB1;
  867. 'FINSI';
  868.  
  869. * Typage de la table en sortie de PASAPAS ;
  870. PRECED.'SOUSTYPE' = 'MOT' 'PASAPAS' ;
  871. *
  872. 'FINPROC' PRECED ;
  873.  
  874.  

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