Télécharger soudage1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : soudage1.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. ***********************************************************************
  6. * NOM : soudage1.dgibi
  7. * ___ pb. d'advection-diffusion avec rayonnement par une
  8. * méthode d'éléments finis
  9. * Equation de l'energie + modèle de plaque plane
  10. *
  11. * Biblio :
  12. * Rapport DM2S SFME/LTMF/RT/02-052/A
  13. * S. Gounand
  14. * Deux cas-tests en vue d'une modélisation numérique d'un
  15. * processus de soudage.
  16. *
  17. * LANGAGE : GIBIANE-CAST3M
  18. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  19. * mél : gounand@semt2.smts.cea.fr
  20. *
  21. ******************************************************************
  22. *
  23. * Paramètres : * interact = VRAI si on travaille en interactif
  24. * FAUX sinon
  25. * * graph = VRAI si on veut des graphiques
  26. * FAUX sinon
  27. * * typdisc = 'LINE' : éléments finis linéaires
  28. * 'QUAF' : éléments finis quadratiques
  29. * * grossier = VRAI : maillage grossier
  30. * FAUX : maillage fin
  31. *
  32. *interact= VRAI ;
  33. *graph = VRAI ;
  34. interact= FAUX ;
  35. graph = FAUX ;
  36. *typdisc = 'LINE';
  37. typdisc = 'QUAF';
  38. grossier = FAUX ;
  39. *
  40. ******************************************************************
  41. 'OPTION' 'DIME' 2 ;
  42. 'SI' ('EGA' typdisc 'LINE') ;
  43. 'OPTION' 'ELEM' QUA4 ;
  44. 'SINON' ;
  45. 'OPTION' 'ELEM' QUA8 ;
  46. 'FINSI' ;
  47. 'OPTION' 'ISOV' 'SULI' ;
  48. nbisov = 15 ;
  49. 'SI' ('NON' interact) ;
  50. 'OPTION' 'TRAC' 'PSC' ;
  51. 'OPTION' 'ECHO' 0 ;
  52. 'FINSI' ;
  53. *
  54. formflot ='(1PE9.2)' ;
  55. *
  56. *=======================================================================
  57. * DEBUT DE LA PROCEDURE TRACVIT
  58. *=======================================================================
  59. 'DEBPROC' TRACVIT ;
  60. 'ARGUMENT' vit*'CHPOINT ' ;
  61. 'ARGUMENT' tit/'MOT ' ;
  62. 'ARGUMENT' echvit/'FLOTTANT' ;
  63. ladens = (** ('/' ('MESURE' mt) ('NBEL' mt))
  64. ('/' 1.D0 ('VALEUR' 'DIME'))) ;
  65. 'SI' ('NON' ('EXISTE' echvit)) ;
  66. echvit = 'MAXIMUM' vit 'ABS' ;
  67. 'SINON' ;
  68. echvit = 'ABS' echvit ;
  69. 'FINSI' ;
  70. 'SI' ('<' echvit 1.D-30) ;
  71. echvit = 1.D0 ;
  72. 'FINSI' ;
  73. uref = '/' ('*' ladens 2.0D0) echvit ;
  74. vecvit = 'VECTEUR' vit uref 'UX' 'UY' 'JAUN' ;
  75. 'SI' ('EXISTE' tit) ;
  76. titvit = 'CHAINE' 'FORMAT' formflot tit ' echvit=' echvit titglob ;
  77. 'SINON' ;
  78. titvit = 'CHAINE' 'FORMAT' formflot 'VIT echvit=' echvit titglob ;
  79. 'FINSI' ;
  80. 'TRACER' vecvit mt 'TITR' titvit ;
  81. 'FINPROC' ;
  82. *=======================================================================
  83. * FIN DE LA PROCEDURE TRACVIT
  84. *=======================================================================
  85. *=======================================================================
  86. * DEBUT DE LA PROCEDURE TRACCHML
  87. *=======================================================================
  88. 'DEBPROC' TRACCHML ;
  89. 'ARGUMENT' chml*'CHPOINT ' ;
  90. 'ARGUMENT' tit/'MOT ' ;
  91. rescal = 'KCHA' $mt chml 'CHAM' ;
  92. tituap = 'CHAINE' tit ' ' titglob ;
  93. 'TRACER' rescal modbid 'TITR' tituap ;
  94. 'FINPROC' ;
  95. *=======================================================================
  96. * FIN DE LA PROCEDURE TRACCHML
  97. *=======================================================================
  98. *=======================================================================
  99. * DEBUT DE LA PROCEDURE CALCRAYO
  100. *=======================================================================
  101. 'DEBPROC' CALCRAYO ;
  102. 'ARGUMENT' rx*'TABLE ' ;
  103. rv = rx . 'EQEX' ;
  104. rvirayo = rx . 'ARG1' ;
  105. tn = 'NOMC' 'SCAL' (rv . 'INCO' . 'T') 'NATURE' 'DISCRET' ;
  106. tn4 = '-' (tn '*' tn '*' tn '*' tn) (t0 '*' t0 '*' t0 '*' t0) ;
  107. rs = '*' tn4 ('*' -2.D0 sigma) ;
  108. srs = 'NOMC' 'SOUR' rs 'NATURE' 'DISCRET' ;
  109. srs = 'KCHT' $mt 'SCAL' 'SOMMET' 'COMP' 'SOUR' srs ;
  110. srs2 = 'NOEL' $mt srs ;
  111. isr = 'MAXIMUM' ('RESULT' ('*' srs2 ('DOMA' $mt 'VOLUME'))) ;
  112. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  113. 'integrale source rayonnement='
  114. isr ' W' ) ;
  115. *rescal = srs2 ;
  116. *tituap = 'CHAINE' 'FORMAT' formflot 'Src. rayo. (en W.m-2) ; int='
  117. * isr ' W' ;
  118. *TRACCHML rescal tituap ;
  119. *rv . 'INCO' . 'PRAYO' = '*' srs2 copuis ;
  120. rv . 'INCO' . rvirayo = '*' srs2 copuis ;
  121. as2 ama1 = 'KOPS' 'MATRIK' ;
  122. 'RESPRO' as2 ama1 ;
  123. 'FINPROC' ;
  124. *=======================================================================
  125. * FIN DE LA PROCEDURE CALCRAYO
  126. *=======================================================================
  127. *
  128. *
  129. * Donnes materielles (systeme SI)
  130. * Geometrie
  131. * long : longeur de la plaque
  132. * larg : largeur de la plaque
  133. * epai : epaisseur de la plaque
  134. * xs, ys : coordonnées de la source gaussienne
  135. * ras : rayon de la source gaussienne
  136. * dg : densité grosse (pour le maillage)
  137. * dp : densité petite (pour le maillage)
  138. long = 35.D-2 ;
  139. larg = 13.5D-2 ;
  140. *epai = 2.5D-2 ;
  141. epai = 2.5D-3 ;
  142. xs = 7.D-2 ;
  143. ys = 0.D-2 ;
  144. *ras = 3.D-3 ;
  145. ras = 1.5D-3 ;
  146. 'SI' (grossier) ;
  147. dg = 5.D-2 ;
  148. dp = 2.D-2 ;
  149. 'SINON' ;
  150. dg = 2.5D-2 ;
  151. dp = '/' ras 50.D0 ;
  152. 'FINSI' ;
  153. * Vitesse défilement de la plaque
  154. ux = 1.D-2 ;
  155. *ux = 0.23333D-2 ;
  156. * Physique
  157. * rho : masse volumique
  158. * cp : chaleur spécifique à pression constante
  159. * mu : viscosite (dynamique)
  160. * kappa : conductivité thermique
  161. * puis : puissance de la source gaussienne
  162. * sigma : constante de Stefan
  163. rho = 7800.D0 ;
  164. cp = 803.D0 ;
  165. kappa = 25.D0 ;
  166. puis = 900.D0 ;
  167. sigma = 5.6710D-8 ;
  168. * Conditions aux limites
  169. t0 = 300.D0 ;
  170. tg = t0 ;
  171. *
  172. * titre global pour les dessins
  173. *
  174. titglob = 'CHAINE' 'FORMAT' formflot
  175. ' puis=' puis ' W' ;
  176. 'MESSAGE' '**************' ;
  177. 'MESSAGE' 'TP1 :' ;
  178. 'MESSAGE' titglob ;
  179. 'MESSAGE' '**************' ;
  180. *
  181. * Géométrie discrétisée (maillage régulier)
  182. *
  183. pA = 0.D0 0.D0 ;
  184. pB = xs 0.D0 ;
  185. pC = long 0.D0 ;
  186. pD = long larg ;
  187. pE = xs larg ;
  188. pF = 0.D0 larg ;
  189. bas1 = 'DROIT' pA pB 'DINI' dg 'DFIN' dp ;
  190. bas2 = 'DROIT' pB pC 'DINI' dp 'DFIN' dg ;
  191. dro = 'DROIT' pC pD 'DINI' dp 'DFIN' dg ;
  192. hau2 = 'DROIT' pD pE 'DINI' dg 'DFIN' dp ;
  193. hau1 = 'DROIT' pE pF 'DINI' dp 'DFIN' dg ;
  194. gau = 'DROIT' pF pA 'DINI' dg 'DFIN' dp ;
  195. bas = 'ET' bas1 bas2 ;
  196. hau = 'ET' hau2 hau1 ;
  197. mt = 'DALLER' bas dro hau gau ;
  198. 'SI' graph ;
  199. titgeo = 'CHAINE' 'mt ' 'NBPO=' ('NBNO' mt)
  200. ' NBELEM=' ('NBEL' mt) titglob ;
  201. 'TRACER' mt 'TITRE' titgeo ;
  202. 'FINSI' ;
  203. *
  204. * Modèle
  205. *
  206. _mt = 'CHANGER' mt 'QUAF' ;
  207. _bas = 'CHANGER' bas 'QUAF' ;
  208. _dro = 'CHANGER' dro 'QUAF' ;
  209. _hau = 'CHANGER' hau 'QUAF' ;
  210. _gau = 'CHANGER' gau 'QUAF' ;
  211. 'ELIMINATION' (_mt 'ET' _bas 'ET' _dro 'ET' _hau 'ET' _gau)
  212. ('/' dp 100.D0) ;
  213. modbid = 'MODELISER' mt 'THERMIQUE' ;
  214. $mt = 'MODELISER' _mt 'NAVIER_STOKES' typdisc ;
  215. $bas = 'MODELISER' _bas 'NAVIER_STOKES' typdisc ;
  216. $dro = 'MODELISER' _dro 'NAVIER_STOKES' typdisc ;
  217. $hau = 'MODELISER' _hau 'NAVIER_STOKES' typdisc ;
  218. $gau = 'MODELISER' _gau 'NAVIER_STOKES' typdisc ;
  219. mtc = 'DOMA' $mt 'CENTRE' ;
  220. *
  221. * Construction de la source gaussienne
  222. *
  223. xmtc ymtc = 'COORDONNEE' mtc ;
  224. xxs = '-' xmtc xs ;
  225. yys = '-' ymtc ys ;
  226. fes = '*' ('+' ('*' xxs xxs) ('*' yys yys))
  227. ('/' -3.D0 ('*' ras ras)) ;
  228. gs = '*' ('EXP' fes)
  229. ('/' 3.D0 (PI '*' ras '*' ras)) ;
  230. sgs = 'NOMC' 'SOUR' ('*' gs puis) 'NATURE' 'DISCRET' ;
  231. sgs = 'KCHT' $mt 'SCAL' 'CENTRE' 'COMP' 'SOUR' sgs ;
  232. *
  233. * Rescaling de la source (attention, on ne modélise qu'une moitié
  234. * de la source : symetrie par rapport à Ox)
  235. *
  236. isgavc = 'MAXIMUM' ('RESULT' ('*' sgs ('DOMA' $mt 'VOLUME'))) ;
  237. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  238. 'int. source gauss avant correction='
  239. isgavc ' W' ) ;
  240. fcor = '/' ('/' puis 2.D0) isgavc ;
  241. sgs = '*' sgs fcor ;
  242. isgavc = 'MAXIMUM' ('RESULT' ('*' sgs ('DOMA' $mt 'VOLUME'))) ;
  243. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  244. 'int. source gauss apres correction='
  245. isgavc ' W' ) ;
  246. 'SI' graph ;
  247. rescal = sgs ;
  248. tituap = 'CHAINE' 'Src. gauss. (en W.m-2)' ;
  249. TRACCHML rescal tituap ;
  250. 'FINSI' ;
  251. stot = sgs ;
  252. *
  253. * conditions initiales
  254. *
  255. * temperature
  256. tini = 'KCHT' $mt 'SCAL' 'SOMMET' 'COMP' 'T' t0 ;
  257. * vitesse
  258. uini = 'KCHT' $mt 'VECT' 'SOMMET' (ux 0.D0) ;
  259. *
  260. * conditions aux limites
  261. *
  262. * temperature
  263. mailt = 'DOMA' $gau 'SOMMET' ;
  264. climt = 'MANUEL' 'CHPO' mailt 1 'T' tg 'NATURE' 'DISCRET' ;
  265. *
  266. climtot = climt ;
  267. *
  268. * Mise en place du calcul numérique
  269. *
  270. codiff = '/' kappa (rho '*' cp) ;
  271. copuis = '/' 1.D0 (epai '*' rho '*' cp) ;
  272. * options + équation de l'énergie
  273. rv = 'EQEX' 'NITER' 7 'OMEGA' 1.D0
  274. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  275. 'ZONE' $mt 'OPER' 'KONV' 1.D0 uini codiff 'INCO' 'T'
  276. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  277. 'ZONE' $mt 'OPER' 'LAPN' codiff 'INCO' 'T' 'T'
  278. 'OPTI' 'EF' 'IMPL'
  279. 'ZONE' $mt 'OPER' 'FIMP' ('*' stot copuis) 'INCO' 'T'
  280. ;
  281. * rayonement
  282. rv = 'EQEX' rv
  283. 'OPTI' 'EF' 'IMPL'
  284. 'ZONE' $mt 'OPER' 'CALCRAYO' 'PRAYO'
  285. 'OPTI' 'EF' 'IMPL'
  286. 'ZONE' $mt 'OPER' 'FIMP' 'PRAYO' 'INCO' 'T'
  287. ;
  288. rv . 'CLIM' = climtot ;
  289. rv . 'INCO' = 'TABLE' 'INCO' ;
  290. rv . 'INCO' . 'T' = 'KCHT' $mt 'SCAL' 'SOMMET' 'COMP' 'T' tini ;
  291. *
  292. * Calcul proprement dit
  293. *
  294. 'TEMPS' 'ZERO' ;
  295. EXEC rv ;
  296. TABTPS = TEMP 'NOEC';
  297. tcpu = TABTPS.'TEMPS_CPU'.'INITIAL';
  298. tcpus = '/' ('FLOTTANT' tcpu) 100.D0 ;
  299. 'MESSAGE' ('CHAINE' 'tcpus=' tcpus) ;
  300. *'TEMPS' 'IMPR' ;
  301. *
  302. * Post-traitement des variables
  303. *
  304. vart = rv . 'INCO' . 'T' ;
  305. covarfd = -1.D0 '*' epai '*' kappa ;
  306. varfd = '*' ('KOPS' vart 'GRADS' $mt) covarfd ;
  307. covarfc = epai '*' rho '*' cp ;
  308. varfc = '*' uini ('NOMC' 'SCAL' vart 'NATURE' 'DISCRET') ;
  309. varfc = '*' varfc covarfc ;
  310. 'SI' graph ;
  311. rescal = vart ;
  312. tituap = 'CHAINE' 'Temperature (en K)' titglob ;
  313. 'TRACER' rescal mt mt 'TITR' tituap nbisov ;
  314. rescal = varfd ;
  315. tituap = 'CHAINE' 'Flux diffusif (en W.m-1)' ;
  316. TRACVIT rescal tituap ;
  317. rescal = varfc ;
  318. tituap = 'CHAINE' 'Flux convectif (en W.m-1)' ;
  319. TRACVIT rescal tituap ;
  320. 'FINSI' ;
  321. *
  322. * Calcul des intégrales des flux diffusifs
  323. *
  324. ifdbas = 'DBIT' $bas varfd ;
  325. ifddro = 'DBIT' $dro varfd ;
  326. ifdhau = 'DBIT' $hau varfd ;
  327. ifdgau = 'DBIT' $gau varfd ;
  328. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  329. 'int. flux diff. bas =' ifdbas ' W') ;
  330. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  331. 'int. flux diff. dro =' ifddro ' W') ;
  332. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  333. 'int. flux diff. hau =' ifdhau ' W') ;
  334. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  335. 'int. flux diff. gau =' ifdgau ' W') ;
  336. *
  337. * Calcul des intégrales des flux convectifs
  338. *
  339. ifcbas = 'DBIT' $bas varfc ;
  340. ifcdro = 'DBIT' $dro varfc ;
  341. ifchau = 'DBIT' $hau varfc ;
  342. ifcgau = 'DBIT' $gau varfc ;
  343. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  344. 'int. flux conv. bas =' ifcbas ' W') ;
  345. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  346. 'int. flux conv. dro =' ifcdro ' W') ;
  347. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  348. 'int. flux conv. hau =' ifchau ' W') ;
  349. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  350. 'int. flux conv. gau =' ifcgau ' W') ;
  351. *
  352. * Calcul de l'énergie apportée par la source
  353. *
  354. isg = 'MAXIMUM' ('RESULT' ('*' stot ('DOMA' $mt 'VOLUME'))) ;
  355. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  356. 'int. source gauss =' isg ' W') ;
  357. *
  358. * Calcul de l'énergie rayonnée
  359. *
  360. srtot = '/' (rv . 'INCO' . 'PRAYO') copuis ;
  361. isr = 'MAXIMUM' ('RESULT' ('*' srtot ('DOMA' $mt 'VOLUME'))) ;
  362. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  363. 'int. source rayo. =' isr ' W') ;
  364. *
  365. * Bilan d'energie (gain/perte en %)
  366. *
  367. ifd = ifdbas '+' ifddro '+' ifdhau '+' ifdgau ;
  368. ifc = ifcbas '+' ifcdro '+' ifchau '+' ifcgau ;
  369. be = ifd '+' ifc '+' isg '+' isr ;
  370. berp = '*' ('/' be ('/' puis 2.D0)) 100.D0 ;
  371. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  372. 'Verif bilan energie =' berp ' %') ;
  373. 'SI' interact ;
  374. 'OPTION' 'DONN' 5 ;
  375. 'SINON' ;
  376. 'SI' ('>' ('ABS' berp) 1.D-2) ;
  377. 'ERREUR' 5 ;
  378. 'SINON' ;
  379. 'ERREUR' 0 ;
  380. 'FINSI' ;
  381. 'FINSI' ;
  382. 'FIN' ;
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  

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