Télécharger translin.procedur

Retour à la liste

Numérotation des lignes :

  1. * TRANSLIN PROCEDUR MB234859 24/02/20 21:15:04 11843
  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' ('DIME' ETAB.'BLOCAGES_THERMIQUES') 0);
  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. INOBLOT = 'EGA' ('DIME' ETAB.'BLOCAGES_THERMIQUES') 0 ;
  139.  
  140. 'REPETER' BOUC_SO ;
  141. ITE3 = &BOUC_SO;
  142.  
  143. *-------------------- Condition de fin de boucle ------------------
  144.  
  145. TEMM = (LAMBDA2 * TEM1) + ((1 - LAMBDA2) * TEM0);
  146.  
  147. 'MESS' ' ';
  148. 'MESS' '---- Calcul du champ de température au temps :'TEM1;
  149. 'MESS' ' ';
  150.  
  151. *****************************************************************
  152. * Gestion des variables externes *
  153. *****************************************************************
  154.  
  155. *--------------- Si convection on cherche TE --------------------
  156.  
  157. 'SI' ETAB.'CONVECTION';
  158. CH_TE = 'TIRE' (ETAB.'CHARGEMENT') 'TECO' TEMM;
  159. 'FINSI';
  160.  
  161. *--------------------- On cherche les flux -----------------------
  162.  
  163. 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q ');
  164. CH_FL = 'TIRE' (ETAB.'CHARGEMENT') 'Q ' TEMM;
  165. 'FINSI';
  166.  
  167. *------------- Calcul de la matrice de conductivité ----------------
  168.  
  169. MAT_COND = 'CONDU' ETAB.'MOD_THE' ETAB.'MAT_THE';
  170. 'SI' IKCONS ;
  171. MAT_COND = MAT_COND 'ET' ETAB.'CONDUCTIVITE_CONSTANTE' ;
  172. 'FINS' ;
  173.  
  174. *----------------- y-a-t-il des blocages ---------------------------
  175.  
  176. 'SI' INOBLOT ;
  177. MAT_BLOC = 'EXTR' MAT_COND 'RIGI' 'MULT';
  178. 'SINON';
  179. MAT_BLOC = ETAB.'BLOCAGES_THERMIQUES';
  180. 'FINSI';
  181. 'SI' ('NON' ('EXISTE' (ETAB.'CHARGEMENT') 'TIMP'));
  182. CH_TI = 'DEPI' MAT_BLOC 0.;
  183. 'SINON';
  184. CH_TI = 'TIRE' (ETAB.'CHARGEMENT') 'TIMP' TEM1;
  185. 'FINSI';
  186.  
  187. *----------------- Calcul de la matrice de capacite -----------------
  188.  
  189. 'SI' ICAPA ;
  190. MAT_CAPA = 'CAPACITE' ETAB.'MOD_THE' ETAB.'MAT_THE';
  191. ETAB.'CAPA_COURANTE' = MAT_CAPA ;
  192. 'FINSI' ;
  193. 'SI' ICPCONS ;
  194. MAT_CAPA = MAT_CAPA 'ET' ETAB.'CAPACITE_CONSTANTE' ;
  195. ETAB.'CAPA_COURANTE' = MAT_CAPA ;
  196. 'FINSI' ;
  197.  
  198. *---------------- Calcul de la matrice regularisee -----------------
  199.  
  200. MAT_RIGI = MAT_COND * LAMBDA1 ;
  201. B1 = MAT_COND * (LAMBDA1 - 1.) ;
  202. 'SI' ICAPA ;
  203. A1 = MAT_CAPA / T_PAS ;
  204. MAT_RIGI = MAT_RIGI 'ET' A1 ;
  205. B1 = B1 'ET' A1 ;
  206. 'FINSI' ;
  207. MAT_RIGI = MAT_RIGI 'ET' MAT_BLOC ;
  208. MAT_CHPO = B1 * U0 ;
  209. 'SI' ('EXISTE' (ETAB.'CHARGEMENT') 'Q ');
  210. MAT_CHPO = MAT_CHPO + CH_FL ;
  211. 'FINSI' ;
  212. MAT_CHPO = MAT_CHPO + CH_TI ;
  213.  
  214. *******************************************************************
  215. * On genere les termes de convection *
  216. *******************************************************************
  217.  
  218. 'SI' ETAB.'CONVECTION';
  219. * RIG_CON = 'COND' ETAB.'MOD_CON' ETAB.'MAT_CON' ;
  220. CHAL_TE = 'CONV' ETAB.'MOD_CON' ETAB.'MAT_CON' CH_TE ;
  221. * MAT_RIGI = MAT_RIGI 'ET' RIG_CON;
  222. MAT_CHPO = MAT_CHPO + CHAL_TE;
  223. 'FINSI';
  224.  
  225. *--------------------- Calcul d'un pas ----------------------------
  226.  
  227. U1 = 'RESOUDRE' MAT_RIGI MAT_CHPO ;
  228.  
  229. *---------------- Appel a une procedure utilisateur -----------------
  230.  
  231. ETAB.'THER_COURANT' = U1 ;
  232. 'SI' (ETAB.'PROCEDURE_PERSO2');
  233. ETAB.'TEMI' = U1 ;
  234. PERSO2 PRECED ;
  235. ETAB = 'ENLEVER' ETAB 'TEMI' ;
  236. 'SI' ('EXIS' PRECED 'ARRET') ;
  237. ETAB . 'ARRET' = PRECED . 'ARRET' ;
  238. 'FINS' ;
  239. 'FINSI';
  240.  
  241. *******************************************************************
  242. * Reinitialisation des variables en vue du pas suivant *
  243. *******************************************************************
  244.  
  245. 'SI' ((ITE3 + 1) '<EG' DCALC);
  246. TEM0 = TEM1;
  247. TEM1 = 'EXTR' TE_CALC (ITE3 + 1);
  248. T_PAS = TEM1 - TEM0;
  249. U0 = U1 ;
  250. 'SINON';
  251. 'QUITTER' BOUC_SO;
  252. 'FINSI';
  253.  
  254. *------------------------ On fait le menage -----------------------
  255.  
  256. 'MENAGE' ;
  257.  
  258. 'FIN' BOUC_SO ;
  259.  
  260. *---------- Initialisation de ETAB en vue d'une reprise ----------
  261.  
  262. STAB = 'TABLE' ;
  263. STAB.'ERREUR' = ERR_VAL ;
  264. STAB.'INITIAL(2)' = U1 ;
  265. STAB.'CLIT' = MAT_BLOC ;
  266.  
  267. 'FINPROC' STAB ;
  268.  
  269.  

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