Télécharger pent3D1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : pent3D1.dgibi
  2. ***********************************************************
  3. **** Finite Volume, "Cell-Centred Formulation". ****
  4. **** PENT, operator to compute gradients and limiters ****
  5. **** ****
  6. **** A. BECCANTINI, TTMF JANUARY 2001 ****
  7. **** Modif, 10/07/01, syntaxe de PENT changée ****
  8. ***********************************************************
  9.  
  10. 'OPTION' 'ECHO' 0 'DIME' 2
  11. 'ELEM' 'TRI3'
  12. 'TRAC' 'X' ;
  13.  
  14. GRAPH = FAUX ;
  15. * GRAPH = VRAI ;
  16.  
  17.  
  18. *
  19. *** MESH
  20. *
  21.  
  22. 'OPTION' 'DIME' 3 'ELEM' 'CUB8' 'ECHO' 1 ;
  23.  
  24. P1 = 0.0 0.0 0.0 ;
  25. P2 = 3.0 0.0 0.0 ;
  26. P3 = 3.0 3.0 0.0 ;
  27. P4 = 0.0 3.0 0.0 ;
  28.  
  29. BAS = 'SURFACE' (P1 'DROIT' 3 P2 'DROIT' 4 P3 'DROIT' 5 P4 'DROIT' 6
  30. P1) 'PLAN' ;
  31. DOM1 = BAS 'VOLUME' 'TRANSLATION' 4 (0.0 1.0 3.0) ;
  32.  
  33. $DOM1 = 'MODELISER' DOM1 'EULER' ;
  34. TAB1 = 'DOMA' $DOM1 'VF' ;
  35. QDOM1 = TAB1 . 'QUAF' ;
  36. *
  37. DOM2 = DOM1 'SYMETRIE' 'PLAN' P1 P2 P3 ;
  38. 'ELIMINATION' DOM1 DOM2 0.0001 ;
  39. $DOM2 = 'MODELISER' DOM2 'EULER' ;
  40. TAB2 = 'DOMA' $DOM2 'VF' ;
  41. QDOM2 = TAB2 . 'QUAF' ;
  42. *
  43. DOMTOT = DOM1 'ET' DOM2 ;
  44. $DOMTOT = 'MODELISER' DOMTOT 'EULER' ;
  45. TABTOT = 'DOMA' $DOMTOT 'VF' ;
  46. QDOMTOT = TABTOT . 'QUAF' ;
  47. *
  48. 'ELIMINATION' QDOMTOT QDOM1 0.0001 ;
  49. 'ELIMINATION' QDOMTOT QDOM2 0.0001 ;
  50. *
  51. DOMENV = 'ENVELOPPE' DOMTOT ;
  52. $DOMENV = 'MODELISER' DOMENV 'EULER' ;
  53. TABENV = 'DOMA' $DOMENV 'VF' ;
  54. QDOMENV = TABENV . 'QUAF' ;
  55. 'ELIMINATION' QDOMTOT QDOMENV 0.0001 ;
  56. *
  57. DOMINT = 'DIFF' DOMTOT (DOMTOT 'ELEM' 'APPUYE' 'LARG'
  58. ('CHANGER' 'POI1' DOMENV)) ;
  59. $DOMINT = 'MODELISER' DOMINT 'EULER' ;
  60. TABINT = 'DOMA' $DOMINT 'VF' ;
  61. QDOMINT = TABINT . 'QUAF' ;
  62. 'ELIMINATION' QDOMTOT QDOMINT 0.0001 ;
  63.  
  64. 'SI' GRAPH ;
  65. 'TRACER' DOMTOT 'TITRE' 'Mesh';
  66. 'FINSI' ;
  67.  
  68. ***********************************************
  69. ********* CHP: scalar linear field *********
  70. ********* EULESCAL *********
  71. ***********************************************
  72. *
  73. * (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
  74. *
  75.  
  76. A11 = 12.01517 ;
  77. A12 = 13.1421 ;
  78. A13 = 23.1421 ;
  79. A0 = -3.21 ;
  80.  
  81. B11 = 22.01517 ;
  82. B12 = 43.1421 ;
  83. B13 = 13.1213 ;
  84. B0 = -5.21 ;
  85.  
  86. C11 = 2.01517 ;
  87. C12 = 3.1421 ;
  88. C13 = 23.1213 ;
  89. C0 = -15.21 ;
  90.  
  91. XX YY ZZ = 'COORDONNEE' ('DOMA' $DOMTOT 'CENTRE') ;
  92.  
  93. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
  94. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0;
  95. CHP3 = (C11 '*' XX) '+' (C12 '*' YY) '+' (C13 '*' ZZ) '+' C0;
  96.  
  97. CHP1 = 'NOMC' 'UX' CHP1 'NATU' 'DISCRET' ;
  98. CHP2 = 'NOMC' 'UY' CHP2 'NATU' 'DISCRET' ;
  99. CHP3 = 'NOMC' 'UZ' CHP3 'NATU' 'DISCRET' ;
  100.  
  101. CHP = CHP1 'ET' CHP2 'ET' CHP3 ;
  102.  
  103. GRCHP LIMCH GRG = 'PENT' $DOMTOT 'CENTRE'
  104. 'EULESCAL' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ') CHP ;
  105.  
  106. LIMCH1 = 'MANU' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  107. 3 'P1' 1.0 'P2' 1.0 'P3' 1.0 ;
  108.  
  109. ERRO = 'MAXIMUM' (LIMCH1 '-' LIMCH) 'ABS' ;
  110.  
  111. 'SI' (ERRO > 1.0D-8) ;
  112. 'MESSAGE' ;
  113. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  114. 'MESSAGE' ;
  115. 'ERREUR' 5;
  116. 'FINSI' ;
  117.  
  118. *
  119. * TEST1 : we check that we have the same values if we use
  120. * GRG to compute gradients
  121. *
  122.  
  123. GRCHP1 LIMCH = 'PENT' $DOMTOT 'CENTRE'
  124. 'EULESCAL' 'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ')
  125. CHP 'GRADGEO' GRG ;
  126.  
  127. ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
  128.  
  129. 'SI' (ERRO > 1.0D-8) ;
  130. 'MESSAGE' ;
  131. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  132. 'MESSAGE' ;
  133. 'ERREUR' 5;
  134. 'FINSI' ;
  135.  
  136.  
  137. *
  138. * TEST2 : we check that the computation is exact on the internal domain
  139. *
  140.  
  141. GRCHPI = 'REDU' GRCHP ('DOMA' $DOMINT 'CENTRE') ;
  142.  
  143.  
  144. GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DX' A11
  145. 'NATU' 'DISCRET' ;
  146.  
  147. GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DY' A12
  148. 'NATU' 'DISCRET';
  149.  
  150. GR1DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DZ' A13
  151. 'NATU' 'DISCRET';
  152.  
  153. GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DX' B11
  154. 'NATU' 'DISCRET';
  155.  
  156. GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DY' B12
  157. 'NATU' 'DISCRET';
  158.  
  159. GR2DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DZ' B13
  160. 'NATU' 'DISCRET';
  161.  
  162. GR3DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P3DX' C11
  163. 'NATU' 'DISCRET';
  164.  
  165. GR3DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P3DY' C12
  166. 'NATU' 'DISCRET';
  167.  
  168. GR3DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P3DZ' C13
  169. 'NATU' 'DISCRET';
  170.  
  171. GREXA = GR1DX 'ET' GR1DY 'ET' GR1DZ 'ET' GR2DX
  172. 'ET' GR2DY 'ET' GR2DZ 'ET' GR3DX
  173. 'ET' GR3DY 'ET' GR3DZ ;
  174.  
  175. ERRCH = GREXA '-' GRCHPI ;
  176.  
  177. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ' 'P2DX' 'P2DY' 'P2DZ'
  178. 'P3DX' 'P3DY' 'P3DZ' ;
  179. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  180.  
  181. *
  182. *** Error graphics (we change the error CHAMPOINT into a CHAMELEM
  183. *
  184.  
  185. 'SI' GRAPH ;
  186. MOD1 = 'MODELISER' ('DOMA' $DOMINT 'MAILLAGE') 'THERMIQUE' ;
  187. CHM_MER = 'KCHA' $DOMINT 'CHAM' MERRCH ;
  188. 'TRACER' CHM_MER MOD1 'TITR' ('CHAINE' 'EULESCAL: erreur');
  189. 'FINSI' ;
  190.  
  191. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  192.  
  193. 'SI' (ERRO > 1.0D-8) ;
  194. 'MESSAGE' ;
  195. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  196. 'MESSAGE' ;
  197. 'ERREUR' 5;
  198. 'FINSI' ;
  199.  
  200. *
  201. * TEST3 : we impose the linear field values on the border.
  202. * In that case error must be "zero" everywhere.
  203. *
  204.  
  205. XX YY ZZ = 'COORDONNEE' ('DOMA' $DOMENV 'CENTRE') ;
  206.  
  207. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
  208. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0;
  209. CHP3 = (C11 '*' XX) '+' (C12 '*' YY) '+' (C13 '*' ZZ) '+' C0;
  210.  
  211. CHP1 = 'NOMC' 'UX' CHP1 'NATU' 'DISCRET' ;
  212. CHP2 = 'NOMC' 'UY' CHP2 'NATU' 'DISCRET' ;
  213. CHP3 = 'NOMC' 'UZ' CHP3 'NATU' 'DISCRET' ;
  214.  
  215. CHPLI = CHP1 'ET' CHP2 'ET' CHP3 ;
  216.  
  217. GRCHPL LIMCH GRGL = 'PENT' $DOMTOT 'CENTRE'
  218. 'EULESCAL' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ') CHP 'CLIM' CHPLI ;
  219.  
  220. GRCHP1 LIMCH = 'PENT' $DOMTOT 'CENTRE'
  221. 'EULESCAL' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ')
  222. CHP 'CLIM' CHPLI 'GRADGEO' GRGL ;
  223.  
  224. ERRO = 'MAXIMUM' (GRCHPL '-' GRCHP1) 'ABS' ;
  225.  
  226. 'SI' (ERRO > 1.0D-8) ;
  227. 'MESSAGE' ;
  228. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  229. 'MESSAGE' ;
  230. 'ERREUR' 5;
  231. 'FINSI' ;
  232.  
  233. GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DX' A11
  234. 'NATU' 'DISCRET' ;
  235.  
  236. GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DY' A12
  237. 'NATU' 'DISCRET';
  238.  
  239. GR1DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DZ' A13
  240. 'NATU' 'DISCRET';
  241.  
  242. GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DX' B11
  243. 'NATU' 'DISCRET';
  244.  
  245. GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DY' B12
  246. 'NATU' 'DISCRET';
  247.  
  248. GR2DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DZ' B13
  249. 'NATU' 'DISCRET';
  250.  
  251. GR3DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P3DX' C11
  252. 'NATU' 'DISCRET';
  253.  
  254. GR3DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P3DY' C12
  255. 'NATU' 'DISCRET';
  256.  
  257. GR3DZ = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P3DZ' C13
  258. 'NATU' 'DISCRET';
  259.  
  260. GREXA = GR1DX 'ET' GR1DY 'ET' GR1DZ 'ET' GR2DX
  261. 'ET' GR2DY 'ET' GR2DZ 'ET' GR3DX
  262. 'ET' GR3DY 'ET' GR3DZ ;
  263.  
  264. ERRCH = GREXA '-' GRCHPL ;
  265.  
  266. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ' 'P2DX' 'P2DY' 'P2DZ'
  267. 'P3DX' 'P3DY' 'P3DZ' ;
  268. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  269.  
  270. 'SI' GRAPH ;
  271. MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
  272. CHM_MER = 'KCHA' $DOMTOT 'CHAM' MERRCH ;
  273. 'TRACER' CHM_MER MOD1 'TITR'
  274. ('CHAINE' 'EULESCAL avec C.L. : Erreur');
  275. * CHM_GRA = 'KCHA' $DOMTOT 'CHAM' GRCHPL ;
  276. * 'TRACER' CHM_GRA MOD1 'TITR' ('CHAINE' 'Gradient');
  277. 'FINSI' ;
  278.  
  279. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  280.  
  281. 'SI' (ERRO > 1.0D-8) ;
  282. 'MESSAGE' ;
  283. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  284. 'MESSAGE' ;
  285. 'ERREUR' 5;
  286. 'FINSI' ;
  287.  
  288. *
  289. **** TEST4: wall boudary condition for a scalar field (EULESCAL)
  290. *
  291. CHP = 'REDU' CHP ('DOMA' $DOM1 'CENTRE') ;
  292. GRCHP0 ALCHP0 COEF = 'PENT' $DOM1 'CENTRE' 'EULESCAL'
  293. 'LIMITEUR' ('MOTS' 'UX' 'UY'
  294. 'UZ') CHP;
  295. * AB: 'SYMETRIE' ne marche pas pour un CHAMPOIN
  296. *
  297. AA = 'EXTRAIRE' CHP MAIL ;
  298. NN = 'NBNO' AA ;
  299. CHPSYM CACCA = 'KOPS' 'MATRIK' ;
  300. 'REPETER' BL1 NN ;
  301. BB = 'POIN' &BL1 AA ;
  302. CC = 'MANUEL' 'POI1' BB ;
  303. DD = CC 'SYMETRIE' 'PLAN' P1 P2 P3 ;
  304. VAL1 = 'EXTRAIRE' CHP 'UX' BB ;
  305. VAL2 = 'EXTRAIRE' CHP 'UY' BB ;
  306. VAL3 = 'EXTRAIRE' CHP 'UZ' BB ;
  307. CHPSYM = CHPSYM '+' ('MANUEL' 'CHPO' DD 3 'UX' VAL1
  308. 'UY' VAL2 'UZ' VAL3) ;
  309. 'FIN' BL1 ;
  310. *
  311. AA = 'EXTRAIRE' CHPSYM 'MAIL' ;
  312. 'ELIMINATION' AA (TABTOT . 'CENTRE') 0.0001 ;
  313. CHPTOT = CHP '+' CHPSYM ;
  314. *
  315. GRCHPT ALCHPT COEFT = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL'
  316. 'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ') CHPTOT ;
  317. GRCHP1 = 'REDU' GRCHPT (TAB1 . 'CENTRE') ;
  318. ERRO = (GRCHP1 '-' GRCHP0) 'ABS' ;
  319. 'SI' GRAPH ;
  320. MODT = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
  321. CHM_CHP = 'KCHA' $DOMTOT 'CHAM' CHPTOT ;
  322. 'TRACER' CHM_CHP MODT 'TITR' ('CHAINE' 'EULESCAL: champ');
  323. MOD1 = 'MODELISER' ('DOMA' $DOM1 'MAILLAGE') 'THERMIQUE' ;
  324. CHM_MER = 'KCHA' $DOM1 'CHAM' ERRO ;
  325. 'TRACER' CHM_MER MOD1 'TITR' ('CHAINE' 'EULESCAL: erreur');
  326. 'FINSI' ;
  327. 'SI' (('MAXIMUM' ERRO 'ABS') > 1.0D-8) ;
  328. 'ERREUR' 5 ;
  329. 'FINSI' ;
  330.  
  331. *
  332. **** TEST5: boudary condition for a vectorial field (EULEVECT)
  333. *
  334.  
  335. CHP = 'REDU' CHP ('DOMA' $DOM1 'CENTRE') ;
  336. GRCHP0 ALCHP0 COEF = 'PENT' $DOM1 'CENTRE' 'EULEVECT'
  337. 'LIMITEUR' ('MOTS' 'UX' 'UY'
  338. 'UZ') CHP;
  339. *
  340. * AB: 'SYMETRIE' ne marche pas pour un CHAMPOIN
  341. *
  342. AA = 'EXTRAIRE' CHP MAIL ;
  343. NN = 'NBNO' AA ;
  344. CHPSYM CACCA = 'KOPS' 'MATRIK' ;
  345. 'REPETER' BL1 NN ;
  346. BB = 'POIN' &BL1 AA ;
  347. CC = 'MANUEL' 'POI1' BB ;
  348. DD = CC 'SYMETRIE' 'PLAN' P1 P2 P3 ;
  349. VAL1 = 'EXTRAIRE' CHP 'UX' BB ;
  350. VAL2 = 'EXTRAIRE' CHP 'UY' BB ;
  351. VAL3 = 'EXTRAIRE' CHP 'UZ' BB ;
  352. CHPSYM = CHPSYM '+' ('MANUEL' 'CHPO' DD 3 'UX' VAL1
  353. 'UY' VAL2 'UZ' (-1 * VAL3)) ;
  354. 'FIN' BL1 ;
  355. *
  356. AA = 'EXTRAIRE' CHPSYM 'MAIL' ;
  357. 'ELIMINATION' AA (TABTOT . 'CENTRE') 0.0001 ;
  358. CHPTOT = CHP '+' CHPSYM ;
  359. *
  360. GRCHPT ALCHPT COEFT = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT'
  361. 'LIMITEUR' ('MOTS' 'UX' 'UY' 'UZ') CHPTOT ;
  362. GRCHP1 = 'REDU' GRCHPT (TAB1 . 'CENTRE') ;
  363. ERRO = (GRCHP1 '-' GRCHP0) 'ABS' ;
  364. 'SI' GRAPH ;
  365. MODT = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
  366. CHM_CHP = 'KCHA' $DOMTOT 'CHAM' CHPTOT ;
  367. 'TRACER' CHM_CHP MODT 'TITR' ('CHAINE' 'EULEVECT: champ');
  368. MOD1 = 'MODELISER' ('DOMA' $DOM1 'MAILLAGE') 'THERMIQUE' ;
  369. CHM_MER = 'KCHA' $DOM1 'CHAM' ERRO ;
  370. 'TRACER' CHM_MER MOD1 'TITR' ('CHAINE' 'EULEVECT: erreur');
  371. 'FINSI' ;
  372. 'SI' (('MAXIMUM' ERRO 'ABS') > 1.0D-8) ;
  373. 'ERREUR' 5 ;
  374. 'FINSI' ;
  375.  
  376. 'FIN' ;
  377.  
  378.  
  379.  
  380.  

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