Télécharger couplage_TH1D_Th3D.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : couplage_TH1D_Th3D.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. 'OPTION' 'ECHO' 0 ;
  5. * From ~/nlin/sources_dev_new/util_proc :
  6. *BEGINPROCEDUR append
  7. ************************************************************************
  8. * NOM : APPEND
  9. * DESCRIPTION : Rajoute :
  10. * - un entier à un listentier
  11. * - un réel à un listreel
  12. * - un objet (liste, evolution, matrice ou chpoint)
  13. * à un indice de table ('MOT' ou 'ENTIER')
  14. * * si l'indice n'existe pas
  15. * * 'ET' si l'indice existe
  16. *
  17. *
  18. *
  19. * LANGAGE : GIBIANE-CAST3M
  20. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  21. * mél : gounand@semt2.smts.cea.fr
  22. **********************************************************************
  23. * VERSION : v1, 10/09/2004, version initiale
  24. * HISTORIQUE : v1, 10/09/2004, création
  25. * HISTORIQUE :
  26. * HISTORIQUE :
  27. ************************************************************************
  28. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  29. * en cas de modification de ce sous-programme afin de faciliter
  30. * la maintenance !
  31. ************************************************************************
  32. *
  33. *
  34. 'DEBPROC' APPEND ;
  35. 'ARGUMENT' tab/'TABLE' ;
  36. 'SI' ('EXISTE' tab) ;
  37. 'ARGUMENT' itab/'MOT' ;
  38. 'SI' ('NON' ('EXISTE' itab)) ;
  39. 'ARGUMENT' itab*'ENTIER' ;
  40. 'FINSI' ;
  41. lobj = FAUX ;
  42. 'SI' ('NON' lobj) ;
  43. 'ARGUMENT' lr/'LISTREEL' ;
  44. 'SI' ('EXISTE' lr) ;
  45. obj = lr ; lobj = VRAI ;
  46. 'FINSI' ;
  47. 'FINSI' ;
  48. 'SI' ('NON' lobj) ;
  49. 'ARGUMENT' le/'LISTENTI' ;
  50. 'SI' ('EXISTE' le) ;
  51. obj = le ; lobj = VRAI ;
  52. 'FINSI' ;
  53. 'FINSI' ;
  54. 'SI' ('NON' lobj) ;
  55. 'ARGUMENT' lev/'EVOLUTION' ;
  56. 'SI' ('EXISTE' lev) ;
  57. obj = lev ; lobj = VRAI ;
  58. 'FINSI' ;
  59. 'FINSI' ;
  60. 'SI' ('NON' lobj) ;
  61. 'ARGUMENT' lm/'MAILLAGE' ;
  62. 'SI' ('EXISTE' lm) ;
  63. obj = lm ; lobj = VRAI ;
  64. 'FINSI' ;
  65. 'FINSI' ;
  66. 'SI' ('NON' lobj) ;
  67. 'ARGUMENT' chpo/'CHPOINT' ;
  68. 'SI' ('EXISTE' chpo) ;
  69. obj = chpo ; lobj = VRAI ;
  70. 'FINSI' ;
  71. 'FINSI' ;
  72. 'SI' ('NON' lobj) ;
  73. 'ARGUMENT' rig/'RIGIDITE' ;
  74. 'SI' ('EXISTE' rig) ;
  75. obj = rig ; lobj = VRAI ;
  76. 'FINSI' ;
  77. 'FINSI' ;
  78. 'SI' ('NON' lobj) ;
  79. 'ARGUMENT' matk/'MATRIK' ;
  80. 'SI' ('EXISTE' matk) ;
  81. obj = matk ; lobj = VRAI ;
  82. 'FINSI' ;
  83. 'FINSI' ;
  84. 'SI' ('NON' lobj) ;
  85. cherr = 'CHAINE'
  86. 'Il faut fournir un objet liste, evolution, matrice ou chpoint.'
  87. ;
  88. 'ERREUR' cherr ;
  89. 'FINSI' ;
  90. 'SI' ('EXISTE' tab itab) ;
  91. tab . itab = 'ET' (tab . itab) obj ;
  92. 'SINON' ;
  93. tab . itab = obj ;
  94. 'FINSI' ;
  95. 'RESPRO' tab ;
  96. 'FINSI' ;
  97. 'ARGUMENT' lenti/'LISTENTI' ;
  98. 'ARGUMENT' lreel/'LISTREEL' ;
  99. 'SI' ('EXISTE' lenti) ;
  100. 'ARGUMENT' enti*'ENTIER' ;
  101. lenti = 'ET' lenti ('LECT' enti) ;
  102. 'RESPRO' lenti ;
  103. 'FINSI' ;
  104. 'SI' ('EXISTE' lreel) ;
  105. 'ARGUMENT' reel*'FLOTTANT' ;
  106. lreel = 'ET' lreel ('PROG' reel) ;
  107. 'RESPRO' lreel ;
  108. 'FINSI' ;
  109. *
  110. * End of procedure file APPEND
  111. *
  112. 'FINPROC' ;
  113. *ENDPROCEDUR append
  114. *BEGINPROCEDUR errrel
  115. ************************************************************************
  116. * NOM : ERRREL
  117. * DESCRIPTION : Calcul d'une erreur relative
  118. *
  119. *
  120. *
  121. * LANGAGE : GIBIANE-CAST3M
  122. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  123. * mél : gounand@semt2.smts.cea.fr
  124. **********************************************************************
  125. * VERSION : v1, 23/04/2003, version initiale
  126. * HISTORIQUE : v1, 23/04/2003, création
  127. * HISTORIQUE :
  128. * HISTORIQUE :
  129. ************************************************************************
  130. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  131. * en cas de modification de ce sous-programme afin de faciliter
  132. * la maintenance !
  133. ************************************************************************
  134. *
  135. *
  136. 'DEBPROC' ERRREL ;
  137. 'ARGUMENT' val*'FLOTTANT' ;
  138. 'ARGUMENT' valref*'FLOTTANT' ;
  139. *
  140. 'SI' ('<' ('ABS' valref) 1.D-10) ;
  141. echref = 1.D0 ;
  142. 'SINON' ;
  143. echref = valref ;
  144. 'FINSI' ;
  145. *
  146. errabs = 'ABS' ('/' ('-' val valref) echref);
  147. *
  148. 'RESPRO' errabs ;
  149. *
  150. * End of procedure file ERRREL
  151. *
  152. 'FINPROC' ;
  153. *ENDPROCEDUR errrel
  154. *BEGINPROCEDUR exmomod
  155. ************************************************************************
  156. * NOM : EXMOMOD
  157. * DESCRIPTION : Extraction d'un mot d'un listmots
  158. *
  159. *
  160. *
  161. * LANGAGE : GIBIANE-CAST3M
  162. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  163. * mél : gounand@semt2.smts.cea.fr
  164. **********************************************************************
  165. * VERSION : v1, 23/06/2003, version initiale
  166. * HISTORIQUE : v1, 23/06/2003, création
  167. * HISTORIQUE :
  168. * HISTORIQUE :
  169. ************************************************************************
  170. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  171. * en cas de modification de ce sous-programme afin de faciliter
  172. * la maintenance !
  173. ************************************************************************
  174. *
  175. *
  176. 'DEBPROC' EXMOMOD ;
  177. 'ARGUMENT' lm*'LISTMOTS' i*'ENTIER' ;
  178. j = 'DIME' lm ;
  179. k = '+' (MODULO ('-' i 1) j) 1 ;
  180. lemot = 'EXTRAIRE' lm k ;
  181. * Usage de l'opérateur text pour éviter que lemot
  182. * ne soit interprété comme un opérateur
  183. 'RESPRO' 'TEXTE' lemot ;
  184. *
  185. * End of procedure file EXMOMOD
  186. *
  187. 'FINPROC' ;
  188. *ENDPROCEDUR exmomod
  189. *BEGINPROCEDUR formar
  190. ************************************************************************
  191. * NOM : FORMAR
  192. * DESCRIPTION : formate un réel de facon courte
  193. * pratique pour les noms de
  194. * sauvegarde
  195. * Exemples :
  196. * 'MESSAGE' ('CHAINE' (formar 2.9e5 1)) ;
  197. * 2.9E5
  198. * 'MESSAGE' ('CHAINE' (formar -2.9e5 1)) ;
  199. * -2.9E5
  200. * 'MESSAGE' ('CHAINE' (formar 2.9e-5 1)) ;
  201. * 2.9E-5
  202. * 'MESSAGE' ('CHAINE' (formar -2.9e-5 1)) ;
  203. * -2.9E-5
  204. * 'MESSAGE' ('CHAINE' (formar 2.9 1)) ;
  205. * 2.9
  206. * 'MESSAGE' ('CHAINE' (formar -2.9 1)) ;
  207. * -2.9
  208. * 'MESSAGE' ('CHAINE' (formar 0 1)) ;
  209. * 0
  210. * 'MESSAGE' ('CHAINE' (formar 0 1)) ;
  211. * 0
  212. * 'MESSAGE' ('CHAINE' (formar 2.9e5 0)) ;
  213. * 3E5
  214. * 'MESSAGE' ('CHAINE' (formar -2.9e5 0)) ;
  215. * -3E5
  216. * 'MESSAGE' ('CHAINE' (formar 2.9e-5 0)) ;
  217. * 3E-5
  218. * 'MESSAGE' ('CHAINE' (formar -2.9e-5 0)) ;
  219. * -3E-5
  220. * 'MESSAGE' ('CHAINE' (formar 2.9 0)) ;
  221. * 3
  222. * 'MESSAGE' ('CHAINE' (formar -2.9 0)) ;
  223. * -3
  224. * 'MESSAGE' ('CHAINE' (formar 0 0)) ;
  225. * 0
  226. * 'MESSAGE' ('CHAINE' (formar 0 0)) ;
  227. * 0
  228. *
  229. *
  230. *
  231. * LANGAGE : GIBIANE-CAST3M
  232. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  233. * mél : gounand@semt2.smts.cea.fr
  234. **********************************************************************
  235. * VERSION : v1, 18/02/2003, version initiale
  236. * HISTORIQUE : v1, 18/02/2003, création
  237. * HISTORIQUE :
  238. * HISTORIQUE :
  239. ************************************************************************
  240. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  241. * en cas de modification de ce sous-programme afin de faciliter
  242. * la maintenance !
  243. ************************************************************************
  244. *
  245. *
  246. 'DEBPROC' FORMAR ;
  247. 'ARGUMENT' fl*'FLOTTANT' ;
  248. 'ARGUMENT' vir/'ENTIER ' ;
  249. 'SI' ('NON' ('EXISTE' vir)) ;
  250. vir = 1 ;
  251. 'SINON' ;
  252. 'SI' ('<' vir 0) ;
  253. 'ERREUR' 'fournir un entier positif' ;
  254. 'FINSI' ;
  255. 'FINSI' ;
  256. 'SI' ('<' ('ABS' fl) 10.D-100) ;
  257. chfl = 'CHAINE' '0' ;
  258. 'SINON' ;
  259. *! sans le 1.D-10, ca ne fonctionne pas
  260. *! qd on entre pile poil une puissance de 10
  261. lfl = LOG10 ('ABS' fl) ;
  262. * lfl = '+' (LOG10 ('ABS' fl)) 1.D-10 ;
  263. slfl = 'SIGNE' ('ENTIER' lfl) ;
  264. 'SI' ('EGA' slfl 1) ;
  265. elfl = 'ENTIER' lfl ;
  266. 'SINON' ;
  267. elfl = '-' ('ENTIER' lfl) 1 ;
  268. 'FINSI' ;
  269. man = '/' fl ('**' 10.D0 elfl) ;
  270. *
  271. * Une verrue pour des histoires de précision...
  272. *
  273. 'SI' ('EGA' man 10.D0 ('**' 10.D0 ('*' vir -1.D0))) ;
  274. man = '/' man 10.D0 ;
  275. elfl = '+' elfl 1 ;
  276. 'FINSI' ;
  277. *
  278. sman = 'SIGNE' man ;
  279. 'SI' ('EGA' sman 1) ;
  280. fman = 'CHAINE' '(F' ('+' vir 2) '.0' vir ')' ;
  281. 'SINON' ;
  282. fman = 'CHAINE' '(F' ('+' vir 3) '.0' vir ')' ;
  283. 'FINSI' ;
  284. 'SI' ('NEG' vir 0) ;
  285. 'SI' ('NEG' elfl 0) ;
  286. chfl = 'CHAINE' 'FORMAT' fman man 'E' elfl ;
  287. 'SINON' ;
  288. chfl = 'CHAINE' 'FORMAT' fman man ;
  289. 'FINSI' ;
  290. 'SINON' ;
  291. man2 = 'ENTIER' ('+' man ('*' 0.5D0 sman)) ;
  292. 'SI' ('NEG' elfl 0) ;
  293. chfl = 'CHAINE' man2 'E' elfl ;
  294. 'SINON' ;
  295. chfl = 'CHAINE' man2 ;
  296. 'FINSI' ;
  297. 'FINSI' ;
  298. 'FINSI' ;
  299. 'RESPRO' chfl ;
  300. *
  301. * End of procedure file FORMAR
  302. *
  303. 'FINPROC' ;
  304. *ENDPROCEDUR formar
  305. *BEGINPROCEDUR log10
  306. ************************************************************************
  307. * NOM : LOG10
  308. * DESCRIPTION : Log_10
  309. *
  310. *
  311. *
  312. * LANGAGE : GIBIANE-CAST3M
  313. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  314. * mél : gounand@semt2.smts.cea.fr
  315. **********************************************************************
  316. * VERSION : v1, 18/02/2003, version initiale
  317. * HISTORIQUE : v1, 18/02/2003, création
  318. * HISTORIQUE :
  319. * HISTORIQUE :
  320. ************************************************************************
  321. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  322. * en cas de modification de ce sous-programme afin de faciliter
  323. * la maintenance !
  324. ************************************************************************
  325. *
  326. *
  327. 'DEBPROC' LOG10 ;
  328. 'ARGUMENT' fl/'FLOTTANT' ;
  329. 'ARGUMENT' lr/'LISTREEL' ;
  330. 'ARGUMENT' cp/'CHPOINT ' ;
  331. 'ARGUMENT' cm/'MCHAML ' ;
  332. 'SI' ('EXISTE' fl) ;
  333. 'RESPRO' ('/' ('LOG' fl) ('LOG' 10.D0)) ;
  334. 'FINSI' ;
  335. 'SI' ('EXISTE' lr) ;
  336. 'RESPRO' ('/' ('LOG' lr) ('LOG' 10.D0)) ;
  337. 'FINSI' ;
  338. 'SI' ('EXISTE' cp) ;
  339. 'RESPRO' ('/' ('LOG' cp) ('LOG' 10.D0)) ;
  340. 'FINSI' ;
  341. 'SI' ('EXISTE' cm) ;
  342. 'RESPRO' ('/' ('LOG' cm) ('LOG' 10.D0)) ;
  343. 'FINSI' ;
  344. *
  345. * End of procedure file LOG10
  346. *
  347. 'FINPROC' ;
  348. *ENDPROCEDUR log10
  349. *BEGINPROCEDUR modulo
  350. ************************************************************************
  351. * NOM : MODULO
  352. * DESCRIPTION : Calcule un entier modulo un autre...
  353. *
  354. *
  355. *
  356. * LANGAGE : GIBIANE-CAST3M
  357. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  358. * mél : gounand@semt2.smts.cea.fr
  359. **********************************************************************
  360. * VERSION : v1, 15/10/2002, version initiale
  361. * HISTORIQUE : v1, 15/10/2002, création
  362. * HISTORIQUE :
  363. * HISTORIQUE :
  364. ************************************************************************
  365. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  366. * en cas de modification de ce sous-programme afin de faciliter
  367. * la maintenance !
  368. ************************************************************************
  369. *
  370. *
  371. 'DEBPROC' MODULO ;
  372. 'ARGUMENT' i*'ENTIER' j*'ENTIER' ;
  373. 'SI' ('EGA' j 0) ;
  374. 'MESSAGE' 'Impossible de faire modulo 0' ;
  375. 'ERREUR' 5 ;
  376. 'SINON' ;
  377. k=i '/' j ;
  378. mod=i '-' ( k '*'j ) ;
  379. 'RESPRO' mod ;
  380. 'FINSI' ;
  381. *
  382. * End of procedure file MODULO
  383. *
  384. 'FINPROC' ;
  385. *ENDPROCEDUR modulo
  386. * From . :
  387. *BEGINPROCEDUR calcoeil
  388. ************************************************************************
  389. * NOM : CALCOEIL
  390. * DESCRIPTION : Calcul un oeil absolu convenable pour les tracés
  391. * en donnant un oeil relatif et un maillage
  392. *
  393. *
  394. * LANGAGE : GIBIANE-CAST3M
  395. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  396. * mél : gounand@semt2.smts.cea.fr
  397. **********************************************************************
  398. * VERSION : v1, 16/11/2004, version initiale
  399. * HISTORIQUE : v1, 16/11/2004, création
  400. * HISTORIQUE :
  401. * HISTORIQUE :
  402. ************************************************************************
  403. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  404. * en cas de modification de ce sous-programme afin de faciliter
  405. * la maintenance !
  406. ************************************************************************
  407. *
  408. *
  409. 'DEBPROC' CALCOEIL ;
  410. 'ARGUMENT' mt*'MAILLAGE' ;
  411. 'ARGUMENT' foeil*'POINT' ;
  412. foeilx foeily foeilz = 'COORDONNEE' foeil ;
  413. xmt ymt zmt = 'COORDONNEE' mt ;
  414. maxmt = 'MAXIMUM' xmt ;
  415. maymt = 'MAXIMUM' ymt ;
  416. mazmt = 'MAXIMUM' zmt ;
  417. dx = '-' ('MAXIMUM' xmt) ('MINIMUM' xmt) ;
  418. dy = '-' ('MAXIMUM' ymt) ('MINIMUM' ymt) ;
  419. dxy = 'MAXIMUM' ('PROG' dx dy) ;
  420. dz = '-' ('MAXIMUM' zmt) ('MINIMUM' zmt) ;
  421. xoeil = '+' maxmt ('*' dxy foeilx) ;
  422. yoeil = '+' maymt ('*' dxy foeily) ;
  423. zoeil = '+' mazmt ('*' dz foeilz) ;
  424. oeil = xoeil yoeil zoeil ;
  425. 'RESPRO' oeil ;
  426. *
  427. * End of procedure file CALCOEIL
  428. *
  429. 'FINPROC' ;
  430. *ENDPROCEDUR calcoeil
  431. *BEGINPROCEDUR compute
  432. ************************************************************************
  433. * NOM : COMPUTE
  434. * DESCRIPTION : Do the computations of the stationnary fields
  435. * in the reactor
  436. *
  437. *
  438. * LANGAGE : GIBIANE-CAST3M
  439. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  440. * mél : gounand@semt2.smts.cea.fr
  441. **********************************************************************
  442. * VERSION : v1, 09/11/2004, version initiale
  443. * HISTORIQUE : v1, 09/11/2004, création
  444. * HISTORIQUE :
  445. * HISTORIQUE :
  446. ************************************************************************
  447. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  448. * en cas de modification de ce sous-programme afin de faciliter
  449. * la maintenance !
  450. ************************************************************************
  451. *
  452. *
  453. 'DEBPROC' COMPUTE ;
  454. *
  455. 'ARGUMENT' tabdat*'TABLE' ;
  456. *
  457. * First store all the parameters to make tabres self-contained
  458. *
  459. tabres = 'TABLE' 'INCO' ;
  460. tabres . 'tabdat' = tabdat ;
  461. *
  462. * Second, retrieve parameters from tables
  463. *
  464. tabgeo = tabdat . 'tabgeo' ;
  465. tabphy = tabdat . 'tabphy' ;
  466. tabnum = tabdat . 'tabnum' ;
  467. *
  468. H = tabgeo . 'H' ;
  469. nh = tabgeo . 'nh' ;
  470. $mtcbst = tabgeo . '$mtcbst' ;
  471. $mtcb = tabgeo . '$mtcb' ;
  472. $mthe = tabgeo . '$mthe' ;
  473. $sthe = tabgeo . '$sthe' ;
  474. $mtif = tabgeo . '$mtif' ;
  475. *'SI' logb ;
  476. * $mtifb = tabgeo . '$mtifb' ;
  477. *'FINSI' ;
  478. mcf = tabgeo . 'mcf' ;
  479. mfc = tabgeo . 'mfc' ;
  480. *
  481. Dh = tabphy . 'Dh' ;
  482. chblock= tabphy . 'chblock' ;
  483. *vhe = tabphy . 'vhe' ;
  484. qhe = tabphy . 'qhe' ;
  485. prhe = tabphy . 'prhe' ;
  486. theek = tabphy . 'theek' ;
  487. pvol = tabphy . 'pvol' ;
  488. pvar = tabphy . 'pvar' ;
  489. gamma = tabphy . 'gamma' ;
  490. irrad = tabphy . 'irrad' ;
  491. pcb = tabphy . 'pcb' ;
  492. *
  493. maxit = tabnum . 'maxit' ;
  494. rescvg = tabnum . 'rescvg' ;
  495. solvit = tabnum . 'solvit' ;
  496. omcbst = tabnum . 'omcbst' ;
  497. omhe = tabnum . 'omhe' ;
  498. *
  499. * Initialization of the tables for the thermal
  500. * computation in the fuel+structure (rvcbst)
  501. * and in the helium (rvhe)
  502. *
  503. rvcbst = 'EQEX' 'ITMA' 1 'NITER' 1 'OMEGA' omcbst 'FIDT' 1000 ;
  504. rvcbst = 'EQEX' rvcbst
  505. 'OPTI' 'EF' 'IMPL'
  506. 'ZONE' $mtcbst 'OPER' 'LAPN' 'LCBST' 'INCO' 'TCBS'
  507. ;
  508. rvcbst = 'EQEX' rvcbst
  509. 'OPTI' 'EF' 'IMPL'
  510. 'ZONE' $mtcb 'OPER' 'FIMP' 'PCB' 'INCO' 'TCBS'
  511. ;
  512. rvcbst = 'EQEX' rvcbst
  513. 'OPTI' 'EF' 'IMPL'
  514. 'ZONE' $mtif 'OPER' 'ECHI' 'H' 'T0' 'INCO' 'TCBS' 'TCBS'
  515. ;
  516. *
  517. * Iterative solver for the fuel+structure part
  518. *
  519. * 1 : direct solver, more robust, slower
  520. * 3 : iterative solver, less robust, faster
  521. 'SI' solvit ;
  522. rvcbst . 'METHINV' . 'TYPINV' = 3 ;
  523. 'SINON' ;
  524. rvcbst . 'METHINV' . 'TYPINV' = 1 ;
  525. 'FINSI' ;
  526. *
  527. rvhe = 'EQEX' 'ITMA' 1 'NITER' 1 'OMEGA' omhe 'FIDT' 1000 ;
  528. rvhe = 'EQEX' rvhe
  529. 'OPTI' 'EF' 'IMPL' 'CENTREE' 'NOCONS'
  530. 'ZONE' $mthe 'OPER' 'KONV' 'RCPHE' 'UHE' 'LHE' 'INCO' 'THE'
  531. ;
  532. rvhe = 'EQEX' rvhe
  533. 'OPTI' 'EF' 'IMPL'
  534. 'ZONE' $mthe 'OPER' 'LAPN' 'LHE' 'INCO' 'THE'
  535. ;
  536. rvhe = 'EQEX' rvhe
  537. 'OPTI' 'EF' 'IMPL'
  538. 'ZONE' $mthe 'OPER' 'FIMP' 'PHE' 'INCO' 'THE'
  539. ;
  540. rvhe = 'EQEX' rvhe
  541. 'CLIM' 'THE' 'TIMP' ('DOMA' $sthe 'MAILLAGE') theek ;
  542. rvcbst . 'INCO' = tabres ;
  543. rvhe . 'INCO' = tabres ;
  544. tabres . 'TCBS' = 'KCHT' $mtcbst 'SCAL' 'SOMMET' theek ;
  545. lupu lsic lcb okcb = PRPCB irrad theek ;
  546. tabres . 'LCBST' = 'KCHT' $mtcbst 'SCAL' 'CENTRE' lsic
  547. ('KCHT' $mtcb 'SCAL' 'CENTRE' lcb) ;
  548. tabres . 'PCB' = pcb ;
  549. tabres . 'T0' = 'KCHT' $mtif 'SCAL' 'CENTRE' 0.D0 ;
  550. tabres . 'F0' = 'KCHT' $mtif 'SCAL' 'CENTRE' 0.D0 ;
  551. tabres . 'H' = 'KCHT' $mtif 'SCAL' 'CENTRE' 0.D0 ;
  552. tabres . 'THE' = 'KCHT' $mthe 'SCAL' 'SOMMET' theek ;
  553. tabres . 'PHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' 0.D0 ;
  554. thep = 'COPIER' (tabres . 'THE') ;
  555. tcbsp = 'COPIER' (tabres . 'TCBS') ;
  556. *
  557. * Initialization of the physical properties of helium
  558. *
  559. rhe muhe lhe cphe okhe = PRPHE prhe theek ;
  560. *qhe = '*' rhe vhe ;
  561. qheb = '*' qhe chblock ;
  562. qhebi = '*' mcf ('NOEL' $mthe qheb) ;
  563. * Ce KCHT est indispensable car '*' supprimme les valeurs nulles...
  564. qhebi = 'KCHT' $mtif 'SCAL' 'CENTRE' qhebi ;
  565. uhe = 'NOMC' 'UZ' ('/' qheb rhe) 'NATURE' 'DISCRET' ;
  566. tabres . 'RCPHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' ('*' rhe cphe) ;
  567. tabres . 'LHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' lhe ;
  568. *tabres . 'UHE' = 'KCHT' $mthe 'VECT' 'SOMMET' (0.D0 0.D0 uhe) ;
  569. *tabres . 'QHE' = qhe ;
  570. tabres . 'UHE' = 'KCHT' $mthe 'VECT' 'SOMMET' uhe ;
  571. tabres . 'QHE' = qheb ;
  572. ***************************************
  573. *
  574. * COMPUTATIONAL LOOP
  575. *
  576. ***************************************
  577. * Number of non-linearity iterations
  578. maxiter = vrai ;
  579. *
  580. 'REPETER' bouc maxit ;
  581. * 1) Compute a mean temperature in helium
  582. tmoyhe = 'NOEL' $mthe (tabres . 'THE') ;
  583. 'MESSAGE' 'Maximum mean helium temperature (degrees C) : '
  584. ('-' ('MAXIMUM' tmoyhe) 273.15D0) ;
  585. * 2) Transfer this temperature on the interfaces
  586. tmtif = '*' mcf tmoyhe ;
  587. * Ce KCHT est indispensable car '*' supprimme les valeurs nulles...
  588. tabres . 'T0' = 'KCHT' $mtif 'SCAL' 'CENTRE' tmtif ;
  589. * 3) Compute the exchange coefficient at the interface
  590. * and the physical properties of the fuel and the
  591. * structure with the temperature from the
  592. * previous iteration
  593. * Mixing temperature
  594. tm = tabres . 'T0' ;
  595. * Wall temperature
  596. tp = 'NOEL' $mtif (tabres . 'TCBS') ;
  597. t0 = '*' ('+' tm tp) 0.5D0 ;
  598. * t0 = tabres . 'T0' ;
  599. rho0 mu0 l0 cp0 okhe = PRPHE prhe t0 ;
  600. pran0 = '*' ('*' mu0 cp0) ('INVERSE' l0) ;
  601. * reyn0 = '*' ('*' qhe Dh) ('INVERSE' mu0) ;
  602. reyn0 = '*' ('*' qhebi Dh) ('INVERSE' mu0) ;
  603. * Colburn correlation
  604. nuss0 = 0.023 '*' ('**' reyn0 0.8D0)
  605. '*' ('**' pran0 ('/' 1.D0 3.D0)) ;
  606. h0 = '/' ('*' nuss0 l0) Dh ;
  607. * Tests
  608. * asp = '/' H Dh ;
  609. minasp = 60. ;
  610. minreyn = 1.D4 ;
  611. minpran = 0.65 ;
  612. maxpran = 160. ;
  613. asp = '/' H ('MAXIMUM' Dh) ;
  614. mireyn = 'MINIMUM' reyn0 ;
  615. mareyn = 'MAXIMUM' reyn0 ;
  616. okreyn = '>' mireyn minreyn ;
  617. mipran = 'MINIMUM' pran0 ;
  618. mapran = 'MAXIMUM' pran0 ;
  619. * okpr = 'ET' ('>' mipran 0.7) ('<' mapran 160.) ;
  620. okipr = '>' mipran minpran ;
  621. okapr = '<' mapran maxpran ;
  622. okpr = 'ET' okipr okapr ;
  623. okasp = '>' asp minasp ;
  624. oknuss = okreyn 'ET' okpr 'ET' okasp ;
  625. 'SI' ('NON' oknuss) ;
  626. cherr = 'CHAINE' '!! Correlation de Colburn non valide' ;
  627. 'MESSAGE' cherr ;
  628. 'SI' ('NON' okreyn) ;
  629. cherr = 'CHAINE' ' min Re=' (formar mireyn 2)
  630. ' (should be ' (formar minreyn 2) ')' ;
  631. 'MESSAGE' cherr ;
  632. cherr = 'CHAINE' ' (Note : max Re=' (formar mareyn 2) ')' ;
  633. 'MESSAGE' cherr ;
  634. 'FINSI' ;
  635. 'SI' ('NON' okipr) ;
  636. cherr = 'CHAINE' ' min Pr=' (formar mipran 2)
  637. ' (should be ' (formar minpran 2) ')' ;
  638. 'MESSAGE' cherr ;
  639. 'FINSI' ;
  640. 'SI' ('NON' okapr) ;
  641. cherr = 'CHAINE' ' max Pr=' (formar mapran 2)
  642. ' (should be ' (formar maxpran 2) ')' ;
  643. 'MESSAGE' cherr ;
  644. 'FINSI' ;
  645. 'SI' ('NON' okasp) ;
  646. cherr = 'CHAINE' ' min H/Dh=' (formar asp 2)
  647. ' (should be ' (formar minasp 2) ')' ;
  648. 'MESSAGE' cherr ;
  649. 'FINSI' ;
  650. 'FINSI' ;
  651. * tabres . 'H' = 'KCHT' $mtif 'SCAL' 'CENTRE' ('*' h0 chblock) ;
  652. tabres . 'H' = 'KCHT' $mtif 'SCAL' 'CENTRE' h0 ;
  653. tabres . 'nuss0' = 'KCHT' $mtif 'SCAL' 'CENTRE' nuss0 ;
  654. tabres . 'reyn0' = 'KCHT' $mtif 'SCAL' 'CENTRE' reyn0 ;
  655. tabres . 'pran0' = 'KCHT' $mtif 'SCAL' 'CENTRE' pran0 ;
  656. tabres . 'l0' = 'KCHT' $mtif 'SCAL' 'CENTRE' l0 ;
  657. tabres . 'Dh' = 'KCHT' $mtif 'SCAL' 'CENTRE' Dh ;
  658. * Physical properties of fuel and structure
  659. tcbck = 'NOEL' $mtcbst (tabres . 'TCBS') ;
  660. lupu lsic lcb okcb = PRPCB irrad tcbck ;
  661. tabres . 'LCBST' = 'KCHT' $mtcbst 'SCAL' 'CENTRE' lsic
  662. ('KCHT' $mtcb 'SCAL' 'CENTRE' lcb) ;
  663. * 4) Thermal computation in fuel + structure
  664. EXEC rvcbst ;
  665. * 5) Flux computation on the surface of the fuel
  666. rvmdia1 = 'EQEX' 'OPTI' 'VF' 'IMPL'
  667. 'ZONE' $mtif 'OPER' 'MDIA' 'H' 'INCO' 'TCBS' 'F0' ;
  668. rvmdia1 . 'INCO' = tabres ;
  669. smdia1 mmdia1 = 'MDIA' (rvmdia1 . '1MDIA') ;
  670. rvmdia2 = 'EQEX' 'OPTI' 'VF' 'IMPL'
  671. 'ZONE' $mtif 'OPER' 'MDIA' 'H' 'INCO' 'T0' 'F0' ;
  672. rvmdia2 . 'INCO' = tabres ;
  673. smdia2 mmdia2 = 'MDIA' (rvmdia2 . '1MDIA') ;
  674. f0 = 'NOMC' 'SCAL' ('-' ('KOPS' mmdia1 '*'
  675. ('NOMC' 'TCBS' (tabres . 'TCBS')))
  676. ('KOPS' mmdia2 '*'
  677. ('NOMC' 'T0' (tabres . 'T0'))))
  678. ;
  679. 'MESSAGE' 'Integrated flux on the surface of the fuel (W) : '
  680. ('MAXIMUM' ('RESULT' f0)) ;
  681. * 6) Transfer it to a volume power in the helium
  682. tabres . 'F0' = f0 ;
  683. phe = '*' mfc f0 ;
  684. tabres . 'PHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' phe ;
  685. *
  686. * 7) Compute the physical properties of helium with temperature and
  687. * pressure from the previous iteration
  688. *
  689. theck = 'NOEL' $mthe (tabres . 'THE') ;
  690. thesk = tabres . 'THE' ;
  691. rhec muhec lhec cphec okhe = PRPHE prhe theck ;
  692. rhes muhes lhes cphes okhe = PRPHE prhe thesk ;
  693. * uhes = 'NOMC' 'UZ' ('*' qhe ('INVERSE' rhes)) ;
  694. uhes = 'NOMC' 'UZ' ('*' qheb ('INVERSE' rhes)) ;
  695. tabres . 'RCPHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' ('*' rhec cphec) ;
  696. tabres . 'LHE' = 'KCHT' $mthe 'SCAL' 'CENTRE' lhec ;
  697. tabres . 'UHE' = 'KCHT' $mthe 'VECT' 'SOMMET' uhes ;
  698. * 8) Thermal computation in the helium
  699. EXEC rvhe ;
  700. *
  701. * Convergence check
  702. *
  703. then = 'COPIER' (tabres . 'THE') ;
  704. tcbsn = 'COPIER' (tabres . 'TCBS') ;
  705. errhe = '/' ('MAXIMUM' ('-' then thep) 'ABS')
  706. ('MAXIMUM' thep 'ABS') ;
  707. errcbs = '/' ('MAXIMUM' ('-' tcbsn tcbsp) 'ABS')
  708. ('MAXIMUM' tcbsp 'ABS') ;
  709. 'MESSAGE' ('CHAINE' 'Iteration ' &bouc) ;
  710. 'MESSAGE' ('CHAINE' ' errhe = ' errhe) ;
  711. 'MESSAGE' ('CHAINE' ' errcbs = ' errcbs) ;
  712. thep = then ;
  713. tcbsp = tcbsn ;
  714. testcvg = 'ET' (errhe '<' rescvg) (errcbs '<' rescvg) ;
  715. *
  716. * Plots
  717. *
  718. * explores tabres ;
  719. 'SI' testcvg ;
  720. maxiter = faux ;
  721. 'QUITTER' bouc ;
  722. 'FINSI' ;
  723. 'FIN' bouc ;
  724. 'SI' ('EGA' maxiter vrai) ;
  725. 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ;
  726. 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ;
  727. 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ;
  728. 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ;
  729. 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ;
  730. 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ;
  731. 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ;
  732. 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ;
  733. 'MESSAGE' ('CHAINE' 'Warning !!!!!!!!!!!!') ;
  734. 'MESSAGE' ('CHAINE' 'The computation has not converged') ;
  735. 'ERREUR' 'Check compute.procedur !' ;
  736. 'FINSI' ;
  737. 'RESPRO' tabres ;
  738. *
  739. * End of procedure file COMPUTE
  740. *
  741. 'FINPROC' ;
  742. *ENDPROCEDUR compute
  743. *BEGINPROCEDUR cpowdis
  744. ************************************************************************
  745. * NOM : CPOWDIS
  746. * DESCRIPTION : Compute cos (z) power distribution
  747. *
  748. *
  749. *
  750. * LANGAGE : GIBIANE-CAST3M
  751. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  752. * mél : gounand@semt2.smts.cea.fr
  753. **********************************************************************
  754. * VERSION : v1, 09/11/2004, version initiale
  755. * HISTORIQUE : v1, 09/11/2004, création
  756. * HISTORIQUE :
  757. * HISTORIQUE :
  758. ************************************************************************
  759. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  760. * en cas de modification de ce sous-programme afin de faciliter
  761. * la maintenance !
  762. ************************************************************************
  763. *
  764. *
  765. 'DEBPROC' CPOWDIS ;
  766. 'ARGUMENT' tabgeo*'TABLE' ;
  767. 'ARGUMENT' pvol*'FLOTTANT' ;
  768. 'ARGUMENT' gamma*'FLOTTANT' ;
  769. 'ARGUMENT' pvar*'LOGIQUE' ;
  770. *
  771. $mtcbst = tabgeo . '$mtcbst' ;
  772. $mtcb = tabgeo . '$mtcb' ;
  773. $mthe = tabgeo . '$mthe' ;
  774. *
  775. vcbst = 'MAXIMUM' ('RESULT' ('DOMA' $mtcbst 'VOLUME')) ;
  776. vcb = 'MAXIMUM' ('RESULT' ('DOMA' $mtcb 'VOLUME')) ;
  777. vhe = 'MAXIMUM' ('RESULT' ('DOMA' $mthe 'VOLUME')) ;
  778. vcoeur = '+' vcbst vhe ;
  779. *
  780. pmoy = pvol '*' ('/' vcoeur vcb) ;
  781. 'SI' ('NON' pvar) ;
  782. pcb = 'KCHT' $mtcb 'SCAL' 'CENTRE' pmoy ;
  783. 'SINON' ;
  784. raddeg = '/' 180.D0 PI ;
  785. zcb = 'COORDONNEE' 3 ('DOMA' $mtcb 'CENTRE') ;
  786. zmoy = '/' H 2.D0 ;
  787. zcb = '+' zcb ('*' zmoy -1.D0) ;
  788. pmax = '*' pmoy ('/' gamma ('SIN' ('*' raddeg gamma))) ;
  789. 'MESSAGE' ('CHAINE' 'gamma=' gamma) ;
  790. 'MESSAGE' ('CHAINE' 'pmax=' pmax) ;
  791. fccos = '/' (2.D0 '*' gamma '*' raddeg) H ;
  792. pcb1 = '*' ('COS' ('*' zcb fccos)) pmax ;
  793. chvol = 'DOMA' $mtcb 'VOLUME' ;
  794. puis1 = 'MAXIMUM' ('RESULT' ('*' chvol pmoy)) ;
  795. puis2 = 'MAXIMUM' ('RESULT' ('*' chvol pcb1)) ;
  796. 'SI' ('NON' ('EGA' puis1 puis2 ('*' 0.1 ('ABS' puis2)))) ;
  797. 'MESSAGE' ('CHAINE' 'puis1 = ' puis1 ) ;
  798. 'MESSAGE' ('CHAINE' 'puis2 = ' puis2 ) ;
  799. 'ERREUR' 'Les deux puissances devraient etre a peu pres egales' ;
  800. 'FINSI' ;
  801. * Correction
  802. facor = '/' puis1 puis2 ;
  803. pcb2 = '*' pcb1 facor ;
  804. pcb = 'KCHT' $mtcb 'SCAL' 'CENTRE' pcb2 ;
  805. 'FINSI' ;
  806. 'RESPRO' pcb ;
  807. *
  808. * End of procedure file CPOWDIS
  809. *
  810. 'FINPROC' ;
  811. *ENDPROCEDUR cpowdis
  812. *BEGINPROCEDUR dessevol
  813. ************************************************************************
  814. * NOM : DESSEVOL
  815. * DESCRIPTION : Dessine des évolutions : choisit automatiquement
  816. * les options, marqueurs, couleurs...
  817. *
  818. *
  819. * LANGAGE : GIBIANE-CAST3M
  820. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  821. * mél : gounand@semt2.smts.cea.fr
  822. **********************************************************************
  823. * VERSION : v1, 16/11/2004, version initiale
  824. * HISTORIQUE : v1, 16/11/2004, création
  825. * HISTORIQUE :
  826. * HISTORIQUE :
  827. ************************************************************************
  828. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  829. * en cas de modification de ce sous-programme afin de faciliter
  830. * la maintenance !
  831. ************************************************************************
  832. *
  833. *
  834. 'DEBPROC' DESSEVOL ;
  835. 'ARGUMENT' evtot*'EVOLUTION' ;
  836. 'ARGUMENT' tabt*'TABLE' ;
  837. 'ARGUMENT' tit*'MOT' ;
  838. 'ARGUMENT' tix*'MOT' ;
  839. 'ARGUMENT' tiy*'MOT' ;
  840. 'ARGUMENT' lnclk*'LOGIQUE' ;
  841. 'ARGUMENT' nb/'LOGIQUE' ;
  842. *
  843. 'SI' ('NON' ('EXISTE' nb)) ;
  844. nb = FAUX ;
  845. 'FINSI' ;
  846. *
  847. nt = 'DIME' tabt ;
  848. nev = 'DIME' evtot ;
  849. *
  850. * Attention, dans evtot, il y a une évolution avec des noms de points ?
  851. *
  852. *'SI' ('NEG' nev nt) ;
  853. * cherr = 'CHAINE' 'Evolution and title table : not same dim.' ;
  854. * 'ERREUR' cherr ;
  855. *'FINSI' ;
  856. *
  857. tev = 'TABLE' ;
  858. tev . 'TITRE' = tabt ;
  859. *
  860. toto = 'TABLE' ;
  861. *
  862. lcoul = 'MOTS' 'TURQ' 'VERT' 'JAUN' 'ROSE' 'ROUG' 'BLEU' ;
  863. lmarq = 'MOTS' 'TRIB' 'TRIA' 'LOSA' 'CARR' 'ETOI' 'PLUS' 'CROI' ;
  864. ltirr = 'MOTS' 'TIRR' 'TIRC' 'TIRL' 'TIRM' ;
  865. *
  866. 'SI' nb ;
  867. ev2 = evtot ;
  868. 'SINON' ;
  869. icou = 0 ;
  870. 'REPETER' iev nev ;
  871. ii = &iev ;
  872. evi = 'EXTRAIRE' evtot 'COUR' ii ;
  873. 'SI' ('NEG' ('TYPE' ('EXTRAIRE' evi 'ORDO')) 'LISTMOTS') ;
  874. icou = '+' icou 1 ;
  875. 'FINSI' ;
  876. * ii2 = '/' ('+' ii 1) 2 ;
  877. * ci = EXMOMOD lcoul ii2 ;
  878. * ci = EXMOMOD lcoul ii ;
  879. ci = EXMOMOD lcoul icou ;
  880. APPEND toto 'EVOLUTION' ('COULEUR' evi ci) ;
  881. 'FIN' iev ;
  882. ev2 = toto . 'EVOLUTION' ;
  883. 'FINSI' ;
  884. *
  885. 'REPETER' iev nev ;
  886. ii = &iev ;
  887. mi = EXMOMOD lmarq ii ;
  888. ti = EXMOMOD ltirr ii ;
  889. 'SI' nb ;
  890. tev . ii = 'CHAINE' 'MARQ' ' ' mi ' ' ti ;
  891. 'SINON' ;
  892. tev . ii = 'CHAINE' 'MARQ' ' ' mi ;
  893. 'FINSI' ;
  894. 'FIN' iev ;
  895. *
  896. 'SI' lnclk ;
  897. 'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev
  898. 'NCLK' ;
  899. 'SINON' ;
  900. 'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev ;
  901. 'FINSI' ;
  902. *
  903. * End of procedure file DESSEVOL
  904. *
  905. 'FINPROC' ;
  906. *ENDPROCEDUR dessevol
  907. *BEGINPROCEDUR explodat
  908. ************************************************************************
  909. * NOM : EXPLODAT
  910. * DESCRIPTION : Explore the data interactively or not.
  911. *
  912. * - first argument (mandatory) : the tables with data
  913. * - second argument (optional) : VRAI (default) interactive use
  914. * (mouse clicks)
  915. * FAUX batch use
  916. * - third argument (mandatory if 2ndarg = FAUX) : a list of integer or
  917. * an integer
  918. * an integer corresponds to a particular view
  919. * View 1 : the base mesh
  920. * View 2 : the mesh
  921. * View 3 : the blocked channels
  922. * View 4 : the power distribution
  923. * View 5 : fuel and structure thermal conductivity (T)
  924. * View 6 : Helium density
  925. * View 7 : Helium thermal conductivity
  926. * View 8 : Helium heat capacity
  927. *
  928. *
  929. * LANGAGE : GIBIANE-CAST3M
  930. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  931. * mél : gounand@semt2.smts.cea.fr
  932. **********************************************************************
  933. * VERSION : v1, 17/11/2004, version initiale
  934. * HISTORIQUE : v1, 17/11/2004, création
  935. * HISTORIQUE :
  936. * HISTORIQUE :
  937. ************************************************************************
  938. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  939. * en cas de modification de ce sous-programme afin de faciliter
  940. * la maintenance !
  941. ************************************************************************
  942. *
  943. *
  944. 'DEBPROC' EXPLODAT ;
  945. 'ARGUMENT' tabdat*'TABLE';
  946. 'ARGUMENT' interact/'LOGIQUE' ;
  947. 'SI' ('NON' ('EXISTE' interact)) ;
  948. interact = VRAI ;
  949. 'FINSI' ;
  950. *
  951. 'SI' ('NON' interact) ;
  952. 'ARGUMENT' liview/'LISTENTI' ;
  953. 'SI' ('NON' ('EXISTE' liview)) ;
  954. 'ARGUMENT' iview*'ENTIER' ;
  955. liview = 'LECT' iview ;
  956. 'FINSI' ;
  957. niview = 'DIME' liview ;
  958. 'SI' ('<' niview 1) ;
  959. 'QUITTER' EXPLODAT ;
  960. 'FINSI' ;
  961. iiview = 1 ;
  962. 'FINSI' ;
  963. *
  964. * Retrieve parameters from tables
  965. *
  966. tabgeo = tabdat . 'tabgeo' ;
  967. tabphy = tabdat . 'tabphy' ;
  968. tabin = tabgeo . 'tabin' ;
  969. logst = 'EXISTE' tabin 'STRUCTURE' ;
  970. *
  971. H = tabgeo . 'H' ;
  972. nh = tabgeo . 'nh' ;
  973. $mtcbst = tabgeo . '$mtcbst' ;
  974. $mtcb = tabgeo . '$mtcb' ;
  975. $mthe = tabgeo . '$mthe' ;
  976. $sthe = tabgeo . '$sthe' ;
  977. $mtif = tabgeo . '$mtif' ;
  978. cfc = tabgeo . 'cfc' ;
  979. amtcb = tabgeo . 'amtcb' ;
  980. amthe = tabgeo . 'amthe' ;
  981. * QUAF meshes
  982. _mtcbst = 'DOMA' $mtcbst 'QUAF' ;
  983. _mthe = 'DOMA' $mthe 'QUAF' ;
  984. mtcbst = 'DOMA' $mtcbst 'MAILLAGE' ;
  985. mtcb = 'DOMA' $mtcb 'MAILLAGE' ;
  986. mthe = 'DOMA' $mthe 'MAILLAGE' ;
  987. 'SI' logst ;
  988. mtst = 'DIFF' mtcbst mtcb ;
  989. 'FINSI' ;
  990. mthe = 'DOMA' $mthe 'MAILLAGE' ;
  991. mtif = 'DOMA' $mtif 'MAILLAGE' ;
  992. *
  993. Dh = tabphy . 'Dh' ;
  994. chblock= tabphy . 'chblock' ;
  995. *vhe = tabphy . 'vhe' ;
  996. qhe = tabphy . 'qhe' ;
  997. prhe = tabphy . 'prhe' ;
  998. theek = tabphy . 'theek' ;
  999. pvol = tabphy . 'pvol' ;
  1000. pvar = tabphy . 'pvar' ;
  1001. gamma = tabphy . 'gamma' ;
  1002. irrad = tabphy . 'irrad' ;
  1003. pcb = tabphy . 'pcb' ;
  1004. * compute bottom He speed
  1005. rhohe muhe lhe cphe dum = PRPHE prhe theek ;
  1006. vhe = '/' qhe rhohe ;
  1007. *
  1008. * Precomputations
  1009. *
  1010. * One wants the height (z) not to be more than four times x or y dimension
  1011. * targetz = 4.D0 ;
  1012. targetz = 1.5D0 ;
  1013. * targetz = 0.5D0 ;
  1014. ftour = 0.1D0 ;
  1015. _mtot = 'ET' _mtcbst _mthe ;
  1016. xmt ymt zmt = 'COORDONNEE' _mtot ;
  1017. dx = '-' ('MAXIMUM' xmt) ('MINIMUM' xmt) ;
  1018. dy = '-' ('MAXIMUM' ymt) ('MINIMUM' ymt) ;
  1019. dxy = 'MAXIMUM' ('PROG' dx dy) ;
  1020. dz = '-' ('MAXIMUM' zmt) ('MINIMUM' zmt) ;
  1021. dzdx = '/' dz dx ;
  1022. chzscale = '>' dzdx targetz ;
  1023. 'SI' chzscale ;
  1024. zfactor = '/' dzdx targetz ;
  1025. factech = ('-' ('/' 1.D0 zfactor) 1.D0) ;
  1026. dzmt = 'NOMC' 'UZ' ('*' zmt factech) 'NATURE' 'DISCRET' ;
  1027. orig = 'FORME' ;
  1028. defrm = 'FORME' dzmt ;
  1029. 'FINSI' ;
  1030. *
  1031. 'SI' interact ;
  1032. mail = ('COULEUR' mtcb 'ROUG')
  1033. 'ET' ('COULEUR' mthe 'BLEU') ;
  1034. 'SI' (logst) ;
  1035. mail = 'ET' mail ('COULEUR' mtst 'BLANC') ;
  1036. 'FINSI' ;
  1037. npomail = 'NBNO' mail ;
  1038. nelmail = 'NBEL' mail ;
  1039. titmail = 'CHAINE' 'Mesh ' 'NBPO=' npomail
  1040. ' NBELEM=' nelmail ;
  1041. TRACMESH mail titmail VRAI ;
  1042. 'FINSI' ;
  1043. *
  1044. * Precomp of physical properties
  1045. *
  1046. * Temperature evolutions (in °C !!!)
  1047. Tmin = 500.D0 ;
  1048. Tmax = 1600.D0 ;
  1049. npasT = 10.D0 ;
  1050. pasT = '/' ('-' Tmax Tmin) npasT ;
  1051. prT = 'PROG' Tmin 'PAS' pasT Tmax ;
  1052. prlupu = 'PROG' ;
  1053. prlsic = 'PROG' ;
  1054. prlcb = 'PROG' ;
  1055. nbc = 'DIME' prT ;
  1056. 'REPETER' ibc nbc ;
  1057. T = 'EXTRAIRE' pRT &ibc ;
  1058. T = '+' T 273.15D0 ;
  1059. lupu lsic lcb dum = PRPCB FAUX T ;
  1060. prlupu = 'ET' prlupu ('PROG' lupu) ;
  1061. prlsic = 'ET' prlsic ('PROG' lsic) ;
  1062. prlcb = 'ET' prlcb ('PROG' lcb) ;
  1063. 'FIN' ibc ;
  1064. evlupu = 'EVOL' 'MANU' 'T' prT 'Lambda' prlupu ;
  1065. evlsic = 'EVOL' 'MANU' 'T' prT 'Lambda' prlsic ;
  1066. evlcb = 'EVOL' 'MANU' 'T' prT 'Lambda' prlcb ;
  1067. * Helium prop
  1068. * Temperature evolutions (in °C !!!)
  1069. Tmin = 450.D0 ;
  1070. Tmax = 1150.D0 ;
  1071. npasT = 10.D0 ;
  1072. pasT = '/' ('-' Tmax Tmin) npasT ;
  1073. prT = 'PROG' Tmin 'PAS' pasT Tmax ;
  1074. prrho = 'PROG' ;
  1075. prlamb = 'PROG' ;
  1076. prcp = 'PROG' ;
  1077. nbc = 'DIME' prT ;
  1078. 'REPETER' ibc nbc ;
  1079. T = 'EXTRAIRE' pRT &ibc ;
  1080. T = '+' T 273.15D0 ;
  1081. rho mu lamb cp dum = PRPHE prhe T ;
  1082. prrho = 'ET' prrho ('PROG' rho) ;
  1083. prlamb = 'ET' prlamb ('PROG' lamb) ;
  1084. prcp = 'ET' prcp ('PROG' cp) ;
  1085. 'FIN' ibc ;
  1086. evrho = 'EVOL' 'MANU' 'T' prT 'Rho' prrho ;
  1087. evlamb = 'EVOL' 'MANU' 'T' prT 'Lambda' prlamb ;
  1088. evcp = 'EVOL' 'MANU' 'T' prT 'Cp' prcp ;
  1089. *
  1090. * Arete precomp
  1091. *
  1092. *amtcb = 'ARETE' mtcb ;
  1093. *
  1094. tcha = 'TABLE' ;
  1095. tcha . 1 = 'BMesh' ;
  1096. tcha . 2 = 'Mesh' ;
  1097. tcha . 3 = 'BChan' ;
  1098. tcha . 4 = 'FuelT2' ;
  1099. tcha . 5 = 'LFuel' ;
  1100. tcha . 6 = 'RhoHe' ;
  1101. tcha . 7 = 'LamHe' ;
  1102. tcha . 8 = 'CpHe' ;
  1103. ntcha = 'DIME' tcha ;
  1104. 'SI' interact ;
  1105. itcha = 1 ;
  1106. noclic = VRAI ;
  1107. 'SINON' ;
  1108. itcha = 'EXTRAIRE' liview iiview ;
  1109. noclic = FAUX ;
  1110. 'FINSI' ;
  1111. *
  1112. 'REPETER' bouc2 ;
  1113. 'SI' interact ;
  1114. 'MESSAGE' 'Noclic allows not to click between each view' ;
  1115. 'MESSAGE'
  1116. 'However, one will deactivate it in order to zoom or save' ;
  1117. noclic = 'CHOI' 'Choose desired options' noclic ;
  1118. 'FINSI' ;
  1119. *
  1120. 'REPETER' bouc1;
  1121. *
  1122. 'SI' ('EGA' itcha 1) ;
  1123. bmesh = ('COULEUR' (tabin . 'FUEL') 'ROUG') 'ET'
  1124. ('COULEUR' (@STBL (tabin . 'CHANNEL')) 'BLEU') ;
  1125. 'SI' logst ;
  1126. bmesh = 'ET' bmesh (tabin . 'STRUCTURE') ;
  1127. 'FINSI' ;
  1128. oeil = (0. 0. 1000.) ;
  1129. npomail = 'NBNO' bmesh ;
  1130. nelmail = 'NBEL' bmesh ;
  1131. tit = 'CHAINE' 'Base Mesh ' 'NBPO=' npomail
  1132. ' NBELEM=' nelmail ;
  1133. 'SI' noclic ;
  1134. TRAC oeil bmesh 'TITRE' tit 'NCLK' ;
  1135. 'SINON' ;
  1136. TRAC oeil bmesh 'TITRE' tit ;
  1137. 'FINSI' ;
  1138. 'FINSI' ;
  1139. 'SI' ('EGA' itcha 2) ;
  1140. mail = ('COULEUR' mtcb 'ROUG')
  1141. 'ET' ('COULEUR' mthe 'BLEU') ;
  1142. 'SI' (logst) ;
  1143. mail = 'ET' mail ('COULEUR' mtst 'BLANC') ;
  1144. 'FINSI' ;
  1145. npomail = 'NBNO' mail ;
  1146. nelmail = 'NBEL' mail ;
  1147. tit = 'CHAINE' 'Mesh ' 'NBPO=' npomail
  1148. ' NBELEM=' nelmail ;
  1149. TRACMESH mail tit noclic ;
  1150. 'FINSI' ;
  1151. 'SI' ('EGA' itcha 3) ;
  1152. * tit = 'CHAINE' 'Blocked channels' ;
  1153. * tracchml $mtif chblock tit noclic ;
  1154. tit = 'CHAINE' 'Blocked channels' ;
  1155. tracchpo chblock mthe amthe tit noclic ;
  1156. 'FINSI' ;
  1157. 'SI' ('EGA' itcha 4) ;
  1158. tit = 'CHAINE' 'Power Distribution (W.m-3)' ;
  1159. tracchml $mtcb pcb amtcb tit noclic ;
  1160. 'FINSI' ;
  1161. 'SI' ('EGA' itcha 5) ;
  1162. evt = evlupu 'ET' evlsic 'ET' evlcb ;
  1163. tt = 'TABLE' ;
  1164. 'SI' irrad ;
  1165. tt . 1 = 'CHAINE' '(U,Pu)C irr.' ;
  1166. tt . 2 = 'CHAINE' 'SiC irr.' ;
  1167. tt . 3 = 'CHAINE' 'CerCer irr.' ;
  1168. 'SINON' ;
  1169. tt . 1 = 'CHAINE' '(U,Pu)C' ;
  1170. tt . 2 = 'CHAINE' 'SiC' ;
  1171. tt . 3 = 'CHAINE' 'CerCer' ;
  1172. 'FINSI' ;
  1173. tit = 'CHAINE' 'Lambda(Temperature)' ;
  1174. titx = 'CHAINE' 'T (°C)' ;
  1175. tity = 'CHAINE' 'Lambda (W.m-1.K-1)' ;
  1176. DESSEVOL evt tt tit titx tity noclic ;
  1177. 'FINSI' ;
  1178. 'SI' ('EGA' itcha 6) ;
  1179. tt = 'TABLE' ;
  1180. tt . 1 = 'CHAINE' 'Helium' ;
  1181. tit = 'CHAINE' 'Density(Temperature)'
  1182. ' pres= ' (formar prhe 2) ' bar' ;
  1183. titx = 'CHAINE' 'T (°C)' ;
  1184. tity = 'CHAINE' 'Rho (kg.m-3)' ;
  1185. DESSEVOL evrho tt tit titx tity noclic ;
  1186. 'FINSI' ;
  1187. 'SI' ('EGA' itcha 7) ;
  1188. tt = 'TABLE' ;
  1189. tt . 1 = 'CHAINE' 'Helium' ;
  1190. tit = 'CHAINE' 'Thermal Conductivity (Temperature)'
  1191. ' pres= ' (formar prhe 2) ' bar' ;
  1192. titx = 'CHAINE' 'T (°C)' ;
  1193. tity = 'CHAINE' 'Lambda (W.m-1.K-1)' ;
  1194. DESSEVOL evlamb tt tit titx tity noclic ;
  1195. 'FINSI' ;
  1196. *
  1197. 'SI' ('EGA' itcha 8) ;
  1198. tt = 'TABLE' ;
  1199. tt . 1 = 'CHAINE' 'Helium' ;
  1200. tit = 'CHAINE' 'Specific Heat (Temperature)'
  1201. ' pres= ' (formar prhe 2) ' bar' ;
  1202. titx = 'CHAINE' 'T (°C)' ;
  1203. tity = 'CHAINE' 'Cp (J.kg-1.K-1)' ;
  1204. DESSEVOL evcp tt tit titx tity noclic ;
  1205. 'FINSI' ;
  1206. *
  1207. 'SI' interact ;
  1208. cha = tit ;
  1209. ret = 'MENU' cha 'Next' 'Previous' 'Options' ;
  1210. 'SI' ('EGA' ret 'Options') ; 'QUITTER' bouc1 ; 'FINSI';
  1211. 'SI' ('EGA' ret 'Quitter') ; 'QUITTER' bouc2; 'FINSI';
  1212. 'SI' ('EGA' ret 'Next') ; itcha = '+' itcha 1 ; 'FINSI' ;
  1213. 'SI' ('EGA' ret 'Previous') ; itcha = '-' itcha 1 ; 'FINSI' ;
  1214. 'SI' (itcha > ntcha); itcha = 1 ; 'FINSI';
  1215. 'SI' (itcha < 1); itcha = ntcha ; 'FINSI';
  1216. 'SINON' ;
  1217. iiview = '+' iiview 1 ;
  1218. 'SI' ('>' iiview niview) ;
  1219. 'QUITTER' bouc2 ;
  1220. 'SINON' ;
  1221. itcha = 'EXTRAIRE' liview iiview ;
  1222. 'FINSI' ;
  1223. 'FINSI' ;
  1224. *
  1225. 'FIN' bouc1;
  1226. 'FIN' bouc2 ;
  1227. *
  1228. 'SI' chzscale ;
  1229. 'FORME' orig ;
  1230. 'FINSI' ;
  1231. *
  1232. * End of procedure file EXPLODAT
  1233. *
  1234. 'FINPROC' ;
  1235. *ENDPROCEDUR explodat
  1236. *BEGINPROCEDUR explores
  1237. ************************************************************************
  1238. * NOM : EXPLORES
  1239. * DESCRIPTION : Explore the Results interactively or not.
  1240. *
  1241. * EXPLORES does graphical output of results
  1242. * - first argument (mandatory) : the table with the fields
  1243. * - second argument (optional) : VRAI (default) interactive use
  1244. * (mouse clicks)
  1245. * FAUX batch use
  1246. * - third argument (mandatory if 2ndarg = FAUX) : a list of integer or
  1247. * an integer
  1248. * an integer corresponds to a particular view
  1249. * View 1 : temperature (fuel + He)
  1250. * View 2 : temperature (fuel)
  1251. * View 3 : temperature (fuel : 2 viewpoints)
  1252. * View 4 : exchange coefficient
  1253. * View 5 : temperature (helium)
  1254. * View 6 : vertical speed (helium)
  1255. * View 7 : temperature profiles per channel (helium)
  1256. * View 8 : vertical speed profiles per channel (helium)
  1257. * View 9 : Nusselt number
  1258. * View 10 : Reynolds number
  1259. * View 11 : Prandtl number
  1260. * View 12 : Lambda Helium
  1261. * View 13 : Hydraulic diameter
  1262. *
  1263. *
  1264. * LANGAGE : GIBIANE-CAST3M
  1265. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  1266. * mél : gounand@semt2.smts.cea.fr
  1267. **********************************************************************
  1268. * VERSION : v1, 17/11/2004, version initiale
  1269. * HISTORIQUE : v1, 17/11/2004, création
  1270. * HISTORIQUE :
  1271. * HISTORIQUE :
  1272. ************************************************************************
  1273. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  1274. * en cas de modification de ce sous-programme afin de faciliter
  1275. * la maintenance !
  1276. ************************************************************************
  1277. *
  1278. *
  1279. 'DEBPROC' EXPLORES ;
  1280. 'ARGUMENT' tabres*'TABLE' ;
  1281. 'ARGUMENT' interact/'LOGIQUE' ;
  1282. 'SI' ('NON' ('EXISTE' interact)) ;
  1283. interact = VRAI ;
  1284. 'FINSI' ;
  1285. *
  1286. 'SI' ('NON' interact) ;
  1287. 'ARGUMENT' liview/'LISTENTI' ;
  1288. 'SI' ('NON' ('EXISTE' liview)) ;
  1289. 'ARGUMENT' iview*'ENTIER' ;
  1290. liview = 'LECT' iview ;
  1291. 'FINSI' ;
  1292. niview = 'DIME' liview ;
  1293. 'SI' ('<' niview 1) ;
  1294. 'QUITTER' EXPLORES ;
  1295. 'FINSI' ;
  1296. iiview = 1 ;
  1297. 'FINSI' ;
  1298. *
  1299. * Retrieve parameters from tables
  1300. *
  1301. tabdat = tabres . 'tabdat' ;
  1302. tabgeo = tabdat . 'tabgeo' ;
  1303. tabin = tabgeo . 'tabin' ;
  1304. logst = 'EXISTE' tabin 'STRUCTURE' ;
  1305. *
  1306. H = tabgeo . 'H' ;
  1307. nh = tabgeo . 'nh' ;
  1308. $mtcbst = tabgeo . '$mtcbst' ;
  1309. $mtcb = tabgeo . '$mtcb' ;
  1310. $mthe = tabgeo . '$mthe' ;
  1311. $sthe = tabgeo . '$sthe' ;
  1312. $mtif = tabgeo . '$mtif' ;
  1313. cfc = tabgeo . 'cfc' ;
  1314. amtcbst = tabgeo . 'amtcbst' ;
  1315. amthe = tabgeo . 'amthe' ;
  1316. * QUAF meshes
  1317. _mtcbst = 'DOMA' $mtcbst 'QUAF' ;
  1318. _mthe = 'DOMA' $mthe 'QUAF' ;
  1319. mtcbst = 'DOMA' $mtcbst 'MAILLAGE' ;
  1320. mtcb = 'DOMA' $mtcb 'MAILLAGE' ;
  1321. 'SI' logst ;
  1322. mtst = 'DIFF' mtcbst mtcb ;
  1323. 'FINSI' ;
  1324. mtst = 'DIFF' mtcbst mtcb ;
  1325. mthe = 'DOMA' $mthe 'MAILLAGE' ;
  1326. mtif = 'DOMA' $mtif 'MAILLAGE' ;
  1327. *
  1328. * Precomputations
  1329. *
  1330. * One wants the height (z) not to be more than four times x or y dimension
  1331. * targetz = 4.D0 ;
  1332. targetz = 1.5D0 ;
  1333. ftour = 0.1D0 ;
  1334. _mtot = 'ET' _mtcbst _mthe ;
  1335. xmt ymt zmt = 'COORDONNEE' _mtot ;
  1336. dx = '-' ('MAXIMUM' xmt) ('MINIMUM' xmt) ;
  1337. dy = '-' ('MAXIMUM' ymt) ('MINIMUM' ymt) ;
  1338. dxy = 'MAXIMUM' ('PROG' dx dy) ;
  1339. dz = '-' ('MAXIMUM' zmt) ('MINIMUM' zmt) ;
  1340. dzdx = '/' dz dx ;
  1341. chzscale = '>' dzdx targetz ;
  1342. 'SI' chzscale ;
  1343. zfactor = '/' dzdx targetz ;
  1344. factech = ('-' ('/' 1.D0 zfactor) 1.D0) ;
  1345. dzmt = 'NOMC' 'UZ' ('*' zmt factech) 'NATURE' 'DISCRET' ;
  1346. orig = 'FORME' ;
  1347. defrm = 'FORME' dzmt ;
  1348. 'FINSI' ;
  1349. *
  1350. * manipulation maillage et champ de temperature
  1351. tcbsc = ('-' (tabres . 'TCBS') 273.15D0) ;
  1352. thec = ('-' (tabres . 'THE') 273.15D0) ;
  1353. cech = tabres . 'H' ;
  1354. nuss0 = tabres . 'nuss0' ;
  1355. reyn0 = tabres . 'reyn0' ;
  1356. pran0 = tabres . 'pran0' ;
  1357. l0 = tabres . 'l0' ;
  1358. Dh = tabres . 'Dh' ;
  1359. uz = 'EXCO' 'UZ' (tabres . 'UHE') ;
  1360. * tournage
  1361. mtot = 'ET' mtcbst mthe ;
  1362. xmt ymt zmt = 'COORDONNEE' mtot ;
  1363. mixmt = 'MINIMUM' xmt ;
  1364. miymt = 'MINIMUM' ymt ;
  1365. mizmt = 'MINIMUM' zmt ;
  1366. dx = '-' ('MAXIMUM' xmt) ('MINIMUM' xmt) ;
  1367. dy = '-' ('MAXIMUM' ymt) ('MINIMUM' ymt) ;
  1368. dz = '-' ('MAXIMUM' zmt) ('MINIMUM' zmt) ;
  1369. p1 = ('-' mixmt ('*' dx ftour))
  1370. ('-' miymt ('*' dy ftour))
  1371. mizmt ;
  1372. p2 = ('-' mixmt ('*' dx ftour))
  1373. ('-' miymt ('*' dy ftour))
  1374. ('+' mizmt 1.D0) ;
  1375. * amtcbst = 'ARETE' mtcbst ;
  1376. * amthe = 'ARETE' mthe ;
  1377. tcbsc2 thec2 mtcbst2 mthe2 amtcbst2 amthe2 =
  1378. 'TOURNER' tcbsc thec mtcbst mthe amtcbst amthe 180. p1 p2 ;
  1379. tcbsct = 'ET' tcbsc tcbsc2 ;
  1380. thect = 'ET' thec thec2 ;
  1381. mtcbstt = 'ET' mtcbst mtcbst2 ;
  1382. mthet = 'ET' mthe mthe2 ;
  1383. amtcbstt = 'ET' amtcbst amtcbst2 ;
  1384. amthet = 'ET' amthe amthe2 ;
  1385. *
  1386. 'SI' interact ;
  1387. mail = ('COULEUR' mtcb 'ROUG')
  1388. 'ET' ('COULEUR' mthe 'BLEU') ;
  1389. 'SI' (logst) ;
  1390. mail = 'ET' mail ('COULEUR' mtst 'BLANC') ;
  1391. 'FINSI' ;
  1392. npomail = 'NBNO' mail ;
  1393. nelmail = 'NBEL' mail ;
  1394. titmail = 'CHAINE' 'Mesh ' 'NBPO=' npomail
  1395. ' NBELEM=' nelmail ;
  1396. TRACMESH mail titmail VRAI ;
  1397. 'FINSI' ;
  1398. *
  1399. * Evol precalc
  1400. *
  1401. 'SI' chzscale ;
  1402. 'FORME' orig ;
  1403. 'FINSI' ;
  1404. nchan = 'DIME' (tabin . 'CHANNEL') ;
  1405. tt = 'TABLE' ;
  1406. tev = 'TABLE' ;
  1407. 'REPETER' ichan nchan ;
  1408. lighe = tabgeo . 'tlchan' . &ichan ;
  1409. evthec = 'EVOL' 'CHPO' thec lighe ;
  1410. APPEND tev 'TEMPERATURE' evthec ;
  1411. evuhe = 'EVOL' 'CHPO' uz lighe ;
  1412. APPEND tev 'VITESSE' evuhe ;
  1413. tt . &ichan = 'CHAINE' 'Canal ' &ichan ;
  1414. 'FIN' ichan ;
  1415. 'SI' chzscale ;
  1416. 'FORME' defrm ;
  1417. 'FINSI' ;
  1418. *
  1419. tcha = 'TABLE' ;
  1420. tcha . 1 = 'T' ;
  1421. tcha . 2 = 'FuelT' ;
  1422. tcha . 3 = 'FuelT2' ;
  1423. tcha . 4 = 'Excoef' ;
  1424. tcha . 5 = 'HeT' ;
  1425. tcha . 6 = 'HeUz' ;
  1426. tcha . 7 = 'HeevT' ;
  1427. tcha . 8 = 'HeevUz' ;
  1428. tcha . 9 = 'Nuss' ;
  1429. tcha . 10 = 'Reyn' ;
  1430. tcha . 11 = 'Prand' ;
  1431. tcha . 12 = 'LamHe' ;
  1432. tcha . 13 = 'Dh' ;
  1433. ntcha = 'DIME' tcha ;
  1434. 'SI' interact ;
  1435. itcha = 1 ;
  1436. noclic = VRAI ;
  1437. 'SINON' ;
  1438. itcha = 'EXTRAIRE' liview iiview ;
  1439. noclic = FAUX ;
  1440. 'FINSI' ;
  1441. *
  1442. 'REPETER' bouc2 ;
  1443. 'SI' interact ;
  1444. 'MESSAGE' 'Noclic allows not to click between each view' ;
  1445. 'MESSAGE'
  1446. 'However, one will deactivate it in order to zoom or save' ;
  1447. noclic = 'CHOI' 'Choose desired options' noclic ;
  1448. 'FINSI' ;
  1449. *
  1450. 'REPETER' bouc1;
  1451. *
  1452. 'SI' ('EGA' itcha 1) ;
  1453. tit = 'CHAINE' 'Temp. (°C)' ;
  1454. tracchpo (tcbsct 'ET' thect)
  1455. (mtcbstt 'ET' mthet)
  1456. (amtcbstt 'ET' amthet)
  1457. tit noclic ;
  1458. 'FINSI' ;
  1459. 'SI' ('EGA' itcha 2) ;
  1460. tit = 'CHAINE' 'Fuel Temp. (°C)' ;
  1461. tracchpo tcbsc mtcbst amtcbst tit noclic ;
  1462. 'FINSI' ;
  1463. 'SI' ('EGA' itcha 3) ;
  1464. tit = 'CHAINE' 'Fuel Temp. (°C)' ;
  1465. tracchpo tcbsct mtcbstt amtcbstt tit noclic ;
  1466. 'FINSI' ;
  1467. 'SI' ('EGA' itcha 4) ;
  1468. tit = 'CHAINE' 'Exchange coeff. (W.m-2.K-1)' ;
  1469. tracchml $mtif cech ('CONTOUR' mtif) tit noclic ;
  1470. 'FINSI' ;
  1471. 'SI' ('EGA' itcha 5) ;
  1472. tit = 'CHAINE' 'Temp. He (°C)' ;
  1473. tracchpo thect mthe amthe tit noclic ;
  1474. 'FINSI' ;
  1475. 'SI' ('EGA' itcha 6) ;
  1476. tit = 'CHAINE' 'Uz He (m.s-1)' ;
  1477. tracchpo uz mthe amthe tit noclic ;
  1478. 'FINSI' ;
  1479. 'SI' ('EGA' itcha 7) ;
  1480. tit = 'CHAINE' 'Helium Temperature' ;
  1481. titxthe = 'CHAINE' 's (m)' ;
  1482. titythe = 'CHAINE' 'T (°C)' ;
  1483. DESSEVOL (tev . 'TEMPERATURE') tt tit titxthe titythe noclic ;
  1484. 'FINSI' ;
  1485. 'SI' ('EGA' itcha 8) ;
  1486. tit = 'CHAINE' 'Helium Vertical Speed' ;
  1487. titxuhe = 'CHAINE' 's (m)' ;
  1488. tityuhe = 'CHAINE' 'uz (m.s-1)' ;
  1489. DESSEVOL (tev . 'VITESSE') tt tit titxuhe tityuhe noclic ;
  1490. 'FINSI' ;
  1491. 'SI' ('EGA' itcha 9) ;
  1492. tit = 'CHAINE' 'Nusselt number' ;
  1493. tracchml $mtif nuss0 ('CONTOUR' mtif) tit noclic ;
  1494. 'FINSI' ;
  1495. 'SI' ('EGA' itcha 10) ;
  1496. tit = 'CHAINE' 'Reynolds number' ;
  1497. tracchml $mtif reyn0 ('CONTOUR' mtif) tit noclic ;
  1498. 'FINSI' ;
  1499. 'SI' ('EGA' itcha 11) ;
  1500. tit = 'CHAINE' 'Prandtl number' ;
  1501. tracchml $mtif pran0 ('CONTOUR' mtif) tit noclic ;
  1502. 'FINSI' ;
  1503. 'SI' ('EGA' itcha 12) ;
  1504. tit = 'CHAINE' 'Lambda (He)' ;
  1505. tracchml $mtif l0 ('CONTOUR' mtif) tit noclic ;
  1506. 'FINSI' ;
  1507. 'SI' ('EGA' itcha 13) ;
  1508. tit = 'CHAINE' 'Hydraulic diameter (m)' ;
  1509. tracchml $mtif Dh ('CONTOUR' mtif) tit noclic ;
  1510. 'FINSI' ;
  1511. *
  1512. 'SI' interact ;
  1513. cha = tit ;
  1514. ret = 'MENU' cha 'Next' 'Previous' 'Options' ;
  1515. 'SI' ('EGA' ret 'Options') ; 'QUITTER' bouc1 ; 'FINSI';
  1516. 'SI' ('EGA' ret 'Quitter') ; 'QUITTER' bouc2; 'FINSI';
  1517. 'SI' ('EGA' ret 'Next') ; itcha = '+' itcha 1 ; 'FINSI' ;
  1518. 'SI' ('EGA' ret 'Previous') ; itcha = '-' itcha 1 ; 'FINSI' ;
  1519. 'SI' (itcha > ntcha); itcha = 1 ; 'FINSI';
  1520. 'SI' (itcha < 1); itcha = ntcha ; 'FINSI';
  1521. 'SINON' ;
  1522. iiview = '+' iiview 1 ;
  1523. 'SI' ('>' iiview niview) ;
  1524. 'QUITTER' bouc2 ;
  1525. 'SINON' ;
  1526. itcha = 'EXTRAIRE' liview iiview ;
  1527. 'FINSI' ;
  1528. 'FINSI' ;
  1529. *
  1530. 'FIN' bouc1;
  1531. 'FIN' bouc2 ;
  1532. *
  1533. 'SI' chzscale ;
  1534. 'FORME' orig ;
  1535. 'FINSI' ;
  1536. *
  1537. * End of procedure file EXPLORES
  1538. *
  1539. 'FINPROC' ;
  1540. *ENDPROCEDUR explores
  1541. *BEGINPROCEDUR genmema
  1542. ************************************************************************
  1543. * NOM : GENMEMA
  1544. * DESCRIPTION : Generate meshes and coupling matrix given base surface
  1545. * mesh
  1546. *
  1547. * Input for GENMEMA procedure
  1548. * tabin . 'INTERFACE' . i : i-th interface (line mesh)
  1549. * tabin . 'CHANNEL' . i : i-th helium channel (surface mesh)
  1550. * tabin . 'FUEL' : fuel mesh (surface mesh)
  1551. * tabin . 'STRUCTURE' : structure mesh (surface mesh) (optional)
  1552. * H : height (m) and nh : number of elements in the height
  1553. * (regular meshing in z direction)
  1554. *
  1555. * Temporary table for GENMEMA procedure
  1556. * tabout . 'INTERFACE' . i : i-th interface (surface mesh)
  1557. * tabout . 'CHANNEL' . i : i-th helium channel (volume mesh)
  1558. * tabout . 'CCONINCH' . i : i-th coupling connectivity intreface <-> channel
  1559. * tabout . 'CMATCHIN' . i : i-th coupling matrix channel -> interface
  1560. * tabout . 'CMATINCH' . i : i-th coupling matrix interface -> channel
  1561. * tabin . 'FUEL' : fuel mesh (volume mesh)
  1562. * tabin . 'STRUCTURE' : structure mesh (volume mesh) (optional)
  1563. *
  1564. * Output table for GENMEMA procedure
  1565. *
  1566. * output tabgeo should contain all the necessary geometric information
  1567. * needed further
  1568. * tabgeo . 'tabin' = tabin
  1569. * tabgeo . 'H' = H : height
  1570. * tabgeo . 'nh' = nh : number of elements in the height
  1571. * tabgeo . '$mtcbst' = NS model objet (fuel+structure)
  1572. * tabgeo . '$mtcb' = NS model objet (fuel only)
  1573. * tabgeo . '$mthe' = NS model objet (helium channels)
  1574. * tabgeo . '$sthe' = NS model objet (bottom of the helium channels)
  1575. * tabgeo . '$mtif' = NS model objet (interfaces)
  1576. * tabgeo . '$mtifb' = NS model objet (blocked interfaces)
  1577. * tabgeo . 'mcf' = coupling matrix helium -> fuel
  1578. * tabgeo . 'mfc' = coupling matrix fuel -> helium
  1579. *
  1580. *
  1581. * LANGAGE : GIBIANE-CAST3M
  1582. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  1583. * mél : gounand@semt2.smts.cea.fr
  1584. **********************************************************************
  1585. * VERSION : v1, 09/11/2004, version initiale
  1586. * HISTORIQUE : v1, 09/11/2004, création
  1587. * HISTORIQUE :
  1588. * HISTORIQUE :
  1589. ************************************************************************
  1590. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  1591. * en cas de modification de ce sous-programme afin de faciliter
  1592. * la maintenance !
  1593. ************************************************************************
  1594. *
  1595. *
  1596. 'DEBPROC' GENMEMA ;
  1597. 'ARGUMENT' tabin*'TABLE' ;
  1598. 'ARGUMENT' H*'FLOTTANT' ;
  1599. 'ARGUMENT' nh*'ENTIER' ;
  1600. *
  1601. tabout = 'TABLE' ;
  1602. tabout . 'INTERFACE' = 'TABLE' ;
  1603. tabout . 'CHANNEL' = 'TABLE' ;
  1604. tabout . 'CCONINCH' = 'TABLE' ;
  1605. tabout . 'CMATCHIN' = 'TABLE' ;
  1606. tabout . 'CMATINCH' = 'TABLE' ;
  1607. *
  1608. hnh = '/' H ('FLOTTANT' nh) ;
  1609. vechnh = (0. 0. hnh) ;
  1610. *
  1611. * Treatment of everything except 'OTHER'
  1612. *
  1613. ninterf = 'DIME' (tabin . 'INTERFACE') ;
  1614. nchanne = 'DIME' (tabin . 'CHANNEL') ;
  1615. 'SI' ('NEG' ninterf nchanne) ;
  1616. cherr = 'CHAINE' 'NEG (DIME (tabin . INTERFACE)) '
  1617. '(DIME (tabin . CHANNEL))' ;
  1618. 'ERREUR' cherr ;
  1619. 'FINSI' ;
  1620. *
  1621. * Loop on interfaces
  1622. *
  1623. * Préconditionnement
  1624. *
  1625. mott = 'MOTS' 'T' ;
  1626. pr1 = 'PROG' 0.D0 0.D0 ;
  1627. pr3 = 'PROG' 0.D0 1.D0 ;
  1628. *
  1629. 'REPETER' iinterf ninterf ;
  1630. lpreums = vrai ;
  1631. linterf = tabin . 'INTERFACE' . &iinterf ;
  1632. scan = tabin . 'CHANNEL' . &iinterf ;
  1633. * Loop on height
  1634. 'REPETER' ih nh ;
  1635. vectran = (0. 0. ('*' hnh ('FLOTTANT' ('-' &ih 1)))) ;
  1636. tli = 'PLUS' linterf vectran ;
  1637. tsc = 'PLUS' scan vectran ;
  1638. sli = 'TRANSLATION' tli 1 vechnh ;
  1639. vsc = 'VOLUME' tsc 'TRAN' 1 vechnh ;
  1640. cvsc = 'BARYCENTRE' vsc ;
  1641. vvsc = 'MESURE' vsc ;
  1642. ivvsc = '/' 1.D0 vvsc ;
  1643. pr2i = 'PROG' ivvsc 0.D0 ;
  1644. * 'LISTE' cvsc ; 'LISTE' cvsc2 ;
  1645. APPEND (tabout . 'CHANNEL') &iinterf vsc ;
  1646. * Loop on interface elements
  1647. nsli = 'NBEL' sli ;
  1648. 'REPETER' isli nsli ;
  1649. esli = 'ELEM' sli &isli ;
  1650. cesli = 'BARYCENTRE' esli ;
  1651. cco = 'MANUEL' 'SEG2' cesli cvsc ;
  1652. mci = 'MANUEL' 'RIGIDITE' cco mott 'QUEL' pr3 pr1 ;
  1653. * ('PROG' 0.D0 1.D0) ('PROG' 0.D0 0.D0) ;
  1654. mic = 'MANUEL' 'RIGIDITE' cco mott 'QUEL' pr1 pr2i ;
  1655. 'SI' lpreums ;
  1656. tabout . 'INTERFACE' . &iinterf = esli ;
  1657. tabout . 'CCONINCH' . &iinterf = cco ;
  1658. tabout . 'CMATCHIN' . &iinterf = mci ;
  1659. tabout . 'CMATINCH' . &iinterf = mic ;
  1660. lpreums = faux ;
  1661. 'SINON' ;
  1662. tabout . 'INTERFACE' . &iinterf = 'ET'
  1663. (tabout . 'INTERFACE' . &iinterf) esli ;
  1664. tabout . 'CCONINCH' . &iinterf = 'ET'
  1665. (tabout . 'CCONINCH' . &iinterf) cco ;
  1666. tabout . 'CMATCHIN' . &iinterf = 'ET'
  1667. (tabout . 'CMATCHIN' . &iinterf) mci ;
  1668. tabout . 'CMATINCH' . &iinterf = 'ET'
  1669. (tabout . 'CMATINCH' . &iinterf) mic ;
  1670. 'FINSI' ;
  1671. 'FIN' isli ;
  1672. 'FIN' ih ;
  1673. 'FIN' iinterf ;
  1674. *
  1675. * Treatment of 'FUEL' and 'STRUCTURE'
  1676. *
  1677. sother = tabin . 'FUEL' ;
  1678. vother = 'VOLUME' sother 'TRAN' nh (0. 0. H) ;
  1679. tabout . 'FUEL' = vother ;
  1680. tabout . 'FUEL2' = 'VOLUME' sother 'TRAN' 1 (0. 0. H) ;
  1681. 'SI' ('EXISTE' tabin 'STRUCTURE') ;
  1682. sother = tabin . 'STRUCTURE' ;
  1683. vother = 'VOLUME' sother 'TRAN' nh (0. 0. H) ;
  1684. tabout . 'STRUCTURE' = vother ;
  1685. tabout . 'STRUCT2' = 'VOLUME' sother 'TRAN' 1 (0. 0. H) ;
  1686. 'FINSI' ;
  1687. *
  1688. * Some eliminations
  1689. *
  1690. tinter = @STBL (tabout . 'INTERFACE') ;
  1691. tother = tabout . 'FUEL' ;
  1692. 'SI' ('EXISTE' tabout 'STRUCTURE') ;
  1693. tother = 'ET' tother (tabout . 'STRUCTURE') ;
  1694. 'FINSI' ;
  1695. 'ELIMINATION' ('ET' tinter tother) 1.D-6 ;
  1696. *
  1697. * Second part : tabgeo
  1698. *
  1699. tabgeo = 'TABLE' ;
  1700. *
  1701. * Build the global meshes
  1702. *
  1703. * Structure & Combustible
  1704. mtcb = tabout . 'FUEL' ;
  1705. amtcb = 'ARETE' (tabout . 'FUEL2') ;
  1706. 'SI' ('EXISTE' tabout 'STRUCTURE') ;
  1707. mtcbst = 'ET' mtcb (tabout . 'STRUCTURE') ;
  1708. amtcbst = 'ET' amtcb ('ARETE' (tabout . 'STRUCT2')) ;
  1709. 'SINON' ;
  1710. mtcbst = mtcb ;
  1711. amtcbst = amtcb ;
  1712. 'FINSI' ;
  1713. * Channels
  1714. *mthe = @STBL (tabout . 'CHANNEL') ;
  1715. tmthe = tabout . 'CHANNEL' ;
  1716. sthe = @STBL (tabin . 'CHANNEL') ;
  1717. amthe = 'TRANSLATION' ('CONTOUR' sthe) 1 (0. 0. H) ;
  1718. * Line in channels
  1719. nchan = 'DIME' (tabin . 'CHANNEL') ;
  1720. tlchan = 'TABLE' ;
  1721. tpechan = 'TABLE' ;
  1722. tpschan = 'TABLE' ;
  1723. 'REPETER' ichan nchan ;
  1724. selem1 = 'ELEM' (tabin . 'CHANNEL' . &ichan) 1 ;
  1725. po1 = 'POIN' ('CONTOUR' selem1) 1 ;
  1726. po2 = 'PLUS' po1 (0. 0. H) ;
  1727. lighe = 'DROIT' nh po1 po2 ;
  1728. tlchan . &ichan = lighe ;
  1729. tpechan . &ichan = po1 ;
  1730. tpschan . &ichan = po2 ;
  1731. 'FIN' ichan ;
  1732. * Interfaces
  1733. tmtif = tabout . 'INTERFACE' ;
  1734. mtif = @STBL (tabout . 'INTERFACE') ;
  1735. * Blocked interfaces
  1736. lblock = tabin . 'BLOCKED' ;
  1737. dblock = 'DIME' lblock ;
  1738. logb = ('>' dblock 0) ;
  1739. 'SI' logb ;
  1740. tchan = 'TABLE' ;
  1741. 'REPETER' iblock dblock ;
  1742. iib = 'EXTRAIRE' lblock &iblock ;
  1743. APPEND tchan 'mtifb' (tabout . 'INTERFACE' . iib) ;
  1744. 'FIN' iblock ;
  1745. mtifb = tchan . 'mtifb' ;
  1746. 'FINSI' ;
  1747. * Coupling
  1748. cfc = @STBL (tabout . 'CCONINCH') ;
  1749. mcf = @STBL (tabout . 'CMATCHIN') ;
  1750. mfc = @STBL (tabout . 'CMATINCH') ;
  1751. *
  1752. mscal = 'MOTS' 'SCAL' ;
  1753. 'OPTI' 'INCO' mscal mscal ;
  1754. mcf = 'CHANGER' mcf 'INCO' ('MOTS' 'T') ('MOTS' 'SCAL')
  1755. ('MOTS' 'Q') ('MOTS' 'SCAL') ;
  1756. mfc = 'CHANGER' mfc 'INCO' ('MOTS' 'T') ('MOTS' 'SCAL')
  1757. ('MOTS' 'Q') ('MOTS' 'SCAL') ;
  1758. * Generate the QUAF meshes
  1759. * Channels
  1760. nhe = 'DIME' tmthe ;
  1761. _tmthe = 'TABLE' ;
  1762. 'REPETER' ihe nhe ;
  1763. _tmthe . &ihe = QUAFME (tmthe . &ihe) ;
  1764. 'FIN' ihe ;
  1765. _mthe = @STBL _tmthe ;
  1766. * Interface
  1767. nif = 'DIME' tmtif ;
  1768. _tmtif = 'TABLE' ;
  1769. 'REPETER' iif nif ;
  1770. _tmtif . &iif = QUAFME (tmtif . &iif) ;
  1771. 'FIN' iif ;
  1772. _mtif = @STBL _tmtif ;
  1773. * Other
  1774. _mtcbst _mtcb _sthe =
  1775. QUAFME mtcbst mtcb sthe ;
  1776. mcbt = _mtcbst 'ET' _mtcb 'ET' _mtif 'ET' cfc
  1777. 'ET' amtcb 'ET' amtcbst ;
  1778. 'SI' logb ;
  1779. _mtifb = QUAFME mtifb ;
  1780. mcbt = 'ET' mcbt _mtifb ;
  1781. 'FINSI' ;
  1782. * Elimination of points with same coordinates
  1783. 'ELIMINATION' mcbt 1.D-6 ;
  1784. ttlchan = @STBL tlchan ;
  1785. 'ELIMINATION' (_mthe 'ET' _sthe 'ET' cfc 'ET' amthe 'ET' ttlchan)
  1786. 1.D-6 ;
  1787. * Create the Navier-Stokes model objects
  1788. * Channels
  1789. $tmthe = 'TABLE' ;
  1790. 'REPETER' ihe nhe ;
  1791. $tmthe . &ihe = MODNAV 'LINE' (_tmthe . &ihe) ;
  1792. 'FIN' ihe ;
  1793. * Interface
  1794. $tmtif = 'TABLE' ;
  1795. 'REPETER' iif nif ;
  1796. $tmtif . &iif = MODNAV 'LINE' (_tmtif . &iif) ;
  1797. 'FIN' iif ;
  1798. $mtcbst $mtcb $mthe $mtif $sthe =
  1799. MODNAV 'LINE' _mtcbst _mtcb _mthe _mtif _sthe ;
  1800. * Create the hydraulic diameter table
  1801. tdhif = 'TABLE' ;
  1802. 'REPETER' iif nif ;
  1803. tdhif . &iif = 'KCHT' ($tmtif . &iif) 'SCAL' 'CENTRE'
  1804. (tabin . 'DH' .&iif) ;
  1805. 'FIN' iif ;
  1806. dh = @STBL tdhif ;
  1807. *
  1808. * Store results
  1809. *
  1810. tabgeo . 'tabin' = tabin ;
  1811. tabgeo . 'H' = H ;
  1812. tabgeo . 'nh' = nh ;
  1813. tabgeo . '$mtcbst' = $mtcbst ;
  1814. tabgeo . '$mtcb' = $mtcb ;
  1815. tabgeo . '$tmthe' = $tmthe ;
  1816. tabgeo . '$mthe' = $mthe ;
  1817. tabgeo . '$sthe' = $sthe ;
  1818. tabgeo . '$mtif' = $mtif ;
  1819. tabgeo . 'amtcb' = amtcb ;
  1820. tabgeo . 'amtcbst' = amtcbst ;
  1821. tabgeo . 'amthe' = amthe ;
  1822. tabgeo . 'mcf' = mcf ;
  1823. tabgeo . 'mfc' = mfc ;
  1824. tabgeo . 'cfc' = cfc ;
  1825. 'SI' logb ;
  1826. $mtifb = MODNAV 'LINE' _mtifb ;
  1827. tabgeo . '$mtifb' = $mtifb ;
  1828. 'FINSI' ;
  1829. tabgeo . 'Dh' = dh ;
  1830. tabgeo . 'tlchan' = tlchan ;
  1831. tabgeo . 'tpechan' = tpechan ;
  1832. tabgeo . 'tpschan' = tpschan ;
  1833. 'RESPRO' tabgeo ;
  1834. *
  1835. * End of procedure file GENMEMA
  1836. *
  1837. 'FINPROC' ;
  1838. *ENDPROCEDUR genmema
  1839. *BEGINPROCEDUR geomhex1
  1840. ************************************************************************
  1841. * NOM : GEOMHEX1
  1842. * DESCRIPTION : 30° symmetry cell of an hexagonal geometry
  1843. * in the x-y plane
  1844. *
  1845. *
  1846. *
  1847. * LANGAGE : GIBIANE-CAST3M
  1848. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  1849. * mél : gounand@semt2.smts.cea.fr
  1850. **********************************************************************
  1851. * VERSION : v1, ??/??/2004, version initiale
  1852. * HISTORIQUE : v1, ??/??/2004, création
  1853. * HISTORIQUE :
  1854. * HISTORIQUE :
  1855. ************************************************************************
  1856. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  1857. * en cas de modification de ce sous-programme afin de faciliter
  1858. * la maintenance !
  1859. ************************************************************************
  1860. *
  1861. *
  1862. 'DEBPROC' GEOMHEX1 ;
  1863. 'ARGUMENT' Dh*'FLOTTANT' ;
  1864. 'ARGUMENT' pas*'FLOTTANT' ;
  1865. *
  1866. * Geometric quantities deduced from the one given above
  1867. *
  1868. q = '/' pas 2.D0 ;
  1869. R = '/' Dh 2.D0 ;
  1870. *
  1871. * Geometric discretization parameters
  1872. * (number of elements)
  1873. * nb (base) : number of elements for the line in (x-y) plane
  1874. * with smallest length
  1875. *
  1876. nb = 7 ;
  1877. s30 = 'SIN' 30.D0 ;
  1878. c30 = 'COS' 30.D0 ;
  1879. t30 = '/' s30 c30 ;
  1880. * length of each line
  1881. lcer = ('*' ('/' PI 6.D0) R) ;
  1882. lpdia = '-' q R ;
  1883. lgdia = '-' ('/' q c30) R ;
  1884. lhex = ('*' q t30) ;
  1885. * scaling based on shortest line
  1886. lbase = 'MINIMUM' ('PROG' lcer lpdia lgdia lhex) ;
  1887. * factors in order to have an almost regular mesh
  1888. fcer = '/' lcer lbase ;
  1889. fpdia = '/' lpdia lbase ;
  1890. fgdia = '/' lgdia lbase ;
  1891. fhex = '/' lhex lbase ;
  1892. * mesh
  1893. rbase = 'FLOTTANT' nb ;
  1894. ncer = '*' rbase fcer ;
  1895. nhex = '*' rbase fhex ;
  1896. npdia = '*' rbase fpdia ;
  1897. ngdia = '*' rbase fgdia ;
  1898. *
  1899. ncer = 'ENTIER' ('+' ncer 0.99D0) ;
  1900. nhex = 'ENTIER' ('+' nhex 0.99D0) ;
  1901. npdia = 'ENTIER' ('+' npdia 0.99D0) ;
  1902. ngdia = 'ENTIER' ('+' ngdia 0.99D0) ;
  1903. * Points definition for fuel
  1904. p0 = 0.D0 0.D0 0.D0 ;
  1905. p1 = R 0.D0 0.D0 ;
  1906. p2 = q 0.D0 0.D0 ;
  1907. p3 = q ('*' q t30) 0.D0 ;
  1908. p4 = ('*' R c30) ('*' R s30) 0.D0 ;
  1909. * Lines definition for fuel
  1910. l1 = 'DROIT' npdia p1 p2 ;
  1911. l2 = 'DROIT' nhex p2 p3 ;
  1912. l3 = 'DROIT' ngdia p3 p4 ;
  1913. l4 = 'CERCLE' ncer p4 p0 p1 ;
  1914. * Surfaces definition for fuel
  1915. ctn = l1 'ET' l2 'ET' l3 'ET' l4 ;
  1916. stcb = 'SURFACE' ctn 'PLANE' ;
  1917. * Points and surface definitions for helium (an isocele triangle with
  1918. * surface equal to the corresponding circular sector
  1919. Rp = '*' R ('**' ('/' PI 3.D0) 0.5D0) ;
  1920. p5 = Rp 0.D0 0.D0 ;
  1921. p6 = ('*' Rp c30) ('*' Rp s30) 0.D0 ;
  1922. sthe = 'MANUEL' 'TRI3' p0 p5 p6 ;
  1923. *
  1924. * Output results in a table suitable for GENMEMA
  1925. *
  1926. tabin = 'TABLE' ;
  1927. tabin . 'INTERFACE' = 'TABLE' ;
  1928. tabin . 'CHANNEL' = 'TABLE' ;
  1929. *
  1930. tabin . 'INTERFACE' . 1 = l4 ;
  1931. tabin . 'CHANNEL' . 1 = sthe ;
  1932. tabin . 'FUEL' = stcb ;
  1933. 'RESPRO' tabin ;
  1934. *
  1935. * End of procedure file GEOMHEX1
  1936. *
  1937. 'FINPROC' ;
  1938. *ENDPROCEDUR geomhex1
  1939. *BEGINPROCEDUR geomhex2
  1940. ************************************************************************
  1941. * NOM : GEOMHEX2
  1942. * DESCRIPTION : Same as GEOMHEX1 but larger symmetry cell
  1943. * in the x-y plane
  1944. *
  1945. *
  1946. *
  1947. * LANGAGE : GIBIANE-CAST3M
  1948. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  1949. * mél : gounand@semt2.smts.cea.fr
  1950. **********************************************************************
  1951. * VERSION : v1, 18/11/2004, version initiale
  1952. * HISTORIQUE : v1, 18/11/2004, création
  1953. * HISTORIQUE :
  1954. * HISTORIQUE :
  1955. ************************************************************************
  1956. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  1957. * en cas de modification de ce sous-programme afin de faciliter
  1958. * la maintenance !
  1959. ************************************************************************
  1960. *
  1961. *
  1962. 'DEBPROC' GEOMHEX2 ;
  1963. 'ARGUMENT' Dh*'FLOTTANT' ;
  1964. 'ARGUMENT' pas*'FLOTTANT' ;
  1965. *
  1966. * Geometric quantities deduced from the one given above
  1967. *
  1968. q = '/' pas 2.D0 ;
  1969. R = '/' Dh 2.D0 ;
  1970. *
  1971. * Geometric discretization parameters
  1972. * (number of elements)
  1973. * nb (base) : number of elements for the line in (x-y) plane
  1974. * with smallest length
  1975. *
  1976. nb = 7 ;
  1977. s30 = 'SIN' 30.D0 ;
  1978. c30 = 'COS' 30.D0 ;
  1979. t30 = '/' s30 c30 ;
  1980. * length of each line
  1981. lcera = ('*' ('/' PI 6.D0) R) ;
  1982. lcerb = ('*' ('/' PI 2.D0) R) ;
  1983. lpdia = '-' pas Dh ;
  1984. lgdia = '-' ('/' pas c30) R ;
  1985. lhex = '-' ('*' pas t30) R ;
  1986. * scaling based on shortest line
  1987. lbase = 'MINIMUM' ('PROG' lcera lcerb lpdia lgdia lhex) ;
  1988. * factors in order to have an almost regular mesh
  1989. fcera = '/' lcera lbase ;
  1990. fcerb = '/' lcerb lbase ;
  1991. fpdia = '/' lpdia lbase ;
  1992. fgdia = '/' lgdia lbase ;
  1993. fhex = '/' lhex lbase ;
  1994. * mesh
  1995. rbase = 'FLOTTANT' nb ;
  1996. ncera = '*' rbase fcera ;
  1997. ncerb = '*' rbase fcerb ;
  1998. nhex = '*' rbase fhex ;
  1999. npdia = '*' rbase fpdia ;
  2000. ngdia = '*' rbase fgdia ;
  2001. *
  2002. ncera = 'ENTIER' ('+' ncera 0.99D0) ;
  2003. ncerb = 'ENTIER' ('+' ncerb 0.99D0) ;
  2004. nhex = 'ENTIER' ('+' nhex 0.99D0) ;
  2005. npdia = 'ENTIER' ('+' npdia 0.99D0) ;
  2006. ngdia = 'ENTIER' ('+' ngdia 0.99D0) ;
  2007. * Points definition for fuel
  2008. p0 = 0.D0 0.D0 0.D0 ;
  2009. p1 = R 0.D0 0.D0 ;
  2010. p2 = ('-' pas R) 0.D0 0.D0 ;
  2011. p3 = pas 0.D0 0.D0 ;
  2012. p4 = pas R 0.D0 ;
  2013. p5 = pas ('*' pas t30) 0.D0 ;
  2014. p6 = ('*' R c30) ('*' R s30) 0.D0 ;
  2015. * Lines definition for fuel
  2016. l1 = 'DROIT' npdia p1 p2 ;
  2017. l2 = 'CERCLE' ncerb p2 p3 p4 ;
  2018. l3 = 'DROIT' nhex p4 p5 ;
  2019. l4 = 'DROIT' ngdia p5 p6 ;
  2020. l5 = 'CERCLE' ncera p6 p0 p1 ;
  2021. * Surfaces definition for fuel
  2022. ctn = l1 'ET' l2 'ET' l3 'ET' l4 'ET' l5 ;
  2023. stcb = 'SURFACE' ctn 'PLANE' ;
  2024. * Points and surface definitions for helium (two isocele triangles with
  2025. * surface equal to the corresponding circular sector
  2026. Rpa = '*' R ('**' ('/' PI 3.D0) 0.5D0) ;
  2027. p7 = Rpa 0.D0 0.D0 ;
  2028. p8 = ('*' Rpa c30) ('*' Rpa s30) 0.D0 ;
  2029. sthea = 'MANUEL' 'TRI3' p0 p7 p8 ;
  2030. Rpb = '*' R ('**' ('/' PI 2.D0) 0.5D0) ;
  2031. p9 = ('-' pas Rpb) 0.D0 0.D0 ;
  2032. p10 = pas Rpb 0.D0 ;
  2033. stheb = 'MANUEL' 'TRI3' p9 p3 p10 ;
  2034. *
  2035. * Output results in a table suitable for GENMEMA
  2036. *
  2037. tabin = 'TABLE' ;
  2038. tabin . 'INTERFACE' = 'TABLE' ;
  2039. tabin . 'CHANNEL' = 'TABLE' ;
  2040. *
  2041. tabin . 'INTERFACE' . 1 = l5 ;
  2042. tabin . 'CHANNEL' . 1 = sthea ;
  2043. tabin . 'INTERFACE' . 2 = l2 ;
  2044. tabin . 'CHANNEL' . 2 = stheb ;
  2045. tabin . 'FUEL' = stcb ;
  2046. 'RESPRO' tabin ;
  2047. *
  2048. * End of procedure file GEOMHEX2
  2049. *
  2050. 'FINPROC' ;
  2051. *ENDPROCEDUR geomhex2
  2052. *BEGINPROCEDUR geompl21
  2053. ************************************************************************
  2054. * NOM : GEOMPL21
  2055. * DESCRIPTION : Type 1 symmetry cell for GEOMPLA2
  2056. *
  2057. *
  2058. *
  2059. * LANGAGE : GIBIANE-CAST3M
  2060. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  2061. * mél : gounand@semt2.smts.cea.fr
  2062. **********************************************************************
  2063. * VERSION : v1, 23/11/2004, version initiale
  2064. * HISTORIQUE : v1, 23/11/2004, création
  2065. * HISTORIQUE :
  2066. * HISTORIQUE :
  2067. ************************************************************************
  2068. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  2069. * en cas de modification de ce sous-programme afin de faciliter
  2070. * la maintenance !
  2071. ************************************************************************
  2072. *
  2073. *
  2074. 'DEBPROC' GEOMPL21 ;
  2075. 'ARGUMENT' Dh*'FLOTTANT' ;
  2076. 'ARGUMENT' ef*'FLOTTANT' ;
  2077. 'ARGUMENT' ep*'FLOTTANT' ;
  2078. 'ARGUMENT' nchan*'ENTIER' ;
  2079. 'ARGUMENT' nc2*'ENTIER' ;
  2080. 'ARGUMENT' nf*'ENTIER' ;
  2081. 'ARGUMENT' np*'ENTIER' ;
  2082. *
  2083. 'SI' ('NEG' (MODULO nchan 2) 1) ;
  2084. cherr = 'CHAINE' 'nchan should be odd' ;
  2085. 'FINSI' ;
  2086. *
  2087. * Geometric quantities deduced from the one given above
  2088. *
  2089. ec = '/' Dh 2.D0 ;
  2090. ec2 = '/' ec 2 ;
  2091. nplate = '+' nchan 1 ;
  2092. L2 = '+' ('*' nplate ep) ('*' nchan ec) '+' ('*' ef 2) ;
  2093. L4 = '/' L2 2.D0 ;
  2094. *
  2095. * Discretisation
  2096. *
  2097. nplate2 = '/' nplate 2 ;
  2098. nc = '*' nc2 2 ;
  2099. *
  2100. tabin = 'TABLE' ;
  2101. tabin . 'INTERFACE' = 'TABLE' ;
  2102. tabin . 'CHANNEL' = 'TABLE' ;
  2103. iitf = 1 ;
  2104. *
  2105. * Part1 : Lines
  2106. *
  2107. p0 = 0. 0. 0. ;
  2108. p1 = 0. ('*' ef -1.D0) 0. ;
  2109. lcor = 'DROIT' nf p0 p1 ;
  2110. tablig = 'TABLE' ;
  2111. bp = p1 ;
  2112. 'REPETER' ipl nplate2 ;
  2113. p2 = 'PLUS' bp (0. ('*' ep -1.D0) 0.) ;
  2114. APPEND tablig 'LIG' ('DROIT' bp p2 np) ;
  2115. bp = p2 ;
  2116. * The last one is an half channel
  2117. 'SI' ('NEG' &ipl nplate2) ;
  2118. p2 = 'PLUS' bp (0. ('*' ec -1.D0) 0.) ;
  2119. APPEND tablig 'LIG' ('DROIT' bp p2 nc) ;
  2120. bp = p2 ;
  2121. 'SINON' ;
  2122. p2 = 'PLUS' bp (0. ('*' ec2 -1.D0) 0.) ;
  2123. APPEND tablig 'LIG' ('DROIT' bp p2 nc2) ;
  2124. bp = p2 ;
  2125. 'FINSI' ;
  2126. 'FIN' ipl ;
  2127. lcb = tablig . 'LIG' ;
  2128. p2 = 'PLUS' p0 bp ;
  2129. lch = 'DROIT' p1 p2 1 ;
  2130. *
  2131. * Part1 : left structure
  2132. *
  2133. bp = 0. 0. 0. ;
  2134. vt = ef 0. 0. ;
  2135. APPEND tabin 'STRUCTURE' ('TRANSLATION' (lcor 'ET' lcb) nf vt) ;
  2136. bp = 'PLUS' bp vt ;
  2137. *
  2138. * Loop on plates
  2139. *
  2140. 'REPETER' iplate nplate ;
  2141. * Structure part
  2142. vt = ep 0. 0. ;
  2143. lcort = 'PLUS' lcor bp ;
  2144. APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort np vt) ;
  2145. * Fuel part
  2146. lcbt = 'PLUS' lcb bp ;
  2147. APPEND tabin 'FUEL' ('TRANSLATION' lcbt np vt) ;
  2148. lcbtt = 'PLUS' lcbt vt ;
  2149. 'SI' ('>' &iplate 1) ;
  2150. APPEND (tabin . 'INTERFACE') ('-' iitf 1) lcbt ;
  2151. 'FINSI' ;
  2152. 'SI' ('<' &iplate nplate) ;
  2153. APPEND (tabin . 'INTERFACE') iitf lcbtt ;
  2154. 'FINSI' ;
  2155. bp = 'PLUS' bp vt ;
  2156. 'SI' ('<' &iplate nplate) ;
  2157. * Structure part
  2158. vt = ec 0. 0. ;
  2159. lcort = 'PLUS' lcor bp ;
  2160. p1t = 'PLUS' p1 bp ;
  2161. p2t = 'PLUS' p1t vt ;
  2162. APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort nc vt) ;
  2163. APPEND (tabin . 'INTERFACE') iitf ('DROIT' p1t p2t nc) ;
  2164. * Channel part
  2165. lcht = 'PLUS' lch bp ;
  2166. APPEND (tabin . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ;
  2167. iitf = '+' iitf 1 ;
  2168. bp = 'PLUS' bp vt ;
  2169. 'FINSI' ;
  2170. 'FIN' iplate ;
  2171. * Part1 : right structure
  2172. vt = ef 0. 0. ;
  2173. lcct = 'PLUS' ('ET' lcor lcb) bp ;
  2174. APPEND tabin 'STRUCTURE' ('TRANSLATION' lcct nf vt) ;
  2175. *
  2176. 'RESPRO' tabin ;
  2177. *
  2178. * End of procedure file GEOMPL21
  2179. *
  2180. 'FINPROC' ;
  2181. *ENDPROCEDUR geompl21
  2182. *BEGINPROCEDUR geompl22
  2183. ************************************************************************
  2184. * NOM : GEOMPL22
  2185. * DESCRIPTION : Type 2 symmetry cell for GEOMPLA2
  2186. *
  2187. *
  2188. *
  2189. * LANGAGE : GIBIANE-CAST3M
  2190. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  2191. * mél : gounand@semt2.smts.cea.fr
  2192. **********************************************************************
  2193. * VERSION : v1, 23/11/2004, version initiale
  2194. * HISTORIQUE : v1, 23/11/2004, création
  2195. * HISTORIQUE :
  2196. * HISTORIQUE :
  2197. ************************************************************************
  2198. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  2199. * en cas de modification de ce sous-programme afin de faciliter
  2200. * la maintenance !
  2201. ************************************************************************
  2202. *
  2203. *
  2204. 'DEBPROC' GEOMPL22 ;
  2205. 'ARGUMENT' Dh*'FLOTTANT' ;
  2206. 'ARGUMENT' ef*'FLOTTANT' ;
  2207. 'ARGUMENT' ep*'FLOTTANT' ;
  2208. 'ARGUMENT' nchan*'ENTIER' ;
  2209. 'ARGUMENT' nc2*'ENTIER' ;
  2210. 'ARGUMENT' nf*'ENTIER' ;
  2211. 'ARGUMENT' np*'ENTIER' ;
  2212. *
  2213. 'SI' ('NEG' (MODULO nchan 2) 1) ;
  2214. cherr = 'CHAINE' 'nchan should be odd' ;
  2215. 'FINSI' ;
  2216. *
  2217. * Geometric quantities deduced from the one given above
  2218. *
  2219. ec = '/' Dh 2.D0 ;
  2220. ec2 = '/' ec 2 ;
  2221. nplate = '+' nchan 1 ;
  2222. L2 = '+' ('*' nplate ep) ('*' nchan ec) '+' ('*' ef 2) ;
  2223. L4 = '/' L2 2.D0 ;
  2224. *
  2225. * Discretisation
  2226. *
  2227. nplate2 = '/' nplate 2 ;
  2228. nc = '*' nc2 2 ;
  2229. *
  2230. tabin = 'TABLE' ;
  2231. tabin . 'INTERFACE' = 'TABLE' ;
  2232. tabin . 'CHANNEL' = 'TABLE' ;
  2233. iitf = 1 ;
  2234. *
  2235. * Part1 : Lines
  2236. *
  2237. p0 = 0. 0. 0. ;
  2238. p1 = 0. ('*' ef -1.D0) 0. ;
  2239. lcor = 'DROIT' nf p0 p1 ;
  2240. tablig = 'TABLE' ;
  2241. bp = p1 ;
  2242. 'REPETER' ipl nplate2 ;
  2243. p2 = 'PLUS' bp (0. ('*' ep -1.D0) 0.) ;
  2244. APPEND tablig 'LIG' ('DROIT' bp p2 np) ;
  2245. bp = p2 ;
  2246. * The last one is an half channel
  2247. 'SI' ('NEG' &ipl nplate2) ;
  2248. p2 = 'PLUS' bp (0. ('*' ec -1.D0) 0.) ;
  2249. APPEND tablig 'LIG' ('DROIT' bp p2 nc) ;
  2250. bp = p2 ;
  2251. 'SINON' ;
  2252. p2 = 'PLUS' bp (0. ('*' ec2 -1.D0) 0.) ;
  2253. APPEND tablig 'LIG' ('DROIT' bp p2 nc2) ;
  2254. bp = p2 ;
  2255. 'FINSI' ;
  2256. 'FIN' ipl ;
  2257. lcb = tablig . 'LIG' ;
  2258. p2 = 'PLUS' p0 bp ;
  2259. lch = 'DROIT' p1 p2 1 ;
  2260. *
  2261. * Part1 : left structure
  2262. *
  2263. bp = 0. 0. 0. ;
  2264. vt = ef 0. 0. ;
  2265. APPEND tabin 'STRUCTURE' ('TRANSLATION' (lcor 'ET' lcb) nf vt) ;
  2266. bp = 'PLUS' bp vt ;
  2267. *
  2268. * Loop on plates
  2269. *
  2270. 'REPETER' iplate nplate2 ;
  2271. * Structure part
  2272. vt = ep 0. 0. ;
  2273. lcort = 'PLUS' lcor bp ;
  2274. APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort np vt) ;
  2275. * Fuel part
  2276. lcbt = 'PLUS' lcb bp ;
  2277. APPEND tabin 'FUEL' ('TRANSLATION' lcbt np vt) ;
  2278. lcbtt = 'PLUS' lcbt vt ;
  2279. 'SI' ('>' &iplate 1) ;
  2280. APPEND (tabin . 'INTERFACE') ('-' iitf 1) lcbt ;
  2281. 'FINSI' ;
  2282. APPEND (tabin . 'INTERFACE') iitf lcbtt ;
  2283. bp = 'PLUS' bp vt ;
  2284. 'SI' ('<' &iplate nplate2) ;
  2285. * Structure part
  2286. vt = ec 0. 0. ;
  2287. lcort = 'PLUS' lcor bp ;
  2288. p1t = 'PLUS' p1 bp ;
  2289. p2t = 'PLUS' p1t vt ;
  2290. APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort nc vt) ;
  2291. APPEND (tabin . 'INTERFACE') iitf ('DROIT' p1t p2t nc) ;
  2292. * Channel part
  2293. lcht = 'PLUS' lch bp ;
  2294. APPEND (tabin . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ;
  2295. iitf = '+' iitf 1 ;
  2296. bp = 'PLUS' bp vt ;
  2297. * The last one is a half channel
  2298. 'SINON' ;
  2299. * Structure part
  2300. vt = ec2 0. 0. ;
  2301. lcort = 'PLUS' lcor bp ;
  2302. p1t = 'PLUS' p1 bp ;
  2303. p2t = 'PLUS' p1t vt ;
  2304. APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort nc2 vt) ;
  2305. APPEND (tabin . 'INTERFACE') iitf ('DROIT' p1t p2t nc2) ;
  2306. * Channel part
  2307. lcht = 'PLUS' lch bp ;
  2308. APPEND (tabin . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ;
  2309. iitf = '+' iitf 1 ;
  2310. 'FINSI' ;
  2311. 'FIN' iplate ;
  2312. *
  2313. 'RESPRO' tabin ;
  2314. *
  2315. * End of procedure file GEOMPL22
  2316. *
  2317. 'FINPROC' ;
  2318. *ENDPROCEDUR geompl22
  2319. *BEGINPROCEDUR geompl23
  2320. ************************************************************************
  2321. * NOM : GEOMPL23
  2322. * DESCRIPTION : Type 3 symmetry cell for GEOMPLA2
  2323. *
  2324. *
  2325. *
  2326. * LANGAGE : GIBIANE-CAST3M
  2327. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  2328. * mél : gounand@semt2.smts.cea.fr
  2329. **********************************************************************
  2330. * VERSION : v1, 23/11/2004, version initiale
  2331. * HISTORIQUE : v1, 23/11/2004, création
  2332. * HISTORIQUE :
  2333. * HISTORIQUE :
  2334. ************************************************************************
  2335. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  2336. * en cas de modification de ce sous-programme afin de faciliter
  2337. * la maintenance !
  2338. ************************************************************************
  2339. *
  2340. *
  2341. 'DEBPROC' GEOMPL23 ;
  2342. 'ARGUMENT' Dh*'FLOTTANT' ;
  2343. 'ARGUMENT' ef*'FLOTTANT' ;
  2344. 'ARGUMENT' ep*'FLOTTANT' ;
  2345. 'ARGUMENT' nchan*'ENTIER' ;
  2346. 'ARGUMENT' nc2*'ENTIER' ;
  2347. 'ARGUMENT' nf*'ENTIER' ;
  2348. 'ARGUMENT' np*'ENTIER' ;
  2349. *
  2350. 'SI' ('NEG' (MODULO nchan 2) 1) ;
  2351. cherr = 'CHAINE' 'nchan should be odd' ;
  2352. 'FINSI' ;
  2353. *
  2354. * Geometric quantities deduced from the one given above
  2355. *
  2356. ec = '/' Dh 2.D0 ;
  2357. ec2 = '/' ec 2 ;
  2358. nplate = '+' nchan 1 ;
  2359. L2 = '+' ('*' nplate ep) ('*' nchan ec) '+' ('*' ef 2) ;
  2360. L4 = '/' L2 2.D0 ;
  2361. *
  2362. * Discretisation
  2363. *
  2364. nplate2 = '/' nplate 2 ;
  2365. nc = '*' nc2 2 ;
  2366. *
  2367. tabin = 'TABLE' ;
  2368. tabin . 'INTERFACE' = 'TABLE' ;
  2369. tabin . 'CHANNEL' = 'TABLE' ;
  2370. iitf = 1 ;
  2371. *
  2372. * Part1 : Lines
  2373. *
  2374. p0 = 0. 0. 0. ;
  2375. p1 = ef 0. 0. ;
  2376. lcorg = 'DROIT' nf p0 p1 ;
  2377. tablig = 'TABLE' ;
  2378. bp = p1 ;
  2379. 'REPETER' iplate nplate ;
  2380. p2 = 'PLUS' bp (ep 0. 0.) ;
  2381. APPEND tablig 'LIG' ('DROIT' bp p2 np) ;
  2382. bp = p2 ;
  2383. 'SI' ('<' &iplate nplate) ;
  2384. p2 = 'PLUS' bp (ec 0. 0.) ;
  2385. APPEND tablig 'LIG' ('DROIT' bp p2 nc) ;
  2386. bp = p2 ;
  2387. 'FINSI' ;
  2388. 'FIN' iplate ;
  2389. lcb = tablig . 'LIG' ;
  2390. p2 = 'PLUS' p0 bp ;
  2391. lch = 'DROIT' p1 p2 1 ;
  2392. bp = p2 ;
  2393. p3 = 'PLUS' bp (ef 0. 0.) ;
  2394. lcord = 'DROIT' nf p2 p3 ;
  2395. lcor = 'ET' lcorg lcord ;
  2396. *
  2397. * Part1 : bottom structure
  2398. *
  2399. bp = 0. 0. 0. ;
  2400. vt = 0. ef 0. ;
  2401. APPEND tabin 'STRUCTURE' ('TRANSLATION' (lcor 'ET' lcb) nf vt) ;
  2402. bp = 'PLUS' bp vt ;
  2403. *
  2404. * Loop on plates
  2405. *
  2406. 'REPETER' iplate nplate2 ;
  2407. * Structure part
  2408. vt = 0. ep 0. ;
  2409. lcort = 'PLUS' lcor bp ;
  2410. APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort np vt) ;
  2411. * Fuel part
  2412. lcbt = 'PLUS' lcb bp ;
  2413. APPEND tabin 'FUEL' ('TRANSLATION' lcbt np vt) ;
  2414. lcbtt = 'PLUS' lcbt vt ;
  2415. 'SI' ('>' &iplate 1) ;
  2416. APPEND (tabin . 'INTERFACE') ('-' iitf 1) lcbt ;
  2417. 'FINSI' ;
  2418. APPEND (tabin . 'INTERFACE') iitf lcbtt ;
  2419. bp = 'PLUS' bp vt ;
  2420. 'SI' ('<' &iplate nplate2) ;
  2421. * Structure part
  2422. vt = 0. ec 0. ;
  2423. lcort = 'PLUS' lcor bp ;
  2424. p1t = 'PLUS' p1 bp ;
  2425. p1tt = 'PLUS' p1t vt ;
  2426. p2t = 'PLUS' p2 bp ;
  2427. p2tt = 'PLUS' p2t vt ;
  2428. APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort nc vt) ;
  2429. APPEND (tabin . 'INTERFACE') iitf ('DROIT' p1t p1tt nc) ;
  2430. APPEND (tabin . 'INTERFACE') iitf ('DROIT' p2t p2tt nc) ;
  2431. * Channel part
  2432. lcht = 'PLUS' lch bp ;
  2433. APPEND (tabin . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ;
  2434. iitf = '+' iitf 1 ;
  2435. bp = 'PLUS' bp vt ;
  2436. * The last one is a half channel
  2437. 'SINON' ;
  2438. * Structure part
  2439. vt = 0. ec2 0. ;
  2440. lcort = 'PLUS' lcor bp ;
  2441. p1t = 'PLUS' p1 bp ;
  2442. p1tt = 'PLUS' p1t vt ;
  2443. p2t = 'PLUS' p2 bp ;
  2444. p2tt = 'PLUS' p2t vt ;
  2445. APPEND tabin 'STRUCTURE' ('TRANSLATION' lcort nc2 vt) ;
  2446. APPEND (tabin . 'INTERFACE') iitf ('DROIT' p1t p1tt nc2) ;
  2447. APPEND (tabin . 'INTERFACE') iitf ('DROIT' p2t p2tt nc2) ;
  2448. * Channel part
  2449. lcht = 'PLUS' lch bp ;
  2450. APPEND (tabin . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ;
  2451. iitf = '+' iitf 1 ;
  2452. 'FINSI' ;
  2453. 'FIN' iplate ;
  2454. *
  2455. 'RESPRO' tabin ;
  2456. *
  2457. * End of procedure file GEOMPL23
  2458. *
  2459. 'FINPROC' ;
  2460. *ENDPROCEDUR geompl23
  2461. *BEGINPROCEDUR geompla1
  2462. ************************************************************************
  2463. * NOM : GEOMPLA1
  2464. * DESCRIPTION : Mesh of a plate geometry : small symmetry cell
  2465. *
  2466. *
  2467. *
  2468. * LANGAGE : GIBIANE-CAST3M
  2469. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  2470. * mél : gounand@semt2.smts.cea.fr
  2471. **********************************************************************
  2472. * VERSION : v1, 22/11/2004, version initiale
  2473. * HISTORIQUE : v1, 22/11/2004, création
  2474. * HISTORIQUE :
  2475. * HISTORIQUE :
  2476. ************************************************************************
  2477. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  2478. * en cas de modification de ce sous-programme afin de faciliter
  2479. * la maintenance !
  2480. ************************************************************************
  2481. *
  2482. *
  2483. 'DEBPROC' GEOMPLA1 ;
  2484. 'ARGUMENT' Dh*'FLOTTANT' ;
  2485. 'ARGUMENT' ef*'FLOTTANT' ;
  2486. 'ARGUMENT' ep*'FLOTTANT' ;
  2487. 'ARGUMENT' nchan*'ENTIER' ;
  2488. *
  2489. 'SI' ('NEG' (MODULO nchan 2) 1) ;
  2490. cherr = 'CHAINE' 'nchan should be odd' ;
  2491. 'FINSI' ;
  2492. *
  2493. * Geometric quantities deduced from the one given above
  2494. *
  2495. ec = '/' Dh 2.D0 ;
  2496. ec2 = '/' ec 2 ;
  2497. nplate = '+' nchan 1 ;
  2498. L2 = '+' ('*' nplate ep) ('*' nchan ec) '+' ('*' ef 2) ;
  2499. L4 = '/' L2 2.D0 ;
  2500. *
  2501. * Discretisation
  2502. *
  2503. nplate2 = '/' nplate 2 ;
  2504. nc2 = 1 ;
  2505. nc = '*' nc2 2 ;
  2506. nf = 2 ;
  2507. np = 2 ;
  2508. *
  2509. * Tables
  2510. *
  2511. tabin1 = 'TABLE' ;
  2512. tabin1 . 'INTERFACE' = 'TABLE' ;
  2513. tabin1 . 'CHANNEL' = 'TABLE' ;
  2514. iitf = 1 ;
  2515. *
  2516. * Part1 : Lines
  2517. *
  2518. p0 = 0. 0. 0. ;
  2519. p1 = 0. ('*' ef -1.D0) 0. ;
  2520. lcor = 'DROIT' nf p0 p1 ;
  2521. tablig = 'TABLE' ;
  2522. bp = p1 ;
  2523. 'REPETER' ipl nplate2 ;
  2524. p2 = 'PLUS' bp (0. ('*' ep -1.D0) 0.) ;
  2525. APPEND tablig 'LIG' ('DROIT' bp p2 np) ;
  2526. bp = p2 ;
  2527. * The last one is an half channel
  2528. 'SI' ('NEG' &ipl nplate2) ;
  2529. p2 = 'PLUS' bp (0. ('*' ec -1.D0) 0.) ;
  2530. APPEND tablig 'LIG' ('DROIT' bp p2 nc) ;
  2531. bp = p2 ;
  2532. 'SINON' ;
  2533. p2 = 'PLUS' bp (0. ('*' ec2 -1.D0) 0.) ;
  2534. APPEND tablig 'LIG' ('DROIT' bp p2 nc2) ;
  2535. bp = p2 ;
  2536. 'FINSI' ;
  2537. 'FIN' ipl ;
  2538. lcb = tablig . 'LIG' ;
  2539. p2 = 'PLUS' p0 bp ;
  2540. lch = 'DROIT' p1 p2 1 ;
  2541. *
  2542. * Part1 : left structure
  2543. *
  2544. bp = 0. 0. 0. ;
  2545. vt = ef 0. 0. ;
  2546. APPEND tabin1 'STRUCTURE' ('TRANSLATION' (lcor 'ET' lcb) nf vt) ;
  2547. bp = 'PLUS' bp vt ;
  2548. *
  2549. * Loop on plates
  2550. *
  2551. 'REPETER' iplate nplate2 ;
  2552. * Structure part
  2553. vt = ep 0. 0. ;
  2554. lcort = 'PLUS' lcor bp ;
  2555. APPEND tabin1 'STRUCTURE' ('TRANSLATION' lcort np vt) ;
  2556. * Fuel part
  2557. lcbt = 'PLUS' lcb bp ;
  2558. APPEND tabin1 'FUEL' ('TRANSLATION' lcbt np vt) ;
  2559. lcbtt = 'PLUS' lcbt vt ;
  2560. 'SI' ('>' &iplate 1) ;
  2561. APPEND (tabin1 . 'INTERFACE') ('-' iitf 1) lcbt ;
  2562. 'FINSI' ;
  2563. APPEND (tabin1 . 'INTERFACE') iitf lcbtt ;
  2564. bp = 'PLUS' bp vt ;
  2565. 'SI' ('<' &iplate nplate2) ;
  2566. * Structure part
  2567. vt = ec 0. 0. ;
  2568. lcort = 'PLUS' lcor bp ;
  2569. p1t = 'PLUS' p1 bp ;
  2570. p2t = 'PLUS' p1t vt ;
  2571. APPEND tabin1 'STRUCTURE' ('TRANSLATION' lcort nc vt) ;
  2572. APPEND (tabin1 . 'INTERFACE') iitf ('DROIT' p1t p2t nc) ;
  2573. * Channel part
  2574. lcht = 'PLUS' lch bp ;
  2575. APPEND (tabin1 . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ;
  2576. iitf = '+' iitf 1 ;
  2577. bp = 'PLUS' bp vt ;
  2578. * The last one is a half channel
  2579. 'SINON' ;
  2580. * Structure part
  2581. vt = ec2 0. 0. ;
  2582. lcort = 'PLUS' lcor bp ;
  2583. p1t = 'PLUS' p1 bp ;
  2584. p2t = 'PLUS' p1t vt ;
  2585. APPEND tabin1 'STRUCTURE' ('TRANSLATION' lcort nc2 vt) ;
  2586. APPEND (tabin1 . 'INTERFACE') iitf ('DROIT' p1t p2t nc2) ;
  2587. * Channel part
  2588. lcht = 'PLUS' lch bp ;
  2589. APPEND (tabin1 . 'CHANNEL') iitf ('TRANSLATION' lcht 1 vt) ;
  2590. iitf = '+' iitf 1 ;
  2591. 'FINSI' ;
  2592. 'FIN' iplate ;
  2593. nitf = ('-' iitf 1) ;
  2594. *
  2595. * Perform rotations
  2596. *
  2597. tabin = 'TABLE' ;
  2598. tabin . 'INTERFACE' = 'TABLE' ;
  2599. tabin . 'CHANNEL' = 'TABLE' ;
  2600. iitf = 1 ;
  2601. pr = 0. 0. 1. ;
  2602. 'REPETER' bclrot 4 ;
  2603. arot = '*' 90. ('-' &bclrot 1) ;
  2604. append tabin 'STRUCTURE'
  2605. ('TOURNER' (tabin1 . 'STRUCTURE') arot p0 pr) ;
  2606. append tabin 'FUEL'
  2607. ('TOURNER' (tabin1 . 'FUEL') arot p0 pr) ;
  2608. 'REPETER' bitf nitf ;
  2609. append (tabin . 'INTERFACE') iitf
  2610. ('TOURNER' (tabin1 . 'INTERFACE' . &bitf) arot p0 pr) ;
  2611. append (tabin . 'CHANNEL') iitf
  2612. ('TOURNER' (tabin1 . 'CHANNEL' . &bitf) arot p0 pr) ;
  2613. iitf = '+' iitf 1 ;
  2614. 'FIN' bitf ;
  2615. 'FIN' bclrot ;
  2616. *
  2617. 'RESPRO' tabin ;
  2618. *
  2619. * End of procedure file GEOMPLA1
  2620. *
  2621. 'FINPROC' ;
  2622. *ENDPROCEDUR geompla1
  2623. *BEGINPROCEDUR geompla2
  2624. ************************************************************************
  2625. * NOM : GEOMPLA2
  2626. * DESCRIPTION : Mesh of a plate geometry
  2627. *
  2628. *
  2629. *
  2630. * LANGAGE : GIBIANE-CAST3M
  2631. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  2632. * mél : gounand@semt2.smts.cea.fr
  2633. **********************************************************************
  2634. * VERSION : v1, 22/11/2004, version initiale
  2635. * HISTORIQUE : v1, 22/11/2004, création
  2636. * HISTORIQUE :
  2637. * HISTORIQUE :
  2638. ************************************************************************
  2639. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  2640. * en cas de modification de ce sous-programme afin de faciliter
  2641. * la maintenance !
  2642. ************************************************************************
  2643. *
  2644. *
  2645. 'DEBPROC' GEOMPLA2 ;
  2646. 'ARGUMENT' Dh*'FLOTTANT' ;
  2647. 'ARGUMENT' ef*'FLOTTANT' ;
  2648. 'ARGUMENT' ep*'FLOTTANT' ;
  2649. 'ARGUMENT' nchan*'ENTIER' ;
  2650. *
  2651. 'SI' ('NEG' (MODULO nchan 2) 1) ;
  2652. cherr = 'CHAINE' 'nchan should be odd' ;
  2653. 'FINSI' ;
  2654. *
  2655. * Geometric quantities deduced from the one given above
  2656. *
  2657. ec = '/' Dh 2.D0 ;
  2658. ec2 = '/' ec 2 ;
  2659. nplate = '+' nchan 1 ;
  2660. L2 = '+' ('*' nplate ep) ('*' nchan ec) '+' ('*' ef 2) ;
  2661. mL2 = '*' L2 -1.D0 ;
  2662. L4 = '/' L2 2.D0 ;
  2663. *
  2664. * Discretization
  2665. *
  2666. nc2 = 1 ;
  2667. nf = 2 ;
  2668. np = 2 ;
  2669. *
  2670. * Type 1 cells
  2671. *
  2672. tabin1 = GEOMPL21 Dh ef ep nchan nc2 nf np ;
  2673. *
  2674. * Type 2 cells
  2675. *
  2676. tabin2 = GEOMPL22 Dh ef ep nchan nc2 nf np ;
  2677. *
  2678. * Type 3 cells
  2679. *
  2680. tabin3 = GEOMPL23 Dh ef ep nchan nc2 nf np ;
  2681. *
  2682. * Perform rotations and translations to generate total mesh
  2683. *
  2684. tabin = 'TABLE' ;
  2685. tabin . 'INTERFACE' = 'TABLE' ;
  2686. tabin . 'CHANNEL' = 'TABLE' ;
  2687. iitf = 1 ;
  2688. *
  2689. * part1 : Type 1 cells
  2690. *
  2691. nitf = 'DIME' (tabin1 . 'INTERFACE') ;
  2692. append tabin 'STRUCTURE' (tabin1 . 'STRUCTURE') ;
  2693. append tabin 'FUEL' (tabin1 . 'FUEL') ;
  2694. 'REPETER' bitf nitf ;
  2695. append (tabin . 'INTERFACE') iitf
  2696. (tabin1 . 'INTERFACE' . &bitf) ;
  2697. append (tabin . 'CHANNEL') iitf
  2698. (tabin1 . 'CHANNEL' . &bitf) ;
  2699. iitf = '+' iitf 1 ;
  2700. 'FIN' bitf ;
  2701. *
  2702. * part2 : two Type2 cells
  2703. *
  2704. 'REPETER' btype2 2 ;
  2705. 'SI' ('EGA' &btype2 1) ;
  2706. arot = 90.D0 ;
  2707. vtra = (L2 0.D0 0.D0) ;
  2708. lsym = VRAI ;
  2709. 'FINSI' ;
  2710. 'SI' ('EGA' &btype2 2) ;
  2711. arot = 180.D0 ;
  2712. vtra = (L2 0.D0 0.D0) ;
  2713. lsym = VRAI ;
  2714. 'FINSI' ;
  2715. nitf = 'DIME' (tabin2 . 'INTERFACE') ;
  2716. append tabin 'STRUCTURE'
  2717. (SYTOPL (tabin2 . 'STRUCTURE') arot vtra lsym) ;
  2718. append tabin 'FUEL'
  2719. (SYTOPL (tabin2 . 'FUEL') arot vtra lsym) ;
  2720. 'REPETER' bitf nitf ;
  2721. append (tabin . 'INTERFACE') iitf
  2722. (SYTOPL (tabin2 . 'INTERFACE' . &bitf) arot vtra lsym) ;
  2723. append (tabin . 'CHANNEL') iitf
  2724. (SYTOPL (tabin2 . 'CHANNEL' . &bitf) arot vtra lsym) ;
  2725. iitf = '+' iitf 1 ;
  2726. 'FIN' bitf ;
  2727. 'FIN' btype2 ;
  2728. *
  2729. * part3 : Type 1 cells
  2730. *
  2731. nitf = 'DIME' (tabin3 . 'INTERFACE') ;
  2732. append tabin 'STRUCTURE' (tabin3 . 'STRUCTURE') ;
  2733. append tabin 'FUEL' (tabin3 . 'FUEL') ;
  2734. 'REPETER' bitf nitf ;
  2735. append (tabin . 'INTERFACE') iitf
  2736. (tabin3 . 'INTERFACE' . &bitf) ;
  2737. append (tabin . 'CHANNEL') iitf
  2738. (tabin3 . 'CHANNEL' . &bitf) ;
  2739. iitf = '+' iitf 1 ;
  2740. 'FIN' bitf ;
  2741. *
  2742. * part4 : two Type2 cells
  2743. *
  2744. 'REPETER' btype2 2 ;
  2745. 'SI' ('EGA' &btype2 1) ;
  2746. arot = 180.D0 ;
  2747. vtra = (0.D0 0.D0 0.D0) ;
  2748. lsym = FAUX ;
  2749. 'FINSI' ;
  2750. 'SI' ('EGA' &btype2 2) ;
  2751. arot = 270.D0 ;
  2752. vtra = (0.D0 0.D0 0.D0) ;
  2753. lsym = FAUX ;
  2754. 'FINSI' ;
  2755. nitf = 'DIME' (tabin2 . 'INTERFACE') ;
  2756. append tabin 'STRUCTURE'
  2757. (SYTOPL (tabin2 . 'STRUCTURE') arot vtra lsym) ;
  2758. append tabin 'FUEL'
  2759. (SYTOPL (tabin2 . 'FUEL') arot vtra lsym) ;
  2760. 'REPETER' bitf nitf ;
  2761. append (tabin . 'INTERFACE') iitf
  2762. (SYTOPL (tabin2 . 'INTERFACE' . &bitf) arot vtra lsym) ;
  2763. append (tabin . 'CHANNEL') iitf
  2764. (SYTOPL (tabin2 . 'CHANNEL' . &bitf) arot vtra lsym) ;
  2765. iitf = '+' iitf 1 ;
  2766. 'FIN' bitf ;
  2767. 'FIN' btype2 ;
  2768. *
  2769. 'RESPRO' tabin ;
  2770. *
  2771. * End of procedure file GEOMPLA2
  2772. *
  2773. 'FINPROC' ;
  2774. *ENDPROCEDUR geompla2
  2775. *BEGINPROCEDUR geomplh1
  2776. ************************************************************************
  2777. * NOM : GEOMPLH1
  2778. * DESCRIPTION : Géométrie hexagonale à plaques
  2779. * Technical report DM2S/SFME/LTMF/RT/05-050/A
  2780. * typgeo = 1 small losange cell
  2781. * typgeo = 2 normal hexagonal cell
  2782. * typgeo = 3 large two hexagonal cells
  2783. *
  2784. *
  2785. * LANGAGE : GIBIANE-CAST3M
  2786. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  2787. * mél : gounand@semt2.smts.cea.fr
  2788. **********************************************************************
  2789. * VERSION : v1, 21/03/2005, version initiale
  2790. * HISTORIQUE : v1, 21/03/2005, création
  2791. * HISTORIQUE :
  2792. * HISTORIQUE :
  2793. ************************************************************************
  2794. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  2795. * en cas de modification de ce sous-programme afin de faciliter
  2796. * la maintenance !
  2797. ************************************************************************
  2798. *
  2799. *
  2800. 'DEBPROC' GEOMPLH1 ;
  2801. 'ARGUMENT' ept*'FLOTTANT' ;
  2802. 'ARGUMENT' eps*'FLOTTANT' ;
  2803. 'ARGUMENT' epp*'FLOTTANT' ;
  2804. 'ARGUMENT' epg*'FLOTTANT' ;
  2805. 'ARGUMENT' npp*'ENTIER' ;
  2806. 'ARGUMENT' typgeo*'ENTIER' ;
  2807. *
  2808. * On commence par projeter toutes les quantités sur une génératrice
  2809. *
  2810. ff = '/' 2.D0 ('**' 3.D0 0.5D0) ;
  2811. l = '*' ('/' ept 2.D0) ff ;
  2812. eps = '*' eps ff ;
  2813. epp = '*' epp ff ;
  2814. epg = '*' epg ff ;
  2815. eps2 = '/' eps 2.D0 ;
  2816. *
  2817. res = '-' l (eps2 '+' ('*' epp npp) '+' ('*' epg ('-' npp 1))
  2818. '+' eps) ;
  2819. epg2 = '/' res 2.D0 ;
  2820. *
  2821. * Discrétisation
  2822. *
  2823. ns2 = 1 ;
  2824. *ns2 = 2 ;
  2825. ns = '*' ns2 2 ;
  2826. ng = 2 ;
  2827. ng2 = 'ENTIER' ('+' ('*' ng ('/' epg2 epg)) 0.5D0) ;
  2828. *'MESSAGE' ('CHAINE' 'ng2 = ' ng2) ;
  2829. *'MESSAGE' ('CHAINE' 'epg = ' epg) ;
  2830. *'MESSAGE' ('CHAINE' 'epg2 = ' epg2) ;
  2831. *'MESSAGE' ('CHAINE' 'epg '-' epg2 = ' ('-' epg epg2)) ;
  2832. *ng2 = 1 ;
  2833. *ng2 = 2 ;
  2834. np = 3 ;
  2835. *ns2 = 3 ;
  2836. *ns = 3 ;
  2837. *ng = 3 ;
  2838. *ng2 = 3 ;
  2839. *np = 3 ;
  2840. *
  2841. * Build the horizontal generator
  2842. *
  2843. itg = 0 ;
  2844. tabgen = 'TABLE' ;
  2845. bp = 0.D0 0.D0 0.D0 ;
  2846. * left structure
  2847. bpp = 'PLUS' bp (eps2 0. 0.) ;
  2848. ss = 'DROIT' bp ns2 bpp ;
  2849. bp = bpp ;
  2850. itg = '+' itg 1 ;
  2851. tabgen . itg = 'TABLE' ;
  2852. tabgen . itg . 'TYPE' = 'CHAINE' 'ST' ;
  2853. tabgen . itg . 'SEG' = ss ;
  2854. * left gas channel
  2855. bpp = 'PLUS' bp (epg2 0. 0.) ;
  2856. ss = 'DROIT' bp ng2 bpp ;
  2857. bp = bpp ;
  2858. itg = '+' itg 1 ;
  2859. tabgen . itg = 'TABLE' ;
  2860. tabgen . itg . 'TYPE' = 'CHAINE' 'CH' ;
  2861. tabgen . itg . 'SEG' = ss ;
  2862. * plates and channel
  2863. 'REPETER' ipp npp ;
  2864. bpp = 'PLUS' bp (epp 0. 0.) ;
  2865. ss = 'DROIT' bp np bpp ;
  2866. bp = bpp ;
  2867. itg = '+' itg 1 ;
  2868. tabgen . itg = 'TABLE' ;
  2869. tabgen . itg . 'TYPE' = 'CHAINE' 'FU' ;
  2870. tabgen . itg . 'SEG' = ss ;
  2871. 'SI' ('NEG' &ipp npp) ;
  2872. bpp = 'PLUS' bp (epg 0. 0.) ;
  2873. ss = 'DROIT' bp ng bpp ;
  2874. bp = bpp ;
  2875. itg = '+' itg 1 ;
  2876. tabgen . itg = 'TABLE' ;
  2877. tabgen . itg . 'TYPE' = 'CHAINE' 'CH' ;
  2878. tabgen . itg . 'SEG' = ss ;
  2879. 'FINSI' ;
  2880. 'FIN' ipp ;
  2881. *
  2882. * right gas channel
  2883. bpp = 'PLUS' bp (epg2 0. 0.) ;
  2884. ss = 'DROIT' bp ng2 bpp ;
  2885. bp = bpp ;
  2886. itg = '+' itg 1 ;
  2887. tabgen . itg = 'TABLE' ;
  2888. tabgen . itg . 'TYPE' = 'CHAINE' 'CH' ;
  2889. tabgen . itg . 'SEG' = ss ;
  2890. * right structure
  2891. bpp = 'PLUS' bp (eps 0. 0.) ;
  2892. ss = 'DROIT' bp ns bpp ;
  2893. bp = bpp ;
  2894. itg = '+' itg 1 ;
  2895. tabgen . itg = 'TABLE' ;
  2896. tabgen . itg . 'TYPE' = 'CHAINE' 'ST' ;
  2897. tabgen . itg . 'SEG' = ss ;
  2898. *
  2899. * Build the vertical generators
  2900. *
  2901. prot1 = 0.D0 0.D0 0.D0 ;
  2902. prot2 = 0.D0 0.D0 1.D0 ;
  2903. arot = 120.D0 ;
  2904. tabtmp = 'TABLE' ;
  2905. 'REPETER' iitg ('DIME' tabgen) ;
  2906. titg = tabgen . &iitg ;
  2907. 'SI' ('EGA' (titg . 'TYPE') 'ST') ;
  2908. APPEND tabtmp 'GENSTR' (titg . 'SEG') ;
  2909. 'SINON' ;
  2910. APPEND tabtmp 'GENFU' (titg . 'SEG') ;
  2911. 'FINSI' ;
  2912. 'FIN' iitg ;
  2913. genstr = tabtmp . 'GENSTR' ;
  2914. genfu = tabtmp . 'GENFU' ;
  2915. *
  2916. genstr = 'TOURNER' genstr arot prot1 prot2 ;
  2917. genfu = 'TOURNER' genfu arot prot1 prot2 ;
  2918. gench = 'DROIT' ('POIN' genfu 'INITIAL') 1 ('POIN' genfu 'FINAL') ;
  2919. *gent = 'ET' (tabtmp . 'GENSTR') (tabtmp . 'GENFU') ;
  2920. *'LISTE' genstr ;
  2921. *'LISTE' genfu ;
  2922. *'LISTE' gent ;
  2923. *strgen = 'COULEUR' (genstr 'GENERATRICE' gent) 'BLAN' ;
  2924. *fugen = 'COULEUR' (genfu 'GENERATRICE' gent) 'ROUG' ;
  2925. *'OPTION' 'DIME' 2 ;
  2926. *'TRACER' ('ET' genstr ('COULEUR' gent 'ROUG')) ;
  2927. *'TRACER' fugen ;
  2928. *'TRACER' (fugen 'ET' strgen) ;
  2929. *
  2930. * Construire une cellule élémentaire dans tabin1
  2931. *
  2932. tabin1 = 'TABLE' ;
  2933. tabin1 . 'INTERFACE' = 'TABLE' ;
  2934. tabin1 . 'CHANNEL' = 'TABLE' ;
  2935. tabin1 . 'DH' = 'TABLE' ;
  2936. ich = 0 ;
  2937. bp = 0. 0. 0. ;
  2938. 'REPETER' iitg ('DIME' tabgen) ;
  2939. titg = tabgen . &iitg ;
  2940. 'SI' ('EGA' (titg . 'TYPE') 'ST') ;
  2941. li = titg . 'SEG' ;
  2942. su = ('PLUS' ('ET' genstr genfu) bp) 'GENERATRICE' li ;
  2943. APPEND tabin1 'STRUCTURE' su ;
  2944. bp = 'POIN' li 'FINAL' ;
  2945. 'FINSI' ;
  2946. 'SI' ('EGA' (titg . 'TYPE') 'CH') ;
  2947. li = titg . 'SEG' ;
  2948. ct = 'CONTOUR' (('PLUS' genfu bp) 'GENERATRICE' li) ;
  2949. dh = '/' ('*' ('MESURE' ct 'SURF') 4.D0) ('MESURE' ct) ;
  2950. * 'MESSAGE' ('CHAINE' 'Dh = ' dh) ;
  2951. li2 = 'DROIT' ('POIN' li 'INITIAL') 1 ('POIN' li 'FINAL') ;
  2952. su = ('PLUS' gench bp) 'GENERATRICE' li2 ;
  2953. ich = '+' ich 1 ;
  2954. APPEND (tabin1 . 'INTERFACE') ich ct ;
  2955. APPEND (tabin1 . 'CHANNEL') ich su ;
  2956. tabin1 . 'DH' . ich = dh ;
  2957. su = ('PLUS' genstr bp) 'GENERATRICE' li ;
  2958. APPEND tabin1 'STRUCTURE' su ;
  2959. bp = 'POIN' li 'FINAL' ;
  2960. 'FINSI' ;
  2961. 'SI' ('EGA' (titg . 'TYPE') 'FU') ;
  2962. li = titg . 'SEG' ;
  2963. su = ('PLUS' genfu bp) 'GENERATRICE' li ;
  2964. APPEND tabin1 'FUEL' su ;
  2965. su = ('PLUS' genstr bp) 'GENERATRICE' li ;
  2966. APPEND tabin1 'STRUCTURE' su ;
  2967. bp = 'POIN' li 'FINAL' ;
  2968. 'FINSI' ;
  2969. 'FIN' iitg ;
  2970. *
  2971. * Construire un bloc de trois cellules
  2972. *
  2973. tabin2 = 'TABLE' ;
  2974. tabin2 . 'INTERFACE' = 'TABLE' ;
  2975. tabin2 . 'CHANNEL' = 'TABLE' ;
  2976. tabin2 . 'DH' = 'TABLE' ;
  2977. iitf = 0 ;
  2978. p0 = 0. 0. 0. ;
  2979. pr = 0. 0. 1. ;
  2980. 'REPETER' bclrot 3 ;
  2981. arot = '*' 120.D0 ('-' &bclrot 1) ;
  2982. append tabin2 'STRUCTURE'
  2983. ('TOURNER' (tabin1 . 'STRUCTURE') arot p0 pr) ;
  2984. append tabin2 'FUEL'
  2985. ('TOURNER' (tabin1 . 'FUEL') arot p0 pr) ;
  2986. 'REPETER' bich ich ;
  2987. iitf = '+' iitf 1 ;
  2988. append (tabin2 . 'INTERFACE') iitf
  2989. ('TOURNER' (tabin1 . 'INTERFACE' . &bich) arot p0 pr) ;
  2990. append (tabin2 . 'CHANNEL') iitf
  2991. ('TOURNER' (tabin1 . 'CHANNEL' . &bich) arot p0 pr) ;
  2992. tabin2 . 'DH' . iitf = tabin1 . 'DH' . &bich ;
  2993. 'FIN' bich ;
  2994. 'FIN' bclrot ;
  2995. *
  2996. * Construire un bloc de 2 hexagones
  2997. *
  2998. tabin3 = 'TABLE' ;
  2999. tabin3 . 'INTERFACE' = 'TABLE' ;
  3000. tabin3 . 'CHANNEL' = 'TABLE' ;
  3001. tabin3 . 'DH' = 'TABLE' ;
  3002. nitf = iitf ;
  3003. iitf = 0 ;
  3004. lrot = '/' ('*' l 1.5D0) ('COS' 30.) ;
  3005. 'REPETER' ibloc 2 ;
  3006. 'SI' ('EGA' &ibloc 1) ;
  3007. ltra = 0. 0. 0. ;
  3008. 'SINON' ;
  3009. arot = '+' 90.D0 ('*' 60.D0 ('-' &ibloc 2)) ;
  3010. ltra = ('*' lrot ('COS' arot)) ('*' lrot ('SIN' arot)) 0. ;
  3011. 'FINSI' ;
  3012. append tabin3 'STRUCTURE'
  3013. ('PLUS' (tabin2 . 'STRUCTURE') ltra) ;
  3014. append tabin3 'FUEL'
  3015. ('PLUS' (tabin2 . 'FUEL') ltra) ;
  3016. 'REPETER' bitf nitf ;
  3017. iitf = '+' iitf 1 ;
  3018. append (tabin3 . 'INTERFACE') iitf
  3019. ('PLUS' (tabin2 . 'INTERFACE' . &bitf) ltra) ;
  3020. append (tabin3 . 'CHANNEL') iitf
  3021. ('PLUS' (tabin2 . 'CHANNEL' . &bitf) ltra) ;
  3022. tabin3 . 'DH' . iitf = tabin2 . 'DH' . &bitf ;
  3023. 'FIN' bitf ;
  3024. 'FIN' ibloc ;
  3025. *
  3026. * Compute hydraulic diameter
  3027. *
  3028. 'SI' ('EGA' typgeo 1) ;
  3029. tabin = tabin1 ;
  3030. 'FINSI' ;
  3031. 'SI' ('EGA' typgeo 2) ;
  3032. tabin = tabin2 ;
  3033. 'FINSI' ;
  3034. 'SI' ('EGA' typgeo 3) ;
  3035. tabin = tabin3 ;
  3036. 'FINSI' ;
  3037. *'LISTE' (tabin . 'DH') ;
  3038. *fu = 'COULEUR' (tabin . 'FUEL') 'ROUG' ;
  3039. *st = 'COULEUR' (tabin . 'STRUCTURE') 'BLAN' ;
  3040. *ch = 'COULEUR' (@STBL (tabin . 'CHANNEL')) 'BLEU' ;
  3041. *it = 'COULEUR' (@STBL (tabin . 'INTERFACE')) 'JAUN' ;
  3042. *'OPTION' 'DIME' 2 ;
  3043. *'TRACER' (fu 'ET' st 'ET' ch) ;
  3044. *'TRACER' it ;
  3045. *'FIN' ;
  3046. *
  3047. *tabin = 'TABLE' ;
  3048. 'RESPRO' tabin epg2 ;
  3049. *
  3050. * End of procedure file GEOMPLH1
  3051. *
  3052. 'FINPROC' ;
  3053. *ENDPROCEDUR geomplh1
  3054. *BEGINPROCEDUR modnav
  3055. ************************************************************************
  3056. * NOM : MODNAV
  3057. * DESCRIPTION :
  3058. *
  3059. *
  3060. *
  3061. * LANGAGE : GIBIANE-CAST3M
  3062. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  3063. * mél : gounand@semt2.smts.cea.fr
  3064. **********************************************************************
  3065. * VERSION : v1, 04/06/2003, version initiale
  3066. * HISTORIQUE : v1, 04/06/2003, création
  3067. * HISTORIQUE :
  3068. * HISTORIQUE :
  3069. ************************************************************************
  3070. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  3071. * en cas de modification de ce sous-programme afin de faciliter
  3072. * la maintenance !
  3073. ************************************************************************
  3074. *
  3075. *
  3076. 'DEBPROC' MODNAV ;
  3077. 'ARGUMENT' dd*'MOT' ;
  3078. 'REPETER' bcl ;
  3079. 'ARGUMENT' mquaf/'MAILLAGE' ;
  3080. 'SI' ('EXISTE' mquaf) ;
  3081. modn = 'MODELISER' mquaf 'NAVIER_STOKES' dd ;
  3082. 'RESPRO' modn ;
  3083. 'SINON' ;
  3084. 'QUITTER' bcl ;
  3085. 'FINSI' ;
  3086. 'FIN' bcl ;
  3087. *
  3088. * End of procedure file MODNAV
  3089. *
  3090. 'FINPROC' ;
  3091. *ENDPROCEDUR modnav
  3092. *BEGINPROCEDUR prpcb
  3093. ************************************************************************
  3094. * NOM : PRPCB
  3095. *-----------------------------------------------------------------------
  3096. * Thermal conductivity of a CerCer fuel
  3097. *-----------------------------------------------------------------------
  3098. * Input : T ou TS : temperature (CHPOINT or FLOTTANT)
  3099. * (degree K)
  3100. * Validity domaine : 500 to 1300 degree C
  3101. * IRRAD : Irradiated fuel ?
  3102. * Output : LUPU : thermal conductivity of (U,Pu) same type as T
  3103. * LSIC : thermal conductivity of SiC same type as T
  3104. * LCB : thermal conductivity of CerCer fuel same type as T
  3105. * (W.m-1.K-1)
  3106. *-----------------------------------------------------------------------
  3107. *
  3108. *
  3109. *
  3110. * LANGAGE : GIBIANE-CAST3M
  3111. * AUTEUR :
  3112. **********************************************************************
  3113. * VERSION : v1.1, 06/10/2004 Test domaine de validité
  3114. * VERSION : v1, 20/10/2003, version initiale
  3115. * HISTORIQUE : v1, 20/10/2003, création
  3116. * HISTORIQUE :
  3117. * HISTORIQUE :
  3118. ************************************************************************
  3119. *
  3120. *
  3121. 'DEBPROC' PRPCB ;
  3122. 'ARGUMENT' irrad*'LOGIQUE' ;
  3123. 'ARGUMENT' t/'CHPOINT' ;
  3124. 'SI' ('EXISTE' t) ;
  3125. typarg = 'MOT' 'CHPOINT' ;
  3126. 'SINON' ;
  3127. 'ARGUMENT' t*'FLOTTANT' ;
  3128. typarg = 'MOT' 'FLOTTANT' ;
  3129. 'FINSI';
  3130. *
  3131. * Validity domain (in °C)
  3132. *
  3133. vdinfc = 499.D0 ;
  3134. vdsupc = 1301.D0 ;
  3135. * PORO : Porosity (controled size)
  3136. * BETA : Coefficient to take into account the porosity
  3137. * in the Maxwell-Eucken law
  3138. * FVOL : Volume fraction of (U,Pu)C inclusions in the SiC
  3139. * matrix
  3140. * If irrad=true, we choose a
  3141. * combrat (at%) combustion ratio of 10 at% for (U,PU)C
  3142. * tirradc (°C) and an irradiation temperature of
  3143. * 1125°C for the SiC .
  3144. poro = 0.15D0 ;
  3145. beta = 2.D0 ;
  3146. fvol = 0.7D0 ;
  3147. combrat = 10.D0 ;
  3148. tirradc = 1125.D0 ;
  3149. *
  3150. * Coefficients for the correlations
  3151. *
  3152. * (U,Pu)C
  3153. c1 = 12.76D0 ;
  3154. c2 = 8.71D-3 ;
  3155. c3 = -1.88D-6 ;
  3156. * SiC
  3157. a = 42.58D0 ;
  3158. b = -1.5564D4 ;
  3159. c = 1.2977D7 ;
  3160. d = -1.8458D9 ;
  3161. * SiC irradié
  3162. e = 3.91112D-2 ;
  3163. f = 2.24732D-3 ;
  3164. *
  3165. 'SI' ('EGA' typarg 'FLOTTANT') ;
  3166. t1 = 1.D0 ;
  3167. 'SINON' ;
  3168. t = 'NOMC' 'SCAL' t ;
  3169. tmail = 'EXTRAIRE' t 'MAIL' ;
  3170. t1 = 'MANUEL' 'CHPO' tmail 1 'SCAL' 1.D0 'NATURE' 'DISCRET' ;
  3171. 'FINSI' ;
  3172. *
  3173. tc = '-' t ('*' t1 273.15D0) ;
  3174. *
  3175. * Test if temperature is in the validity range
  3176. *
  3177. 'SI' ('EGA' typarg 'FLOTTANT') ;
  3178. mintc = tc ; maxtc = tc ;
  3179. 'SINON' ;
  3180. mintc = 'MINIMUM' tc ;
  3181. maxtc = 'MAXIMUM' tc ;
  3182. 'FINSI' ;
  3183. testval = 'ET' ('>' mintc vdinfc) ('<' maxtc vdsupc) ;
  3184. *
  3185. tc2 = '**' tc 2 ;
  3186. * (U,Pu)C non irradiated and 100% dense
  3187. lupu1 = '+' ('+' ('*' tc c2) ('*' tc2 c3))
  3188. c1 ;
  3189. * (U,Pu)C non irradiated, porous
  3190. cpor = '/' ('-' 1.d0 poro) ('+' 1.d0 ('*' beta poro)) ;
  3191. lupu2 = '*' lupu1 cpor ;
  3192. * (U,Pu)C irradiated porous
  3193. 'SI' irrad ;
  3194. cirrad = ('-' 1.d0 ('*' 0.02d0 combrat)) ;
  3195. lupu = '*' lupu2 cirrad ;
  3196. 'SINON' ;
  3197. lupu = lupu2 ;
  3198. 'FINSI' ;
  3199. * SiC non irradiated and 100% dense
  3200. it = '/' t1 t ;
  3201. it2 = '**' it 2 ;
  3202. it3 = '*' it2 it ;
  3203. lsic1 = '+' ('+' ('*' it b)
  3204. ('+' ('*' it2 c) ('*' it3 d)))
  3205. a ;
  3206. * SiC irradiated
  3207. 'SI' irrad ;
  3208. cirrad = '*' ('EXP' ('*' tirradc f))
  3209. e ;
  3210. lsic = '*' lsic1 cirrad ;
  3211. 'SINON' ;
  3212. lsic = lsic1 ;
  3213. 'FINSI' ;
  3214. * CerCer
  3215. lmat = lsic ;
  3216. lincl = lupu ;
  3217. lmat2 = '*' lmat 2.d0 ;
  3218. lmi = '-' lmat lincl ;
  3219. numer = '+' lincl
  3220. ('+' lmat2
  3221. ('*' lmi ('*' -2.d0 fvol))) ;
  3222. denom = '+' lincl
  3223. ('+' lmat2
  3224. ('*' lmi fvol)) ;
  3225. lcb = '*' lmat ('/' numer denom) ;
  3226. 'RESPRO' lupu lsic lcb testval ;
  3227. *
  3228. * End of procedure file PRPCB
  3229. *
  3230. 'FINPROC' ;
  3231. *ENDPROCEDUR prpcb
  3232. *BEGINPROCEDUR prphe
  3233. ************************************************************************
  3234. * NOM : PRPHE
  3235. *-----------------------------------------------------------------------
  3236. * Thermal properties of Helium 4
  3237. *-----------------------------------------------------------------------
  3238. * Input : ptot : pressure (bars)
  3239. * T : temperature (K) (CHPOINT or FLOTTANT)
  3240. *
  3241. * Output : RHOHE : density (kg.m-3)
  3242. * MUHE : viscosity (kg.m-1.s-1)
  3243. * LHE : thermal conductivity (W.m-1.K-1)
  3244. * CPHE : specific heat (at constant pressure) (J.kg-1.K-1)
  3245. *-----------------------------------------------------------------------
  3246. *
  3247. *
  3248. *
  3249. * LANGAGE : GIBIANE-CAST3M
  3250. * AUTEUR :
  3251. **********************************************************************
  3252. * VERSION : v1.1, 06/10/2004, test + simplification
  3253. * VERSION : v1, 26/02/2003, version initiale
  3254. * HISTORIQUE : v1, 26/02/2003, création
  3255. * HISTORIQUE :
  3256. * HISTORIQUE :
  3257. ************************************************************************
  3258. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  3259. * en cas de modification de ce sous-programme afin de faciliter
  3260. * la maintenance !
  3261. ************************************************************************
  3262. *
  3263. *
  3264. 'DEBPROC' PRPHE ;
  3265. 'ARGUMENT' ptot*'FLOTTANT' ;
  3266. 'ARGUMENT' t/'CHPOINT' ;
  3267. 'SI' ('EXISTE' t) ;
  3268. typarg = 'MOT' 'CHPOINT' ;
  3269. 'SINON' ;
  3270. 'ARGUMENT' t*'FLOTTANT' ;
  3271. typarg = 'MOT' 'FLOTTANT' ;
  3272. 'FINSI';
  3273. *
  3274. pref = 101325. ;
  3275. ppa = '*' ptot pref ;
  3276. *
  3277. * Validity domain
  3278. *
  3279. vdpinf = 1. ;
  3280. vdpsup = 100. ;
  3281. vdtinf = 273. ;
  3282. vdtsup = 1500. ;
  3283. * Perfect gas constant for helium
  3284. rhe = 2077.22 ;
  3285. cphe = 5193. ;
  3286. C1 = 9.489433E-04 ;
  3287. C2 = 9.528079E-04 ;
  3288. C3 = 3.420680E-02 ;
  3289. C4 = 2.739470E-03 ;
  3290. C5 = 9.409120E-04 ;
  3291. *
  3292. 'SI' ('EGA' typarg 'FLOTTANT') ;
  3293. t1 = 1.D0 ;
  3294. 'SINON' ;
  3295. t = 'NOMC' 'SCAL' t ;
  3296. tmail = 'EXTRAIRE' t 'MAIL' ;
  3297. t1 = 'MANUEL' 'CHPO' tmail 1 'SCAL' 1.D0 'NATURE' 'DISCRET' ;
  3298. 'FINSI' ;
  3299. * Test validity range
  3300. *
  3301. minp = ptot ;
  3302. maxp = ptot ;
  3303. 'SI' ('EGA' typarg 'FLOTTANT') ;
  3304. mint = t ; maxt = t ;
  3305. 'SINON' ;
  3306. mint = 'MINIMUM' t ;
  3307. maxt = 'MAXIMUM' t ;
  3308. 'FINSI' ;
  3309. testval = 'ET' ('ET' ('>' mint vdtinf) ('<' maxt vdtsup))
  3310. ('ET' ('>' minp vdpinf) ('<' maxp vdpsup))
  3311. ;
  3312. *
  3313. b = ('/' ('*' t1 c4) ('+' t1 ('*' t c5)))
  3314. '+' ('/' ('*' t1 c2) ('-' t1 ('*' t c3)))
  3315. '+' c1 ;
  3316. rhohe = '*' ('/' t1 ('+' ('*' t rhe) ('*' b ppa))) ppa ;
  3317. muhe = '*' ('**' t 0.687) 3.953D-7 ;
  3318. lhe = '*' ('**' t 0.701) 2.774D-3 ;
  3319. 'RESPRO' rhohe muhe lhe cphe testval ;
  3320. *
  3321. * End of procedure file PRPHE
  3322. *
  3323. 'FINPROC' ;
  3324. *ENDPROCEDUR prphe
  3325. *BEGINPROCEDUR quafme
  3326. ************************************************************************
  3327. * NOM : QUAFME
  3328. * DESCRIPTION :
  3329. *
  3330. *
  3331. *
  3332. * LANGAGE : GIBIANE-CAST3M
  3333. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  3334. * mél : gounand@semt2.smts.cea.fr
  3335. **********************************************************************
  3336. * VERSION : v1, 04/06/2003, version initiale
  3337. * HISTORIQUE : v1, 04/06/2003, création
  3338. * HISTORIQUE :
  3339. * HISTORIQUE :
  3340. ************************************************************************
  3341. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  3342. * en cas de modification de ce sous-programme afin de faciliter
  3343. * la maintenance !
  3344. ************************************************************************
  3345. *
  3346. *
  3347. 'DEBPROC' QUAFME ;
  3348. 'REPETER' bcl ;
  3349. 'ARGUMENT' mquad/'MAILLAGE' ;
  3350. 'SI' ('EXISTE' mquad) ;
  3351. mquaf = 'CHANGER' mquad 'QUAF' ;
  3352. 'RESPRO' mquaf ;
  3353. 'SINON' ;
  3354. 'QUITTER' bcl ;
  3355. 'FINSI' ;
  3356. 'FIN' bcl ;
  3357. *
  3358. * End of procedure file QUAFME
  3359. *
  3360. 'FINPROC' ;
  3361. *ENDPROCEDUR quafme
  3362. *BEGINPROCEDUR summdat
  3363. ************************************************************************
  3364. * NOM : SUMMDAT
  3365. * DESCRIPTION :
  3366. * SUMMDAT prints a summary of the datas.
  3367. *
  3368. *
  3369. *
  3370. * LANGAGE : GIBIANE-CAST3M
  3371. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  3372. * mél : gounand@semt2.smts.cea.fr
  3373. **********************************************************************
  3374. * VERSION : v1, 17/11/2004, version initiale
  3375. * HISTORIQUE : v1, 17/11/2004, création
  3376. * HISTORIQUE :
  3377. * HISTORIQUE :
  3378. ************************************************************************
  3379. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  3380. * en cas de modification de ce sous-programme afin de faciliter
  3381. * la maintenance !
  3382. ************************************************************************
  3383. *
  3384. *
  3385. 'DEBPROC' SUMMDAT ;
  3386. 'ARGUMENT' tabdat*'TABLE' ;
  3387. *
  3388. * Retrieve parameters from tables
  3389. *
  3390. tabgeo = tabdat . 'tabgeo' ;
  3391. tabin = tabgeo . 'tabin' ;
  3392. tabphy = tabdat . 'tabphy' ;
  3393. tabnum = tabdat . 'tabnum' ;
  3394. *
  3395. ikas = tabdat . 'ikas' ;
  3396. *
  3397. lblock = tabin . 'BLOCKED' ;
  3398. *
  3399. H = tabgeo . 'H' ;
  3400. $mtcbst = tabgeo . '$mtcbst' ;
  3401. $mthe = tabgeo . '$mthe' ;
  3402. * QUAF meshes
  3403. mtcbst = 'DOMA' $mtcbst 'MAILLAGE' ;
  3404. mthe = 'DOMA' $mthe 'MAILLAGE' ;
  3405. *
  3406. tabphy = tabdat . 'tabphy' ;
  3407. * Interface
  3408. Dh = tabphy . 'Dh' ;
  3409. * Helium
  3410. * vhe = tabphy . 'vhe' ;
  3411. qhe = tabphy . 'qhe' ;
  3412. prhe = tabphy . 'prhe' ;
  3413. theek = tabphy . 'theek' ;
  3414. theec = '-' theek 273.15D0 ;
  3415. * compute bottom He speed
  3416. rhohe muhe lhe cphe dum = PRPHE prhe theek ;
  3417. vhe = '/' qhe rhohe ;
  3418. * Fuel
  3419. pvol = tabphy . 'pvol' ;
  3420. pvar = tabphy . 'pvar' ;
  3421. gamma = tabphy . 'gamma' ;
  3422. irrad = tabphy . 'irrad' ;
  3423. maxit = tabnum . 'maxit' ;
  3424. rescvg = tabnum . 'rescvg' ;
  3425. solvit = tabnum . 'solvit' ;
  3426. *
  3427. 'MESSAGE' '**************' ;
  3428. 'MESSAGE' ('CHAINE' 'Case ' ikas) ;
  3429. 'SI' ('ET' ('>EG' ikas 1) ('&lt;EG' ikas 3)) ;
  3430. chcore = 'CHAINE' 'Hexagonal core' ;
  3431. 'FINSI' ;
  3432. 'SI' ('ET' ('>EG' ikas 4) ('&lt;EG' ikas 6)) ;
  3433. chcore = 'CHAINE' 'Plate core' ;
  3434. 'FINSI' ;
  3435. 'SI' ('ET' ('>EG' ikas 7) ('&lt;EG' ikas 29)) ;
  3436. chcore = 'CHAINE' 'Hexagonal plate core' ;
  3437. 'FINSI' ;
  3438. 'SI' ('>EG' ikas 30) ;
  3439. chcore = 'CHAINE' 'Modified hexagonal plate core' ;
  3440. 'FINSI' ;
  3441. dlblock = 'DIME' lblock ;
  3442. 'SI' ('EGA' dlblock 0) ;
  3443. cblock = 'CHAINE' 'with no blocked channels' ;
  3444. 'SINON' ;
  3445. cblock = 'CHAINE' 'with ' dlblock ' blocked channels :' ;
  3446. 'FINSI' ;
  3447. 'MESSAGE' ('CHAINE' chcore ' ' cblock) ;
  3448. 'SI' ('NEG' dlblock 0) ;
  3449. cnum = 'CHAINE' ' ' ;
  3450. 'REPETER' ilblock dlblock ;
  3451. cnum = 'CHAINE' cnum ('EXTRAIRE' lblock &ilblock) ' ' ;
  3452. 'FIN' ilblock ;
  3453. 'MESSAGE' cnum ;
  3454. pcflow= 'ENTIER' ('*' fblock 100.) ;
  3455. 'SI' ('>' pcflow 0) ;
  3456. 'MESSAGE' ('CHAINE' 'Residual flow rate = ' pcflow ' %') ;
  3457. 'SINON' ;
  3458. 'MESSAGE' ('CHAINE' 'Residual flow rate = ' (formar pcflow 2)) ;
  3459. 'FINSI' ;
  3460. 'FINSI' ;
  3461. *
  3462. * Geometry
  3463. *
  3464. 'MESSAGE' '-----------' ;
  3465. 'MESSAGE' 'Geometry :' ;
  3466. 'MESSAGE' ('CHAINE' 'Height = ' (formar H 2) ' m') ;
  3467. mail = mtcbst 'ET' mthe ;
  3468. npomail = 'NBNO' mail ;
  3469. nelmail = 'NBEL' mail ;
  3470. 'MESSAGE' ('CHAINE' 'Mesh : nb. points=' npomail
  3471. ' ; nb. elem=' nelmail) ;
  3472. *
  3473. * Physics
  3474. *
  3475. 'MESSAGE' '-----------' ;
  3476. 'MESSAGE' 'Physics :' ;
  3477. dhmin = 'MINIMUM' Dh ;
  3478. dhmax = 'MAXIMUM' Dh ;
  3479. 'MESSAGE' ('CHAINE' 'Min hydraulic diameter = ' (formar dhmin 2) ' m') ;
  3480. 'MESSAGE' ('CHAINE' 'Max hydraulic diameter = ' (formar dhmax 2) ' m') ;
  3481. 'MESSAGE' ('CHAINE' 'He pressure = '
  3482. (formar prhe 2) ' bar') ;
  3483. 'MESSAGE' ('CHAINE' 'He flow rate = ' (formar qhe 2)
  3484. ' kg.m-2.s-1') ;
  3485. 'MESSAGE' ('CHAINE' 'Bottom He speed = ' (formar vhe 2)
  3486. ' m.s-1') ;
  3487. 'MESSAGE' ('CHAINE' 'Bottom He temp. = ' (formar theec 2)
  3488. ' degrees C') ;
  3489. 'MESSAGE' ('CHAINE' 'Volumetric core power = ' (formar pvol 2)
  3490. ' W.m-3') ;
  3491. 'SI' pvar ;
  3492. chpvar = 'CHAINE'
  3493. 'Z-cosine power profile with peaking factor gamma = '
  3494. (formar gamma 2) ;
  3495. 'SINON' ;
  3496. chpvar = 'Z-constant power profile ' ;
  3497. 'FINSI' ;
  3498. 'MESSAGE' chpvar ;
  3499. 'SI' irrad ;
  3500. chirr = 'The fuel is irradiated ' ;
  3501. 'SINON' ;
  3502. chirr = 'The fuel is new ' ;
  3503. 'FINSI' ;
  3504. 'MESSAGE' chirr ;
  3505. *
  3506. * Numerics
  3507. *
  3508. 'MESSAGE' '-----------' ;
  3509. 'MESSAGE' 'Numerics :' ;
  3510. 'MESSAGE' ('CHAINE' 'Max. nb of non-linear iterations : ' maxit) ;
  3511. 'MESSAGE' ('CHAINE' 'Max. temperature residual : '
  3512. (formar rescvg 2)) ;
  3513. 'SI' solvit ;
  3514. chsol = 'CHAINE' 'Iterative linear solver' ;
  3515. 'SINON' ;
  3516. chsol = 'CHAINE' 'Direct linear solver' ;
  3517. 'FINSI' ;
  3518. 'MESSAGE' chsol ;
  3519. 'MESSAGE' ('CHAINE' '3D Thermics relaxation factor : '
  3520. (formar omcbst 2)) ;
  3521. 'MESSAGE' ('CHAINE' '1D Thermohydraulics rel. factor : '
  3522. (formar omhe 2)) ;
  3523. 'MESSAGE' '**************' ;
  3524. *
  3525. * End of procedure file SUMMDAT
  3526. *
  3527. 'FINPROC' ;
  3528. *ENDPROCEDUR summdat
  3529. *BEGINPROCEDUR summres
  3530. ************************************************************************
  3531. * NOM : SUMMRES
  3532. * DESCRIPTION :
  3533. * SUMMRES prints a summary of the results of the computation
  3534. * it also does some validation tests (hence the return value).
  3535. *
  3536. *
  3537. *
  3538. * LANGAGE : GIBIANE-CAST3M
  3539. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  3540. * mél : gounand@semt2.smts.cea.fr
  3541. **********************************************************************
  3542. * VERSION : v1, 17/11/2004, version initiale
  3543. * HISTORIQUE : v1, 17/11/2004, création
  3544. * HISTORIQUE :
  3545. * HISTORIQUE :
  3546. ************************************************************************
  3547. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  3548. * en cas de modification de ce sous-programme afin de faciliter
  3549. * la maintenance !
  3550. ************************************************************************
  3551. *
  3552. *
  3553. 'DEBPROC' SUMMRES ;
  3554. 'ARGUMENT' tabres*'TABLE' ;
  3555. *
  3556. * Retrieve parameters from tables
  3557. *
  3558. tabdat = tabres . 'tabdat' ;
  3559. ikas = tabdat . 'ikas' ;
  3560. tabgeo = tabdat . 'tabgeo' ;
  3561. tabin = tabgeo . 'tabin' ;
  3562. H = tabgeo . 'H' ;
  3563. nh = tabgeo . 'nh' ;
  3564. $mtcbst = tabgeo . '$mtcbst' ;
  3565. $mtcb = tabgeo . '$mtcb' ;
  3566. $mthe = tabgeo . '$mthe' ;
  3567. $sthe = tabgeo . '$sthe' ;
  3568. $mtif = tabgeo . '$mtif' ;
  3569. * QUAF meshes
  3570. _mtcbst = 'DOMA' $mtcbst 'QUAF' ;
  3571. _mthe = 'DOMA' $mthe 'QUAF' ;
  3572. mtcbst = 'DOMA' $mtcbst 'MAILLAGE' ;
  3573. mthe = 'DOMA' $mthe 'MAILLAGE' ;
  3574. mtif = 'DOMA' $mtif 'MAILLAGE' ;
  3575. *
  3576. tabphy = tabdat . 'tabphy' ;
  3577. prhe = tabphy . 'prhe' ;
  3578. *
  3579. tcpus = tabres . 'tcpus' ;
  3580. *
  3581. testerr = FAUX ;
  3582. 'MESSAGE' '**************' ;
  3583. 'MESSAGE' ('CHAINE' 'Case ' ikas) ;
  3584. mail = mtcbst 'ET' mthe ;
  3585. npomail = 'NBNO' mail ;
  3586. nelmail = 'NBEL' mail ;
  3587. 'MESSAGE' ('CHAINE' 'nb. points=' npomail ' ; nb. elem=' nelmail) ;
  3588. 'MESSAGE' ('CHAINE' 'CPU Time (s)=' tcpus) ;
  3589. *
  3590. * Verification of energy balance
  3591. *
  3592. 'MESSAGE' '-----------' ;
  3593. 'MESSAGE' 'Energy balance :' ;
  3594. * Power in the fuel
  3595. pcb = tabres . 'PCB' ;
  3596. chvolcb = 'DOMA' $mtcb 'VOLUME' ;
  3597. pdegcb = 'MAXIMUM' ('RESULT' ('*' chvolcb pcb)) ;
  3598. * Integrated flux on the channel boundaries
  3599. f0 = tabres . 'F0' ;
  3600. pdegif = 'MAXIMUM' ('RESULT' f0) ;
  3601. errpif = '*' (ERRREL pdegif pdegcb) 100.D0 ;
  3602. * Power gained by helium..
  3603. the = tabres . 'THE' ;
  3604. qhe = tabres . 'QHE' ;
  3605. * .. in each channels
  3606. nchan = 'DIME' (tabin . 'CHANNEL') ;
  3607. pgcan = 0.D0 ;
  3608. 'REPETER' ichan nchan ;
  3609. po1 = tabgeo . 'tpechan' . &ichan ;
  3610. po2 = tabgeo . 'tpschan' . &ichan ;
  3611. tent = 'EXTRAIRE' the 'SCAL' po1 ;
  3612. tsor = 'EXTRAIRE' the 'SCAL' po2 ;
  3613. qent = 'EXTRAIRE' qhe 'SCAL' po1 ;
  3614. qsor = 'EXTRAIRE' qhe 'SCAL' po2 ;
  3615. 'SI' ('NEG' qent qsor) ;
  3616. cherr = 'CHAINE' 'Débit pas constant dans le canal ' &ichan
  3617. ' ???' ;
  3618. 'ERREUR' cherr ;
  3619. 'FINSI' ;
  3620. * cp is supposed to be constant; this is ok.
  3621. * However we suppose h = rho cp T, which is dubious
  3622. * we should have a procedure to compute h by integration
  3623. selem1 = 'ELEM' (tabin . 'CHANNEL' . &ichan) 1 ;
  3624. she = 'MESURE' selem1 ;
  3625. rhe muhe lhe cphe dum = PRPHE prhe tent ;
  3626. * qhe = tabres . 'QHE' ;
  3627. * pdeghe = qhe '*' she '*' cphe '*' ('-' tsor tent) ;
  3628. pdeghe = qent '*' she '*' cphe '*' ('-' tsor tent) ;
  3629. pgcan = '+' pgcan pdeghe ;
  3630. 'FIN' ichan ;
  3631. pdeghe = pgcan ;
  3632. errphe = '*' (ERRREL pdeghe pdegcb) 100.D0 ;
  3633. 'MESSAGE' ('CHAINE' 'Fuel power = ' (formar pdegcb 2)
  3634. ' W') ;
  3635. 'MESSAGE' ('CHAINE' 'Flux on channel boundaries = ' (formar pdegif 2)
  3636. ' W') ;
  3637. 'MESSAGE' ('CHAINE' ' errpif = ' (formar errpif 2)
  3638. ' %') ;
  3639. 'MESSAGE' ('CHAINE' 'Power gained by Helium = ' (formar pdeghe 2)
  3640. 'W') ;
  3641. 'MESSAGE' ('CHAINE' ' errphe = ' (formar errphe 2)
  3642. ' %') ;
  3643. * % error (i.e. limit to 0.1% = 1.D-4 error)
  3644. testene1 = > errpif 1.D0 ;
  3645. testene2 = > errphe 1.D0 ;
  3646. 'SI' ('OU' testene1 testene2) ;
  3647. 'MESSAGE' '!!Pb. energy conservation' ;
  3648. 'FINSI' ;
  3649. testerr = testerr 'OU' testene1 'OU' testene2 ;
  3650. 'SI' testerr ;
  3651. cherr = 'CHAINE' 'Error on the energy conservation !' ;
  3652. 'ERREUR' cherr ;
  3653. 'FINSI' ;
  3654. * MinMax Helium Exit Temperature Speed
  3655. 'MESSAGE' '-----------' ;
  3656. 'MESSAGE' 'Helium Results :' ;
  3657. the = tabres . 'THE' ;
  3658. uhe = 'EXCO' 'UZ' (tabres . 'UHE') ;
  3659. miu = 'MINIMUM' uhe ;
  3660. mau = 'MAXIMUM' uhe ;
  3661. mit = 'MINIMUM' the ;
  3662. mat = 'MAXIMUM' the ;
  3663. 'MESSAGE' ('CHAINE' 'Min. He speed = ' (formar miu 2) ' m.s-1') ;
  3664. 'MESSAGE' ('CHAINE' 'Max. He speed = ' (formar mau 2) ' m.s-1') ;
  3665. 'MESSAGE' ('CHAINE' 'Min. He temp. = ' (formar ('-' mit 273.15D0) 2)
  3666. ' degrees C') ;
  3667. 'MESSAGE' ('CHAINE' 'Max. He temp. = ' (formar ('-' mat 273.15D0) 2)
  3668. ' degrees C') ;
  3669. * MinMax Fuel temperature + locations
  3670. 'MESSAGE' '-----------' ;
  3671. 'MESSAGE' 'Fuel Results :' ;
  3672. tcb = tabres . 'TCBS' ;
  3673. nmaxloc = 4 ;
  3674. tcbmi = 'MINIMUM' tcb ;
  3675. tcbmi = '*' tcbmi 1.0001D0 ;
  3676. mtcbmi = tcb 'POIN' 'INFERIEUR' tcbmi ;
  3677. nmtcbmi = 'NBNO' mtcbmi ;
  3678. 'MESSAGE' ('CHAINE' 'Min fuel temp. = ' (formar ('-' tcbmi 273.15D0) 2)
  3679. ' degres C') ;
  3680. 'MESSAGE' ('CHAINE' 'Location(m)'/1 ' x'/15 ' y'/30 ' z'/45) ;
  3681. 'REPETER' imaxloc ('MINIMUM' ('LECT' nmaxloc nmtcbmi)) ;
  3682. poi = 'POIN' mtcbmi &imaxloc ;
  3683. xp yp zp = 'COORDONNEE' poi ;
  3684. cxp = formar xp 2 ;
  3685. cyp = formar yp 2 ;
  3686. czp = formar zp 2 ;
  3687. 'MESSAGE' ('CHAINE' cxp*20 cyp*35 czp*50) ;
  3688. 'FIN' imaxloc ;
  3689. 'SI' ('>' nmtcbmi nmaxloc) ;
  3690. 'MESSAGE' ('CHAINE' 'etc...'/20) ;
  3691. 'FINSI' ;
  3692. *
  3693. nmaxloc = 4 ;
  3694. tcbma = 'MAXIMUM' tcb ;
  3695. tcbma = '*' tcbma 0.9999D0 ;
  3696. mtcbma = tcb 'POIN' 'SUPERIEUR' tcbma ;
  3697. nmtcbma = 'NBNO' mtcbma ;
  3698. 'MESSAGE' ('CHAINE' 'Max fuel temp. = ' (formar ('-' tcbma 273.15D0) 2)
  3699. ' degrees C') ;
  3700. 'MESSAGE' ('CHAINE' 'Location(m)'/1 ' x'/15 ' y'/30 ' z'/45) ;
  3701. 'REPETER' imaxloc ('MINIMUM' ('LECT' nmaxloc nmtcbma)) ;
  3702. poi = 'POIN' mtcbma &imaxloc ;
  3703. xp yp zp = 'COORDONNEE' poi ;
  3704. cxp = formar xp 2 ;
  3705. cyp = formar yp 2 ;
  3706. czp = formar zp 2 ;
  3707. 'MESSAGE' ('CHAINE' cxp*20 cyp*35 czp*50) ;
  3708. 'FIN' imaxloc ;
  3709. 'SI' ('>' nmtcbma nmaxloc) ;
  3710. 'MESSAGE' ('CHAINE' 'etc...'/20) ;
  3711. 'FINSI' ;
  3712. 'MESSAGE' '**************' ;
  3713. *
  3714. * End of procedure file SUMMRES
  3715. *
  3716. 'FINPROC' ;
  3717. *ENDPROCEDUR summres
  3718. *BEGINPROCEDUR sytopl
  3719. ************************************************************************
  3720. * NOM : SYTOPL
  3721. * DESCRIPTION : eventual symmetry + rotation + translation
  3722. *
  3723. *
  3724. *
  3725. * LANGAGE : GIBIANE-CAST3M
  3726. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  3727. * mél : gounand@semt2.smts.cea.fr
  3728. **********************************************************************
  3729. * VERSION : v1, 23/11/2004, version initiale
  3730. * HISTORIQUE : v1, 23/11/2004, création
  3731. * HISTORIQUE :
  3732. * HISTORIQUE :
  3733. ************************************************************************
  3734. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  3735. * en cas de modification de ce sous-programme afin de faciliter
  3736. * la maintenance !
  3737. ************************************************************************
  3738. *
  3739. *
  3740. 'DEBPROC' SYTOPL ;
  3741. 'ARGUMENT' mail*'MAILLAGE' ;
  3742. 'ARGUMENT' arot*'FLOTTANT' ;
  3743. 'ARGUMENT' vtra*'POINT' ;
  3744. 'ARGUMENT' lsym*'LOGIQUE' ;
  3745. p0 = 0. 0. 0. ;
  3746. p1 = 0. 1. 0. ;
  3747. pr = 0. 0. 1. ;
  3748. 'SI' lsym ;
  3749. mail = 'SYMETRIE' mail 'DROIT' p0 p1 ;
  3750. 'FINSI' ;
  3751. mail3 = 'TOURNER' mail arot p0 pr ;
  3752. mail2 = 'PLUS' mail3 vtra ;
  3753. 'RESPRO' mail2 ;
  3754. *
  3755. * End of procedure file SYTOPL
  3756. *
  3757. 'FINPROC' ;
  3758. *ENDPROCEDUR sytopl
  3759. *BEGINPROCEDUR tracchml
  3760. ************************************************************************
  3761. * NOM : TRACCHML
  3762. * DESCRIPTION : Trace un CHPOINT défini sur les centres des éléments
  3763. * (valeur constante par élément) avec titre optionnel
  3764. *
  3765. *
  3766. * LANGAGE : GIBIANE-CAST3M
  3767. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  3768. * mél : gounand@semt2.smts.cea.fr
  3769. **********************************************************************
  3770. * VERSION : v1, 12/03/2003, version initiale
  3771. * HISTORIQUE : v1, 12/03/2003, création
  3772. * HISTORIQUE :
  3773. * HISTORIQUE :
  3774. ************************************************************************
  3775. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  3776. * en cas de modification de ce sous-programme afin de faciliter
  3777. * la maintenance !
  3778. ************************************************************************
  3779. *
  3780. *
  3781. 'DEBPROC' TRACCHML ;
  3782. 'ARGUMENT' chml*'CHPOINT ' ;
  3783. 'ARGUMENT' $mt*'MMODEL ' ;
  3784. 'ARGUMENT' tit*'MOT ' ;
  3785. 'ARGUMENT' mt2/'MAILLAGE' ;
  3786. 'ARGUMENT' foeil/'POINT ' ;
  3787. 'ARGUMENT' lnclk/'LOGIQUE' ;
  3788. *
  3789. rescal = 'KCHA' $mt chml 'CHAM' ;
  3790. mt = 'DOMA' $mt 'MAILLAGE' ;
  3791. 'SI' ('NON' ('EXISTE' foeil)) ;
  3792. foeil = (2.D0 -3.D0 0.7D0) ;
  3793. 'FINSI' ;
  3794. oeil = CALCOEIL mt foeil ;
  3795. 'SI' ('NON' ('EXISTE' lnclk)) ;
  3796. lnclk = FAUX ;
  3797. 'FINSI' ;
  3798. modbid = 'MODELISER' ('DOMA' $mt 'MAILLAGE') 'THERMIQUE' ;
  3799. 'SI' ('EXISTE' mt2) ;
  3800. 'SI' lnclk ;
  3801. 'TRACER' oeil 'CACH' rescal modbid mt2 'TITR' tit nbisov 'NCLK' ;
  3802. 'SINON' ;
  3803. 'TRACER' oeil 'CACH' rescal modbid mt2 'TITR' tit nbisov ;
  3804. 'FINSI' ;
  3805. 'SINON' ;
  3806. 'SI' lnclk ;
  3807. 'TRACER' oeil 'CACH' rescal modbid mt 'TITR' tit nbisov 'NCLK' ;
  3808. 'SINON' ;
  3809. 'TRACER' oeil 'CACH' rescal modbid mt 'TITR' tit nbisov ;
  3810. 'FINSI' ;
  3811. 'FINSI' ;
  3812. *
  3813. * End of procedure file TRACCHML
  3814. *
  3815. 'FINPROC' ;
  3816. *ENDPROCEDUR tracchml
  3817. *BEGINPROCEDUR tracchpo
  3818. ************************************************************************
  3819. * NOM : TRACCHPO
  3820. * DESCRIPTION : Tracé d'un chpoint avec titre optionnel.
  3821. *
  3822. *
  3823. *
  3824. * LANGAGE : GIBIANE-CAST3M
  3825. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  3826. * mél : gounand@semt2.smts.cea.fr
  3827. **********************************************************************
  3828. * VERSION : v1, 14/10/2002, version initiale
  3829. * HISTORIQUE : v1, 14/10/2002, création
  3830. * HISTORIQUE :
  3831. * HISTORIQUE :
  3832. ************************************************************************
  3833. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  3834. * en cas de modification de ce sous-programme afin de faciliter
  3835. * la maintenance !
  3836. ************************************************************************
  3837. *
  3838. *
  3839. 'DEBPROC' TRACCHPO ;
  3840. 'ARGUMENT' pn*'CHPOINT ' ;
  3841. 'ARGUMENT' mt*'MAILLAGE' ;
  3842. 'ARGUMENT' mt2/'MAILLAGE' ;
  3843. 'ARGUMENT' tit*'MOT ' ;
  3844. 'ARGUMENT' foeil/'POINT ' ;
  3845. 'ARGUMENT' lnclk/'LOGIQUE' ;
  3846. rescal = pn ;
  3847. 'SI' ('NON' ('EXISTE' foeil)) ;
  3848. foeil = (2.D0 -3.D0 0.7D0) ;
  3849. 'FINSI' ;
  3850. oeil = CALCOEIL mt foeil ;
  3851. 'SI' ('NON' ('EXISTE' lnclk)) ;
  3852. lnclk = FAUX ;
  3853. 'FINSI' ;
  3854. 'SI' ('EXISTE' mt2) ;
  3855. 'SI' lnclk ;
  3856. 'TRACER' oeil 'CACH' rescal mt mt2 'TITR' tit nbisov 'NCLK' ;
  3857. 'SINON' ;
  3858. 'TRACER' oeil 'CACH' rescal mt mt2 'TITR' tit nbisov ;
  3859. 'FINSI' ;
  3860. 'SINON' ;
  3861. 'SI' lnclk ;
  3862. 'TRACER' oeil 'CACH' rescal mt mt 'TITR' tit nbisov 'NCLK' ;
  3863. 'SINON' ;
  3864. 'TRACER' oeil 'CACH' rescal mt mt 'TITR' tit nbisov ;
  3865. 'FINSI' ;
  3866. 'FINSI' ;
  3867. *
  3868. * End of procedure file TRACCHPO
  3869. *
  3870. 'FINPROC' ;
  3871. *ENDPROCEDUR tracchpo
  3872. *BEGINPROCEDUR tracmesh
  3873. ************************************************************************
  3874. * NOM : TRACMESH
  3875. * DESCRIPTION : Tracé d'un maillage
  3876. *
  3877. *
  3878. *
  3879. * LANGAGE : GIBIANE-CAST3M
  3880. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  3881. * mél : gounand@semt2.smts.cea.fr
  3882. **********************************************************************
  3883. * VERSION : v1, 16/11/2004, version initiale
  3884. * HISTORIQUE : v1, 16/11/2004, création
  3885. * HISTORIQUE :
  3886. * HISTORIQUE :
  3887. ************************************************************************
  3888. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  3889. * en cas de modification de ce sous-programme afin de faciliter
  3890. * la maintenance !
  3891. ************************************************************************
  3892. *
  3893. *
  3894. 'DEBPROC' TRACMESH ;
  3895. 'ARGUMENT' mt*'MAILLAGE' ;
  3896. 'ARGUMENT' tit*'MOT' ;
  3897. 'ARGUMENT' foeil/'POINT ' ;
  3898. 'ARGUMENT' lnclk/'LOGIQUE' ;
  3899. *
  3900. 'SI' ('NON' ('EXISTE' foeil)) ;
  3901. foeil = (2.D0 -3.D0 0.7D0) ;
  3902. 'FINSI' ;
  3903. oeil = CALCOEIL mt foeil ;
  3904. 'SI' ('NON' ('EXISTE' lnclk)) ;
  3905. lnclk = FAUX ;
  3906. 'FINSI' ;
  3907. 'SI' lnclk ;
  3908. 'TRACER' oeil mt 'CACH' 'TITRE' tit 'NCLK' ;
  3909. 'SINON' ;
  3910. 'TRACER' oeil mt 'CACH' 'TITRE' tit ;
  3911. 'FINSI' ;
  3912. *
  3913. * End of procedure file TRACMESH
  3914. *
  3915. 'FINPROC' ;
  3916. *
  3917. *
  3918. *
  3919. *ENDPROCEDUR tracmesh
  3920. 'OPTION' 'ECHO' 1 ;
  3921. ************************************************************************
  3922. * NOM : COUPLAGE_TH1D_TH3D
  3923. * DESCRIPTION :
  3924. * Idem COUPLAGE_TH1D_TH3D_x, (x=1 or) but better :
  3925. * we try to write an easy to use dgibi file with well
  3926. * specified inputs and outputs.
  3927. *
  3928. * See technical reports DM2S/SFME/LTMF/RT/03-012/A
  3929. * DM2S/SFME/LTMF/RT/03-012/B
  3930. * DM2S/SFME/LTMF/RT/04-024/A
  3931. * DM2S/SFME/LTMF/RT/05-050/A
  3932. * Coupled modelization 3D thermic-1D thermohydraulics
  3933. * of a gas-cooled reactor.
  3934. *
  3935. *
  3936. *
  3937. * LANGAGE : GIBIANE-CAST3M
  3938. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  3939. * mél : gounand@semt2.smts.cea.fr
  3940. **********************************************************************
  3941. * VERSION : v1, 09/10/2004, version initiale
  3942. * HISTORIQUE : v1, 09/10/2004, création
  3943. * HISTORIQUE :
  3944. * HISTORIQUE :
  3945. ************************************************************************
  3946. *
  3947. * Some global options and settings
  3948. *
  3949. *
  3950. * complet = VRAI : runs all the cases
  3951. * interact = VRAI : interactive use
  3952. * graph = VRAI : if one wants graphic output (TRAC, DESS)
  3953. complet = FAUX ;
  3954. interact= FAUX ;
  3955. graph = FAUX ;
  3956. *
  3957. 'OPTION' 'DIME' 3 'ELEM' 'CUB8' ;
  3958. 'OPTION' 'ISOV' 'SULI' ;
  3959. * nbisov : number of isovalues
  3960. nbisov = 25 ;
  3961. 'SI' ('NON' interact) ;
  3962. 'OPTION' 'TRAC' 'PSC' ;
  3963. 'OPTION' 'ECHO' 0 ;
  3964. 'SINON' ;
  3965. 'OPTION' 'TRAC' 'X' ;
  3966. * 'OPTION' 'TRAC' 'OPEN' ;
  3967. 'FINSI' ;
  3968. ***************************************
  3969. *
  3970. * Geometry-related settings
  3971. *
  3972. ***************************************
  3973. *
  3974. * Geometry data for hexagonal configuration
  3975. * (quantities to be specified)
  3976. * pas : dimension of the unit cell (m)
  3977. * Dh : Hydraulique diameter (m)
  3978. * H : Core height (m)
  3979. * Geometry data for plate configuration
  3980. * (quantities to be specified)
  3981. * Dh : Hydraulique diameter (m)
  3982. * ef : width of the structure part (m)
  3983. * ep : width of a fuel plate (m) ;
  3984. * nchan : number of channels
  3985. * H : Core height (m)
  3986. *
  3987. * Geometry data for hexagonal plate configuration
  3988. *
  3989. * ept : Entreplat (m)
  3990. * eps : Epaisseur de structure (m)
  3991. * epp : Epaisseur de plaque (m)
  3992. * epg : Epaisseur lame de gaz (m)
  3993. * epge : Epaisseur lame de gaz extrême (m)
  3994. * npp : Nombre de plaques (m)
  3995. *
  3996. *
  3997. * Geometric discretization parameters
  3998. * (number of elements)
  3999. * nh (height) : number of elements in the height
  4000. *
  4001. ***************************************
  4002. *
  4003. * Physics-related settings
  4004. *
  4005. ***************************************
  4006. *
  4007. * Helium
  4008. *
  4009. * prhe : Helium pressure (bar)
  4010. * qhe : Helium flow rate (bottom of the core) (kg.m-2.s-1)
  4011. * theec, theek : Cold Helium temperature in degree C and in K
  4012. * fblock : relative residual flow rate in blocked channels (between 0.
  4013. * and 1.)
  4014. *
  4015. * Fuel
  4016. *
  4017. * pvol : Volumic power
  4018. * It is the power per unit of total core (fuel+helium+structure)
  4019. * and not the power per unit of fuel (W.m-3)
  4020. * gamma : Gamma factor (power peaking factor)
  4021. * 1.3 < gamma < 2.0
  4022. * pvar = VRAI : sinusoidal power profile in the fuel
  4023. * = FAUX : constant power profile in the fuel
  4024. * irrad = VRAI : for used nuclear fuel (new otherwise)
  4025. *
  4026. ***************************************
  4027. *
  4028. * Solver-related settings
  4029. *
  4030. ***************************************
  4031. *
  4032. * Solver parameters
  4033. *
  4034. * maxit : maximum number of non-linear iterations
  4035. * rescvg : convergence occur for a temperature residual < rescvg
  4036. * solvit = FAUX : direct solver, more robust, slower
  4037. * = VRAI : iterative solver, less robust, faster
  4038. * omcbst : relaxation factor for 3D thermics
  4039. * omhe : relaxation factor for 1D thermo-hydraulics
  4040. *
  4041. *
  4042. *************************************
  4043. *
  4044. * Definition of the test cases :
  4045. ****
  4046. * ikas : 1 to 3 Technical report DM2S/SFME/LTMF/RT/03-012/B
  4047. * ikas = 1 : Hexagonal core, nominal case, small symmetry cell
  4048. * ikas = 2 : Hexagonal core, nominal case, larger symmetry cell
  4049. * ikas = 3 : Hexagonal core, accidental case, larger symmetry cell
  4050. ****
  4051. * ikas : 4 to 6 Technical report DM2S/SFME/LTMF/RT/04-024/A
  4052. * ikas = 4 : Square core, nominal case, small symmetry cell
  4053. * ikas = 5 : Square core, nominal case, larger symmetry cell
  4054. * ikas = 6 : Square core, accidental case, larger symmetry cell
  4055. ****
  4056. * ikas : 7 to Technical report DM2S/SFME/LTMF/RT/05-050/A
  4057. * ikas = 7 : Hexagonal core, nominal case, small losange cell
  4058. * ikas = 8 : Hexagonal core, channel 2 blocked, small losange cell
  4059. * chapter 2
  4060. * ikas = 9 : Hexagonal core, nominal case, normal hexa cell
  4061. * ikas = 10 : Hexagonal core, channel 1 blocked, normal hexa cell
  4062. * ikas = 11 : Hexagonal core, channel 2 blocked, normal hexa cell
  4063. * ikas = 12 : Hexagonal core, channel 5 blocked, normal hexa cell
  4064. * ikas = 13 : Hexagonal core, channel 4 and 6 blocked, normal hexa cell
  4065. * ikas = 14 : Hexagonal core, channel 5 and 6 blocked, normal hexa
  4066. * cell (doesn't work)
  4067. * ikas = 15 : Hexagonal core, channel 5 and 6 95% blocked, normal hexa
  4068. * cell
  4069. * ikas = 16 : Hexagonal core, channel 2 blocked, large 2 hexa cells
  4070. * chapter 4
  4071. * ikas = 17 : Hexagonal core, channel 2 blocked, normal hexa cell
  4072. * Reduced Pvol and Qhe : * 75 %
  4073. * ikas = 18 : Hexagonal core, channel 2 blocked, normal hexa cell
  4074. * Reduced Pvol and Qhe : * 40 %
  4075. * ikas = 19 : Hexagonal core, channel 2 blocked, normal hexa cell
  4076. * Qhe Increase : + 50 %
  4077. * ikas = 20 : Hexagonal core, channel 2 blocked, normal hexa cell
  4078. * ((Pvol Qhe)*75%) + Qhe Increase : + 25 %
  4079. * chapter 3
  4080. * ikas = 30 : Modified hexagonal core, nominal case, normal hexa cell
  4081. * ikas = 31 : Modified hexagonal core, channel 1 blocked, normal hexa cell
  4082. * ikas = 32 : Modified hexagonal core, channel 2 blocked, normal hexa cell
  4083. * ikas = 33 : Modified hexagonal core, channel 5 blocked, normal hexa cell
  4084. * ikas = 34 : Modified hexagonal core, channel 4 and 6 blocked,
  4085. * normal hexa cell
  4086. * ikas = 35 : Modified hexagonal core, channel 5 and 6 blocked, normal hexa
  4087. * cell (doesn't work)
  4088. * ikas = 36 : Modified hexagonal core, channel 5 and 6 95% blocked,
  4089. * normal hexa cell
  4090.  
  4091.  
  4092. *
  4093. * Tabtot stores tabres + maxi temperature
  4094. *
  4095. tabtot = 'TABLE' ;
  4096. * Non-regression testing on the maximum temperature in fuel and
  4097. * structure in listem
  4098. * Obtained on 01/12/05
  4099. listem = 'PROG'
  4100. 1154. 1154. 1595. 1101. 1101. 1865. 1080. 1910. 1110. 1700.
  4101. 1840. 1700. 1810. 0. 4470. 1820. 1690. 1500. 1580. 1550.
  4102. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1070.
  4103. 1760. 1760. 1760. 1870. 0. 4680. ;
  4104. 'SI' complet ;
  4105. lkas = 'LECT' 1 2 3 4 5 6 7 8 9 10 11 12 13 15
  4106. 16 17 18 19 20 30 31 32 33 34 36 ;
  4107. 'SINON' ;
  4108. lkas = 'LECT' 1 2 3 4 ;
  4109. 'FINSI' ;
  4110. listemc = 'EXTRAIRE' listem lkas ;
  4111. nkas = 'DIME' lkas ;
  4112. 'REPETER' bikas nkas ;
  4113. ikas = 'EXTRAIRE' lkas &bikas ;
  4114. tabtot . ikas = 'TABLE' ;
  4115. 'TEMPS' 'ZERO' ;
  4116. petitb = 0.D0 ;
  4117. omcbst = 0.9 ;
  4118. omhe = 0.5 ;
  4119. *
  4120. 'SI' ('ET' ('>EG' ikas 1) ('&lt;EG' ikas 3)) ;
  4121. pas = 21.1D-3 ;
  4122. Dh = 16.5D-3 ;
  4123. H = 2.D0 ;
  4124. nh = 7 ;
  4125. prhe = 90.D0 ;
  4126. qhe = 210.D0 ;
  4127. theec = 480.D0 ;
  4128. theek = '+' theec 273.15D0 ;
  4129. pvol = 100.D6 ;
  4130. gamma = 1.5D0 ;
  4131. pvar = VRAI ;
  4132. irrad = VRAI ;
  4133. maxit = 40 ;
  4134. rescvg = 1.D-4 ;
  4135. solvit = FAUX ;
  4136. 'SI' ('EGA' ikas 1) ;
  4137. tabin = GEOMHEX1 Dh pas ;
  4138. tabin . 'BLOCKED' = 'LECT' ;
  4139. 'FINSI' ;
  4140. 'SI' ('EGA' ikas 2) ;
  4141. tabin = GEOMHEX2 Dh pas ;
  4142. tabin . 'BLOCKED' = 'LECT' ;
  4143. 'FINSI' ;
  4144. 'SI' ('EGA' ikas 3) ;
  4145. tabin = GEOMHEX2 Dh pas ;
  4146. tabin . 'BLOCKED' = 'LECT' 1 ;
  4147. 'FINSI' ;
  4148. nchan = 'DIME' (tabin . 'CHANNEL') ;
  4149. tabin . 'DH' = 'TABLE' ;
  4150. 'REPETER' ichan nchan ;
  4151. tabin . 'DH' . &ichan = Dh ;
  4152. 'FIN' ichan ;
  4153. fblock = petitb ;
  4154. 'FINSI' ;
  4155. 'SI' ('ET' ('>EG' ikas 4) ('&lt;EG' ikas 6)) ;
  4156. Dh = 2.D-2 ;
  4157. ef = 3.04D-3 ;
  4158. ep = 1.04D-2 ;
  4159. nchan = 5 ;
  4160. H = 4.2D0 ;
  4161. nh = 7 ;
  4162. prhe = 90.D0 ;
  4163. qhe = 278.D0 ;
  4164. theec = 480.D0 ;
  4165. theek = '+' theec 273.15D0 ;
  4166. pvol = 40.D6 ;
  4167. gamma = 1.3D0 ;
  4168. pvar = VRAI ;
  4169. irrad = VRAI ;
  4170. maxit = 40 ;
  4171. rescvg = 1.D-4 ;
  4172. solvit = VRAI ;
  4173. 'SI' ('EGA' ikas 4) ;
  4174. tabin = GEOMPLA1 Dh ef ep nchan ;
  4175. tabin . 'BLOCKED' = 'LECT' ;
  4176. 'FINSI' ;
  4177. 'SI' ('EGA' ikas 5) ;
  4178. tabin = GEOMPLA2 Dh ef ep nchan ;
  4179. tabin . 'BLOCKED' = 'LECT' ;
  4180. 'FINSI' ;
  4181. 'SI' ('EGA' ikas 6) ;
  4182. tabin = GEOMPLA2 Dh ef ep nchan ;
  4183. tabin . 'BLOCKED' = 'LECT' 1 ;
  4184. 'FINSI' ;
  4185. nchan = 'DIME' (tabin . 'CHANNEL') ;
  4186. tabin . 'DH' = 'TABLE' ;
  4187. 'REPETER' ichan nchan ;
  4188. tabin . 'DH' . &ichan = Dh ;
  4189. 'FIN' ichan ;
  4190. fblock = petitb ;
  4191. 'FINSI' ;
  4192. 'SI' ('>EG' ikas 7) ;
  4193. H = 1.55D0 ;
  4194. nh = 7 ;
  4195. prhe = 90.D0 ;
  4196. qhe = 210.D0 ;
  4197. theec = 480.D0 ;
  4198. theek = '+' theec 273.15D0 ;
  4199. pvol = 100.D6 ;
  4200. gamma = 1.5D0 ;
  4201. pvar = VRAI ;
  4202. irrad = VRAI ;
  4203. maxit = 40 ;
  4204. rescvg = 1.D-4 ;
  4205. solvit = VRAI ;
  4206. ept = 211.3D-3 ;
  4207. eps = 1.5D-3 ;
  4208. epp = 7.D-3 ;
  4209. epg = 4.6D-3 ;
  4210. npp = 9 ;
  4211. ff = '/' 2.D0 ('**' 3.D0 0.5D0) ;
  4212. 'SI' ('>EG' ikas 30) ;
  4213. ept = '+' ept ('*' ('-' 4.6D-3 ('/' 2.08D-3 ff)) 4.) ;
  4214. 'FINSI' ;
  4215. 'SI' ('EGA' ikas 7) ;
  4216. tabin epge = GEOMPLH1 ept eps epp epg npp 1 ;
  4217. tabin . 'BLOCKED' = 'LECT' ;
  4218. fblock = 0.D0 ;
  4219. 'FINSI' ;
  4220. 'SI' ('EGA' ikas 8) ;
  4221. tabin epge = GEOMPLH1 ept eps epp epg npp 1 ;
  4222. tabin . 'BLOCKED' = 'LECT' 2 ;
  4223. fblock = 0.D0 ;
  4224. 'FINSI' ;
  4225. 'SI' ('OU' ('EGA' ikas 9) ('EGA' ikas 30)) ;
  4226. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4227. tabin . 'BLOCKED' = 'LECT' ;
  4228. fblock = 0.D0 ;
  4229. 'FINSI' ;
  4230. 'SI' ('OU' ('EGA' ikas 10) ('EGA' ikas 31)) ;
  4231. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4232. tabin . 'BLOCKED' = 'LECT' 1 ;
  4233. fblock = 0.D0 ;
  4234. 'FINSI' ;
  4235. 'SI' ('OU' ('EGA' ikas 11) ('EGA' ikas 32)) ;
  4236. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4237. tabin . 'BLOCKED' = 'LECT' 2 ;
  4238. fblock = 0.D0 ;
  4239. 'FINSI' ;
  4240. 'SI' ('OU' ('EGA' ikas 12) ('EGA' ikas 33)) ;
  4241. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4242. tabin . 'BLOCKED' = 'LECT' 5 ;
  4243. fblock = 0.D0 ;
  4244. 'FINSI' ;
  4245. 'SI' ('OU' ('EGA' ikas 13) ('EGA' ikas 34)) ;
  4246. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4247. tabin . 'BLOCKED' = 'LECT' 4 6 ;
  4248. fblock = 0.D0 ;
  4249. 'FINSI' ;
  4250. 'SI' ('OU' ('EGA' ikas 14) ('EGA' ikas 35)) ;
  4251. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4252. tabin . 'BLOCKED' = 'LECT' 5 6 ;
  4253. fblock = 0.D0 ;
  4254. 'FINSI' ;
  4255. 'SI' ('OU' ('EGA' ikas 15) ('EGA' ikas 36)) ;
  4256. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4257. tabin . 'BLOCKED' = 'LECT' 5 6 ;
  4258. fblock = 0.05D0 ;
  4259. 'FINSI' ;
  4260. 'SI' ('EGA' ikas 16) ;
  4261. tabin epge = GEOMPLH1 ept eps epp epg npp 3 ;
  4262. tabin . 'BLOCKED' = 'LECT' 2 ;
  4263. fblock = 0.D0 ;
  4264. 'FINSI' ;
  4265. 'SI' ('EGA' ikas 17) ;
  4266. fq = 1.D0 ;
  4267. fp = 0.75D0 ;
  4268. pvol = '*' pvol fp ;
  4269. qhe = '*' ('*' qhe fp) fq ;
  4270. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4271. tabin . 'BLOCKED' = 'LECT' 2 ;
  4272. fblock = 0.D0 ;
  4273. 'FINSI' ;
  4274. 'SI' ('EGA' ikas 18) ;
  4275. fq = 1.D0 ;
  4276. fp = 0.4D0 ;
  4277. pvol = '*' pvol fp ;
  4278. qhe = '*' ('*' qhe fp) fq ;
  4279. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4280. tabin . 'BLOCKED' = 'LECT' 2 ;
  4281. fblock = 0.D0 ;
  4282. 'FINSI' ;
  4283. 'SI' ('EGA' ikas 19) ;
  4284. fq = 1.5D0 ;
  4285. fp = 1.0D0 ;
  4286. pvol = '*' pvol fp ;
  4287. qhe = '*' ('*' qhe fp) fq ;
  4288. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4289. tabin . 'BLOCKED' = 'LECT' 2 ;
  4290. fblock = 0.D0 ;
  4291. 'FINSI' ;
  4292. 'SI' ('EGA' ikas 20) ;
  4293. fq = 1.25D0 ;
  4294. fp = 0.75D0 ;
  4295. pvol = '*' pvol fp ;
  4296. qhe = '*' ('*' qhe fp) fq ;
  4297. tabin epge = GEOMPLH1 ept eps epp epg npp 2 ;
  4298. tabin . 'BLOCKED' = 'LECT' 2 ;
  4299. fblock = 0.D0 ;
  4300. 'FINSI' ;
  4301. *
  4302. 'SAUTER' 2 'LIGN' ;
  4303. 'MESSAGE' ('CHAINE' '***************') ;
  4304. 'MESSAGE' ('CHAINE' 'Epai. gaz extreme : ' (formar ('/' epge ff) 2)
  4305. ' m') ;
  4306. 'MESSAGE' ('CHAINE' 'Entreplat : ' (formar ept 5)
  4307. ' m') ;
  4308. 'MESSAGE' ('CHAINE' '***************') ;
  4309. 'SAUTER' 2 'LIGN' ;
  4310. 'FINSI' ;
  4311. * Input for GENMEMA procedure
  4312. * tabin . 'INTERFACE' . i : i-th interface (line mesh)
  4313. * tabin . 'CHANNEL' . i : i-th helium channel (surface mesh)
  4314. * tabin . 'FUEL' : fuel mesh (surface mesh)
  4315. * tabin . 'STRUCTURE' : structure mesh (surface mesh) (optional)
  4316. * tabin . 'BLOCKED' : LISTENTI : list of the numbers
  4317. * of the blocked channels (can be empty)
  4318. * H : height (m) and nh : number of elements in the height
  4319. * (regular meshing in z direction)
  4320. *
  4321. * output tabgeo should contain all the necessary geometric information
  4322. * needed further
  4323. * tabgeo . 'tabin' = tabin
  4324. * tabgeo . 'H' = H : height
  4325. * tabgeo . 'nh' = nh : number of elements in the height
  4326. * tabgeo . '$mtcbst' = NS model objet (fuel+structure)
  4327. * tabgeo . '$mtcb' = NS model objet (fuel only)
  4328. * tabgeo . '$mthe' = NS model objet (helium channels)
  4329. * tabgeo . '$sthe' = NS model objet (bottom of the helium channels)
  4330. * tabgeo . '$mtif' = NS model objet (interfaces)
  4331. * tabgeo . '$mtifb' = NS model objet (blocked interfaces) (if any)
  4332. * tabgeo . 'mcf' = coupling matrix helium -> fuel
  4333. * tabgeo . 'mfc' = coupling matrix fuel -> helium
  4334. * GENMEMA is slow
  4335. tabgeo = GENMEMA tabin H nh ;
  4336. *
  4337. * Compute power distribution
  4338. *
  4339. pcb = CPOWDIS tabgeo pvol gamma pvar ;
  4340. *
  4341. * chblock
  4342. * Volumic field = 1 in unblocked channels
  4343. * = fblock (between 0. and 1.) in blocked channels
  4344. *
  4345. $tmthe = tabgeo . '$tmthe' ;
  4346. nhe = 'DIME' $tmthe ;
  4347. lblock = tabin . 'BLOCKED' ;
  4348. tablock = 'TABLE' ;
  4349. 'REPETER' ihe nhe ;
  4350. $mthei = $tmthe . &ihe ;
  4351. 'SI' ('DANS' ('LECT' &ihe) lblock) ;
  4352. APPEND tablock 'chblock' ('KCHT' $mthei 'SCAL' 'SOMMET' fblock) ;
  4353. 'SINON' ;
  4354. APPEND tablock 'chblock' ('KCHT' $mthei 'SCAL' 'SOMMET' 1.D0) ;
  4355. 'FINSI' ;
  4356. 'FIN' ihe ;
  4357. chblock = 'KCHT' (tabgeo . '$mthe') 'SCAL' 'SOMMET'
  4358. (tablock . 'chblock') ;
  4359. *
  4360. * Put the physics in a table
  4361. *
  4362. tabphy = 'TABLE' ;
  4363. * Interface
  4364. tabphy . 'Dh' = tabgeo . 'Dh' ;
  4365. tabphy . 'chblock' = chblock ;
  4366. * Helium
  4367. tabphy . 'qhe' = qhe ;
  4368. tabphy . 'prhe' = prhe ;
  4369. tabphy . 'theek' = theek ;
  4370. * Fuel
  4371. tabphy . 'pvol' = pvol ;
  4372. tabphy . 'pvar' = pvar ;
  4373. tabphy . 'gamma' = gamma ;
  4374. tabphy . 'irrad' = irrad ;
  4375. tabphy . 'pcb' = pcb ;
  4376. *
  4377. * Put the numerics in a table
  4378. *
  4379. tabnum = 'TABLE' ;
  4380. tabnum . 'maxit' = maxit ;
  4381. tabnum . 'rescvg' = rescvg ;
  4382. tabnum . 'solvit' = solvit ;
  4383. tabnum . 'omcbst' = omcbst ;
  4384. tabnum . 'omhe' = omhe ;
  4385. *
  4386. * Put the tables in a table !
  4387. *
  4388. tabdat = 'TABLE' ;
  4389. tabdat . 'ikas' = ikas ;
  4390. tabdat . 'tabgeo' = tabgeo ;
  4391. tabdat . 'tabphy' = tabphy ;
  4392. tabdat . 'tabnum' = tabnum ;
  4393. *
  4394. * Text summary of data
  4395. *
  4396. 'SAUTER' 2 'LIGN' ;
  4397. SUMMDAT tabdat ;
  4398. 'SAUTER' 2 'LIGN' ;
  4399. *
  4400. * EXPLODAT does graphical output of data
  4401. * - first argument (mandatory) : the tables with data
  4402. * - second argument (optional) : VRAI (default) interactive use
  4403. * (mouse clicks)
  4404. * FAUX batch use
  4405. * - third argument (mandatory if 2ndarg = FAUX) : a list of integer or
  4406. * an integer
  4407. * an integer corresponds to a particular view
  4408. * View 1 : the base mesh
  4409. * View 2 : the mesh
  4410. * View 3 : the blocked channels
  4411. * View 4 : the power distribution
  4412. * View 5 : fuel and structure thermal conductivity (T)
  4413. * View 6 : Helium density
  4414. * View 7 : Helium thermal conductivity
  4415. * View 8 : Helium heat capacity
  4416. *
  4417. * Graphical output of data
  4418. *
  4419. 'SI' graph ;
  4420. 'SI' interact ;
  4421. EXPLODAT tabdat ;
  4422. 'SINON' ;
  4423. * EXPLODAT tabdat FAUX ('LECT' 1 2 3 4) ;
  4424. * EXPLODAT tabdat FAUX ('LECT' 1) ;
  4425. 'FINSI' ;
  4426. 'FINSI' ;
  4427. ***************************************
  4428. *
  4429. * DO THE COMPUTATIONS
  4430. *
  4431. ***************************************
  4432. tabres = COMPUTE tabdat ;
  4433.  
  4434. TABTPS = TEMP 'NOEC';
  4435. tcpu = TABTPS.'TEMPS_CPU'.'INITIAL' ;
  4436. tcpus = '/' ('FLOTTANT' tcpu) 100.D0 ;
  4437. 'MESSAGE' ('CHAINE' 'tcpus=' tcpus) ;
  4438. tabres . 'tcpus' = tcpus ;
  4439. ***************************************
  4440. *
  4441. * POST-TREATEMENT
  4442. *
  4443. ***************************************
  4444. *
  4445. * Text summary of results :
  4446. * SUMMRES prints a summary of the results of the computation
  4447. * it also does some tests (energy conservation...)
  4448. *
  4449. 'SAUTER' 2 'LIGN' ;
  4450. SUMMRES tabres ;
  4451. 'SAUTER' 2 'LIGN' ;
  4452. *
  4453. * EXPLORES does graphical output of results
  4454. * - first argument (mandatory) : the table with the results
  4455. * - second argument (optional) : VRAI (default) interactive use
  4456. * (mouse clicks)
  4457. * FAUX batch use
  4458. * - third argument (mandatory if 2ndarg = FAUX) : a list of integer or
  4459. * an integer
  4460. * an integer corresponds to a particular view
  4461. * View 1 : temperature (fuel + He)
  4462. * View 2 : temperature (fuel)
  4463. * View 3 : temperature (fuel : 2 viewpoints)
  4464. * View 4 : exchange coefficient
  4465. * View 5 : temperature (helium)
  4466. * View 6 : vertical speed (helium)
  4467. * View 7 : temperature profiles per channel (helium)
  4468. * View 8 : vertical speed profiles per channel (helium)
  4469. * View 9 : Nusselt number
  4470. * View 10 : Reynolds number
  4471. * View 11 : Prandtl number
  4472. * View 12 : Lambda Helium
  4473. * View 13 : Hydraulic diameter
  4474. 'SI' graph ;
  4475. 'SI' interact ;
  4476. EXPLORES tabres ;
  4477. 'SINON' ;
  4478. * EXPLORES tabres FAUX ('LECT' 2 4 5 7) ;
  4479. EXPLORES tabres FAUX ('LECT' 3 4 5 6 7 8) ;
  4480. 'FINSI' ;
  4481. 'FINSI' ;
  4482. *interact = VRAI ;
  4483. *explores tabres ;
  4484. *
  4485. * Save the results (Maximum temperature & cpu time)
  4486. *
  4487. tabtot . ikas . 'maxtem' = 'MAXIMUM' (tabres . 'TCBS') ;
  4488. tabtot . ikas . 'tcpus' = tabres . 'tcpus' ;
  4489. *tabtot . ikas . 'tabdat' = tabdat ;
  4490. *tabtot . ikas . 'tabres' = tabres ;
  4491. 'FIN' bikas ;
  4492. *'SI' interact ;
  4493. * 'OPTION' 'ECHO' 1 ;
  4494. * 'OPTION' 'DONN' 5 ;
  4495. *'FINSI' ;
  4496. *'TEMPS' 'IMPR' ;
  4497. *
  4498. * Non-regression testing on the maximum temperature in fuel and structure.
  4499. *
  4500. 'MESSAGE' '**********************' ;
  4501. 'MESSAGE' 'Non regression testing' ;
  4502. testerr = FAUX ;
  4503. * 1 % tolerance
  4504. toler = 0.01 ;
  4505. 'REPETER' bikas nkas ;
  4506. ikas = 'EXTRAIRE' lkas &bikas ;
  4507. maxtem = tabtot . ikas . 'maxtem' ;
  4508. tcpus = tabtot . ikas . 'tcpus' ;
  4509. maxexpc = 'EXTRAIRE' listemc &bikas ;
  4510. maxexp = '+' maxexpc 273.15D0 ;
  4511. testerr = 'OU' testerr ('NEG' maxtem maxexp ('*' maxexp toler)) ;
  4512. 'MESSAGE' ('CHAINE' 'Ikas = ' ikas) ;
  4513. 'MESSAGE' ('CHAINE' 'CPU Time (s) =' tcpus) ;
  4514. maxtemc = '-' maxtem 273.15D0 ;
  4515. 'MESSAGE' ('CHAINE' 'Maxtem = ' (formar maxtemc 3)
  4516. ' degrees C') ;
  4517. 'MESSAGE' ('CHAINE' 'Expected Maxtem = ' (formar maxexpc 3)
  4518. ' degrees C') ;
  4519. 'FIN' bikas ;
  4520. 'MESSAGE' '**********************' ;
  4521. *!
  4522. *! Error checking
  4523. *!
  4524. 'SI' testerr ;
  4525. 'MESSAGE' 'There were some errors' ;
  4526. 'SI' interact ;
  4527. 'OPTION' 'ECHO' 1 ;
  4528. 'OPTION' 'DONN' 5 ;
  4529. 'FINSI' ;
  4530. 'ERREUR' 5 ;
  4531. 'SINON' ;
  4532. 'MESSAGE' 'Everything went ok' ;
  4533. 'FINSI' ;
  4534. 'SI' interact ;
  4535. 'OPTION' 'ECHO' 1 ;
  4536. 'OPTION' 'DONN' 5 ;
  4537. 'FINSI' ;
  4538. *
  4539. * End of dgibi file COUPLAGE_TH1D_TH3D
  4540. *
  4541. 'FIN' ;
  4542.  
  4543.  
  4544.  

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