Télécharger couplage_thermique2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : couplage_thermique2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *
  5. *------------ Cas test couplage_thermique2.dgibi -------------------
  6. *
  7. *
  8. * Tests des opérateurs de Castem-fluide
  9. *
  10. *
  11. *- Options générales
  12. *
  13. OPTI DIME 2 ELEM QUA8 ECHO 0 ;
  14. GRAPH = 'N' ;
  15. EPS0 = 1.D-6 ;
  16. *
  17. *-------------------------------------------------------------------
  18. * Couplage thermique entre deux domaines solides l'échange entre les
  19. * deux domaines étant réalisés en assurant la continuité du flux et
  20. * une relation entre les champs inconnues à la frontière : on compare
  21. * à l'état stationnaire les solutions calculée et analytique.
  22. *-------------------------------------------------------------------
  23. * La géométrie est un barreau constitué de deux parties de longueur
  24. * respective L1 et L2 et de diffusivité thermique D1 et D2. On a la
  25. * relation b1*Tg + b2*Tg = b3 à l'interface, bi étant connus et Tg
  26. * (resp. Td) représentant la valeur à la frontière coté gauche (resp.
  27. * coté droit). On note T1(x) (resp. T2(x)) la température dans le
  28. * premier barreau (resp. dans le deuxième).
  29. *
  30. * Chargement : Flux nul sur les frontières haute et basse (1D) et
  31. * température imposées aux deux extrémités (notée T1 et T2).
  32. *
  33. * Solution stationnaire : Soit Tg (resp. Td) la température au niveau
  34. * de l'interface entre les deux barreaux vue du premier barreau (resp.
  35. * du deuxième). A l'état stationnaire, l'égalité des gradients et la
  36. * condition de saut à l'interface donne :
  37. * Tg*det = (a1*T1 + a2*T2)*b2 - b3*a2
  38. * Td*det = b3*a1 - (a1*T1 + a2*T2)*b1
  39. * avec a1=D1/L1, a2=D2/L2 et det=a1b2 - a2b1
  40. * On a alors
  41. * T1(x) = T1 + (Tg-T1) x/L1 pour x in [0,L1]
  42. * T2(x) = T2 + (Td-T2) (L1+L2-x)/L2 pour x in [L1,L1+L2]
  43. *
  44. * Application numérique : D1=2 ; L1=1 ; T1=0 ; D2=3 ; L2=5 ; T2=1 ;
  45. * Relation de saut : 5*Tg - 3*Td = 2
  46. * On obtient alors a1=2 et a2=3/5; Tg=1/3 et Td=-1/9 ;
  47. * T1(x) = x/3
  48. * T2(x) = (2*x-3)/9
  49. *
  50. * ATTENTION : La convergence de l'algorithme de Quarteroni n'est pas
  51. * garantie pour d'autres choix de data !
  52. *
  53. *-------------------------------------------------------------------
  54. * Auteur : F.Dabbene 05/06
  55. *-------------------------------------------------------------------
  56. *
  57. *= Données physico-numériques
  58. *
  59. * DISCR=LINE/MACRO/QUAF
  60. DISCR = 'QUAF' ;
  61. *
  62. L1 = 1. ; D1 = 2. ; T1 = 0. ; a1 = D1/L1 ;
  63. L2 = 5. ; D2 = 3. ; T2 = 1. ; a2 = D2/L2 ;
  64. *b1 = 7. ; b2 = 11. ; b3 = 2. ;
  65. b1 = 5. ; b2 = -3. ; b3 = 2. ;
  66. T0 = T1 + T2 / 2. ;
  67. *
  68. *--------------------------------------- Début de la procédure FRON1
  69. *
  70. * Première étape de l'algorithme de QUARTERONI : Imposition de la
  71. * condition aux limites de Dirichlet à la frontière commune sur le
  72. * probleme 1
  73. *
  74. DEBP FRON1 ;
  75. ARGU RVX*TABLE ;
  76. *
  77. RV = RVX . 'EQEX' ;
  78. T2F = 'KCHT' RVX.'DOMZ' 'SCAL' 'SOMMET' (RV . 'PROB2' . 'INCO' . 'T2');
  79. T1F = 'KCHT' RVX.'DOMZ' 'SCAL' 'SOMMET' (b3 - (b2*t2f) / b1) ;
  80. *
  81. MAIL1 = 'DOMA' RVX.'DOMZ' 'SOMMET' ;
  82. CLIM1 = 'EXCO' RV.'CLIM' 'T1' 'T1';
  83. CLIM2 = 'REDU' CLIM1 MAIL1 ;
  84. CLIM3 = 'NOMC' T1F 'T1' ;
  85. RV . 'CLIM' = RV . 'CLIM' - CLIM2 + CLIM3 ;
  86. *
  87. s1 ma1 = 'KOPS' 'MATRIK' ;
  88. 'RESPROC' s1 ma1 ;
  89. 'FINPROC' ;
  90. *--------------------------------------- Fin de la procédure FRON1
  91. *
  92. *--------------------------------------- Début de la procédure FRON2
  93. *
  94. * Deuxième étape de l'algorithme de QUARTERONI : Imposition du flux
  95. * (condition aux limites de Neumann) à la frontière commune sur le
  96. * probleme 2
  97. *
  98. DEBP FRON2 ;
  99. ARGU RVX*TABLE ;
  100. *
  101. RV = RVX . 'EQEX' ;
  102. S2 MA2 = 'LAPN' RV . 'PROB1' . '2LAPN' ;
  103. T1F = 'NOMC' 'T1' (RV . 'PROB1' . 'INCO' . 'T1') ;
  104. FLU1 = 'KOPS' MA2 'MULT' T1F ;
  105. FLU1 = 'NOMC' 'T2' (FLU1 * -1.) ;
  106. MAIL1 = 'DOMA' (RVX . 'DOMZ') 'SOMMET' ;
  107. s1 = 'REDU' FLU1 MAIL1 ;
  108. *
  109. s0 ma1 = 'KOPS' 'MATRIK' ;
  110. 'RESPROC' s1 ma1 ;
  111. 'FINPROC' ;
  112. *--------------------------------------- Fin de la procédure FRON2
  113. *
  114. *= MAILLAGE
  115. *
  116. XMIN = 0. ; X1 = XMIN + L1 ; X2 = X1 + L2 ;
  117. YMIN = 0. ; DY = 1. ; Y1 = YMIN + DY ; Y2 = Y1 + DY ;
  118. NX = 20 ; NY = 1 ;
  119. *
  120. *------------------------------------------ Points du premier domaine
  121. P1 = XMIN YMIN ;
  122. P2 = X1 YMIN ;
  123. P3 = X1 Y2 ;
  124. P4 = XMIN Y2 ;
  125. *------------------------------------------ Points du deuxième domaine
  126. PD1 = P2 ;
  127. PD2 = X2 YMIN ;
  128. PD3 = X2 Y2 ;
  129. PD4 = P3 ;
  130. *------------------------------------------ Lignes du premier domaine
  131. P1P2 = P1 'DROIT' NX P2 ;
  132. P2P3 = P2 'DROIT' NY P3 ;
  133. P3P4 = P3 'DROIT' NX P4 ;
  134. P4P1 = P4 'DROIT' NY P1 ;
  135. *------------------------------------------ Lignes du deuxième domaine
  136. PD1PD2 = PD1 'DROIT' NX PD2 ;
  137. PD2PD3 = PD2 'DROIT' NY PD3 ;
  138. PD3PD4 = PD3 'DROIT' NX PD4 ;
  139. PD4PD1 = 'INVERSE' P2P3 ;
  140. *------------------------------------------ Maillages
  141. *
  142. * Afin d'éviter toute confusion de maillages, ces objets sont à écraser
  143. * après la création des modèles (à remplacer par le maillage qui
  144. * soustend le modèle)
  145. DOM1 = 'DALLER' P1P2 P2P3 P3P4 P4P1 ;
  146. DOM2 = 'DALLER' PD1PD2 PD2PD3 PD3PD4 PD4PD1 ;
  147. DGAU = P4P1 ;
  148. DDRO = PD2PD3 ;
  149. DBA1 = P1P2 ;
  150. DBA2 = PD1PD2 ;
  151. *
  152. *= Création des MODELES
  153. *
  154. DDOM1 = 'CHANGER' DOM1 'QUAF' ;
  155. DDOM2 = 'CHANGER' DOM2 'QUAF' ;
  156. DDOMT = DDOM1 'ET' DDOM2 ;
  157. DDBA1 = 'CHANGER' DBA1 'QUAF' ;
  158. DDBA2 = 'CHANGER' DBA2 'QUAF' ;
  159. DDGAU = 'CHANGER' DGAU 'QUAF' ;
  160. DDDRO = 'CHANGER' DDRO 'QUAF' ;
  161. DFRON = 'CHANGER' P2P3 'QUAF' ;
  162. *
  163. $DOM1 = 'MODELISER' DDOM1 'NAVIER_STOKES' DISCR ;
  164. $DOM2 = 'MODELISER' DDOM2 'NAVIER_STOKES' DISCR ;
  165. $DOMT = 'MODELISER' DDOMT 'NAVIER_STOKES' DISCR ;
  166. $DBA1 = 'MODELISER' DDBA1 'NAVIER_STOKES' DISCR ;
  167. $DBA2 = 'MODELISER' DDBA2 'NAVIER_STOKES' DISCR ;
  168. $DGAU = 'MODELISER' DDGAU 'NAVIER_STOKES' DISCR ;
  169. $DDRO = 'MODELISER' DDDRO 'NAVIER_STOKES' DISCR ;
  170. $FRON = 'MODELISER' DFRON 'NAVIER_STOKES' DISCR ;
  171. *
  172. DOM1 = 'DOMA' $DOM1 'MAILLAGE' ;
  173. DOM2 = 'DOMA' $DOM2 'MAILLAGE' ;
  174. DOMT = 'DOMA' $DOMT 'MAILLAGE' ;
  175. DGAU = 'DOMA' $DGAU 'MAILLAGE' ;
  176. DDRO = 'DOMA' $DDRO 'MAILLAGE' ;
  177. FRON = 'DOMA' $FRON 'MAILLAGE' ;
  178. DBA1 = 'DOMA' $DBA1 'MAILLAGE' ;
  179. DBA2 = 'DOMA' $DBA2 'MAILLAGE' ;
  180. *
  181. *= Solution analytique
  182. *
  183. DET0 = a1*b2 - (a2*b1) ;
  184. DET1 = a1*T1 + (a2*T2) * b2 - (a2*b3) ;
  185. DET2 = a1*T1 + (a2*T2) * b1 * -1. + (a1*b3) ;
  186. TG = DET1 / DET0 ;
  187. TD = DET2 / DET0 ;
  188. D1X = 'EXTR' ('EVOL' 'CHPO' DBA1 ('COOR' 1 DBA1)) 'ORDO' 1 ;
  189. D2X = 'EXTR' ('EVOL' 'CHPO' DBA2 ('COOR' 1 DBA2)) 'ORDO' 1 ;
  190. X1X = D1X / L1 ;
  191. NBPT = 'NBEL' ('CHAN' 'POI1' DBA1) ;
  192. X2X = D2X - ('PROG' NBPT*L1) / L2 ;
  193. T1X = (TG-T1)*X1X + ('PROG' NBPT*T1) ;
  194. T2X = (T2-TD)*X2X + ('PROG' NBPT*TD) ;
  195. EV1 = 'EVOL' 'ROUG' 'MANU' D1X T1X ;
  196. EV2 = 'EVOL' 'ROUG' 'MANU' D2X T2X ;
  197. EV3 = EV1 ET EV2 ;
  198. *
  199. *
  200. *
  201. *
  202. * MODELISATION DU PROBLEME
  203. *
  204. *-------------------------------------------------------------------
  205. * L'état stationnaire est obtenu en tant que régime asymptotique d'un
  206. * transitoire. La résolution s'appuie sur l'algorithme de Quarteroni
  207. * (découplage des deux domaines et condition mixte Dirichlet/Neumann à
  208. * l'interface entre les deux problèmes)
  209. * La solution transitoire a un sens, à condition de réaliser un point
  210. * fixe à chaque pas de temps. Sinon le transitoire est faux.
  211. *-------------------------------------------------------------------
  212. *
  213. *= Description du problème (table EQEX)
  214. *
  215. * Description de chaque sous-problème
  216. RV1 = 'EQEX' $DOM1 'ITMA' 1 'NITER' 1 'ALFA' 1.
  217. 'OPTI' 'EF' 'IMPL'
  218. 'ZONE' $FRON 'OPER' 'FRON1'
  219. 'ZONE' $DOM1 'OPER' 'LAPN' D1 'INCO' 'T1' ;
  220. RV2 = 'EQEX' $DOM2 'ITMA' 1 'NITER' 1 'ALFA' 1.
  221. 'OPTI' 'EF' 'IMPL'
  222. 'ZONE' $FRON 'OPER' 'FRON2'
  223. 'ZONE' $DOM2 'OPER' 'LAPN' D2 'INCO' 'T2' ;
  224. *
  225. * Transitoire
  226. RV1 = 'EQEX' RV1
  227. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  228. 'ZONE' $DOM1 'OPER' 'DFDT' 1. 'T1' 1. 'INCO' 'T1' ;
  229. RV2 = 'EQEX' RV2
  230. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  231. 'ZONE' $DOM2 'OPER' 'DFDT' 1. 'T2' 1. 'INCO' 'T2' ;
  232. *
  233. * Conditions aux limites
  234. RV1 = 'EQEX' RV1
  235. 'CLIM' 'T1' 'TIMP' DGAU T1
  236. 'T1' 'TIMP' FRON -99. ;
  237. RV2 = 'EQEX' RV2
  238. 'CLIM' 'T2' 'TIMP' DDRO T2 ;
  239. *
  240. *= Initialisation de la table INCO et résolution
  241. *
  242. RV1 . 'INCO' . 'T1' = 'KCHT' $DOM1 SCAL SOMMET T0 ;
  243. RV2 . 'INCO' . 'T2' = 'KCHT' $DOM2 SCAL SOMMET T0 ;
  244. RV1 . 'INCO' . 'T1N' = 'KCHT' $DOM1 SCAL SOMMET T0 ;
  245. RV2 . 'INCO' . 'T2N' = 'KCHT' $DOM2 SCAL SOMMET T0 ;
  246. RV1 . 'PROB2' = RV2 ;
  247. RV2 . 'PROB1' = RV1 ;
  248. *
  249. 'REPE' kartroni 25 ;
  250. EXEC RV1 ;
  251. EXEC RV2 ;
  252. 'FIN' kartroni ;
  253. *
  254. *= Post-traitement de la solution calculée
  255. *
  256. EVC1 = 'EVOL' 'CHPO' DBA1 RV1.'INCO'.'T1' ;
  257. EVC2 = 'EVOL' 'CHPO' DBA2 RV2.'INCO'.'T2' ;
  258. CT1 = 'EXTR' EVC1 'ORDO' 1 ;
  259. CT2 = 'EXTR' EVC2 'ORDO' 1 ;
  260. EVC3 = ('EVOL' 'VERT' 'MANU' D1X CT1)
  261. 'ET' ('EVOL' 'VERT' 'MANU' D2X CT2) ;
  262. *
  263. *= Tracés
  264. *
  265. 'SI' ('EGA' GRAPH 'O') ;
  266. CHAM1 = 'CHAN' 'CHAM' RV1.'INCO'.'T1' DOM1 ;
  267. CHAM2 = 'CHAN' 'CHAM' RV2.'INCO'.'T2' DOM2 ;
  268. 'TRAC' $DOMT (CHAM1 'ET' CHAM2) ;
  269. *
  270. TAB1 = 'TABLE' ;
  271. TAB1 . 'TITRE' = 'TABLE' ;
  272. TAB1 . 'TITRE' . 2 = 'Solution castem' ;
  273. TAB1 . 'TITRE' . 1 = '---------------' ;
  274. TAB1 . 'TITRE' . 4 = 'Solution exacte' ;
  275. TAB1 . 'TITRE' . 3 = '---------------' ;
  276. TAB1 . 1 = 'MARQ CROI NOLI' ;
  277. TAB1 . 2 = 'MARQ CROI NOLI' ;
  278. 'DESS' (EVC3 'ET' EV3) 'TITR' 'Temperature en fonction de x'
  279. 'TITX' 'x' 'TITY' 'T' 'MIMA'
  280. 'LEGE' TAB1 ;
  281. 'FINSI' ;
  282. *
  283. *= Controle erreur
  284. *
  285. SOM1 = 'ABS' (('MAXI' ('INTG' EV3)) - ('MAXI' ('INTG' EVC3))) ;
  286. TEST = SOM1 '<' EPS0 ;
  287. 'SI' TEST ;
  288. 'ERRE' 0 ;
  289. 'SINO' ;
  290. 'MESS' 'Analytic Integration - Computed = Difference ' ;
  291. 'MESS' ('MAXI' ('INTG' EV3))'-' ('MAXI' ('INTG' EVC3)) '=' SOM1 ;
  292. 'ERRE' 5 ;
  293. 'FINSI' ;
  294. 'FIN' ;
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  

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