Télécharger transit0.procedur

Retour à la liste

Numérotation des lignes :

  1. * TRANSIT0 PROCEDUR FANDEUR 14/10/10 21:15:27 8178
  2. * TRANSIT0 PROCEDUR CHAT 92/09/01 21:18:33 639
  3. 'DEBPROC' TRANSIT0 ETAB*'TABLE' ;
  4. *----------------------------------------------------------------------*
  5. * PROCEDURE TRANSIT0 MARS 91 *
  6. * *
  7. * calcul d'un increment de solution en thermique non-lineaire *
  8. * stationnaire par la methode des residus
  9. * *
  10. * INSPIREE DE INCREME + TRANSIT1
  11. *----------------------------------------------------------------------*
  12. * *
  13. * ETAB, TABLE CONTENANT EN ENTREE : *
  14. * ------------------------------- *
  15. * INDICE 'SOUSTYPE' THERMIQUE *
  16. * INDICE 'MAILLAGE' MAILLAGE DE BASE *
  17. * INDICE 'COQUE' TYPE D'ELEMENT COQUE
  18. * INDICE 'EPAI' EPAISSEUR DE LA COQUE
  19. * INDICE 'BLOCAGE' MATRICE DE BLOCAGE (CREEE PAR "BLOQUE") *
  20. * INDICE 'IMPOSE' VALEURS IMPOSEES (CREE PAR "DEPI") *
  21. * INDICE 'CONDUCTIVITE' VALEUR INITIALE DE LA CONDUCTIVITE *
  22. * INDICE 'EVOCOND' EVOLUTION DE LA CONDUCTIVITE DU MATERIAU *
  23. * EN FONCTION DE LA TEMPERATURE : K(T) *
  24. * INDICE 'FLUX' FLUX EQUIVALENTS *
  25. * INDICE 'CRITERE' CRITERE DE CONVERGENCE *
  26. * (10E-5 PAR DEFAUT) *
  27. * INDICE 'NITER' REACTUALISATION DE LA CONDUCTIVITE TOUTES *
  28. * LES NITER ITERATIONS ( 10 PAR DEFAUT) *
  29. * INDICE 'NIVEAU' NIVEAU DE MESSAGES (NIVEAU=0 PAR DEFAUT) *
  30. * INDICE 'ACCELERATION' FREQUENCE DES ACCELERATIONS (2 PAR DEFAUT)
  31. * INDICE 'MAXITERATION' NOMBRE D'ITERATIONS MAXIMUM (30 PAR DEFAUT)
  32. * *
  33. * ETAB CONTENANT EN SORTIE : *
  34. * ------------------------ *
  35. * INDICE 'TEMPERATURE' CHAMP DE TEMPERATURE RESULTAT *
  36. * *
  37. *----------------------------------------------------------------------*
  38. 'SI' ( 'NEG' ( ETAB.'SOUSTYPE' ) 'THERMIQUE' ) ;
  39. 'MESS' 'SOUS TYPAGE INCORRECT DE LA TABLE EN ENTREE ' ;
  40. 'QUITTER' TRANSIT0 ;
  41. 'FINSI' ;
  42. 'SI' ( 'EXISTE' ETAB 'NIVEAU' ) ;
  43. NIV_MESS = ETAB.'NIVEAU' ;
  44. 'SINON' ;
  45. NIV_MESS = 0 ;
  46. 'FINSI' ;
  47. 'SI' ( NIV_MESS '>EG' 1 ) ;
  48. 'SAUTER' 1 'LIGNE' ;
  49. 'MESS' '*** DEBUT DE LA PROCEDURE "TRANSIT0" ***' ;
  50. 'FINSI' ;
  51. *
  52. *--- RECUPERATION DE L'INFORMATION CONTENUE DANS "ETAB"
  53. *
  54. 'SI' ('EXISTE' ETAB 'COQUE') ;
  55. TYP_COQ = ETAB.'COQUE' ;
  56. 'SI' ( 'EXISTE' ETAB 'EPAI' ) ;
  57. EP = ETAB.'EPAI' ;
  58. 'SINON' ;
  59. 'SAUTER' 1 'LIGNE' ;
  60. 'MESS' '*** IL MANQUE L EPAISSEUR DE LA COQUE *** ';
  61. 'QUITTER' TRANSIT0 ;
  62. 'FINSI' ;
  63. 'FINSI' ;
  64. *
  65. OBJ_MAI = ETAB.'MAILLAGE' ;
  66. VAL_COND = ETAB.'CONDUCTIVITE' ;
  67. ZCLIM = ETAB.'BLOCAGE' ;
  68. ZU1 = MANU CHPO OBJ_MAI 1 'T' 0. ;
  69. ZF1 = MANU CHPO OBJ_MAI 1 'Q' 0. ;
  70. ZFEXT2 = MANU CHPO OBJ_MAI 1 'Q' 0. ;
  71. *
  72. 'SI' ( 'EXISTE' ETAB 'IMPOSE' ) ;
  73. VAL_IMPO = ETAB.'IMPOSE' ;
  74. ZFEXT2 = ZFEXT2 ET VAL_IMPO ;
  75. 'FINSI';
  76. *
  77. 'SI' ( 'EXISTE' ETAB 'FLUX' ) ;
  78. QTE_FLUX = ETAB.'FLUX' ;
  79. ZFEXT2 = ZFEXT2 ET QTE_FLUX ;
  80. 'FINSI';
  81. *
  82. 'SI' ( 'EXISTE' ETAB 'EVOCOND' ) ;
  83. EVO_COND = ETAB.'EVOCOND' ;
  84. LIS_COND = 'EXTRAIRE' EVO_COND 'CONDUCTIVITE' ;
  85. LIS_TEMP = 'EXTRAIRE' EVO_COND 'TEMPERATURE' ;
  86. 'FINSI' ;
  87. *
  88. 'SI' ( 'EXISTE' ETAB 'CRITERE' ) ;
  89. ZPREC = ETAB.'CRITERE' ;
  90. 'SINON' ;
  91. ZPREC = 1.E-5 ;
  92. 'FINSI' ;
  93. *
  94. 'SI' ( 'EXISTE' ETAB 'NITER' ) ;
  95. NBRE_ITE = ETAB.'NITER' ;
  96. 'SI' ( NIV_MESS '>EG' 1 ) ;
  97. 'SAUTER' 1 'LIGNE' ;
  98. 'MESS' 'REACTUALISATION DE LA MATRICE DE CONDUCTIVITE TOUTES '
  99. 'LES ' NBRE_ITE 'ITERATIONS' ;
  100. 'FINSI' ;
  101. 'SINON' ;
  102. NBRE_ITE = 10;
  103. 'FINSI' ;
  104. *
  105. 'SI' ( 'EXISTE' ETAB 'MAXITERATION' ) ;
  106. ZMAXIT = ETAB.'MAXITERATION' ;
  107. 'SINON' ;
  108. ZMAXIT = 30 ;
  109. 'FINSI' ;
  110. *
  111. 'SI' ( 'EXISTE' ETAB 'ACCELERATION' ) ;
  112. ZNACCE = ETAB.'ACCELERATION' ;
  113. 'SINON' ;
  114. ZNACCE = 2 ;
  115. 'FINSI' ;
  116. *
  117. * CREATION DE L'OBJET MODELE ET DU CHAMP DE MATERIAU
  118. *
  119. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  120. ZOBMOD = 'MODE' OBJ_MAI 'THERMIQUE' 'ISOTROPE' TYP_COQ ;
  121. ZMAT = 'MATE' ZOBMOD 'K' VAL_COND 'EPAI' EP ;
  122. 'SINON' ;
  123. ZOBMOD = 'MODE' OBJ_MAI 'THERMIQUE' 'ISOTROPE' ;
  124. ZMAT = 'MATE' ZOBMOD 'K' VAL_COND ;
  125. 'FINSI';
  126. *
  127. * CALCUL DE L'OPERATEUR
  128. *
  129. CND1 = 'CONDUCTIVITE' ZOBMOD ZMAT ;
  130. ZRAID = CND1 ET ZCLIM ;
  131. *
  132. *
  133. ********************
  134. ******************** initialisation et reprise des valeurs des tables
  135. ********************
  136. ETAB.'INCREMENT' = ZFEXT2 ;
  137. MLPRIM = 'MOTS' 'T' 'TSUP' 'TINF' 'LX';
  138. MLDUAL = 'MOTS' 'Q' 'QSUP' 'QINF' 'FLX';
  139. *
  140. *
  141. * ---------------------------------
  142. * ! QUELQUES INITIALISATIONS !
  143. * ---------------------------------
  144. IT= 0 ;
  145. ZICONV = VRAI;
  146. MMC = 0 ;
  147. MM1 = 1 ;
  148. MM2 = 1 ;
  149. *
  150. ******************** calcul de la partie constante du second membre
  151. ******************** ZFP1 est cense contenir : F0 + 4/DT*M*V0 - B0*SIG0
  152. ******************** + 2/DT*C*X0
  153. ZFCONSTA = COPIER ZFEXT2;
  154. ZFEXT = ZFCONSTA 'ENLEVER' 'FLX';
  155. ******************** mise a jour des jeux
  156. ZZD = 'ENLEVER' ZU1 'LX';
  157. ZMU= ZZD * ZCLIM;
  158. ZFPLU= ZMU + ZF1 ;
  159. ZFPLO=COPIER ZF1 ;
  160. 'DETR' ZF1 ;
  161. *
  162. ZITAC= 0 ;
  163. IPREM = VRAI ;
  164. ******* initialisation acceleration de convergence
  165. ******* on peut mettre n'importe quoi
  166. ******* c'est pour ne pas faire de tests dans la boucle
  167. acfp1 = zfconsta ;
  168. acfp2 = zfconsta ;
  169. acfp3 = zfconsta ;
  170. acdep1 = zfconsta ;
  171. acdep2 = zfconsta ;
  172. acdep3 = zfconsta ;
  173. ********* la il ne faut pas mettre n'importe quoi
  174. fcorf = zmu ;
  175. ********************
  176. ******************** DEBUT DES ITERATIONS
  177. ********************
  178. 'REPETER' ETIQ ;
  179. IT= IT + 1 ;
  180. ZITAC = ZITAC + 1 ;
  181. ********************CALCUL DE L INCREMENT DE L INCREMENT DE SOLUTION
  182. ZDF = ZFCONSTA - ZFPLU;
  183. ZTEM1 = 'RESOU' ZRAID ZDF;
  184. ******************** on ajoute l increment de deplacement au precedent
  185. 'SI' IPREM ;
  186. XDENO = XTY ZTEM1 (ZFEXT ET
  187. (ETAB . 'INCREMENT' EXCO 'FLX' 'NOID' 'FLX' * -1)) MLPRIM MLDUAL;
  188. XDENO = ('ABS' XDENO) + ('ABS' ('XTY' ZTEM1 ZFPLO MLPRIM MLDUAL));
  189. XDENO = XDENO /( ('MAXI' ZTEM1 'ABS' ) + 1.D-20 );
  190. ZTEMT = 'COPIER' ZTEM1 ;
  191. ******************** initialisation des messages
  192. 'MESS' ' iteration critere ' ;
  193. *
  194. 'SINON';
  195. ZTEM=ZTEMT 'ENLEVER' 'LX' ;
  196. 'DETR' ZTEMT ;
  197. ZTEM2 = ZTEM + ZTEM1 ;
  198. 'DETR' ZTEM ;
  199. ZTEMT = ZTEM2 ;
  200. 'FINSI' ;
  201. 'SI' (('MULT' it znacce) 'ET' (it > 3)) ;
  202. 'MESS' ' ****** acceleration de convergence ';
  203. correc = 'ACT3' acdep3 acdep2 acdep1 ztemt
  204. acfp3 acfp2 acfp1 (zdf - fcorf) ;
  205. 'DETRUIRE' acdep3 ; 'DETRUIRE' acfp3;
  206. acdep3 = acdep2 ; acdep2 = acdep1 ; acdep1 = ztemt ;
  207. ztem2 = ztemt - correc;
  208. ztemt = ztem2;
  209. 'SINON';
  210. si (it > 3); 'DETRUIRE' acdep3 ; 'DETRUIRE' acfp3; finsi;
  211. acdep3 = acdep2 ; acdep2 = acdep1 ; acdep1 = 'COPIER' ztemt 'GEOM' ;
  212. 'FINSI';
  213. acfp3 = acfp2 ; acfp2 = acfp1 ;
  214. acfp1 = zdf - fcorf ;
  215. 'DETRUIRE' fcorf;
  216. ********************
  217. ******************** calcul de fcorf= lambda*m force de reaction
  218. ******************** fcoru = u * m depi (flx)
  219. ********************
  220. ZDETOT = ZZD + ZTEMT;
  221. FCOR= ZCLIM * ZDETOT; 'DETR' ZDETOT ;
  222. FCORF = 'ENLEVER' FCOR 'FLX';
  223. FCORU = 'EXCO' FCOR 'FLX' 'FLX';
  224. 'DETR' FCOR ;
  225. *----------------------------------------------------------------
  226. ******************** preparation des tests de convergence.on calcule la
  227. ******************** plus grande composante de delta f + freac(sans flx)
  228. FEQUI = ZFEXT - FCORF;
  229. FEQUI2=FEQUI - ZFPLO; 'DETR' ZFPLU ;
  230. ZFAU1 = 'ABS' FEQUI2;DETR FEQUI2;
  231. XAUX = 'MAXI' ZFAU1 'ABS' ;
  232. 'DETR' ZFAU1;
  233. *
  234. MM2=MM1 * 1;
  235. MM1 = MMC * 1 ;
  236. *
  237. ******************** FORCES QUI VARIENT
  238. ********************
  239. *
  240. 'SI' ('EXISTE' ETAB 'COQUE' ) ;
  241. U1_T1= 'EXCO' 'TINF' ZTEMT 'NOID' 'T' ;
  242. U1_T2= 'EXCO' 'TSUP' ZTEMT 'NOID' 'T' ;
  243. U1_T3= 'EXCO' 'T ' ZTEMT 'NOID' 'T' ;
  244. U1_TM = (U1_T1 + U1_T2 + U1_T3)/3.0 ;
  245. 'SINON' ;
  246. U1_T = 'EXCO' ZTEMT 'T' 'NOID' 'T' ;
  247. 'FINSI' ;
  248. 'SI' ('EXISTE' ETAB 'COQUE') ;
  249. K1 = 'IPOL' U1_TM LIS_TEMP LIS_COND ;
  250. K2 = 'NOMC' 'K' K1 ;
  251. MA1 = 'EXTRAIRE' K2 'MAIL' 'NOMU' ;
  252. EE1 = 'MANU' 'CHPO' MA1 1 'EPAI' EP ;
  253. CHAM_CN1 = 'CHAN' 'CHAM' ZOBMOD K2 'CARACTERISTIQUES' ;
  254. CHAM_CN2 = 'CHAN' 'CHAM' ZOBMOD EE1 'CARACTERISTIQUES' ;
  255. ZMAT2 = CHAM_CN1 'ET' CHAM_CN2 ;
  256. 'SINON' ;
  257. K1 = 'IPOL' U1_T LIS_TEMP LIS_COND ;
  258. K2 = 'NOMC' 'K' K1 ;
  259. ZMAT2 = 'CHAN' 'CHAM' ZOBMOD K2 'CARACTERISTIQUES' ;
  260. 'FINSI' ;
  261. *
  262. CND2 = 'CONDUCTIVITE' ZOBMOD ZMAT2 ;
  263. FEQU2 = CND2 * ZTEMT ;
  264. *
  265. 'SI'( 'NON' ( 'MULT' ZITAC NBRE_ITE ) );
  266. 'DETR' CND2 'ELEM' ;
  267. 'FINSI';
  268. *
  269. ********************
  270. ******************** test de convergence
  271. ********************
  272. *
  273. RESIDU = FEQUI - FEQU2;
  274. XNUM = 'MAXI' RESIDU 'ABS';
  275. 'DETR' RESIDU ;
  276. XCONV = XNUM / XDENO ;
  277. 'MESS' IT XCONV ;
  278. 'SI' (NON(('MULT' it znacce) 'ET' (IT > 3)));
  279. 'SI' ( IT > 1 ) ;
  280. 'SI' ( XCONV < ZPREC ) ;
  281. 'MESS' ' ****** CONVERGENCE A L ITERATION ' IT;
  282. 'DETR' FEQU2 ;
  283. 'QUITTE' ETIQ ;
  284. 'FINSI';
  285. 'FINSI';
  286. 'FINSI';
  287. 'SI'(IT '>EG' ZMAXIT );
  288. 'MESS' ' ****** PAS DE CONVERGENCE A L ITERATION ' IT ;
  289. ZICONV = FAUX;
  290. 'DETR' FEQU2 ;
  291. 'QUITTER' ETIQ;
  292. 'FINSI' ;
  293. ZFPLU = FCORU + FEQU2 ;
  294. 'DETR' FCORU ;
  295. 'DETR' FEQU2 ; 'DETR' FEQUI ;
  296. *
  297. * CHANGEMENT D'OPERATEUR
  298. *
  299. 'SI'('MULT' ZITAC NBRE_ITE ) ;
  300. ZITAC = 0;
  301. 'DETR' ZRAID;
  302. ZRAID =CND2 'ET' ZCLIM ;
  303. 'FINSI' ;
  304. ********************
  305. ******************** fin de boucle
  306. ********************
  307. IPREM = FAUX;
  308. 'FIN' ETIQ ;
  309. ********************
  310. ********************
  311. ********************
  312. ******************** quelques destructions supplementaires
  313. 'DETR' ZFEXT ; 'DETR' FCORU ; 'DETR' FCORF ;
  314. 'DETR' FEQUI ; 'DETR' ZDF ;
  315. 'DETR' ZZD ;
  316. 'DETR' ZFPLO;
  317. *
  318. ETAB.'TEMPERATURE' = ZTEMT;
  319. 'DETR' ZTEM1;
  320. 'FINPROC' ;
  321.  
  322.  
  323.  

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