Télécharger translin.procedur

Retour à la liste

Numérotation des lignes :

  1. * TRANSLIN PROCEDUR PASCAL 16/06/06 21:15:12 8945
  2. 'DEBPROC' TRANSLIN PRECED*'TABLE';
  3.  
  4. *----------------------------------------------------------------------*
  5. * *
  6. * T R A N S L I N *
  7. * --------------- *
  8. * *
  9. * RESOLUTION D'UN PROBLEME DE THERMIQUE TRANSITOIRE LINEAIRE *
  10. * METHODE A UN PAS DE TEMPS ( THETA SCHEMA ) *
  11. * *
  12. * ETAB, TABLE CONTENANT EN ENTREE : *
  13. * *
  14. * INDICE 'TET1' CHAMP DE TEMPERATURE INITIAL AU PAS 0 *
  15. * INDICE 'MOD_THE' OBJET MODELE THERMIQUE *
  16. * INDICE 'MOD_CON' OBJET MODELE CONVECTION *
  17. * INDICE 'BLOCAGES_THERMIQUES' MATRICE DE BLOCAGE *
  18. * INDICE 'MAT_THE' OBJET MATERIAU THERMIQUE. *
  19. * CE CHAMP PEUT AVOIR DES COMPOSANTES DE *
  20. * TYPE FLOTTANT OU EVOLUTION *
  21. * INDICE 'MAT_CON' OBJET MATERIAU CONVECTION *
  22. * INDICE 'CHARGEMENT' CHARGEMENT DECRIVANT LES : *
  23. * VALEURS DES VARIABLES EXTERNES (EX: TE, *
  24. * FLUX,TEMPERATURES IMPOSEES ,...) *
  25. * VALEURS DES VARIABLES EXTERNES *
  26. * INDICE 'TEMPS0' TEMPS INITIAL (CORRESPOND A INITAL(0) *
  27. * INDICE 'TEM_CALC' LISTREEL : TEMPS DES RESULTATS A CALCULER *
  28. * INDICE 'RELAXATION_THETA' VALEUR DU 1 COEFFICIENT DE RELAXATION *
  29. * (VALEUR PAR DEFAUT 0.5) *
  30. * INDICE 'SOUS-RELAXATION' VALEUR DU 2 COEFFICIENT DE RELAXATION *
  31. * (VALEUR PAR DEFAUT 0.5) *
  32. * *
  33. * REMARQUE : CERTAINES VARIABLES ONT DES NOMS IMPOSES. *
  34. * LE TEMPS : TEMP *
  35. * LA TEMPERATURE : T *
  36. * LES TEMPERATURES IMPOSEES : TIMP *
  37. * LES FLUX : Q *
  38. * *
  39. * LE NOM DES AUTRES VARIABLES EST LAISSE AU CHOIX DE *
  40. * L'UTILISATEUR *
  41. * *
  42. * D.R., LE 29 JUIN 1988. VERSION DU 18 JANVIER 1989. *
  43. * *
  44. *----------------------------------------------------------------------*
  45.  
  46. ERR_VAL = FAUX;
  47.  
  48. ********************************************************************
  49. * Recuperation de l'information contenue dans ETAB *
  50. ********************************************************************
  51.  
  52. *------- Initialisation de la liste des temps à calculer ---------
  53. ETAB=PRECED.'WTABLE';
  54. TE_CALC = ETAB.'TEM_CALC' ;
  55. DCALC = 'DIME' TE_CALC;
  56.  
  57. *-------------- Calcul du premier pas de calcul -------------------
  58.  
  59. TEM1 = 'EXTR' TE_CALC 1;
  60. TEM0 = ETAB.'TEMPS0' ;
  61. T_PAS = TEM1 -TEM0;
  62.  
  63. *----------- Initialisation du champ de temperatures ------------
  64.  
  65. U0 = ETAB.'TET1' ;
  66.  
  67. *---------- y-a-t-il definition des coefficients lambda ----------
  68.  
  69. 'SI' ( 'EXISTE' ETAB 'RELAXATION_THETA' ) ;
  70. LAMBDA1 = ETAB.'RELAXATION_THETA' ;
  71. 'SINON' ;
  72. LAMBDA1 = 1. ;
  73. 'FINSI' ;
  74. 'SI' ( 'EXISTE' ETAB 'SOUS-RELAXATION' ) ;
  75. LAMBDA2 = ETAB.'SOUS-RELAXATION' ;
  76. 'SINON' ;
  77. LAMBDA2 = 1. ;
  78. 'FINSI' ;
  79.  
  80. *------- Cas particulier ou il n'y a pas de CAPACITE ------------------*
  81. *- Ceci correspond au cas ou, au moins, une des 2 composantes 'C ' -*
  82. *- et/ou 'RHO ' n'est pas definie dans le materiau (facultatives). -*
  83.  
  84. ICPCONS = WTAB.'CAPACONST' ;
  85. IKCONS = WTAB.'CONDCONST' ;
  86.  
  87. LCOMPM = 'EXTRAIRE' ETAB.'MAT_THE' 'COMP' ;
  88. ICAPA = ('EXISTE' LCOMPM 'C ') 'ET' ('EXISTE' LCOMPM 'RHO ') ;
  89. ICAPA = ICAPA 'OU' ICPCONS ;
  90. * En regime stationnaire (sans CAPACITE), on force LAMBDA1 et LAMBDA2
  91. * a 1. Sinon on ne resout pas le bon probleme !
  92. 'SI' ('NON' ICAPA) ; LAMBDA1 = 1. ; LAMBDA2 = 1. ; 'FINSI' ;
  93.  
  94. ********************************************************************
  95. * Rappel des donnees du probleme *
  96. ********************************************************************
  97.  
  98. 'SI' ('EGA' ETAB.'PAS' 1) ;
  99. 'SAUTER' 1 'LIGNE';
  100. 'MESS' '---- Probleme de thermique transitoire linéaire ----';
  101. 'MESS' '---- Méthode à un pas de temps (THETA méthode) ----';
  102. 'SAUTER' 1 'LIGNE';
  103. 'MESS' 'Données utilisées du problème :';
  104. 'SAUTER' 1 'LIGNE';
  105. 'MESS' ' Champ de températures à l instant : ' TEM0;
  106. 'MESS' ' Coefficient de relaxation : ' LAMBDA1;
  107. 'MESS' ' Coefficient de sous-relaxation : ' LAMBDA2;
  108. 'SI' ('NEG' ETAB.'BLOCAGES_THERMIQUES' 'INCONNU');
  109. 'MESS' ' Présence de températures imposées.';
  110. 'SINON';
  111. 'MESS' ' Pas de températures imposées.';
  112. 'FINSI';
  113. 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q ');
  114. 'MESS' ' Présence de flux.';
  115. 'SINON';
  116. 'MESS' ' Pas de présence de flux.';
  117. 'FINSI';
  118. 'SI' ETAB.'CONVECTION';
  119. 'MESS' ' Présence de convection.';
  120. 'SINON';
  121. 'MESS' ' Pas de terme convectif.';
  122. 'FINSI';
  123. 'SI' ('NON' ICAPA) ;
  124. 'MESS' ' Probleme de thermique lineaire stationnaire' ;
  125. 'FINSI' ;
  126. 'SI' ICPCONS ;
  127. 'MESS' ' Présence d une capacite constante.';
  128. 'FINSI';
  129. 'SI' IKCONS ;
  130. 'MESS' ' Présence d une conductivite constante.';
  131. 'FINSI';
  132. 'MESS' ' ';
  133. 'FINSI';
  134.  
  135. ********************************************************************
  136. * Boucle sur les pas de temps *
  137. ********************************************************************
  138.  
  139. 'REPETER' BOUC_SO ;
  140. ITE3 = &BOUC_SO;
  141.  
  142. *-------------------- Condition de fin de boucle ------------------
  143.  
  144. TEMM = (LAMBDA2 * TEM1) + ((1 - LAMBDA2) * TEM0);
  145.  
  146. 'MESS' ' ';
  147. 'MESS' '---- Calcul du champ de température au temps :'TEM1;
  148. 'MESS' ' ';
  149.  
  150. *****************************************************************
  151. * Gestion des variables externes *
  152. *****************************************************************
  153.  
  154. *--------------- Si convection on cherche TE --------------------
  155.  
  156. 'SI' ETAB.'CONVECTION';
  157. CH_TE = 'TIRE' (ETAB.'CHARGEMENT') 'TECO' TEMM;
  158. 'FINSI';
  159.  
  160. *--------------------- On cherche les flux -----------------------
  161.  
  162. 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q ');
  163. CH_FL = 'TIRE' (ETAB.'CHARGEMENT') 'Q ' TEMM;
  164. 'FINSI';
  165.  
  166. *------------- Calcul de la matrice de conductivité ----------------
  167.  
  168. MAT_COND = 'CONDU' ETAB.'MOD_THE' ETAB.'MAT_THE';
  169. 'SI' IKCONS ;
  170. MAT_COND = MAT_COND 'ET' ETAB.'CONDUCTIVITE_CONSTANTE' ;
  171. 'FINS' ;
  172.  
  173. *----------------- y-a-t-il des blocages ---------------------------
  174.  
  175. 'SI' ('EGA' ETAB.'BLOCAGES_THERMIQUES' 'INCONNU') ;
  176. MAT_BLOC = 'EXTR' MAT_COND 'RIGI' 'MULT';
  177. 'SINON';
  178. MAT_BLOC = ETAB.'BLOCAGES_THERMIQUES';
  179. 'FINSI';
  180. 'SI' ('NON' ('EXISTE' (ETAB.'CHARGEMENT') 'TIMP'));
  181. CH_TI = 'DEPI' MAT_BLOC 0.;
  182. 'SINON';
  183. CH_TI = 'TIRE' (ETAB.'CHARGEMENT') 'TIMP' TEM1;
  184. 'FINSI';
  185.  
  186. *----------------- Calcul de la matrice de capacite -----------------
  187.  
  188. 'SI' ICAPA ;
  189. MAT_CAPA = 'CAPACITE' ETAB.'MOD_THE' ETAB.'MAT_THE';
  190. 'FINSI' ;
  191. 'SI' ICPCONS ;
  192. MAT_CAPA = MAT_CAPA 'ET' ETAB.'CAPACITE_CONSTANTE' ;
  193. 'FINSI' ;
  194.  
  195. *---------------- Calcul de la matrice regularisee -----------------
  196.  
  197. MAT_RIGI = MAT_COND * LAMBDA1 ;
  198. B1 = MAT_COND * (LAMBDA1 - 1.) ;
  199. 'SI' ICAPA ;
  200. A1 = MAT_CAPA / T_PAS ;
  201. MAT_RIGI = MAT_RIGI 'ET' A1 ;
  202. B1 = B1 'ET' A1 ;
  203. 'FINSI' ;
  204. MAT_RIGI = MAT_RIGI 'ET' MAT_BLOC ;
  205. MAT_CHPO = B1 * U0 ;
  206. 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q ');
  207. MAT_CHPO = MAT_CHPO + CH_FL ;
  208. 'FINSI' ;
  209. MAT_CHPO = MAT_CHPO + CH_TI ;
  210.  
  211. *******************************************************************
  212. * On genere les termes de convection *
  213. *******************************************************************
  214.  
  215. 'SI' ETAB.'CONVECTION';
  216. * RIG_CON = 'COND' ETAB.'MOD_CON' ETAB.'MAT_CON' ;
  217. CHAL_TE = 'CONV' ETAB.'MOD_CON' ETAB.'MAT_CON' CH_TE ;
  218. * MAT_RIGI = MAT_RIGI 'ET' RIG_CON;
  219. MAT_CHPO = MAT_CHPO + CHAL_TE;
  220. 'FINSI';
  221.  
  222. *--------------------- Calcul d'un pas ----------------------------
  223.  
  224. U1 = 'RESOUDRE' MAT_RIGI MAT_CHPO ;
  225.  
  226. *---------------- Appel a une procedure utilisateur -----------------
  227.  
  228. ETAB.'THER_COURANT' = U1 ;
  229. 'SI' (ETAB.'PROCEDURE_PERSO2');
  230. ETAB.'TEMI' = U1 ;
  231. PERSO2 PRECED ;
  232. ETAB = 'ENLEVER' ETAB 'TEMI' ;
  233. 'SI' ('EXIS' PRECED 'ARRET') ;
  234. ETAB . 'ARRET' = PRECED . 'ARRET' ;
  235. 'FINS' ;
  236. 'FINSI';
  237.  
  238. *******************************************************************
  239. * Reinitialisation des variables en vue du pas suivant *
  240. *******************************************************************
  241.  
  242. 'SI' ((ITE3 + 1) '<EG' DCALC);
  243. TEM0 = TEM1;
  244. TEM1 = 'EXTR' TE_CALC (ITE3 + 1);
  245. T_PAS = TEM1 - TEM0;
  246. U0 = U1 ;
  247. 'SINON';
  248. 'QUITTER' BOUC_SO;
  249. 'FINSI';
  250.  
  251. *------------------------ On fait le menage -----------------------
  252.  
  253. 'MENAGE' ;
  254.  
  255. 'FIN' BOUC_SO ;
  256.  
  257. *---------- Initialisation de ETAB en vue d'une reprise ----------
  258.  
  259. STAB = 'TABLE' ;
  260. STAB.'ERREUR' = ERR_VAL ;
  261. STAB.'INITIAL(2)' = U1 ;
  262. STAB.'CLIT' = MAT_BLOC ;
  263.  
  264. 'FINPROC' STAB ;
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  

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