Télécharger transit0.procedur

Retour à la liste

Numérotation des lignes :

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

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