Télécharger soudage2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : soudage2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. 'OPTION' 'ECHO' 0 ;
  5. ************************************************************************
  6. * NOM : ERRREL
  7. * DESCRIPTION : Calcul d'une erreur relative
  8. *
  9. *
  10. *
  11. * LANGAGE : GIBIANE-CAST3M
  12. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  13. * mél : gounand@semt2.smts.cea.fr
  14. **********************************************************************
  15. * VERSION : v1, 23/04/2003, version initiale
  16. * HISTORIQUE : v1, 23/04/2003, création
  17. * HISTORIQUE :
  18. * HISTORIQUE :
  19. ************************************************************************
  20. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  21. * en cas de modification de ce sous-programme afin de faciliter
  22. * la maintenance !
  23. ************************************************************************
  24. *
  25. *
  26. 'DEBPROC' ERRREL ;
  27. 'ARGUMENT' val*'FLOTTANT' ;
  28. 'ARGUMENT' valref*'FLOTTANT' ;
  29. *
  30. 'SI' ('<' ('ABS' valref) 1.D-10) ;
  31. echref = 1.D0 ;
  32. 'SINON' ;
  33. echref = valref ;
  34. 'FINSI' ;
  35. *
  36. errabs = 'ABS' ('/' ('-' val valref) echref);
  37. *
  38. 'RESPRO' errabs ;
  39. *
  40. * End of procedure file ERRREL
  41. *
  42. 'FINPROC' ;
  43.  
  44.  
  45. ************************************************************************
  46. * NOM : CALCNU
  47. * DESCRIPTION : calcul de la viscosité (tp2v2) :
  48. * si t > tfusion : viscosité = nu
  49. * si t < tfusion : viscosité = nu * 1.D6
  50. *
  51. *
  52. *
  53. * LANGAGE : GIBIANE-CAST3M
  54. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  55. * mél : gounand@semt2.smts.cea.fr
  56. **********************************************************************
  57. * VERSION : v1, 20/10/2002, version initiale
  58. * HISTORIQUE : v1, 20/10/2002, création
  59. * HISTORIQUE :
  60. * HISTORIQUE :
  61. ************************************************************************
  62. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  63. * en cas de modification de ce sous-programme afin de faciliter
  64. * la maintenance !
  65. ************************************************************************
  66. *
  67. *
  68. 'DEBPROC' CALCNU ;
  69. 'ARGUMENT' rvx*'TABLE ' ;
  70. rv = rvx . 'EQEX' ;
  71. tn = rv . 'INCO' . 'TN' ;
  72. tnc = 'NOEL' $mt tn ;
  73. zliq = tnc 'MASQUE' 'SUPERIEUR' tfusion ;
  74. zsol = tnc 'MASQUE' 'EGINFE' tfusion ;
  75. nuc = '+' ('*' zliq nu)
  76. ('*' zsol ('*' nu 1.D6)) ;
  77. nuc = 'KCHT' $mt 'SCAL' 'CENTRE' nuc ;
  78. rv . 'INCO' . 'NU' = nuc ;
  79. mat1 chp1 = 'KOPS' 'MATRIK' ;
  80. 'RESPRO' mat1 chp1 ;
  81. *
  82. * End of procedure file CALCNU
  83. *
  84. 'FINPROC' ;
  85.  
  86.  
  87. ************************************************************************
  88. * NOM : CALCTAU
  89. * DESCRIPTION : calcul de la tension de surface (tp2v2) :
  90. * contrainte tangentielle proportionnelle
  91. * au gradient de température tangentiel.
  92. * nu dUt/dn = (dg/dT / rho) (gradT.t)
  93. *
  94. * Attention : on divise par rho
  95. * car l'équation de qdm est aussi divisée par rho
  96. *
  97. *
  98. *
  99. * LANGAGE : GIBIANE-CAST3M
  100. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  101. * mél : gounand@semt2.smts.cea.fr
  102. **********************************************************************
  103. * VERSION : v1, 25/10/2002, version initiale
  104. * HISTORIQUE : v1, 25/10/2002, création
  105. * HISTORIQUE :
  106. * HISTORIQUE :
  107. ************************************************************************
  108. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  109. * en cas de modification de ce sous-programme afin de faciliter
  110. * la maintenance !
  111. ************************************************************************
  112. *
  113. *
  114. 'DEBPROC' CALCTAU ;
  115. 'ARGUMENT' rvx*'TABLE ' ;
  116. rv = rvx . 'EQEX' ;
  117. tn = rv . 'INCO' . 'TN' ;
  118. tnhau = 'KCHT' $hau 'SCAL' 'SOMMET' tn ;
  119. gtnh = 'KOPS' 'GRAD' tnhau $hau ;
  120. tau = '*' ('/' dgdt rho) gtnh ;
  121. * TRACVIT tau 'TAU' ;
  122. * rv . 'INCO' . 'TAU' = 'KCHT' $hau 'VECT' 'CENTRE' (0.D0 0.D0) ;
  123. rv . 'INCO' . 'TAU' = 'KCHT' $hau 'VECT' 'CENTRE' tau ;
  124. mat1 chp1 = 'KOPS' 'MATRIK' ;
  125. 'RESPRO' mat1 chp1 ;
  126. *
  127. * End of procedure file CALCTAU
  128. *
  129. 'FINPROC' ;
  130.  
  131. ************************************************************************
  132. * NOM : CALRESI
  133. * DESCRIPTION : Calcul des residus et
  134. * stockage d'infos utiles au post-traitement
  135. * cf. procedures FILM et PHOTO
  136. *
  137. *
  138. *
  139. * LANGAGE : GIBIANE-CAST3M
  140. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  141. * mél : gounand@semt2.smts.cea.fr
  142. **********************************************************************
  143. * VERSION : v1, 23/10/2002, version initiale
  144. * HISTORIQUE : v1, 23/10/2002, création
  145. * HISTORIQUE :
  146. * HISTORIQUE :
  147. ************************************************************************
  148. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  149. * en cas de modification de ce sous-programme afin de faciliter
  150. * la maintenance !
  151. ************************************************************************
  152. *
  153. *
  154. 'DEBPROC' CALRESI ;
  155. 'ARGUMENT' rvx*'TABLE ' ;
  156. rv = rvx . 'EQEX' ;
  157. * freq1 : fréquence d'impression
  158. * freq2 : fréquence du stockage d'infos pour FILM et PHOTO
  159. * eps0 : Sortie de la boucle de EQEX si convergence
  160. freq1 = 'ENTIER' ('+' (rvx . 'ARG1') 0.001D0) ;
  161. freq2 = 'ENTIER' ('+' (rvx . 'ARG2') 0.001D0) ;
  162. eps0 = rvx . 'ARG3' ;
  163. time0 = rv . 'PASDETPS' . 'TPS' ;
  164. pdt0 = rv . 'PASDETPS' . 'NUPASDT' ;
  165. rvi = rv . 'INCO' ;
  166. un = rvi . 'UN' ;
  167. tn = rvi . 'TN' ;
  168. pn = rvi . 'PN' ;
  169. nu = rvi . 'NU' ;
  170. *
  171. * Calcul des résidus
  172. * Le résidu est défini comme : || u_(i) - u_(i-1) || / || u_(i) ||
  173. * où || || est la norme L2
  174. *
  175. rvr = rv . 'RESIDU' ;
  176. 'SI' ('>' pdt0 1) ;
  177. unm1 = rvr . 'UNM1' ;
  178. tnm1 = rvr . 'TNM1' ;
  179. pnm1 = rvr . 'PNM1' ;
  180. num1 = rvr . 'NUM1' ;
  181. mmu = rvr . 'MMU' ;
  182. mmt = rvr . 'MMT' ;
  183. mmp = rvr . 'MMP' ;
  184. mmn = rvr . 'MMN' ;
  185. uinco = 'MOTS' 'UX' 'UY' ;
  186. uinco2 = 'MOTS' '1UN' '2UN' ;
  187. diffu = 'NOMC' uinco uinco2 ('-' un unm1) ;
  188. resiu2 = 'XTY' diffu ('KOPS' mmu '*' diffu) uinco2 uinco2 ;
  189. couru = 'NOMC' uinco uinco2 un ;
  190. normu2 = 'XTY' couru ('KOPS' mmu '*' couru) uinco2 uinco2 ;
  191. erru = '/' ('**' ('ABS' resiu2) 0.5D0)
  192. ('**' ('ABS' normu2) 0.5D0)
  193. ;
  194. tinco = 'MOTS' 'SCAL' ;
  195. tinco2 = 'MOTS' 'TN' ;
  196. difft = 'NOMC' tinco tinco2 ('-' tn tnm1) ;
  197. resit2 = 'XTY' difft ('KOPS' mmt '*' difft) tinco2 tinco2 ;
  198. court = 'NOMC' tinco tinco2 tn ;
  199. normt2 = 'XTY' court ('KOPS' mmt '*' court) tinco2 tinco2 ;
  200. errt = '/' ('**' ('ABS' resit2) 0.5D0)
  201. ('**' ('ABS' normt2) 0.5D0)
  202. ;
  203. pinco = 'MOTS' 'SCAL' ;
  204. pinco2 = 'MOTS' 'PN' ;
  205. diffp = 'NOMC' pinco pinco2 (ELNOPRES ('-' pn pnm1)) ;
  206. resip2 = 'XTY' diffp ('KOPS' mmp '*' diffp) pinco2 pinco2 ;
  207. courp = 'NOMC' pinco pinco2 (ELNOPRES pn) ;
  208. normp2 = 'XTY' courp ('KOPS' mmp '*' courp) pinco2 pinco2 ;
  209. errp = '/' ('**' ('ABS' resip2) 0.5D0)
  210. ('**' ('ABS' normp2) 0.5D0)
  211. ;
  212. ninco = 'MOTS' 'SCAL' ;
  213. ninco2 = 'MOTS' 'SCAL' ;
  214. diffn = 'NOMC' ninco ninco2 ('-' nu num1) ;
  215. resin2 = 'XTY' diffn ('KOPS' mmn '*' diffn) ninco2 ninco2 ;
  216. resin2 = '+' resin2 1.D-14 ;
  217. courn = 'NOMC' ninco ninco2 nu ;
  218. normn2 = 'XTY' courn ('KOPS' mmn '*' courn) ninco2 ninco2 ;
  219. errn = '/' ('**' ('ABS' resin2) 0.5D0)
  220. ('**' ('ABS' normn2) 0.5D0)
  221. ;
  222. rvr . 'IT' = 'ET' (rvr . 'IT') ('PROG' pdt0) ;
  223. rvr . 'TI' = 'ET' (rvr . 'TI') ('PROG' time0) ;
  224. rvr . 'ERU'= 'ET' (rvr . 'ERU') ('PROG' erru) ;
  225. rvr . 'ERT'= 'ET' (rvr . 'ERT') ('PROG' errt) ;
  226. rvr . 'ERP'= 'ET' (rvr . 'ERP') ('PROG' errp) ;
  227. rvr . 'ERN'= 'ET' (rvr . 'ERN') ('PROG' errn) ;
  228. 'SI' ('OU' ('EGA' (MODULO pdt0 freq1) 0) ('EGA' pdt0 2));
  229. titmess1 = 'CHAINE' 'Pdt=' pdt0 ' ; tps=' time0
  230. ' erru=' erru ' ; errt=' errt
  231. ' ; errp=' errp ' ; errn=' errn ;
  232. 'MESSAGE' titmess1 ;
  233. 'FINSI' ;
  234. 'FINSI' ;
  235. rvr . 'UNM1' = 'COPIER' un ;
  236. rvr . 'TNM1' = 'COPIER' tn ;
  237. rvr . 'PNM1' = 'COPIER' pn ;
  238. rvr . 'NUM1' = 'COPIER' nu ;
  239. *
  240. * Film
  241. *
  242. 'SI' ('OU' ('EGA' (MODULO pdt0 freq2) 0) ('EGA' pdt0 1));
  243. rvf = rv . 'FILM' ;
  244. dimtab = '+' ('DIME' rvf) 1 ;
  245. rvf . dimtab = 'TABLE' ;
  246. rvf . dimtab . 'IT' = pdt0 ;
  247. rvf . dimtab . 'TI' = time0 ;
  248. rvf . dimtab . 'UN' = 'COPIER' un ;
  249. rvf . dimtab . 'TN' = 'COPIER' tn ;
  250. rvf . dimtab . 'PN' = 'COPIER' pn ;
  251. rvf . dimtab . 'NU' = 'COPIER' nu ;
  252. 'FINSI' ;
  253. mat1 chp1 = 'KOPS' 'MATRIK' ;
  254. 'RESPRO' mat1 chp1 ;
  255. *
  256. * End of procedure file CALRESI
  257. *
  258. 'FINPROC' ;
  259.  
  260. ************************************************************************
  261. * NOM : ELNOPRES
  262. * DESCRIPTION : Projette un champ de pression au sommet
  263. *
  264. *
  265. *
  266. * LANGAGE : GIBIANE-CAST3M
  267. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  268. * mél : gounand@semt2.smts.cea.fr
  269. **********************************************************************
  270. * VERSION : v1, 14/10/2002, version initiale
  271. * HISTORIQUE : v1, 14/10/2002, création
  272. * HISTORIQUE :
  273. * HISTORIQUE :
  274. ************************************************************************
  275. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  276. * en cas de modification de ce sous-programme afin de faciliter
  277. * la maintenance !
  278. ************************************************************************
  279. *
  280. *
  281. 'DEBPROC' ELNOPRES ;
  282. 'ARGUMENT' pn*'CHPOINT ' ;
  283. *
  284. 'SI' ('EGA' kpres 'MSOMMET') ;
  285. pn2 = 'KCHT' $mt 'SCAL' kpres pn ;
  286. 'SINON' ;
  287. pn2 = 'ELNO' $mt ('KCHT' $mt 'SCAL' kpres pn) kpres;
  288. 'FINSI' ;
  289. pn2 = 'NOMC' 'SCAL' ('REDU' pn2 mt) 'NATURE' 'DISCRET' ;
  290. 'RESPRO' pn2 ;
  291. *
  292. * End of procedure file ELNOPRES
  293. *
  294. 'FINPROC' ;
  295.  
  296. ************************************************************************
  297. * NOM : FILM
  298. * DESCRIPTION : Affiche sous forme d'animation des infos stockées
  299. * dans la table rvf
  300. * On peut préciser un indice de début, un indice de fin
  301. * et un pas pour n'afficher qu'une partie des informations
  302. * contenues dans la table.
  303. *
  304. * LANGAGE : GIBIANE-CAST3M
  305. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  306. * mél : gounand@semt2.smts.cea.fr
  307. **********************************************************************
  308. * VERSION : v1, 23/10/2002, version initiale
  309. * HISTORIQUE : v1, 23/10/2002, création
  310. * HISTORIQUE :
  311. * HISTORIQUE :
  312. ************************************************************************
  313. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  314. * en cas de modification de ce sous-programme afin de faciliter
  315. * la maintenance !
  316. ************************************************************************
  317. *
  318. *
  319. 'DEBPROC' FILM ;
  320. 'ARGUMENT' rvf*'TABLE ' ;
  321. 'ARGUMENT' ndebu/'ENTIER ' ;
  322. 'ARGUMENT' nfin/'ENTIER ' ;
  323. 'ARGUMENT' ninter/'ENTIER ' ;
  324. *
  325. * Un champ nul pour les déformées
  326. *
  327. dxmt = 'MANUEL' 'CHPO' mt 2 'UR' 0.D0 'UZ' 0.D0
  328. 'NATURE' 'DISCRET';
  329. *
  330. dimtab = 'DIME' rvf ;
  331. liv = 'ET' ('EXISTE' ndebu) ('EXISTE' nfin) ;
  332. 'SI' (liv) ;
  333. livok = 'ET' liv
  334. ('ET' ('<' ndebu nfin)
  335. ('ET' ('>EG' ndebu 1) ('&lt;EG' nfin dimtab))
  336. ) ;
  337. 'FINSI' ;
  338. lviv = 'ET' ('EXISTE' ninter) ('EXISTE' livok) ;
  339. 'SI' (lviv) ;
  340. * On corrige nfin pour que MODULO (- nfin ndebu) ninter =0
  341. npouet = '/' ('-' nfin ndebu) ninter ;
  342. nfin = '+' ndebu ('*' npouet ninter) ;
  343. 'FINSI' ;
  344. 'SI' (liv) ;
  345. 'SI' (livok) ;
  346. 'SI' (lviv) ;
  347. lindic = 'LECT' ndebu 'PAS' ninter nfin ;
  348. 'SINON' ;
  349. lindic = 'LECT' ndebu 'PAS' 1 nfin ;
  350. 'FINSI' ;
  351. 'SINON' ;
  352. 'ERREUR' 'Bornes de l"intervalle incorrectes' ;
  353. 'FINSI' ;
  354. 'SINON' ;
  355. lindic = 'LECT' 1 'PAS' 1 dimtab ;
  356. 'FINSI' ;
  357. ladens = (** ('/' ('MESURE' mt) ('NBEL' mt))
  358. ('/' 1.D0 ('VALEUR' 'DIME'))) ;
  359. *
  360. * Détermination de l'échelle de vitesse
  361. *
  362. lemax = 'PROG' ;
  363. 'REPETER' iindic ('DIME' lindic) ;
  364. idimt = 'EXTRAIRE' lindic &iindic ;
  365. lavit = rvf . idimt . 'UN' ;
  366. lemax = 'ET' lemax ('PROG' ('MAXIMUM' lavit 'ABS')) ;
  367. 'FIN' iindic ;
  368. echvit = 'MAXIMUM' lemax 'ABS' ;
  369. uref = '/' ('*' ladens 4.0D0) echvit ;
  370. *
  371. * Animation de la vitesse
  372. *
  373. tabvit = 'TABLE' ;
  374. 'REPETER' iindic ('DIME' lindic) ;
  375. idimt = 'EXTRAIRE' lindic &iindic ;
  376. lavit = rvf . idimt . 'UN' ;
  377. * latem = rvf . idimt . 'TN' ;
  378. vecvit = 'VECTEUR' lavit uref 'UX' 'UY' 'JAUN' ;
  379. * defvit = 'DEFORME' mt dxmt 0.D0 vecvit latem ;
  380. defvit = 'DEFORME' mt dxmt 0.D0 vecvit ;
  381. tabvit . &iindic = defvit ;
  382. 'FIN' iindic ;
  383. vitani = @STBL tabvit ;
  384. titvit = 'CHAINE' 'FORMAT' formflot
  385. 'Vitesse ; echvit=' echvit titglob ;
  386. 'TRACER' vitani 'ANIME' 'TITR' titvit ;
  387. 'OUBLIER' tabvit ; 'MENAGE' ;
  388. *
  389. * Animation de la température
  390. *
  391. isovorig = 'VALEUR' 'ISOV' ;
  392. 'OPTION' 'ISOV' 'SURF' ;
  393. tabtem = 'TABLE' ;
  394. 'REPETER' iindic ('DIME' lindic) ;
  395. idimt = 'EXTRAIRE' lindic &iindic ;
  396. latem = rvf . idimt . 'TN' ;
  397. deftem = 'DEFORME' mt dxmt 0.D0 latem ;
  398. tabtem . &iindic = deftem ;
  399. 'FIN' iindic ;
  400. temani = @STBL tabtem ;
  401. tittem = 'CHAINE' 'FORMAT' formflot
  402. 'Temperature' titglob ;
  403. 'TRACER' temani 'ANIME' 'TITR' tittem ;
  404. 'OUBLIER' tabtem ; 'MENAGE' ;
  405. 'OPTION' 'ISOV' isovorig ;
  406. *
  407. * Animation de la pression
  408. *
  409. isovorig = 'VALEUR' 'ISOV' ;
  410. 'OPTION' 'ISOV' 'SURF' ;
  411. tabpre = 'TABLE' ;
  412. 'REPETER' iindic ('DIME' lindic) ;
  413. idimt = 'EXTRAIRE' lindic &iindic ;
  414. lapre = ELNOPRES (rvf . idimt . 'PN') ;
  415. defpre = 'DEFORME' mt dxmt 0.D0 lapre ;
  416. tabpre . &iindic = defpre ;
  417. 'FIN' iindic ;
  418. preani = @STBL tabpre ;
  419. titpre = 'CHAINE' 'FORMAT' formflot
  420. 'Pression' titglob ;
  421. 'TRACER' preani 'ANIME' 'TITR' titpre ;
  422. 'OUBLIER' tabpre ; 'MENAGE' ;
  423. 'OPTION' 'ISOV' isovorig ;
  424. *
  425. * Animation de la viscosité
  426. *
  427. isovorig = 'VALEUR' 'ISOV' ;
  428. 'OPTION' 'ISOV' 'SURF' ;
  429. tabnu = 'TABLE' ;
  430. 'REPETER' iindic ('DIME' lindic) ;
  431. idimt = 'EXTRAIRE' lindic &iindic ;
  432. lenu = 'ELNO' $mt (rvf . idimt . 'NU') ;
  433. defnu = 'DEFORME' mt dxmt 0.D0 lenu ;
  434. tabnu . &iindic = defnu ;
  435. 'FIN' iindic ;
  436. nuani = @STBL tabnu ;
  437. titnu = 'CHAINE' 'FORMAT' formflot
  438. 'Viscosite' titglob ;
  439. 'TRACER' nuani 'ANIME' 'TITR' titnu ;
  440. 'OUBLIER' tabnu ; 'MENAGE' ;
  441. 'OPTION' 'ISOV' isovorig ;
  442. *
  443. * End of procedure file FILM
  444. *
  445. 'FINPROC' ;
  446.  
  447. ************************************************************************
  448. * NOM : MODULO
  449. * DESCRIPTION : Calcule un entier modulo un autre...
  450. *
  451. *
  452. *
  453. * LANGAGE : GIBIANE-CAST3M
  454. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  455. * mél : gounand@semt2.smts.cea.fr
  456. **********************************************************************
  457. * VERSION : v1, 15/10/2002, version initiale
  458. * HISTORIQUE : v1, 15/10/2002, création
  459. * HISTORIQUE :
  460. * HISTORIQUE :
  461. ************************************************************************
  462. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  463. * en cas de modification de ce sous-programme afin de faciliter
  464. * la maintenance !
  465. ************************************************************************
  466. *
  467. *
  468. 'DEBPROC' MODULO ;
  469. 'ARGUMENT' i*'ENTIER' j*'ENTIER' ;
  470. 'SI' ('EGA' j 0) ;
  471. 'MESSAGE' 'Impossible de faire modulo 0' ;
  472. 'ERREUR' 5 ;
  473. 'SINON' ;
  474. k=i '/' j ;
  475. mod=i '-' ( k '*'j ) ;
  476. 'RESPRO' mod ;
  477. 'FINSI' ;
  478. *
  479. * End of procedure file MODULO
  480. *
  481. 'FINPROC' ;
  482.  
  483. ************************************************************************
  484. * NOM : PHOTO
  485. * DESCRIPTION : Trace des infos stockées dans la table rvf
  486. * (comme la procédure FILM mais sans faire d'animations)
  487. * On peut préciser un indice de début, un indice de fin
  488. * et un pas pour n'afficher qu'une partie des informations
  489. * contenues dans la table.
  490. *
  491. *
  492. *
  493. * LANGAGE : GIBIANE-CAST3M
  494. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  495. * mél : gounand@semt2.smts.cea.fr
  496. **********************************************************************
  497. * VERSION : v1, 23/10/2002, version initiale
  498. * HISTORIQUE : v1, 23/10/2002, création
  499. * HISTORIQUE :
  500. * HISTORIQUE :
  501. ************************************************************************
  502. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  503. * en cas de modification de ce sous-programme afin de faciliter
  504. * la maintenance !
  505. ************************************************************************
  506. *
  507. *
  508. 'DEBPROC' PHOTO ;
  509. 'ARGUMENT' rvf*'TABLE ' ;
  510. 'ARGUMENT' ndebu/'ENTIER ' ;
  511. 'ARGUMENT' nfin/'ENTIER ' ;
  512. 'ARGUMENT' ninter/'ENTIER ' ;
  513. *
  514. * Un champ nul pour les déformées
  515. *
  516. dxmt = 'MANUEL' 'CHPO' mt 2 'UR' 0.D0 'UZ' 0.D0
  517. 'NATURE' 'DISCRET';
  518. *
  519. dimtab = 'DIME' rvf ;
  520. liv = 'ET' ('EXISTE' ndebu) ('EXISTE' nfin) ;
  521. 'SI' (liv) ;
  522. livok = 'ET' liv
  523. ('ET' ('<' ndebu nfin)
  524. ('ET' ('>EG' ndebu 1) ('&lt;EG' nfin dimtab))
  525. ) ;
  526. 'FINSI' ;
  527. lviv = 'ET' ('EXISTE' ninter) ('EXISTE' livok) ;
  528. 'SI' (lviv) ;
  529. * On corrige nfin pour que MODULO (- nfin ndebu) ninter =0
  530. npouet = '/' ('-' nfin ndebu) ninter ;
  531. nfin = '+' ndebu ('*' npouet ninter) ;
  532. 'FINSI' ;
  533. 'SI' (liv) ;
  534. 'SI' (livok) ;
  535. 'SI' (lviv) ;
  536. lindic = 'LECT' ndebu 'PAS' ninter nfin ;
  537. 'SINON' ;
  538. lindic = 'LECT' ndebu 'PAS' 1 nfin ;
  539. 'FINSI' ;
  540. 'SINON' ;
  541. 'ERREUR' 'Bornes de l"intervalle incorrectes' ;
  542. 'FINSI' ;
  543. 'SINON' ;
  544. lindic = 'LECT' 1 'PAS' 1 dimtab ;
  545. 'FINSI' ;
  546. ladens = (** ('/' ('MESURE' mt) ('NBEL' mt))
  547. ('/' 1.D0 ('VALEUR' 'DIME'))) ;
  548. *
  549. * Détermination de l'échelle de vitesse
  550. *
  551. lemax = 'PROG' ;
  552. 'REPETER' iindic ('DIME' lindic) ;
  553. idimt = 'EXTRAIRE' lindic &iindic ;
  554. lavit = rvf . idimt . 'UN' ;
  555. lemax = 'ET' lemax ('PROG' ('MAXIMUM' lavit 'ABS')) ;
  556. 'FIN' iindic ;
  557. echvit = 'MAXIMUM' lemax 'ABS' ;
  558. uref = '/' ('*' ladens 2.0D0) echvit ;
  559. *
  560. * Photos de la vitesse
  561. *
  562. 'REPETER' iindic ('DIME' lindic) ;
  563. idimt = 'EXTRAIRE' lindic &iindic ;
  564. letem = rvf . idimt . 'TI' ;
  565. lavit = rvf . idimt . 'UN' ;
  566. titvit = 'CHAINE' 'FORMAT' formflot
  567. 'Vitesse ; tps=' letem ;
  568. TRACVIT lavit titvit echvit ;
  569. 'FIN' iindic ;
  570. *
  571. * Photos de la température
  572. *
  573. 'REPETER' iindic ('DIME' lindic) ;
  574. idimt = 'EXTRAIRE' lindic &iindic ;
  575. letem = rvf . idimt . 'TI' ;
  576. latem = rvf . idimt . 'TN' ;
  577. tittem = 'CHAINE' 'FORMAT' formflot
  578. 'Temperature ; tps=' letem ;
  579. TRACCHPO latem tittem ;
  580. 'FIN' iindic ;
  581. *
  582. * Photos de la pression
  583. *
  584. 'REPETER' iindic ('DIME' lindic) ;
  585. idimt = 'EXTRAIRE' lindic &iindic ;
  586. letem = rvf . idimt . 'TI' ;
  587. lapre = ELNOPRES (rvf . idimt . 'PN') ;
  588. titpre = 'CHAINE' 'FORMAT' formflot
  589. 'Pression ; tps=' letem ;
  590. TRACCHPO lapre titpre ;
  591. 'FIN' iindic ;
  592. *
  593. * Photos de la viscosité
  594. *
  595. 'REPETER' iindic ('DIME' lindic) ;
  596. idimt = 'EXTRAIRE' lindic &iindic ;
  597. letem = rvf . idimt . 'TI' ;
  598. lavis = rvf . idimt . 'NU' ;
  599. titvis = 'CHAINE' 'FORMAT' formflot
  600. 'Viscosite ; tps=' letem ;
  601. TRACCHML lavis titvis ;
  602. 'FIN' iindic ;
  603. *
  604. * End of procedure file PHOTO
  605. *
  606. 'FINPROC' ;
  607.  
  608. ************************************************************************
  609. * NOM : TRACCHML
  610. * DESCRIPTION : Trace un CHPOINT défini sur les centres des éléments
  611. * (valeur constante par élément) avec titre optionnel
  612. *
  613. *
  614. * LANGAGE : GIBIANE-CAST3M
  615. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  616. * mél : gounand@semt2.smts.cea.fr
  617. **********************************************************************
  618. * VERSION : v1, 04/11/2002, version initiale
  619. * HISTORIQUE : v1, 04/11/2002, création
  620. * HISTORIQUE :
  621. * HISTORIQUE :
  622. ************************************************************************
  623. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  624. * en cas de modification de ce sous-programme afin de faciliter
  625. * la maintenance !
  626. ************************************************************************
  627. *
  628. *
  629. 'DEBPROC' TRACCHML ;
  630. 'ARGUMENT' chml*'CHPOINT ' ;
  631. 'ARGUMENT' tit/'MOT ' ;
  632. rescal = 'KCHA' $mt chml 'CHAM' ;
  633. tituap = 'CHAINE' tit ' ' titglob ;
  634. 'TRACER' rescal modbid 'TITR' tituap ;
  635. *
  636. * End of procedure file TRACCHML
  637. *
  638. 'FINPROC' ;
  639.  
  640. ************************************************************************
  641. * NOM : TRACCHPO
  642. * DESCRIPTION : Tracé d'un chpoint avec titre optionnel.
  643. *
  644. *
  645. *
  646. * LANGAGE : GIBIANE-CAST3M
  647. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  648. * mél : gounand@semt2.smts.cea.fr
  649. **********************************************************************
  650. * VERSION : v1, 14/10/2002, version initiale
  651. * HISTORIQUE : v1, 14/10/2002, création
  652. * HISTORIQUE :
  653. * HISTORIQUE :
  654. ************************************************************************
  655. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  656. * en cas de modification de ce sous-programme afin de faciliter
  657. * la maintenance !
  658. ************************************************************************
  659. *
  660. *
  661. 'DEBPROC' TRACCHPO ;
  662. 'ARGUMENT' pn*'CHPOINT ' ;
  663. 'ARGUMENT' tit/'MOT ' ;
  664. 'SI' ('EXISTE' tit) ;
  665. titpn = 'CHAINE' 'FORMAT' formflot tit titglob ;
  666. 'SINON' ;
  667. titpn = 'CHAINE' 'FORMAT' formflot 'PRES' titglob ;
  668. 'FINSI' ;
  669. rescal = pn ;
  670. 'TRACER' rescal mt mt 'TITR' titpn nbisov ;
  671. *
  672. * End of procedure file TRACCHPO
  673. *
  674. 'FINPROC' ;
  675.  
  676. ************************************************************************
  677. * NOM : TRACVIT
  678. * DESCRIPTION : Trace un champ vectoriel sous forme de flèches avec
  679. * titre optionnel.
  680. * On peut préciser une échelle pour les vitesses. Si on ne
  681. * la précise pas, elle est calculée automatiquement
  682. *
  683. *
  684. * LANGAGE : GIBIANE-CAST3M
  685. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  686. * mél : gounand@semt2.smts.cea.fr
  687. **********************************************************************
  688. * VERSION : v1, 14/10/2002, version initiale
  689. * HISTORIQUE : v1, 14/10/2002, création
  690. * HISTORIQUE :
  691. * HISTORIQUE :
  692. ************************************************************************
  693. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  694. * en cas de modification de ce sous-programme afin de faciliter
  695. * la maintenance !
  696. ************************************************************************
  697. *
  698. *
  699. 'DEBPROC' TRACVIT ;
  700. 'ARGUMENT' vit*'CHPOINT ' ;
  701. 'ARGUMENT' tit/'MOT ' ;
  702. 'ARGUMENT' echvit/'FLOTTANT' ;
  703. ladens = ('**' ('/' ('MESURE' mt) ('NBEL' mt))
  704. ('/' 1.D0 ('VALEUR' 'DIME'))) ;
  705. 'SI' ('NON' ('EXISTE' echvit)) ;
  706. echvit = 'MAXIMUM' vit 'ABS' ;
  707. 'SINON' ;
  708. echvit = 'ABS' echvit ;
  709. 'FINSI' ;
  710. 'SI' ('<' echvit 1.D-30) ;
  711. echvit = 1.D0 ;
  712. 'FINSI' ;
  713. uref = '/' ('*' ladens 2.0D0) echvit ;
  714. vecvit = 'VECTEUR' vit uref 'UX' 'UY' 'JAUN' ;
  715. 'SI' ('EXISTE' tit) ;
  716. titvit = 'CHAINE' 'FORMAT' formflot tit ' echvit=' echvit titglob ;
  717. 'SINON' ;
  718. titvit = 'CHAINE' 'FORMAT' formflot 'VIT echvit=' echvit titglob ;
  719. 'FINSI' ;
  720. 'TRACER' vecvit mt 'TITR' titvit ;
  721. *
  722. * End of procedure file TRACVIT
  723. *
  724. 'FINPROC' ;
  725.  
  726. 'OPTION' 'ECHO' 1 ;
  727.  
  728. ************************************************************************
  729. * NOM : SOUDAGE2
  730. * DESCRIPTION : cas-test Navier-Stokes axi 2D stationnaire Bousinessq
  731. * effet Marangoni et phase liquide-solide
  732. *
  733. * Biblio :
  734. * Rapport DM2S SFME/LTMF/RT/02-052/A
  735. * S. Gounand
  736. * Deux cas-tests en vue d'une modélisation numérique d'un
  737. * processus de soudage.
  738. *
  739. * LANGAGE : GIBIANE-CAST3M
  740. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  741. * mél : gounand@semt2.smts.cea.fr
  742. **********************************************************************
  743. * VERSION : v1, 03/10/2002, version initiale
  744. * HISTORIQUE : v1, 03/10/2002, création
  745. * HISTORIQUE :
  746. * HISTORIQUE :
  747. ************************************************************************
  748. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  749. * en cas de modification de ce sous-programme afin de faciliter
  750. * la maintenance !
  751. ************************************************************************
  752. *
  753. * Paramètres : * misaup = FAUX : on effectue une sauvegarde
  754. * VRAI : on ne fait pas de sauvegarde
  755. * * post n'a de sens que si misaup = FAUX
  756. * alors : post = FAUX : on effectue la partie calcul
  757. * + sauvegarde
  758. * post = VRAI : on effectue la partie restitution
  759. * + post-traitement
  760. * * interact = VRAI si on travaille en interactif
  761. * FAUX sinon
  762. * * graph = VRAI si on veut des graphiques
  763. * FAUX sinon
  764. * * grossier = VRAI : calcul grossier
  765. * FAUX : calcul fin
  766. * * idsauv et titsauv : nom du fichier de sauvegarde
  767. misaup = VRAI ;
  768. post = VRAI ;
  769. *interact= VRAI ;
  770. *graph = VRAI ;
  771. interact= FAUX ;
  772. graph = FAUX ;
  773. grossier = VRAI;
  774. idsauv = 'CHAINE' 'soudage2_it1600' ;
  775. titsauv = 'CHAINE' '/test4/gounand/soudage/' idsauv '.sauv' ;
  776. *
  777. * Fin des paramètres
  778. *
  779. ******************************************************************
  780. 'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
  781. 'OPTION' 'MODE' 'AXIS' ;
  782. 'OPTION' 'ISOV' 'SULI' ;
  783. nbisov = 15 ;
  784. 'SI' ('NON' interact) ;
  785. 'OPTION' 'TRAC' 'PSC' ;
  786. 'OPTION' 'ECHO' 0 ;
  787. 'SINON' ;
  788. 'OPTION' 'TRAC' 'X' ;
  789. 'FINSI' ;
  790. formflot ='(1PE9.2)' ;
  791. 'SI' ('OU' ('NON' post) misaup) ;
  792. ******************************************************************
  793. *
  794. * Donnees materielles (dimensionnelles)
  795. * (systeme SI)
  796. * Geometrie
  797. * long : rayon de la plaque
  798. * epai : epaisseur de la plaque
  799. * ras : rayon de la source gaussienne
  800. *long = 20.D-3 ;
  801. long = 10.D-3 ;
  802. epai = 2.5D-3 ;
  803. ras = 1.5D-3 ;
  804. * Physique
  805. * rho : masse volumique
  806. * cp : chaleur spécifique à pression constante
  807. * mu : viscosite (dynamique)
  808. * kappa : conductivité thermique
  809. * beta : dilatabilité
  810. * dgdt : variation de la tension superficielle
  811. * avec la température
  812. * tfusion : température de fusion
  813. * puis : puissance de la source gaussienne
  814. rho = 7200.D0 ;
  815. cp = 500.D0 ;
  816. mu = 0.05D0 ;
  817. kappa = 20.D0 ;
  818. beta = 1.D-4 ;
  819. rhocp = '*' rho cp ;
  820. alfa = '/' kappa rhocp ;
  821. nu = '/' mu rho ;
  822. gb = 0. ('*' -9.81D0 beta) ;
  823. dgdt = 1.D-4 ;
  824. tfusion = 1700.D0 ;
  825. *
  826. *lambda = 25.D0 ;
  827. puis = 900.D0 ;
  828. *sigma = 5.6710D-8 ;
  829. * Conditions aux limites
  830. t0 = 300.D0 ;
  831. *
  832. * Paramètres numériques (I)
  833. *
  834. * dg : densité grosse
  835. * dp : densité petite
  836. * dt : pas de temps
  837. * nitma : nombre de pas de temps
  838. * nfilm : intervalle de sauvegarde des champs
  839. * dans la table rv . 'FILM'
  840. 'SI' (grossier) ;
  841. dg = 0.5D-3 ;
  842. dp = 0.1D-3 ;
  843. dt = 0.001D0 ;
  844. nitma = 30 ;
  845. nfilm = 1 ;
  846. 'SINON' ;
  847. dg = 0.5D-3 ;
  848. dp = 0.1D-3 ;
  849. dt = 0.001D0 ;
  850. nitma = 1600 ;
  851. nfilm = 20 ;
  852. 'FINSI' ;
  853. *
  854. * Paramètres numériques (II)
  855. *
  856. discr = 'QUAF' ;
  857. kpres = 'CENTREP1' ;
  858. ksupg = 'CENTREE' ;
  859. kmeth = 'IMPL' ;
  860. * titre global pour les dessins
  861. titglob = 'CHAINE' ' soudage2' ;
  862. *
  863. titdgibi = 'CHAINE' 'Cas test' titglob ;
  864. 'MESSAGE' ('CHAINE' '********************************') ;
  865. 'MESSAGE' titdgibi ;
  866. 'MESSAGE' ('CHAINE' '********************************') ;
  867. *
  868. * Géométrie
  869. *
  870. pA = 0.D0 0.D0 ;
  871. pB = long 0.D0 ;
  872. pC = long epai ;
  873. pD = 0.D0 epai ;
  874. bas = 'DROIT' pA pB 'DINI' dp 'DFIN' dg ;
  875. dro = 'DROIT' pB pC 'DINI' dg 'DFIN' dp ;
  876. hau = 'DROIT' pC pD 'DINI' dg 'DFIN' dp ;
  877. gau = 'DROIT' pD pA 'DINI' dp 'DFIN' dg ;
  878. mt = 'DALLER' bas dro hau gau ;
  879. 'SI' graph ;
  880. titgeo = 'CHAINE' 'mt ' 'NBPO=' ('NBNO' mt)
  881. ' NBELEM=' ('NBEL' mt) titglob ;
  882. 'TRACER' mt 'TITRE' titgeo ;
  883. 'FINSI' ;
  884. *
  885. * Modèle
  886. *
  887. _mt = 'CHANGER' mt 'QUAF' ;
  888. _bas = 'CHANGER' bas 'QUAF' ;
  889. _dro = 'CHANGER' dro 'QUAF' ;
  890. _hau = 'CHANGER' hau 'QUAF' ;
  891. _gau = 'CHANGER' gau 'QUAF' ;
  892. 'ELIMINATION' (_mt 'ET' _bas 'ET' _dro 'ET' _hau 'ET' _gau)
  893. ('/' dp 100.D0) ;
  894. modbid = 'MODELISER' mt 'THERMIQUE' ;
  895. $mt = 'MODELISER' _mt 'NAVIER_STOKES' discr ;
  896. $bas = 'MODELISER' _bas 'NAVIER_STOKES' discr ;
  897. $dro = 'MODELISER' _dro 'NAVIER_STOKES' discr ;
  898. $hau = 'MODELISER' _hau 'NAVIER_STOKES' discr ;
  899. $gau = 'MODELISER' _gau 'NAVIER_STOKES' discr ;
  900. mtc = 'DOMA' $mt 'CENTRE' ;
  901. mp1 = 'ELEM' ('DOMA' $mt kpres) 1 ;
  902. pmp1 = 'POIN' mp1 1 ;
  903. pini = 'KCHT' $mt 'SCAL' kpres 0.D0 ;
  904. *
  905. * Construction de la source
  906. *
  907. rhauc = 'COORDONNEE' 1 ('DOMA' $hau 'CENTRE') ;
  908. fes = '*' (('*' rhauc rhauc))
  909. ('/' -3.D0 ('*' ras ras)) ;
  910. gs = '*' ('EXP' fes)
  911. ('/' 3.D0 (PI '*' ras '*' ras)) ;
  912. sgs = 'NOMC' 'SOUR' ('*' gs puis) 'NATURE' 'DISCRET' ;
  913. sgs = 'KCHT' $hau 'SCAL' 'CENTRE' 'COMP' 'SOUR' sgs ;
  914. *
  915. * Rescaling de la source
  916. *
  917. isgavc = 'MAXIMUM' ('RESULT' ('*' sgs ('DOMA' $hau 'VOLUME'))) ;
  918. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  919. 'int. source gauss avant correction='
  920. isgavc ' W' ) ;
  921. fcor = '/' puis isgavc ;
  922. sgs = '*' sgs fcor ;
  923. isgapc = 'MAXIMUM' ('RESULT' ('*' sgs ('DOMA' $hau 'VOLUME'))) ;
  924. 'MESSAGE' ('CHAINE' 'FORMAT' formflot
  925. 'int. source gauss apres correction='
  926. isgapc ' W' ) ;
  927. stot = sgs ;
  928. *
  929. * conditions initiales
  930. *
  931. tini = 'KCHT' $mt 'SCAL' 'SOMMET' t0 ;
  932. uini = 'KCHT' $mt 'VECT' 'SOMMET' (0.D0 0.D0) ;
  933. *
  934. * conditions aux limites
  935. *
  936. * vitesse
  937. mailvr = ('DOMA' $gau 'SOMMET') 'ET' ('DOMA' $bas 'SOMMET')
  938. 'ET' ('DOMA' $dro 'SOMMET') ;
  939. climvr = 'MANUEL' 'CHPO' mailvr 1 '1UN' 0.D0 'NATURE' 'DISCRET' ;
  940. mailvz = ('DOMA' $hau 'SOMMET') 'ET' ('DOMA' $bas 'SOMMET')
  941. 'ET' ('DOMA' $dro 'SOMMET') ;
  942. climvz = 'MANUEL' 'CHPO' mailvz 1 '2UN' 0.D0 'NATURE' 'DISCRET' ;
  943. * temperature
  944. mailt = 'ET' ('DOMA' $bas 'SOMMET') ('DOMA' $dro 'SOMMET') ;
  945. *
  946. * on supprime les doublons dans mailt avant MANU CHPO
  947. mailt = 'CHANGER' 'POI1' mailt ;
  948. *
  949. climt = 'MANUEL' 'CHPO' mailt 1 'TN' t0 'NATURE' 'DISCRET' ;
  950. * pression imposée en un point
  951. mailp = mp1 ;
  952. climp = 'MANUEL' 'CHPO' mailp 1 'PN' 0.D0 'NATURE' 'DISCRET' ;
  953. *
  954. climtot = climt 'ET' climvr 'ET' climvz 'ET' climp ;
  955. *
  956. * Mise en place du calcul numérique
  957. *
  958. * résidu et film
  959. rv = 'EQEX' 'NITER' 1 'ITMA' nitma 'OMEGA' 1.D0 'FIDT' 1000
  960. 'ZONE' $mt 'OPER' 'CALRESI' 1 nfilm 1.D-6
  961. ;
  962. * quantité de mouvement
  963. rv = 'EQEX' rv
  964. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
  965. 'ZONE' $mt 'OPER' 'CALCNU'
  966. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
  967. 'ZONE' $mt 'OPER' 'NS' 1. 'UN' 'NU' gb 'TN' t0 'INCO' 'UN'
  968. ;
  969. * effet Marangoni
  970. rv = 'EQEX' rv
  971. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
  972. 'ZONE' $mt 'OPER' 'CALCTAU'
  973. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
  974. 'ZONE' $hau 'OPER' 'TOIM' 'TAU' 'INCO' 'UN'
  975. ;
  976. * pression
  977. rv = 'EQEX' rv
  978. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
  979. 'ZONE' $mt 'OPER' 'KBBT' ('/' +1.D0 rho) 'INCO' 'UN' 'PN'
  980. ;
  981. * énergie
  982. rv = 'EQEX' rv
  983. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
  984. 'ZONE' $mt 'OPER' 'LAPN' alfa 'INCO' 'TN'
  985. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
  986. 'ZONE' $mt 'OPER' 'KONV' 1.D0 'UN' alfa 'INCO' 'TN'
  987. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
  988. 'ZONE' $hau 'OPER' 'FIMP' ('/' sgs rhocp) 'INCO' 'TN'
  989. ;
  990. * temps
  991. rv = 'EQEX' rv
  992. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
  993. 'ZONE' $mt 'OPER' 'DFDT' 1. 'UN' DT 'INCO' 'UN'
  994. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1'
  995. 'ZONE' $mt 'OPER' 'DFDT' 1. 'TN' DT 'INCO' 'TN'
  996. ;
  997. rv . 'CLIM' = climtot ;
  998. rv . 'INCO' = 'TABLE' 'INCO' ;
  999. rv . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' uini ;
  1000. rv . 'INCO' . 'TN' = 'KCHT' $mt 'SCAL' 'SOMMET' tini ;
  1001. rv . 'INCO' . 'PN' = 'KCHT' $mt 'SCAL' kpres 0.D0 ;
  1002. rv . 'INCO' . 'NU' = 'KCHT' $mt 'SCAL' 'CENTRE' nu ;
  1003. * Infos supplémentaires pour la procédure CALRESI
  1004. rv . 'RESIDU' = 'TABLE' ;
  1005. * Champs
  1006. rv . 'RESIDU' . 'UNM1' = 'COPI' rv . 'INCO' . 'UN' ;
  1007. rv . 'RESIDU' . 'TNM1' = 'COPI' rv . 'INCO' . 'TN' ;
  1008. rv . 'RESIDU' . 'PNM1' = 'COPIER' rv . 'INCO' . 'PN' ;
  1009. rv . 'RESIDU' . 'NUM1' = 'COPIER' rv . 'INCO' . 'NU' ;
  1010. * Matrices masse pour le calcul des résidus
  1011. rk = 'EQEX' 'OPTI' 'EF' 'CENTREE' 'IMPL'
  1012. 'ZONE' $mt 'OPER' 'DFDT' 1.D0 'UN' 1.D0 'INCO' 'UN' ;
  1013. rk . 'INCO' = TABLE 'INCO' ;
  1014. rk . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' (0.D0 0.D0) ;
  1015. toto mm = 'DFDT' (rk . '1DFDT') ;
  1016. rv . 'RESIDU' . 'MMU' = mm ;
  1017. rk = 'EQEX' 'OPTI' 'EF' 'CENTREE' 'IMPL'
  1018. 'ZONE' $mt 'OPER' 'DFDT' 1.D0 'TN' 1.D0 'INCO' 'TN' ;
  1019. rk . 'INCO' = TABLE 'INCO' ;
  1020. rk . 'INCO' . 'TN' = 'KCHT' $mt 'SCAL' 'SOMMET' 0.D0 ;
  1021. toto mm = 'DFDT' (rk . '1DFDT') ;
  1022. rv . 'RESIDU' . 'MMT' = mm ;
  1023. $mt2 = 'MODELISER' _mt 'NAVIER_STOKES' 'LINE' ;
  1024. rk = 'EQEX' 'OPTI' 'EF' 'CENTREE' 'IMPL'
  1025. 'ZONE' $mt2 'OPER' 'DFDT' 1.D0 'PN' 1.D0 'INCO' 'PN' ;
  1026. rk . 'INCO' = TABLE 'INCO' ;
  1027. rk . 'INCO' . 'PN' = 'KCHT' $mt2 'SCAL' 'SOMMET' 0.D0 ;
  1028. toto mm = 'DFDT' (rk . '1DFDT') ;
  1029. rv . 'RESIDU' . 'MMP' = mm ;
  1030. rv . 'RESIDU' . 'MMN' = 'DOMA' $mt 'VOLUME' ;
  1031. * Erreurs
  1032. rv . 'RESIDU' . 'IT' = 'PROG' ;
  1033. rv . 'RESIDU' . 'TI' = 'PROG' ;
  1034. rv . 'RESIDU' . 'ERU' = 'PROG' ;
  1035. rv . 'RESIDU' . 'ERT' = 'PROG' ;
  1036. rv . 'RESIDU' . 'ERP' = 'PROG' ;
  1037. rv . 'RESIDU' . 'ERN' = 'PROG' ;
  1038. * Infos supplémentaires pour les films
  1039. rv . 'FILM' = 'TABLE' ;
  1040. *
  1041. * Calcul proprement dit
  1042. *
  1043. 'TEMPS' 'ZERO' ;
  1044. EXEC rv ;
  1045. TABTPS = TEMP 'NOEC';
  1046. tcpu = TABTPS.'TEMPS_CPU'.'INITIAL';
  1047. tcpus = '/' ('FLOTTANT' tcpu) 100.D0 ;
  1048. 'MESSAGE' ('CHAINE' 'tcpus=' tcpus) ;
  1049. *'TEMPS' 'IMPR' ;
  1050. rvi = rv . 'INCO' ;
  1051. rvr = rv . 'RESIDU' ;
  1052. *
  1053. * Résultats intéressants mis dans la table res
  1054. *
  1055. res = 'TABLE' ;
  1056. res . 'TCPU' = tcpus ;
  1057. res . 'MAILLAGE' = mt ;
  1058. res . 'MODELE' = $mt ;
  1059. res . 'IT' = rvr . 'IT' ;
  1060. res . 'ERU' = rvr . 'ERU' ;
  1061. res . 'ERT' = rvr . 'ERT' ;
  1062. res . 'ERP' = rvr . 'ERP' ;
  1063. res . 'ERN' = rvr . 'ERN' ;
  1064. res . 'UN' = rvi . 'UN' ;
  1065. res . 'TN' = rvi . 'TN' ;
  1066. res . 'PN' = rvi . 'PN' ;
  1067. res . 'NU' = rvi . 'NU' ;
  1068. res . 'FILM' = rv . 'FILM' ;
  1069. 'SI' ('NON' misaup) ;
  1070. 'OPTION' 'SAUV' titsauv ;
  1071. 'SAUVER' ;
  1072. 'FINSI' ;
  1073. 'FINSI' ;
  1074. *
  1075. *
  1076. *==========================================================
  1077. * Post traitement
  1078. *==========================================================
  1079. 'SI' ('OU' post misaup) ;
  1080. 'SI' ('NON' misaup) ;
  1081. 'OPTION' 'REST' titsauv ;
  1082. 'RESTITUER' ;
  1083. 'FINSI' ;
  1084. tcpu = res . 'TCPU' ;
  1085. mt = res . 'MAILLAGE' ;
  1086. $mt = res . 'MODELE' ;
  1087. lit = res . 'IT' ;
  1088. leru = res . 'ERU' ;
  1089. lert = res . 'ERT' ;
  1090. lerp = res . 'ERP' ;
  1091. lern = res . 'ERN' ;
  1092. un = res . 'UN' ;
  1093. tn = res . 'TN' ;
  1094. pn = res . 'PN' ;
  1095. nu = res . 'NU' ;
  1096. rf = res . 'FILM' ;
  1097. 'SI' graph ;
  1098. * Quelques graphiques
  1099. ndimlit = 'DIME' lit ;
  1100. 'SI' ('>' ndimlit 2) ;
  1101. xeveru = lit ;
  1102. yeveru = '/' ('LOG' leru) ('LOG' 10.D0) ;
  1103. everu = 'EVOL' 'MANU' 'Iteration' xeveru 'Log Err L2 U' yeveru ;
  1104. tituap = 'CHAINE' 'Conv. vitesse' titglob ;
  1105. 'DESSIN' everu 'TITR' tituap ;
  1106. xevert = lit ;
  1107. yevert = '/' ('LOG' lert) ('LOG' 10.D0) ;
  1108. evert = 'EVOL' 'MANU' 'Iteration' xevert 'Log Err L2 T' yevert ;
  1109. tituap = 'CHAINE' 'Conv. température' titglob ;
  1110. 'DESSIN' evert 'TITR' tituap ;
  1111. xeverp = lit ;
  1112. yeverp = '/' ('LOG' lerp) ('LOG' 10.D0) ;
  1113. everp = 'EVOL' 'MANU' 'Iteration' xeverp 'Log Err L2 P' yeverp ;
  1114. tituap = 'CHAINE' 'Conv. pression' titglob ;
  1115. 'DESSIN' everp 'TITR' tituap ;
  1116. xevern = lit ;
  1117. yevern = '/' ('LOG' lern) ('LOG' 10.D0) ;
  1118. evern = 'EVOL' 'MANU' 'Iteration' xevern 'Log Err L2 Nu' yevern ;
  1119. tituap = 'CHAINE' 'Conv. Visc.' titglob ;
  1120. 'DESSIN' evern 'TITR' tituap ;
  1121. 'FINSI' ;
  1122. tituap = 'CHAINE' 'Vitesse' ;
  1123. TRACVIT un tituap ;
  1124. tituap = 'CHAINE' 'Température' ;
  1125. TRACCHPO tn tituap ;
  1126. tituap = 'CHAINE' 'Pression' ;
  1127. TRACCHPO (ELNOPRES pn) tituap ;
  1128. tituap = 'CHAINE' 'Viscosite (nu)' ;
  1129. TRACCHML nu tituap ;
  1130. 'SI' interact ;
  1131. FILM rf ;
  1132. 'FINSI' ;
  1133. 'FINSI' ;
  1134. *
  1135. *'SI' ('OU' post misaup) ;
  1136. 'FINSI' ;
  1137. *
  1138. * On ne sait pas trop quoi faire comme test...
  1139. *
  1140. tmax = 'MAXIMUM' tn ;
  1141. tmin = 'MINIMUM' tn ;
  1142. u = 'EXCO' un 'UX' ;
  1143. v = 'EXCO' un 'UY' ;
  1144. umax = 'MAXIMUM' u ;
  1145. umin = 'MINIMUM' u ;
  1146. vmax = 'MAXIMUM' v ;
  1147. vmin = 'MINIMUM' v ;
  1148. *
  1149. tmaxref = 5.084D+3 ;
  1150. tminref = 3.000D+2 ;
  1151. umaxref = 8.301D-1 ;
  1152. uminref =-2.007D-1 ;
  1153. vmaxref = 1.118D-1 ;
  1154. vminref =-2.002D-1 ;
  1155. *
  1156. errtmax = ERRREL tmax tmaxref ;
  1157. errtmin = ERRREL tmin tminref ;
  1158. errumax = ERRREL umax umaxref ;
  1159. errumin = ERRREL umin uminref ;
  1160. errvmax = ERRREL vmax vmaxref ;
  1161. errvmin = ERRREL vmin vminref ;
  1162. *
  1163. tsttmax = '>' errtmax 1.D-3 ;
  1164. tsttmin = '>' errtmin 1.D-3 ;
  1165. tstumax = '>' errumax 1.D-3 ;
  1166. tstumin = '>' errumin 1.D-3 ;
  1167. tstvmax = '>' errvmax 1.D-3 ;
  1168. tstvmin = '>' errvmin 1.D-3 ;
  1169.  
  1170.  
  1171. test = (tsttmax 'OU' tsttmin 'OU' tstumax 'OU' tstumin
  1172. 'OU' tstvmax 'OU' tstvmin) ;
  1173.  
  1174. 'MESSAGE' ('CHAINE' 'Tmax =' tmax ' K') ;
  1175. 'MESSAGE' ('CHAINE' 'Tmin =' tmin ' K') ;
  1176. 'MESSAGE' ('CHAINE' 'Umax =' umax ' m.s-1') ;
  1177. 'MESSAGE' ('CHAINE' 'Umin =' umin ' m.s-1') ;
  1178. 'MESSAGE' ('CHAINE' 'Vmax =' vmax ' m.s-1') ;
  1179. 'MESSAGE' ('CHAINE' 'Vmin =' vmin ' m.s-1') ;
  1180. 'SI' test ;
  1181. 'MESSAGE' ('CHAINE' 'Tmaxref =' tmaxref ' K') ;
  1182. 'MESSAGE' ('CHAINE' 'Tminref =' tminref ' K') ;
  1183. 'MESSAGE' ('CHAINE' 'Umaxref =' umaxref ' m.s-1') ;
  1184. 'MESSAGE' ('CHAINE' 'Uminref =' uminref ' m.s-1') ;
  1185. 'MESSAGE' ('CHAINE' 'Vmaxref =' vmaxref ' m.s-1') ;
  1186. 'MESSAGE' ('CHAINE' 'Vminref =' vminref ' m.s-1') ;
  1187. 'FINSI' ;
  1188. *
  1189. 'MESSAGE' ('CHAINE' 'Errtmax =' errtmax) ;
  1190. 'MESSAGE' ('CHAINE' 'Errtmin =' errtmin) ;
  1191. 'MESSAGE' ('CHAINE' 'Errumax =' errumax) ;
  1192. 'MESSAGE' ('CHAINE' 'Errumin =' errumin) ;
  1193. 'MESSAGE' ('CHAINE' 'Errvmax =' errvmax) ;
  1194. 'MESSAGE' ('CHAINE' 'Errvmin =' errvmin) ;
  1195.  
  1196. 'SI' interact ;
  1197. 'OPTION' 'DONN' 5 ;
  1198. 'SINON' ;
  1199. 'SI' test ;
  1200. 'ERREUR' 5 ;
  1201. 'SINON' ;
  1202. 'ERREUR' 0 ;
  1203. 'FINSI' ;
  1204. 'FINSI' ;
  1205. *
  1206. * End of dgibi file SOUDAGE2
  1207. *
  1208. 'FIN' ;
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  

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