Télécharger fabbadd1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : fabbadd1.dgibi
  2.  
  3. OPTI ECHO 1 ;
  4. OPTI ELEM 'CUB8' ;
  5.  
  6. opti debu 1 ;
  7.  
  8. opti debu 1 ;
  9.  
  10. GRAPH = FAUX ; COMM 'Affichage graphiques' ;
  11. XINFO = FAUX ; COMM 'Affichage infos' ;
  12.  
  13. SI GRAPH ;
  14. OPTI TRAC 'X' ;
  15. SINO ;
  16. OPTI TRAC 'PSC' ;
  17. FINS;
  18.  
  19. ************************************************************************
  20. * Debut du jeu de donnees fabbrication additive SLM
  21. *
  22. * OPTIONS GENERALES
  23. * - 3D
  24. *
  25. * THERMIQUE
  26. * - Source de chaleur volumique (Goldak) dépendant du temps (CHARTHER)
  27. * avec trajectoire personnalisee (ligne polygonale)
  28. * - Conduction dans la matière
  29. * - Convection les bords
  30. * - Proprietes matériaux qui dépendent de T
  31. * - Trois matériaux : poudre, piece et substrat
  32. * - Le "métal poudre" et le "métal piece" fondent à T > Tliq
  33. * - Les elements sont ajoutés couche par couche
  34. * - Changement modèle "poudre" > modele "piece"
  35. * dès qu'ils ont fondus une 1ère fois (PERSO2)
  36. *
  37. * Auteur : H. POMMIER harry.pommier@cea.fr
  38. * Historique version :
  39. * V0 version initiale 20/06/2018, Cast3M 2018
  40. ************************************************************************
  41.  
  42. ****PROCEDURES
  43.  
  44. 'DEBP' DUREE X*'LISTREELS' Y*'LISTREELS' VIT*'FLOTTANT' ;
  45. ****************************************************************
  46. * PROCEDURE DUREE : Calcul la duree du lasage d'une couche en
  47. * fonction de la vitesse et de la trajectoire
  48. * Entrees
  49. *X liste de coordonnees X en [m]
  50. *Y liste de coordonnees Y en [m]
  51. *VIT vitesse du procede en [m/s]
  52. *
  53. * Sortie
  54. *TPSLASA temps total de lasage pour parcourir
  55. * la trajectoire a la vitesse VIT
  56. *****************************************************************
  57.  
  58. TPSLASA = 0. ;
  59. REPE BOUC0 ((DIME X) - 1);
  60. I = &BOUC0 ;
  61.  
  62. X0 = EXTR X I ;
  63. X1 = EXTR X (I+1) ;
  64. Y0 = EXTR Y I ;
  65. Y1 = EXTR Y (I+1) ;
  66.  
  67. LLOC = '**'('+'('**'(X1 - X0) 2) ('**' (Y1 - Y0) 2)) 0.5 ;
  68. TPSLASA = '+' TPSLASA ('/' LLOC VIT) ;
  69. FIN BOUC0 ;
  70.  
  71. FINP TPSLASA ;
  72.  
  73. *******************************************
  74. * PROCEDURE CHARTHER
  75.  
  76. DEBP charther FAPASAP*'TABLE' tt*'FLOTTANT' ;
  77. TAA = TABLE ;
  78.  
  79. SI XINFO ;
  80. MESS 'Debut procedure CHARTHER' ;
  81. FINS ;
  82.  
  83. ncou = FAPASAP.'MES_DATA'.'COUCHE' ;
  84. tpsfin = FAPASAP.'MES_DATA'.'TPSFIN' ;
  85. tpslasa = FA.'PROCEDE'.'TEMPS_LASAGE' ;
  86. ttloc = '-' tt ('*' ('-' ncou 1) tpsfin) ;
  87. mesmod = FAPASAP.'MODELE' ;
  88. modloc = EXTR mesmod 'CONS' 'COND' ;
  89.  
  90. **CHARGEMENT
  91. SI (ttloc '<EG' tpslasa) ;
  92.  
  93. *Parametres
  94. progx = FA.'PROCEDE'.'TRAJECTOIRE'.'PROGX' ;
  95. progy = FA.'PROCEDE'.'TRAJECTOIRE'.'PROGY' ;
  96. vit = FA.'PROCEDE'.'VITESSE' ;
  97. tpsintc = FA.'PROCEDE'.'TEMPS_INTERCOUCHE' ;
  98. epcou = FA.'PROCEDE'.'EPAISSEUR_COU' ;
  99.  
  100. *Position source
  101. posloc vecloc pavan = POSOU
  102. ttloc progx progy vit ncou epcou ;
  103. theta = ACOS (COOR 1 vecloc) ;
  104. SI ((COOR 2 vecloc) '<' 0.) ;
  105. theta = '*' -1. theta ;
  106. FINS;
  107.  
  108. SI XINFO ;
  109. MESS 'Couche : ' ncou '/' NBCOU ' Avancement lasage de la couche :' pavan '%' ;
  110. vx vy vz = COOR vecloc ;
  111. MESS 'Angle source :' theta 'Direction (x,y) :' '('vx','vy')' ;
  112. dx dy dz = COOR posloc ;
  113. MESS 'Position source (x,y,z) :' '('dx','dy','dz')' ;
  114. FINS ;
  115.  
  116. *Para source
  117. Q = FA.'PROCEDE'.'SOURCE'.'Q' ;
  118. A = FA.'PROCEDE'.'SOURCE'.'A' ;
  119. B = FA.'PROCEDE'.'SOURCE'.'B' ;
  120. Cf = FA.'PROCEDE'.'SOURCE'.'Cf' ;
  121. Cr = FA.'PROCEDE'.'SOURCE'.'Cr' ;
  122. eta = FA.'PROCEDE'.'SOURCE'.'ETA' ;
  123. Qeff = '*' Q eta ;
  124. psour = PROG Qeff A B Cf Cr ;
  125. pvol = SOUGOLDH modloc psour posloc theta ttloc tpslasa ;
  126. charso = SOUR modloc pvol ;
  127.  
  128. *Correction puissance
  129. SI (ttloc '&lt;EG' tpslasa);
  130. Qeff = maxi (resu charso) ;
  131. SI XINFO ;
  132. MESS (CHAINE 'Puissance source initiale' Qeff ' W') ;
  133. FINS ;
  134. para1 = EXTR Psour 1 ;
  135. para1 = '*' para1 ('/' para1 Qeff) ;
  136. para2 = EXTR Psour 2 ;
  137. para3 = EXTR Psour 3 ;
  138. para4 = EXTR Psour 4 ;
  139. para5 = EXTR Psour 5 ;
  140. Psour = PROG para1 para2 para3 para4 para5 ;
  141. pvol = SOUGOLDH modloc psour posloc theta ttloc tpslasa ;
  142. charso = SOUR modloc pvol ;
  143. Qcor = maxi (resu charso) ;
  144. SI XINFO ;
  145. MESS (CHAINE 'Puissance source corrigee' Qcor ' W') ;
  146. FINS ;
  147. SINO ;
  148. charso = '*' 0. charso ;
  149. FINS ;
  150.  
  151. SINO ;
  152. prefroi = '/' ('-' ttloc tpslasa) FA.'PROCEDE'.'TEMPS_INTERCOUCHE' ;
  153. prefroi = '*' prefroi 100. ; COMM 'Avancement temps intercouche' ;
  154. MESS 'Couche : ' ncou '/' NBCOU ' Temporisation intercouche :' prefroi '%' ;
  155. pvol = MANU 'CHPO' (EXTR modloc 'MAILLAGE') 1 'SCAL' 0. 'NATU' 'DIFFUS' ;
  156. charso = SOUR modloc pvol ;
  157. FINS ;
  158.  
  159. TAA.'ADDI_SECOND' = charso ;
  160.  
  161. SI XINFO ;
  162. MESS 'Fin procedure CHARTHER' ;
  163. MESS 'Calcul thermique...' ;
  164. FINS ;
  165. FINP TAA ;
  166.  
  167. ************************************************************************
  168. * PROCEDURE POSOU : Calcul la position de la source et le vecteur directeur
  169. * en fonction du temps, de la trajection (progx, progy), de la vitesse,
  170. * du numero de la couche actuelle et de l epaisseur d une couche
  171. ************************************************************************
  172.  
  173. DEBP POSOU ;
  174.  
  175. ARGU TT*'FLOTTANT' ;
  176. ARGU PROGX*'LISTREEL' ;
  177. ARGU PROGY*'LISTREEL' ;
  178. ARGU VIT*'FLOTTANT' ;
  179. ARGU NCOU*'ENTIER' ;
  180. ARGU EPCOU*'FLOTTANT' ;
  181.  
  182.  
  183. TABDT = TABLE ; COMM 'Table des duree des segments' ;
  184. TABDTCUM = TABLE ; COMM 'Table des duree cumulees des segments' ;
  185. TABDL = TABLE ; COMM 'Table des longueurs des segments' ;
  186. TABDLCUM = TABLE ; COMM 'Table des longueurs cumulees des segments' ;
  187. TABDTCUM. 0 = 0. ;
  188. TABDLCUM. 0 = 0. ;
  189. flag = VRAI ;
  190.  
  191. NBOUC0 = '-' (DIME PROGX) 1 ;
  192. REPE BOUC0 NBOUC0 ;
  193. I = &BOUC0 ;
  194. X0 = EXTR PROGX I ;
  195. X1 = EXTR PROGX (I+1) ;
  196. Y0 = EXTR PROGY I ;
  197. Y1 = EXTR PROGY (I+1) ;
  198. TABDL.I = '**'('+'('**'(X1 - X0) 2) ('**' (Y1 - Y0) 2)) 0.5 ;
  199. TABDLCUM.I = TABDL. I + TABDLCUM.(I-1) ;
  200. TABDT.I = ('/' TABDL.I VIT) ;
  201. TABDTCUM.I = TABDT. I + TABDTCUM.(I-1) ;
  202. SI ((TT '&lt;EG' TABDTCUM.I) ET flag) ;
  203. K = I ; COMM 'Le laser se trouve sur le segment K du trajet' ;
  204. X0 = EXTR PROGX K ;
  205. X1 = EXTR PROGX (K+1) ;
  206. Y0 = EXTR PROGY K ;
  207. Y1 = EXTR PROGY (K+1) ;
  208. tt2 = '-' tt TABDTCUM.(K-1) ;
  209. ratio = '/' tt2 TABDT.K ;
  210. vecseg = (X1 - X0) (Y1 - Y0) 0. ;
  211. vec0 = '/' ((X1 - X0) (Y1 - Y0) 0.) TABDL.K ;
  212. x= '+' X0 (COOR ('*' vecseg ratio) 1) ;
  213. y= '+' Y0 (COOR ('*' vecseg ratio) 2) ;
  214. z = '*' ncou epcou ;
  215. pos0 = x y z ;
  216. flag = FAUX ;
  217. FINS ;
  218. FIN BOUC0 ;
  219.  
  220. LLASA = TABDLCUM.NBOUC0 ; COMM 'Longueur totale du lasage' ;
  221. TPSLASA = TABDTCUM.NBOUC0 ; COMM 'Duree totale du lasage' ;
  222.  
  223. *Pourcentage du trajet total realise
  224. SI (tt '<' TPSLASA) ;
  225. pavan = '*' ('/' tt TPSLASA) 100 ;
  226. SINO ;
  227. pavan = 100. ;
  228. FINS ;
  229.  
  230. FINP pos0 vec0 pavan ;
  231.  
  232. *****************************************************
  233. * PROCEDURE SOUGOLDH
  234.  
  235. *Auteur : H. POMMIER harry.pommier@cea.fr
  236. *Historique version :
  237. *Modification pour PASAPAS H. POMMIER 06-2018
  238. *Description : source equivalente Goldak adaptee pour PASAPAS
  239. *Entrées :
  240. *mo_sou Modele
  241. *p_sour Liste des parametres de la source
  242. *pos_sou Position de la source (x,y,z)
  243. *theta angle de rotation autour de axe Z
  244. *ttloc ttloc du calcul EF
  245. *tpslasa ttloc de lasage
  246. *(x : direction soudage, z : normale piece)
  247. *Sortie :
  248. *CHPO_SOM Champs Points de puissance volumique
  249.  
  250. DEBP SOUGOLDH mo_sou*'MMODEL' p_sour*'LISTREEL' pos_sou*'POINT'
  251. theta*'FLOTTANT' ttloc*'FLOTTANT' tpslasa*'FLOTTANT';
  252.  
  253. xglo yglo zglo = COOR (EXTR mo_sou 'MAILLAGE') ;
  254. *** repere local(xs,ys,zs)
  255. xsou ysou zsou = COOR pos_sou ;
  256. xxloc = xglo - xsou ;
  257. yyloc = yglo - ysou ;
  258. zzloc = zglo - zsou ;
  259.  
  260. *** Rotation de theta1 autour de l'axe des Y
  261. *** puis rotation de theta2 autour de l'axe du nouvel axe des Z
  262. cos0 = COS theta ;
  263. sin0 = SIN theta ;
  264.  
  265. xloc = (xxloc*cos0) + (yyloc*sin0) ;
  266. yloc = (yyloc*cos0) - (xxloc*sin0) ;
  267. zloc = zzloc ;
  268.  
  269. Q = EXTR p_sour 1 ;
  270. a = EXTR p_sour 2 ;
  271. b = EXTR p_sour 3 ;
  272. Cf = EXTR p_sour 4 ;
  273. Cr = EXTR p_sour 5 ;
  274.  
  275. *** * contribution de la source en y et z
  276. cy = EXP ( (-3./(a**2.)) * (yloc * yloc) ) ;
  277. cz = EXP ( (-3./(b**2.)) * (zloc * zloc) ) ;
  278.  
  279. *** * on calcule la source en avant du front
  280. fil_av = xloc MASQ egsupe (-1.e-10) ;
  281. fil_ar = fil_av MASQ inferieur (1.e-6) ;
  282. Rf = 2. / (1. + ( Cr / Cf ) ) ;
  283. Rr = 2. - Rf ;
  284. cx_av = EXP ( ( -3. / ( Cf ** 2. ) ) * (xloc * xloc) ) ;
  285. *cx_av = '*' cx_av (Rf / Cf) ;
  286. cx_av = fil_av * cx_av ;
  287. cx_ar = EXP ( ( -3. / ( Cr ** 2. ) ) * (xloc * xloc) ) ;
  288. *cx_ar = '*' cx_ar ('/' Rr Cr) ;
  289. cx_ar = fil_ar * cx_ar ;
  290. cx = cx_av + cx_ar ;
  291. Pi1 = (3.14159265358979**1.5) ;
  292. qmax = (6 * (3.**0.5) * Rf * Q) / (Pi1 * Cf * a * b) ;
  293. *qmax = (6 * (3.**0.5) * Q) / (Pi1 * a * b) ;
  294. fil_z = zloc MASQ 'EGINFE' ( 0. ) ;
  295. cz = cz * fil_z ;
  296. CHPO_SOM = qmax * cx * cy * cz ;
  297.  
  298. SI (ttloc '>' tpslasa);
  299. CHPO_SOM = '*' CHPO_SOM 0. ;
  300. FINS ;
  301.  
  302. FINP CHPO_SOM ;
  303.  
  304.  
  305. ************************************************************************
  306. * PROCEDURE PERSO2 : Apres la THERMIQUE dans TRANSNON
  307. * MAJ le MODELE et le MATERIAU THERMIQUE : POUDRE -> PIECE
  308. * ATTENTION : La temperature a jour est dans l'indice WTAB.'THER_COURANT'
  309. * harry.pommier@cea.fr 29/06/2018
  310. ************************************************************************
  311. DEBP PERSO2 TAB1*'TABLE' ;
  312.  
  313. SI XINFO ;
  314. MESS 'Debut procedure PERSO2' ;
  315. FINS ;
  316.  
  317. NCOU = TAB1.'MES_DATA'.'COUCHE' ;
  318.  
  319. tfusion = TAB1.'MES_DATA'.'T_LIQUIDUS' ;
  320. WTAB = TAB1.'WTABLE' ;
  321.  
  322. NB_PAS = (DIME TAB1.'MES_MODEL') ;
  323. NB_PAS2 = (DIME TAB1.'TEMPS') ;
  324.  
  325. MODTHER = WTAB.'MODELE' ;
  326. MODCOND= EXTR MODTHER 'COMP' 'CONDUCTION' ;
  327. MAILTHER = EXTR MODTHER 'MAILLAGE' ;
  328. MAILCOND = EXTR MODCOND 'MAILLAGE' ;
  329. MATTOT = TAB1.'CARACTERISTIQUES' ;
  330.  
  331. *Recuperation des elements liquides dans la poudre
  332. CHATEMP = CHAN 'CHAM' WTAB.'THER_COURANT' MODCOND 'TEMPERATURES' ;
  333. ELEMSUP = ELEM CHATEMP 'SUPE' tfusion 'STRICTEMENT' ;
  334.  
  335.  
  336. **********
  337. * Transformation du MODELE POUDRE en PIECE
  338. **********
  339.  
  340. MAILFON = TAB1.'MAILLAGE_FONDU'.(NB_PAS - 1) ;
  341. MAILPOUI = DIFF MAILFON FA.'MAILLAGE'.'POUDRE_INI' ;
  342. ELNEW = INTE ELEMSUP MAILPOUI ;
  343.  
  344.  
  345. *MAJ modele
  346. SI ((NBEL ELNEW) '>EG' 1) ;
  347. TAB1.'MAILLAGE_FONDU'.NB_PAS =
  348. TAB1.'MAILLAGE_FONDU'.(NB_PAS-1) ET ELNEW ;
  349. TAB1.'MAILLAGE_FONDU2'.NB_PAS2 = TAB1.'MAILLAGE_FONDU'.NB_PAS ;
  350. MAILCOUC = FA.'MAILLAGE'.'COUCHE_CUM'.NCOU ;
  351. MAILPOUI = DIFF TAB1.'MAILLAGE_FONDU'.NB_PAS MAILCOUC ;
  352.  
  353. MAILPOU = MAILPOUI ET
  354. (DIFF FA.'MAILLAGE'.'COUCHE_CUM'.NCOU
  355. FA.'MAILLAGE'.'POUDRE_INI') ;
  356. FA.'MAILLAGE'.'POUDRE' = MAILPOU ;
  357.  
  358. MODTHEPO = REDU FA.'MODELE'.'POUDRE_INI' MAILPOUI ;
  359. FA.'MODELE'.'POUDRE' = MODTHEPO ;
  360. MODTHEPI = MODE MAILFON 'THERMIQUE' 'CONDUCTION' 'CONS' 'COND' ;
  361. FA.'MODELE'.'PIECE' = MODTHEPI ;
  362. MODTHESU = FA.'MODELE'.'SUBSTRAT' ;
  363. FA.'MODELE'.'TOTAL' =
  364. MODTHEPO ET MODTHEPI ET MODTHESU ET MODCONV ;
  365.  
  366. MATHEPO = REDU FA.'MATERIAUX'.'POUDRE_INI' MODTHEPO ;
  367. EVK = FA.'MATERIAUX'.'PARA_PIECE'.'EVK' ;
  368. EVRHO = FA.'MATERIAUX'.'PARA_PIECE'.'EVRHO' ;
  369. EVCP = FA.'MATERIAUX'.'PARA_PIECE'.'EVCP' ;
  370. MATHEPI = MATE MODTHEPI 'K' EVK 'RHO' EVRHO 'C' EVCP ;
  371. MATHESU = FA.'MATERIAUX'.'SUBSTRAT' ;
  372. FA.'MATERIAUX'.'POUDRE' = MATHEPO ;
  373. FA.'MATERIAUX'.'PIECE' = MATHEPI ;
  374. FA.'MATERIAUX'.'TOTAL' =
  375. MATHEPO ET MATHEPI ET MATHESU ET MATCONV ;
  376.  
  377. *Mise a jour de WTAB pour le PAS suivant
  378. WTAB.'MOD_MEC' = FA.'MODELE'.'TOTAL' ;
  379. WTAB.'MAT_MEC' = FA.'MATERIAUX'.'TOTAL' ;
  380. WTAB.'MODELE' = FA.'MODELE'.'TOTAL' ;
  381. WTAB.'MA_TOT' = FA.'MATERIAUX'.'TOTAL' ;
  382.  
  383. *Indice obligatoire a renseigner car PAS_ETAT travaille sur MODELE
  384. WTAB.'MODELE' = FA.'MODELE'.'TOTAL' ;
  385. WTAB.'CARACTERISTIQUES' = FA.'MATERIAUX'.'TOTAL' ;
  386.  
  387. * Enregistrement des modeles
  388. TAB1.'MES_MODEL'.NB_PAS = WTAB.'MODELE' ;
  389. TAB1.'MES_MODEL2'.NB_PAS2 = TAB1.'MES_MODEL'.NB_PAS ;
  390. TAB1.'MODELE' = WTAB.'MODELE' ;
  391. TAB1.'CARACTERISTIQUES' = FA.'MATERIAUX'.'TOTAL' ;
  392. SINO ;
  393.  
  394. *Recuperation depuis le PAS precedent
  395. TAB1.'MES_MODEL'.NB_PAS = TAB1.'MES_MODEL'.(NB_PAS-1) ;
  396. TAB1.'MAILLAGE_FONDU'.NB_PAS = TAB1.'MAILLAGE_FONDU'.(NB_PAS-1) ;
  397. TAB1.'MES_MODEL2'.NB_PAS2 = TAB1.'MES_MODEL'.NB_PAS ;
  398. TAB1.'MAILLAGE_FONDU2'.NB_PAS2 = TAB1.'MAILLAGE_FONDU'.NB_PAS ;
  399. FINS;
  400.  
  401. SI XINFO ;
  402. MESS 'Fin procedure PERSO2' ;
  403. FINS ;
  404.  
  405. FINP TAB1;
  406.  
  407. ***********************************************************************
  408. ***********************************************************************
  409. ***********************************************************************
  410. ***********************************************************************
  411. ***********************************************************************
  412. ****MAILLAGE
  413.  
  414. *Maillage murs (carre) et plateau (substrat), fabrication addictive, procede SLM
  415. *Auteur : H. POMMIER harry.pommier@cea.fr
  416. *Historique version :
  417. *V0 version initiale 18/06/2018, Cast3M 2018
  418.  
  419.  
  420.  
  421. POEIL1 = 0. 0. 10. ;
  422. POEIL2 = 10. -10. 10. ;
  423.  
  424. **********
  425. *PARAMETRES (on travaille en [m])
  426. **********
  427. *Dimensions
  428. r0 = 1.e-3 ; COMM 'Rayon du plateau substrat en [m]' ;
  429. a0 = 1.e-3 ; COMM 'Cote du carre en [m]' ;
  430. a1 = '/' a0 2. ; COMM 'Demi cote du carre en [m]' ;
  431. efin = 100.e-6 ; COMM 'Largeur de la zone de maillage fin (cordon de lasage) [m]' ;
  432. egros = 50.e-6 ; COMM 'Largeur de la zone de transition (de part et d autre du lasage) [m]' ;
  433. h0 = 0.12e-3 ; COMM 'Hauteur de la piece' ;
  434. ep = 100.e-6 ; COMM 'Epaisseur du plateau' ;
  435.  
  436. *Taille elements
  437. mfin = 50.e-6 ; COMM 'Taille elements fins, cordon de lasage' ;
  438. mmoy = 100.e-6 ; COMM 'Taille elements transitions, voisinage cordon de lasage' ;
  439. mgros = 500.e-6 ; COMM 'Taille elements grossiers, loin du cordon de lasage' ;
  440. epcou = 50.e-6 ; COMM 'Epaisseur d une couche' ;
  441.  
  442. **********
  443. *POINTS
  444. **********
  445. PO = 0. 0. 0. ; COMM 'Origine au centre du plateau' ;
  446. sqrt22 = ('/' ('**' 2. 0.5) 2) ; COMM 'Racine de 2 sur 2' ;
  447. sqrt22i = ('*' sqrt22 -1.) ; COMM 'Moins racine de 2 sur 2' ;
  448. PD1 = ('*' r0 sqrt22) ('*' r0 sqrt22i) 0. ;
  449. PD2 = ('*' r0 sqrt22) ('*' r0 sqrt22) 0. ;
  450. PD3 = ('*' r0 sqrt22i) ('*' r0 sqrt22) 0. ;
  451. PD4 = ('*' r0 sqrt22i) ('*' r0 sqrt22i) 0. ;
  452. *Carre 1
  453. aloc = '-' a1 ('+' ('/' efin 2.) egros) ; COMM 'demi largeur du carre courant' ;
  454. aloco = '*' aloc -1. ; COMM 'oppose de aloc' ;
  455. PC11 = aloc aloco 0. ;
  456. PC12 = aloc aloc 0. ;
  457. PC13 = aloco aloc 0. ;
  458. PC14 = aloco aloco 0. ;
  459. *Carre 2
  460. aloc = '-' a1 ('/' efin 2.) ; COMM 'demi largeur du carre courant' ;
  461. aloco = '*' aloc -1. ; COMM 'oppose de aloc' ;
  462. PC21 = aloc aloco 0. ;
  463. PC22 = aloc aloc 0. ;
  464. PC23 = aloco aloc 0. ;
  465. PC24 = aloco aloco 0. ;
  466. *Carre 3
  467. aloc = '+' a1 ('/' efin 2.) ; COMM 'demi largeur du carre courant' ;
  468. aloco = '*' aloc -1. ; COMM 'oppose de aloc' ;
  469. PC31 = aloc aloco 0. ;
  470. PC32 = aloc aloc 0. ;
  471. PC33 = aloco aloc 0. ;
  472. PC34 = aloco aloco 0. ;
  473. *Carre 4
  474. aloc = '+' a1 ('+' ('/' efin 2.) egros) ; COMM 'demi largeur du carre courant' ;
  475. aloco = '*' aloc -1. ; COMM 'oppose de aloc' ;
  476. PC41 = aloc aloco 0. ;
  477. PC42 = aloc aloc 0. ;
  478. PC43 = aloco aloc 0. ;
  479. PC44 = aloco aloco 0. ;
  480.  
  481.  
  482.  
  483. **********
  484. *DROITES
  485. **********
  486. *Carre 1
  487. D11 = DROI PC11 PC12 'DINI' mgros 'DFIN' mgros ;
  488. D12 = DROI PC12 PC13 'DINI' mgros 'DFIN' mgros ;
  489. D13 = DROI PC13 PC14 'DINI' mgros 'DFIN' mgros ;
  490. D14 = DROI PC14 PC11 'DINI' mgros 'DFIN' mgros ;
  491. *Carre 2
  492. D21 = DROI PC21 PC22 'DINI' mfin 'DFIN' mfin ;
  493. D22 = DROI PC22 PC23 'DINI' mfin 'DFIN' mfin ;
  494. D23 = DROI PC23 PC24 'DINI' mfin 'DFIN' mfin ;
  495. D24 = DROI PC24 PC21 'DINI' mfin 'DFIN' mfin ;
  496. *Carre 3
  497. D31 = DROI PC31 PC32 'DINI' mfin 'DFIN' mfin ;
  498. D32 = DROI PC32 PC33 'DINI' mfin 'DFIN' mfin ;
  499. D33 = DROI PC33 PC34 'DINI' mfin 'DFIN' mfin ;
  500. D34 = DROI PC34 PC31 'DINI' mfin 'DFIN' mfin ;
  501. *Carre 4
  502. D41 = DROI PC41 PC42 'DINI' mgros 'DFIN' mgros ;
  503. D42 = DROI PC42 PC43 'DINI' mgros 'DFIN' mgros ;
  504. D43 = DROI PC43 PC44 'DINI' mgros 'DFIN' mgros ;
  505. D44 = DROI PC44 PC41 'DINI' mgros 'DFIN' mgros ;
  506. *Cercle exterieur
  507. C12 = CERC 'DINI' mgros 'DFIN' mgros 'CENTR' PD1 PO PD2 ;
  508. C23 = CERC 'DINI' mgros 'DFIN' mgros 'CENTR' PD2 PO PD3 ;
  509. C34 = CERC 'DINI' mgros 'DFIN' mgros 'CENTR' PD3 PO PD4 ;
  510. C41 = CERC 'DINI' mgros 'DFIN' mgros 'CENTR' PD4 PO PD1 ;
  511.  
  512. *Diagonales
  513. D01 = DROI PO PC11 'DINI' mgros 'DFIN' mmoy ;
  514. D02 = DROI PO PC12 'DINI' mgros 'DFIN' mmoy ;
  515. D03 = DROI PO PC13 'DINI' mgros 'DFIN' mmoy ;
  516. D04 = DROI PO PC14 'DINI' mgros 'DFIN' mmoy ;
  517. *Connexion carre 1 carre 2
  518. D121 = DROI PC11 PC21 'DINI' mmoy 'DFIN' mfin ;
  519. D122 = DROI PC12 PC22 'DINI' mmoy 'DFIN' mfin ;
  520. D123 = DROI PC13 PC23 'DINI' mmoy 'DFIN' mfin ;
  521. D124 = DROI PC14 PC24 'DINI' mmoy 'DFIN' mfin ;
  522. *Connexion carre 2 carre 3
  523. D231 = DROI PC21 PC31 'DINI' mfin 'DFIN' mfin ;
  524. D232 = DROI PC22 PC32 'DINI' mfin 'DFIN' mfin ;
  525. D233 = DROI PC23 PC33 'DINI' mfin 'DFIN' mfin ;
  526. D234 = DROI PC24 PC34 'DINI' mfin 'DFIN' mfin ;
  527. *Connexion carre 3 carre 4
  528. D341 = DROI PC31 PC41 'DINI' mfin 'DFIN' mmoy ;
  529. D342 = DROI PC32 PC42 'DINI' mfin 'DFIN' mmoy ;
  530. D343 = DROI PC33 PC43 'DINI' mfin 'DFIN' mmoy ;
  531. D344 = DROI PC34 PC44 'DINI' mfin 'DFIN' mmoy ;
  532. *Connexion carre 4 cercle exterieur
  533. D401 = DROI PC41 PD1 'DINI' mmoy 'DFIN' mgros ;
  534. D402 = DROI PC42 PD2 'DINI' mmoy 'DFIN' mgros ;
  535. D403 = DROI PC43 PD3 'DINI' mmoy 'DFIN' mgros ;
  536. D404 = DROI PC44 PD4 'DINI' mmoy 'DFIN' mgros ;
  537.  
  538.  
  539. **********
  540. *SURFACES
  541. **********
  542. *Interieur carre 1
  543. S1 = SURF (D01 ET D11 ET D02) 'PLANE' ;
  544. S2 = SURF (D02 ET D12 ET D03) 'PLANE' ;
  545. S3 = SURF (D03 ET D13 ET D04) 'PLANE' ;
  546. S4 = SURF (D04 ET D14 ET D01) 'PLANE' ;
  547. *Entre carre 1 et carre 2
  548. S5 = SURF (D11 ET D121 ET D21 ET D122) 'PLANE' ;
  549. S6 = SURF (D12 ET D122 ET D22 ET D123) 'PLANE' ;
  550. S7 = SURF (D13 ET D123 ET D23 ET D124) 'PLANE' ;
  551. S8 = SURF (D14 ET D124 ET D24 ET D121) 'PLANE' ;
  552. *Entre carre 2 et carre 3
  553. S9 = SURF (D21 ET D231 ET D31 ET D232) 'PLANE' ;
  554. S10 = SURF (D22 ET D232 ET D32 ET D233) 'PLANE' ;
  555. S11 = SURF (D23 ET D233 ET D33 ET D234) 'PLANE' ;
  556. S12 = SURF (D24 ET D234 ET D34 ET D231) 'PLANE' ;
  557. *Entre carre 3 et carre 4
  558. S13 = SURF (D31 ET D341 ET D41 ET D342) 'PLANE' ;
  559. S14 = SURF (D32 ET D342 ET D42 ET D343) 'PLANE' ;
  560. S15 = SURF (D33 ET D343 ET D43 ET D344) 'PLANE' ;
  561. S16 = SURF (D34 ET D344 ET D44 ET D341) 'PLANE' ;
  562. *Entre carre 3 et cercle exterieur
  563. S17 = SURF (D41 ET D401 ET C12 ET D402) 'PLANE' ;
  564. S18 = SURF (D42 ET D402 ET C23 ET D403) 'PLANE' ;
  565. S19 = SURF (D43 ET D403 ET C34 ET D404) 'PLANE' ;
  566. S20 = SURF (D44 ET D404 ET C41 ET D401) 'PLANE' ;
  567.  
  568. *Assemblage des zones
  569. SLASA = (S9 ET S10 ET S11 ET S12) COUL 'ROUG' ;
  570. STRAN = (S5 ET S6 ET S7 ET S8 ET
  571. S13 ET S14 ET S15 ET S16) COUL 'VERT' ;
  572. SLOIN = (S1 ET S2 ET S3 ET S4 ET
  573. S17 ET S18 ET S19 ET S20) COUL 'BLEU' ;
  574. STOT = SLASA ET STRAN ET SLOIN ;
  575.  
  576. SI XINFO ;
  577. MESS 'Nombre elements par couche :' (NBEL STOT) ;
  578. FINS;
  579.  
  580. **********
  581. *VOLUMES
  582. **********
  583. *Maillage du plateau
  584. MAILPLAT = (STOT VOLU 'DINI' mfin 'DFIN' mgros
  585. 'TRAN' (0. 0. ('*' ep -1.))) COUL 'VERT' ;
  586.  
  587. *Maillage couche par couche
  588. nbcou = '/' h0 epcou ; COMM 'Nombre de couche' ;
  589. nbcou = ENTI 'TRONCATURE' nbcou ;
  590. SI XINFO ;
  591. MESS 'Nombre de couches : ' nbcou ;
  592. FINS ;
  593.  
  594. *Premiere couche
  595. COULASA = (SLASA VOLU 1
  596. 'TRAN' (0. 0. epcou)) COUL 'ROUG' ;
  597. COUTRAN = (STRAN VOLU 1
  598. 'TRAN' (0. 0. epcou)) COUL 'ORAN' ;
  599. COULOIN = (SLOIN VOLU 1
  600. 'TRAN' (0. 0. epcou)) COUL 'JAUN' ;
  601.  
  602.  
  603. TABM = TABLE ;
  604. TABM.'plateau' = MAILPLAT ;
  605. TABM.'lasage' = TABLE ;
  606. TABM.'transition' = TABLE ;
  607. TABM.'loin' = TABLE ;
  608. TABM.'couche' = TABLE ;
  609. TABM.'lasage'. 1 = COULASA ;
  610. TABM.'transition'. 1 = COUTRAN ;
  611. TABM.'loin'. 1 = COULOIN ;
  612. MAILLASA = TABM.'lasage'. 1 ;
  613. MAILTRAN = TABM.'transition'. 1 ;
  614. MAILLOIN = TABM.'loin'. 1 ;
  615. REPE BOUC0 ('-' nbcou 1) ;
  616. I = ('+' &BOUC0 1) ;
  617. TABM.'lasage'.I = COULASA 'PLUS' (0. 0. ('*' (I-1) epcou)) ;
  618. MAILLASA = MAILLASA ET TABM.'lasage'.I ;
  619. TABM.'transition'.I = COUTRAN 'PLUS' (0. 0. ('*' (I-1) epcou)) ;
  620. MAILTRAN = MAILTRAN ET TABM.'transition'.I ;
  621. TABM.'loin'.I = COULOIN 'PLUS' (0. 0. ('*' (I-1) epcou)) ;
  622. MAILLOIN = MAILLOIN ET TABM.'loin'.I ;
  623. TABM.'couche'.I =
  624. (TABM.'lasage'.I) ET (TABM.'transition'.I) ET (TABM.'loin'.I) ;
  625. FIN BOUC0 ;
  626.  
  627.  
  628. MAILTOT = MAILLASA ET MAILTRAN ET MAILLOIN ET MAILPLAT ;
  629. ELIM MAILTOT 1.e-7 ;
  630.  
  631. SI XINFO ;
  632. NB = NBEL MAILTOT ;
  633. MESS 'Nombre elements :' NB ;
  634. FINS ;
  635.  
  636. **********
  637. *GRAPH
  638. **********
  639. SI GRAPH ;
  640. TRAC POEIL1 STOT ;
  641. TRAC 'FACE' 'CACHE' POEIL2 (MAILPLAT ET MAILLASA) ;
  642. TRAC 'FACE' 'CACHE' POEIL2 MAILTOT ;
  643. FINS ;
  644.  
  645. **********
  646. *TRAJECTOIRE LASAGE
  647. **********
  648. PROGX = PROG (-1. * a1) a1 ;
  649. PROGY = PROG (-1. * a1) (-1. * a1) ;
  650.  
  651.  
  652. **********
  653. *SAUV
  654. **********
  655. TABM.'EPAISSEUR_COU' = epcou ;
  656. *OPTI SAUV 'maillage_murs_FA_SLM.sauv' ;
  657. *SAUV TABM MAILTOT MAILLASA MAILTRAN MAILLOIN PROGX PROGY ;
  658.  
  659. ***********************************************************************
  660. ***********************************************************************
  661. ***********************************************************************
  662. ***********************************************************************
  663. ***********************************************************************
  664.  
  665. *Calcul thermique murs (carre) et plateau (substrat), fabrication addictive, procede SLM
  666. *Modele thermique conduction 3D
  667. *Trois matériaux :
  668. * poudre
  669. * piece
  670. * substrat
  671. *Procede SLM
  672. *Le métal poudre et le métal continu fondent à T>Tliq
  673. *Les elements sont ajoutés couche par couche
  674.  
  675.  
  676. *****Restitution maillage
  677. *OPTI REST 'maillage_murs_FA_SLM.sauv' ;
  678. *REST ;
  679. NBCOU = DIME TABM.'lasage' ; COMM 'Nombre de couches' ;
  680.  
  681.  
  682. **********
  683. *PARAMETRES
  684. **********
  685. T_INI = 20. ; COMM 'Temperature initiale' ;
  686. T_CONV = T_INI ;
  687. T_LIQ = 1400. ; COMM 'Temperature liquidus' ;
  688.  
  689. *Construction de la TABLE Fabrication Additive pour stocker l etude
  690. FA = TABLE ;
  691. ****MAILLAGE
  692. FA.'MAILLAGE' = TABLE ;
  693. FA.'MAILLAGE'.'COUCHE' = TABLE ; COMM 'Couche unitaire' ;
  694. FA.'MAILLAGE'.'COUCHE_CUM' = TABLE ; COMM 'Couches cumulees' ;
  695. FA.'MAILLAGE'.'TOTAL_CUM' = TABLE ; COMM 'Couche + substrat' ;
  696. FA.'MAILLAGE'.'POUDRE' = VIDE 'MAILLAGE' ;
  697. FA.'MAILLAGE'.'SUBSTRAT' = VIDE 'MAILLAGE' ;
  698. FA.'MAILLAGE'.'TOTAL' = VIDE 'MAILLAGE' ;
  699.  
  700. ****MATERIAUX
  701. FA.'CONSTITUANT' = TABLE ;
  702. FA.'CONSTITUANT'.'SUBSTRAT' = MOT '316L' ;
  703. FA.'CONSTITUANT'.'PIECE' = MOT '316L' ;
  704. FA.'CONSTITUANT'.'POROSITE' = 0.2 ;
  705. ****PROCEDE
  706. FA.'PROCEDE' = TABLE ;
  707. FA.'PROCEDE'.'VITESSE' = 300.e-3 ; COMM 'Vitesse en [m/s]' ;
  708. FA.'PROCEDE'.'TEMPS_INTERCOUCHE' = 0.5 ; COMM 'en [s]' ;
  709. FA.'PROCEDE'.'EPAISSEUR_COU' = TABM.'EPAISSEUR_COU' ;
  710. *Sources possibles : 'GOLDAK' ,
  711. FA.'PROCEDE'.'SOURCE' = TABLE ;
  712. FA.'PROCEDE'.'SOURCE'.'TYPE' = MOT 'GOLDAK' ;
  713.  
  714. SI ('EGA' (FA.'PROCEDE'.'SOURCE'.'TYPE') (MOT 'GOLDAK')) ;
  715. FA.'PROCEDE'.'SOURCE'.'ETA' = 1. ; COMM 'Rendement' ;
  716. FA.'PROCEDE'.'SOURCE'.'Q' = 50. ;
  717. FA.'PROCEDE'.'SOURCE'.'A' = 100.e-6 ;
  718. FA.'PROCEDE'.'SOURCE'.'B' = 100.e-6 ;
  719. FA.'PROCEDE'.'SOURCE'.'Cf' = 100.e-6 ;
  720. FA.'PROCEDE'.'SOURCE'.'Cr' = 100.e-6 ;
  721. FINS ;
  722.  
  723. *Trajectoire
  724. FA.'PROCEDE'.'TRAJECTOIRE' = TABLE ;
  725. FA.'PROCEDE'.'TRAJECTOIRE'.'PROGX' = PROGX ;
  726. FA.'PROCEDE'.'TRAJECTOIRE'.'PROGY' = PROGY ;
  727.  
  728. ****TEMPS CALCULES
  729. TPSLASA = DUREE
  730. FA.'PROCEDE'.'TRAJECTOIRE'.'PROGX'
  731. FA.'PROCEDE'.'TRAJECTOIRE'.'PROGY'
  732. (FA.'PROCEDE'.'VITESSE') ;
  733. FA.'PROCEDE'.'TEMPS_LASAGE' = TPSLASA ;
  734. TPSPAS1 = 1.e-4 ; COMM 'Pas de calcul pendant le lasage en [s]' ;
  735. TPSPAS2 = 2.e-1 ; COMM 'Pas de calcul pendant le refroidissement en [s]' ;
  736. TPSFIN = '+' TPSLASA FA.'PROCEDE'.'TEMPS_INTERCOUCHE' ;
  737. *Temps calcules
  738. LTCAL = PROG
  739. TPSPAS1 'PAS' TPSPAS1 TPSLASA 'PAS' TPSPAS2 TPSFIN ;
  740. *Temps sauves
  741. TPSPAS11 = 1.e-3 ;COMM 'Pas de sauvegarde pendant le lasage en [s]' ;
  742. TPSPAS22 = 2.e-1 ;COMM 'Pas de sauvegarde pendant le refroidissement en [s]' ;
  743. LTSAUV = PROG
  744. TPSPAS11 'PAS' TPSPAS11 TPSLASA 'PAS' TPSPAS22 TPSFIN ;
  745.  
  746. FA.'TEMPS_CALCULES' = TABLE ;
  747. FA.'TEMPS_SAUVES' = TABLE ;
  748. REPE BOUCT NBCOU ;
  749. K = &BOUCT ;
  750. FA.'TEMPS_CALCULES'.K = ('*' TPSFIN (K-1)) '+' LTCAL ;
  751. FA.'TEMPS_SAUVES'.K = ('*' TPSFIN (K-1)) '+' LTSAUV ;
  752. FIN BOUCT ;
  753.  
  754. **********
  755. *IMPORTATION MAILLAGE
  756. **********
  757. *Substrat
  758. FA.'MAILLAGE'.'SUBSTRAT' = TABM.'plateau' ;
  759.  
  760. *Couches de poudre
  761. FA.'MAILLAGE'.'COUCHE_CUM'. 0 = VIDE 'MAILLAGE' ;
  762. FA.'MAILLAGE'.'TOTAL_CUM'. 0 = VIDE 'MAILLAGE' ;
  763. REPE BLOC1 NBCOU ;
  764. I = &BLOC1 ;
  765. list I ;
  766. FA.'MAILLAGE'.'COUCHE'.I =
  767. (TABM.'lasage'.I ET TABM.'transition'.I ET TABM.'loin'.I) ;
  768. FA.'MAILLAGE'.'COUCHE_CUM'.I = FA.'MAILLAGE'.'COUCHE_CUM'.(I-1)
  769. ET FA.'MAILLAGE'.'COUCHE'.I ;
  770.  
  771. FA.'MAILLAGE'.'TOTAL_CUM'.I = FA.'MAILLAGE'.'COUCHE_CUM'.I
  772. ET FA.'MAILLAGE'.'SUBSTRAT' ;
  773. FIN BLOC1 ;
  774. FA.'MAILLAGE'.'POUDRE' = FA.'MAILLAGE'.'COUCHE_CUM'.NBCOU ;
  775. FA.'MAILLAGE'.'POUDRE_INI' = FA.'MAILLAGE'.'POUDRE' ;
  776. *Maillage total
  777. FA.'MAILLAGE'.'TOTAL' = FA.'MAILLAGE'.'SUBSTRAT' ET FA.'MAILLAGE'.'POUDRE' ;
  778.  
  779. SI GRAPH ;
  780. TRAC 'FACE' 'CACHE' FA.'MAILLAGE'.'TOTAL' ;
  781. FINS ;
  782.  
  783.  
  784. **********
  785. *MODELES
  786. **********
  787. FA.'MODELE' = TABLE ;
  788. FA.'MODELE'.'SUBSTRAT' = VIDE 'MMODEL' ;
  789. FA.'MODELE'.'POUDRE' = VIDE 'MMODEL' ;
  790. FA.'MODELE'.'PIECE' = VIDE 'MMODEL' ;
  791. FA.'MODELE'.'CONVECTION' = VIDE 'MMODEL' ;
  792. FA.'MODELE'.'MAILLAGE_CONV' = VIDE 'MAILLAGE' ;
  793. FA.'MODELE'.'TOTAL' = VIDE 'MMODEL' ;
  794.  
  795. *Substrat
  796. MAILTHSU = FA.'MAILLAGE'.'SUBSTRAT' ;
  797. MODTHESU = MODE MAILTHSU 'THERMIQUE' 'CONDUCTION' 'CONS' 'COND' ;
  798. FA.'MODELE'.'SUBSTRAT' = MODTHESU ;
  799.  
  800. *Poudre
  801. MAILTHPO = FA.'MAILLAGE'.'POUDRE' ;
  802. MODTHEPO = MODE MAILTHPO 'THERMIQUE' 'CONDUCTION' 'CONS' 'COND' ;
  803. FA.'MODELE'.'POUDRE' = MODTHEPO ;
  804. FA.'MODELE'.'POUDRE_INI' = MODTHEPO ;
  805. *Piece
  806. MAILTHPI = VIDE 'MAILLAGE' ;
  807. MODTHEPI = MODE MAILTHPI 'THERMIQUE' 'CONDUCTION' 'CONS' 'COND' ;
  808. FA.'MODELE'.'PIECE' = MODTHEPI ;
  809.  
  810. *Total
  811. FA.'MODELE'.'TOTAL' =
  812. MODTHESU ET MODTHEPO ET MODTHEPI ;
  813.  
  814.  
  815. **********
  816. *MATERIAUX
  817. **********
  818. FA.'MATERIAUX' = TABLE ;
  819. FA.'MATERIAUX'.'PARA_PIECE' = TABLE ;
  820. FA.'MATERIAUX'.'SUBSTRAT' = VIDE 'MCHAML' ;
  821. FA.'MATERIAUX'.'POUDRE' = VIDE 'MCHAML' ;
  822. FA.'MATERIAUX'.'PIECE' = VIDE 'MCHAML' ;
  823. FA.'MATERIAUX'.'TOTAL' = VIDE 'MCHAML' ;
  824.  
  825.  
  826.  
  827. *Lecture des MATERIAUX ('316L','16MND5')
  828.  
  829. NOMCONS = FA.'CONSTITUANT'.'SUBSTRAT' ;
  830.  
  831. *Lecture des parametres dans la bibliotheque
  832.  
  833. *NOMDATA = CHAI 'Materiaux/' NOMCONS '/' NOMCONS'_Rho.csv' ;
  834. TTMP = TABL ;
  835. TTMP. 1 = PROG 20 200 400 600 800 1000 1200 1400 1500 3000 ;
  836. TTMP. 2 = PROG 8.0e3 7.93e3 7.84e3 7.75e3 7.65e3 7.55e3
  837. 7.45e3 7.35e3 7.30e3 7.30e3 ;
  838. EVRHO = EVOL MANU 'T' (TTMP. 1) 'RHO' (TTMP. 2) ;
  839.  
  840. *NOMDATA = CHAI 'Materiaux/' NOMCONS '/' NOMCONS'_k.csv' ;
  841. TTMP = TABL ;
  842. TTMP. 1 = PROG 20 100 200 300 400 500 600 700 800 900 1000
  843. 1200 1400 3000 ;
  844. TTMP. 2 = PROG 0.0147e3 0.0158e3 0.0172e3 0.0186e3 0.02e3
  845. 0.0211e3 0.0222e3 0.0232e3 0.0241e3 0.0248e3 0.0255e3
  846. 0.0269e3 0.0283e3 0.0283e3 ;
  847. EVK = EVOL MANU 'T' (TTMP. 1) 'K' (TTMP. 2) ;
  848.  
  849. *NOMDATA = CHAI 'Materiaux/' NOMCONS '/' NOMCONS'_Cp.csv' ;
  850. TTMP = TABL ;
  851. TTMP. 1 = PROG 20 100 200 300 400 600 800 1000 1200 1500 3000 ;
  852. TTMP. 2 = PROG 450 490 525 545 560 580 625 660 670 690 690 ;
  853. EVCP = EVOL MANU 'T' (TTMP. 1) 'C' (TTMP. 2) ;
  854.  
  855. SI GRAPH ;
  856. DESS EVRHO TITR 'Masse Volumique' ;
  857. DESS EVK TITR 'Conductivite Thermique' ;
  858. DESS EVCP TITR 'Chaleur Specifique' ;
  859. FINS ;
  860.  
  861. MATHESU = MATE MODTHESU 'K' EVK 'RHO' EVRHO 'C' EVCP ;
  862. FA.'MATERIAUX'.'SUBSTRAT' = MATHESU ;
  863.  
  864. *Sauvegarde pour utilisation dans PERSO2
  865. FA.'MATERIAUX'.'PARA_PIECE'.'EVK' = EVK ;
  866. FA.'MATERIAUX'.'PARA_PIECE'.'EVRHO' = EVRHO ;
  867. FA.'MATERIAUX'.'PARA_PIECE'.'EVCP' = EVCP ;
  868.  
  869. SI ('NEG' FA.'CONSTITUANT'.'SUBSTRAT' FA.'CONSTITUANT'.'PIECE') ;
  870. *NOMDATA = CHAI 'Materiaux/' NOMCONS '/' NOMCONS'_Rho.csv' ;
  871. TTMP = TABL ;
  872. TTMP. 1 = PROG 20 200 400 600 800 1000 1200 1400 1500 3000 ;
  873. TTMP. 2 = PROG 8.0e3 7.93e3 7.84e3 7.75e3 7.65e3 7.55e3
  874. 7.45e3 7.35e3 7.30e3 7.30e3 ;
  875. EVRHO = EVOL MANU 'T' (TTMP. 1) 'RHO' (TTMP. 2) ;
  876.  
  877. *NOMDATA = CHAI 'Materiaux/' NOMCONS '/' NOMCONS'_k.csv' ;
  878. TTMP = TABL ;
  879. TTMP. 1 = PROG 20 100 200 300 400 500 600 700 800 900 1000
  880. 1200 1400 3000 ;
  881. TTMP. 2 = PROG 0.0147e3 0.0158e3 0.0172e3 0.0186e3 0.02e3
  882. 0.0211e3 0.0222e3 0.0232e3 0.0241e3 0.0248e3 0.0255e3
  883. 0.0269e3 0.0283e3 0.0283e3 ;
  884. EVK = EVOL MANU 'T' (TTMP. 1) 'K' (TTMP. 2) ;
  885.  
  886. *NOMDATA = CHAI 'Materiaux/' NOMCONS '/' NOMCONS'_Cp.csv' ;
  887. TTMP = TABL ;
  888. TTMP. 1 = PROG 20 100 200 300 400 600 800 1000 1200 1500 3000 ;
  889. TTMP. 2 = PROG 450 490 525 545 560 580 625 660 670 690 690 ;
  890. EVCP = EVOL MANU 'T' (TTMP. 1) 'C' (TTMP. 2) ;
  891.  
  892. SI GRAPH ;
  893. DESS EVRHO TITR 'Masse Volumique' ;
  894. DESS EVK TITR 'Conductivite Thermique' ;
  895. DESS EVCP TITR 'Chaleur Specifique' ;
  896. FINS ;
  897. FINS ;
  898.  
  899. MATHEPI = MATE MODTHEPI 'K' EVK 'RHO' EVRHO 'C' EVCP ;
  900. FA.'MATERIAUX'.'PIECE' = MATHEPI ;
  901. FA.'MATERIAUX'.'PIECE_INI' = MATHEPI ;
  902. *Sauvegarde pour utilisation dans PERSO2
  903. FA.'MATERIAUX'.'PARA_PIECE'.'EVK' = EVK ;
  904. FA.'MATERIAUX'.'PARA_PIECE'.'EVRHO' = EVRHO ;
  905. FA.'MATERIAUX'.'PARA_PIECE'.'EVCP' = EVCP ;
  906.  
  907. *Les proprietes de la poudre sont proportionnelle a sa porosite 'porop'
  908. porop = FA.'CONSTITUANT'.'POROSITE' ;
  909. EVK = '*' ('-' 1. porop) EVK ;
  910. EVRHO = '*' ('-' 1. porop) EVRHO ;
  911. EVCP = '*' ('-' 1. porop) EVCP ;
  912. MATHEPO = MATE MODTHEPO 'K' EVK 'RHO' EVRHO 'C' EVCP ;
  913. FA.'MATERIAUX'.'POUDRE' = MATHEPO ;
  914. FA.'MATERIAUX'.'POUDRE_INI' = MATHEPO ;
  915.  
  916. FA.'MATERIAUX'.'TOTAL' = MATHESU ET MATHEPO ET MATHEPI ;
  917.  
  918. **********
  919. *PASAPAS - Calcul thermique transitoire
  920. **********
  921.  
  922. I = 1 ; COMM 'Indice de la couche en cours' ;
  923.  
  924. *REDU du calcul thermique sur la couche actuelle
  925. MODCOU = REDU FA.'MODELE'.'POUDRE' FA.'MAILLAGE'.'COUCHE_CUM'. 1 ;
  926. MODCOND = MODTHESU ET MODCOU ET MODTHEPI ;
  927. MATCOU = REDU FA.'MATERIAUX'.'POUDRE' FA.'MAILLAGE'.'COUCHE_CUM'. 1 ;
  928. MATCOND = MATHESU ET MATCOU ET MATHEPI ;
  929. MAILCONV = ENVE (EXTR (MODTHESU ET MODCOU) 'MAILLAGE') ;
  930.  
  931. *Convection
  932. MODCONV = MODE MAILCONV 'THERMIQUE' 'CONVECTION' 'CONS' 'CONV' ;
  933. MATCONV = MATE MODCONV 'H' 10. ;
  934. CONV1 = CONV MODCONV MATCONV 'T' T_CONV ;
  935. EVO1 = EVOL 'MANU' (PROG 0. 1.e10) (PROG 1. 1.) ;
  936. CHACONV = CHAR 'Q' CONV1 EVO1 ;
  937. CHARTOT = CHACONV ;
  938.  
  939. *Ajout convection au modele
  940. MODTOT = MODCOND ET MODCONV ;
  941. MATTOT = MATCOND ET MATCONV ;
  942.  
  943.  
  944. *Initialisation
  945. MAILTHER= EXTR MODCOND 'MAILLAGE' ;
  946. CHPTINI = MANU 'CHPO' MAILTHER 1 'T' T_INI 'NATU' 'DIFFUS' ;
  947. MAILFON = VIDE 'MAILLAGE' ;
  948.  
  949. *Declaration de la table PASAPAS
  950. FAPASAP = TABLE ;
  951. FAPASAP.'MODELE' = MODTOT ;
  952. FAPASAP.'CARACTERISTIQUES' = MATTOT ;
  953. FAPASAP.'CHARGEMENT' = CHARTOT ;
  954. FAPASAP.'TEMPS_CALCULES' = LTCAL ;
  955. *FAPASAP.'TEMPS_SAUVES' = LTSAUV ;
  956.  
  957. FAPASAP.'TEMPS' = TABLE ;
  958. FAPASAP.'TEMPERATURES' = TABLE ;
  959. FAPASAP.'MES_MODEL' = TABLE ;
  960. FAPASAP.'MAILLAGE_FONDU' = TABLE ;
  961. FAPASAP.'MES_MODEL2' = TABLE ;
  962. FAPASAP.'MAILLAGE_FONDU2' = TABLE ;
  963.  
  964. FAPASAP.'TEMPS'. 0 = 0. ;
  965. FAPASAP.'TEMPERATURES'. 0 = CHPTINI ;
  966. FAPASAP.'MES_MODEL'. 0 = MODTOT ;
  967. FAPASAP.'MES_MODEL2'. 0 = MODTOT ;
  968. FAPASAP.'MAILLAGE_FONDU'. 0 = MAILFON ;
  969. FAPASAP.'MAILLAGE_FONDU2'. 0 = MAILFON ;
  970. *MES_MODEL2 et MAILLAGE_FONDU2 sont enregistres en synchronisation avec 'TEMPS'
  971.  
  972. FAPASAP.'PROCEDURE_PERSO2' = VRAI ;
  973. FAPASAP.'PROCEDURE_CHARTHER' = VRAI ;
  974.  
  975. FAPASAP.'PRECISION' = 1.e-1 ; COMM 'Pour rapidite' ;
  976.  
  977. FAPASAP.'PROCESSEURS' = 'MOT' 'AUTOMATIQUE' ;
  978.  
  979. FAPASAP.'MES_DATA' = TABLE ;
  980. FAPASAP.'MES_DATA'.'COUCHE' = 1 ;
  981. FAPASAP.'MES_DATA'.'TPSFIN' = TPSFIN ;
  982. FAPASAP.'MES_DATA'.'T_LIQUIDUS' = T_LIQ ;
  983.  
  984. *Boucle sur les couches (un PASAPAS par couche)
  985. REPE BOUCPAS NBCOU ;
  986. I = &BOUCPAS ;
  987.  
  988. SI XINFO ;
  989. MESS 'DEBUT CALCUL LA COUCHE :' I ;
  990. FINS ;
  991.  
  992.  
  993. PASAPAS FAPASAP ;
  994.  
  995.  
  996. SI XINFO ;
  997. MESS 'FIN CALCUL LA COUCHE :' I ;
  998. FINS ;
  999.  
  1000. MENA 'OBLI' ;
  1001. *nomfic = CHAI 'RESU/COUCHE_' I '.sauv' ;
  1002. *OPTI SAUV nomfic ;
  1003. *SAUV FAPASAP TABM FA ;
  1004. *Pour gagner de la place sur le disque (commande linux)
  1005. *SI (I '>' 2) ;
  1006. *comclean = CHAI 'rm RESU/COUCHE_' (I-2) '.sauv*' ;
  1007. *EXTE comclean ;
  1008. *FINS ;
  1009.  
  1010. SI (I '<' NBCOU) ;
  1011.  
  1012. *On ajoute le MODELE et le MATERIAUX de la couche suivante
  1013. NB_PAS = DIME FAPASAP.'TEMPS' ;
  1014. MODCOUI = REDU (EXTR FA.'MODELE'.'POUDRE_INI' 'CONS' 'COND')
  1015. FA.'MAILLAGE'.'COUCHE'.(I+1) ;
  1016.  
  1017. MODCOND = EXTR FAPASAP.'MODELE' 'CONS' 'COND' ;
  1018. MODCOND2 = MODCOND ET MODCOUI ;
  1019. MAILCONV = ENVE (EXTR MODCOND2 'MAILLAGE') ;
  1020. MODCONV = MODE MAILCONV 'THERMIQUE' 'CONVECTION' 'CONS' 'CONV' ;
  1021. MODTOT = MODCOND2 ET MODCONV ;
  1022.  
  1023. *On ajoute le materiau
  1024. MATLAST = REDU FA.'MATERIAUX'.'TOTAL' MODCOND ;
  1025. MATCOND = MATLAST ET (REDU FA.'MATERIAUX'.'POUDRE_INI' MODCOUI) ;
  1026. MATCONV = MATE MODCONV 'H' 10. ;
  1027. MATTOT = MATCOND ET MATCONV ;
  1028.  
  1029.  
  1030. *Chargement convection
  1031. CONV1 = CONV MODCONV MATCONV 'T' T_CONV ;
  1032. EVO1 = EVOL 'MANU' (PROG 0. 1.e10) (PROG 1. 1.) ;
  1033. CHACONV = CHAR 'Q' CONV1 EVO1 ;
  1034.  
  1035. *Actualisation chargement
  1036. CHARTOT = CHACONV ;
  1037.  
  1038. *Ajout de la nouvelle couche à temperature T_INI
  1039. CHPTLAST = FAPASAP.'TEMPERATURES'.(NB_PAS-1) ;
  1040. MAILNEW = FA.'MAILLAGE'.'COUCHE'.(I+1) ;
  1041. CHPTNEW = MANU 'CHPO' MAILNEW 1 'T' T_INI 'NATU' 'DIFFUS' ;
  1042.  
  1043. MAIL1 = EXTR CHPTLAST 'MAILLAGE' ;
  1044. MAIL2 = EXTR CHPTNEW 'MAILLAGE' ;
  1045. MAILSEP = INTE MAIL1 MAIL2 ;
  1046.  
  1047. MAIL11 = DIFF MAIL1 MAILSEP ;
  1048. MAIL22 = DIFF MAIL2 MAILSEP ;
  1049.  
  1050. *Il faut faire une hypothese sur la temperature sur la surface frontiere la couche precedente et la nouvelle
  1051. *On fait hypothese que cette couche est a la temperature nouvelle couche
  1052. CHPTLAST = REDU CHPTLAST MAIL11 ;
  1053. CHPTINI = CHPTLAST ET CHPTNEW ;
  1054. CHPTINI = REDU CHPTINI (EXTR MODTOT 'MAILLAGE') ;
  1055.  
  1056. *On actualise la table PASAPAS
  1057. FAPASAP.'MODELE' = MODTOT ;
  1058. FAPASAP.'CARACTERISTIQUES' = MATTOT ;
  1059. OUBL FAPASAP 'WTABLE' ;
  1060. FAPASAP.'CHARGEMENT' = CHARTOT ;
  1061. FAPASAP.'TEMPS_CALCULES' = FA.'TEMPS_CALCULES'.(I+1) ;
  1062. *FAPASAP.'TEMPS_SAUVES' = FA.'TEMPS_SAUVES'.(I+1) ;
  1063. FAPASAP.'TEMPERATURES'.(NB_PAS-1) = CHPTINI ;
  1064. FAPASAP.'MES_MODEL'.(NB_PAS-1) = MODTOT ;
  1065. FAPASAP.'MES_DATA'.'COUCHE' = (I+1) ;
  1066.  
  1067. FINS ;
  1068. FIN BOUCPAS ;
  1069.  
  1070. SI GRAPH ;
  1071. N = DIME FAPASAP.'MAILLAGE_FONDU' ;
  1072. MAILF = FAPASAP.'MAILLAGE_FONDU'.(N-1) ;
  1073. TRAC FACE CACHE (MAILPLAT ET MAILF) ;
  1074. FINS ;
  1075.  
  1076. FIN ;
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  

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