Télécharger pente3D.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : pente3D.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ***********************************************************
  5. **** Finite Volume, "Cell-Centred Formulation". ****
  6. **** PENT, operator to compute gradients and limiters ****
  7. **** ****
  8. **** 3D VALIDATION ****
  9. **** ****
  10. **** T. KLOCZKO, LTMF JULY 2005 ****
  11. **** ****
  12. ***********************************************************
  13. *
  14. *** Choix du type d'élément
  15. *
  16. TYEL = TET4 ;
  17. * TYEL = PYR5 ;
  18. * TYEL = PRI6 ;
  19. * TYEL = CUB8 ;
  20. *
  21. *** Options gibiane
  22. *
  23. 'OPTION' 'DIME' 3 'ELEM' TYEL 'TRAC' 'X'
  24. 'ISOV' 'SULI' 'ECHO' 1 ;
  25. *
  26. *** Option de tracé
  27. *
  28. * GRAPH = VRAI ;
  29. GRAPH = FAUX ;
  30. *
  31. ***************************************************
  32. *** CANAL SECTION CARRÉE AVEC BOSSE SINUSOÏDALE ***
  33. ***************************************************
  34. *
  35. RAF = 1 ;
  36. VRAF = 9. '*' RAF ;
  37. Lref = 1. ;
  38. Size = Lref '/' VRAF ;
  39.  
  40. Lx = 4. ;
  41. Ly = 0.5 ;
  42. Lz = 1. ;
  43. DX = Size ;
  44. DY = Size ;
  45. DZ = Size ;
  46. NX = 'ENTIER' (Lx '/' Size '+' 0.1) ;
  47. NY = 'ENTIER' (Ly '/' Size '+' 0.1) ;
  48. NZ = 'ENTIER' (Lz '/' Size '+' 0.1) ;
  49. *
  50. *** Sommets du domaine de calcul
  51. *
  52. P0 = 0.0 0.0 0.0 ;
  53. P1 = (Lx '/' 4.) 0.0 0.0 ;
  54. P2 = (3. '*' Lx '/' 4.) 0.0 0.0 ;
  55. P3 = Lx 0.0 0.0 ;
  56. P4 = Lx 0.0 Lz ;
  57. P5 = 0.0 0.0 Lz ;
  58.  
  59. P6 = 0.0 Ly 0.0 ;
  60. P7 = (Lx '/' 4.) Ly 0.0 ;
  61. P8 = (3. '*' Lx '/' 4.) Ly 0.0 ;
  62. P9 = Lx Ly 0.0 ;
  63. P10 = Lx Ly Lz ;
  64. P11 = 0.0 Ly Lz ;
  65.  
  66. *
  67. *** Calcul des arêtes
  68. *
  69. P0P1 = 'DROIT' P0 P1 DINI DX DFIN DX ;
  70. P1P2 = 'DROIT' P1 P2 DINI DX DFIN DX ;
  71. P2P3 = 'DROIT' P2 P3 DINI DX DFIN DX ;
  72. P0P3 = P0P1 'ET' P1P2 'ET' P2P3 ;
  73. P4P5 = 'DROIT' P4 P5 DINI DX DFIN DX ;
  74.  
  75. P6P7 = 'DROIT' P6 P7 DINI DX DFIN DX ;
  76. P7P8 = 'DROIT' P7 P8 DINI DX DFIN DX ;
  77. P8P9 = 'DROIT' P8 P9 DINI DX DFIN DX ;
  78. P6P9 = P6P7 'ET' P7P8 'ET' P8P9 ;
  79. P10P11 = 'DROIT' P10 P11 DINI DX DFIN DX ;
  80.  
  81. P0P6 = 'DROIT' P0 P6 DINI DY DFIN DY ;
  82. P5P11 = 'DROIT' P5 P11 DINI DY DFIN DY ;
  83. P3P9 = 'DROIT' P3 P9 DINI DY DFIN DY ;
  84. P4P10 = 'DROIT' P4 P10 DINI DY DFIN DY ;
  85.  
  86. P0P5 = 'DROIT' P0 P5 DINI DZ DFIN DZ ;
  87. P3P4 = 'DROIT' P3 P4 DINI DZ DFIN DZ ;
  88. P9P10 = 'DROIT' P9 P10 DINI DZ DFIN DZ ;
  89. P6P11 = 'DROIT' P6 P11 DINI DZ DFIN DZ ;
  90. *
  91. *** Calcul des surfaces
  92. *
  93. * Inlet
  94. SURFI = 'SURFACE' (('INVERSE' P0P6) 'ET' P0P5 'ET' P5P11
  95. 'ET' ('INVERSE' P6P11)) 'PLAN' ;
  96. SURFI = 'COULEUR' SURFI 'VERT' ;
  97.  
  98. * Outlet
  99. SURFO = 'SURFACE' (('INVERSE' P3P9) 'ET' P3P4 'ET' P4P10
  100. 'ET' ('INVERSE' P9P10)) 'PLAN' ;
  101. SURFO = 'COULEUR' SURFO 'ROUG' ;
  102.  
  103. * Up
  104. SURFU = 'SURFACE' (('INVERSE' P4P5) 'ET' P4P10 'ET' P10P11
  105. 'ET' ('INVERSE' P5P11)) 'PLAN' ;
  106. SURFU = 'COULEUR' SURFU 'TURQ' ;
  107.  
  108. * Down
  109. *
  110. * On trace en premier lieu une surface plane que l'on déforme
  111. * par un champ de déplacement ad hoc.
  112. SURFD = 'SURFACE' (P0P3 'ET' P3P9 'ET' ('INVERSE'P6P9)
  113. 'ET' ('INVERSE' P0P6)) 'PLAN' ;
  114. SURFD = 'COULEUR' SURFD 'BLEU' ;
  115. *
  116. *** Création du déplacement pour générer la bosse
  117. *
  118. NBPTD = 'NBNO' SURFD ;
  119. SURD1 = 'CHANGER' SURFD 'POI1' ;
  120. CHPMOUV CACA = 'KOPS' MATRIK ;
  121. 'REPETER' DBCL NBPTD ;
  122. PSD = 'POINT' SURD1 &DBCL ;
  123. XSD = ('COORDONNEE' 1 PSD) ;
  124. 'SI' (XSD < (Lx '/' 4.)) ;
  125. CHPI = 'MANU' 'CHPO' PSD 3
  126. 'UX' 0.D0 'UY' 0.D0 'UZ' 0.D0 ;
  127. 'SINON' ;
  128. 'SI' (XSD > (3. '*' Lx '/' 4.)) ;
  129. CHPI = 'MANU' 'CHPO' PSD 3
  130. 'UX' 0.D0 'UY' 0.D0 'UZ' 0.D0 ;
  131. 'SINON' ;
  132. ZSD = (0.1D0 '*' Lx '/' 4.) '*' (1.D0 +
  133. ('COS' (180.D0 '*' ((4. '*' XSD '/' Lx) '-' 2.)))) ;
  134. CHPI = 'MANU' 'CHPO' PSD 3
  135. 'UX' 0.D0 'UY' 0.D0 'UZ' ZSD ;
  136. 'FINSI' ;
  137. 'FINSI' ;
  138. CHPMOUV = CHPMOUV '+' CHPI ;
  139. 'FIN' DBCL ;
  140. *
  141. * Modification de la forme de la surface du bas
  142. FSURD = 'FORM' CHPMOUV ;
  143.  
  144. * Front
  145. SURFF = 'SURFACE' (P0P3 'ET' P3P4 'ET' P4P5
  146. 'ET' ('INVERSE' P0P5)) 'PLAN' ;
  147. * Back
  148. SURFB = 'SURFACE' (P6P9 'ET' P9P10 'ET' P10P11
  149. 'ET' ('INVERSE' P6P11)) 'PLAN' ;
  150. * Total Face
  151. SURTOT = (SURFF 'ET' SURFB 'ET' SURFI
  152. 'ET' SURFO 'ET' SURFU 'ET' SURFD) ;
  153. 'ELIMINATION' SURTOT (Size '/' 1.D3) ;
  154.  
  155. 'SI' GRAPH ;
  156. 'TRACER' SURTOT 'TITRE'
  157. ('CHAINE' 'Enveloppe, nbel=' ('NBEL' SURTOT)) ;
  158. 'FINSI' ;
  159. *
  160. *** Volume
  161. *
  162. DOMTOT = 'VOLUME' SURTOT ;
  163. *
  164. *** Surface latérale
  165. *
  166. SURTOT = 'ENVELOPPE' DOMTOT ;
  167. si graph;'TRACER' surtot ;finsi;
  168.  
  169. MAICON = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT' SURTOT ;
  170. DOMINT = DOMTOT 'DIFF' MAICON 'COULEUR' 'ROUGE' ;
  171. *
  172. **** Creation of MODELS
  173. *
  174.  
  175. MDOMTOT = 'MODELISER' DOMTOT 'EULER' ;
  176. MDOMINT = 'MODELISER' DOMINT 'EULER' ;
  177. MSURTOT = 'MODELISER' SURTOT 'EULER' ;
  178.  
  179. TDOMTOT = 'DOMA' MDOMTOT 'VF' ;
  180. TDOMINT = 'DOMA' MDOMINT 'VF' ;
  181. TSURTOT = 'DOMA' MSURTOT 'VF' ;
  182.  
  183. QDOMTOT = TDOMTOT . 'QUAF' ;
  184. QDOMINT = TDOMINT . 'QUAF' ;
  185. QSURTOT = TSURTOT . 'QUAF' ;
  186.  
  187. 'ELIMINATION' (QDOMTOT 'ET' QDOMINT 'ET' QSURTOT)
  188. (1.d-3 '/' (RAF '*' 1.)) ;
  189.  
  190. 'SI' GRAPH ;
  191. 'TRACER' DOMTOT 'TITRE'
  192. ('CHAINE' 'Domaine, nbel=' ('NBEL' DOMTOT)) ;
  193. 'TRACER' MAICON 'TITRE'
  194. ('CHAINE' 'Mailles extérieures, nbel=' ('NBEL' MAICON)) ;
  195. 'TRACER' DOMINT 'TITRE'
  196. ('CHAINE' 'Mailles intérieures, nbel=' ('NBEL' DOMINT)) ;
  197. 'FINSI' ;
  198. *
  199. **** The interface points (for limit condition)
  200. *
  201. SURC = ('DOMA' MSURTOT 'CENTRE') 'COULEUR' 'BLEU';
  202. 'REPETER' BLLIM (('NBEL' SURC)) ;
  203. POIN0 = 'POIN' SURC &BLLIM ;
  204. XFAC YFAC ZFAC = 'COORDONNEE' POIN0 ;
  205. PFAC = ('DOMA' MDOMTOT 'FACE') 'POIN' 'PROC' (XFAC YFAC ZFAC);
  206. 'SI' (&BLLIM 'EGA' 1) ;
  207. GEOLIM = 'MANUEL' 'POI1' PFAC 'BLEU' ;
  208. 'SINON' ;
  209. GEOLIM = GEOLIM 'ET' ('MANUEL' 'POI1' PFAC 'BLEU') ;
  210. 'FINSI' ;
  211. 'FIN' BLLIM ;
  212. *
  213. 'SI' GRAPH ;
  214. 'TRACER' (DOMTOT 'ET' GEOLIM)
  215. 'TITRE' 'DOMTOT et points faces aux bords';
  216. 'FINSI' ;
  217. *
  218. ***********************************************
  219. ********* CHP: scalar linear field *********
  220. ********* EULESCAL *********
  221. ***********************************************
  222. *
  223. * (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
  224. *
  225.  
  226. A11 = 12.01517 ;
  227. A12 = 13.1421 ;
  228. A13 = 14.0412 ;
  229. A0 = -3.21 ;
  230.  
  231. B11 = 22.01517 ;
  232. B12 = 43.1421 ;
  233. B13 = 35.5463 ;
  234. B0 = -5.21 ;
  235.  
  236. C11 = 24.01517 ;
  237. C12 = 46.1421 ;
  238. C13 = 39.5463 ;
  239. C0 = -6.21 ;
  240.  
  241. XX YY ZZ = 'COORDONNEE' ('DOMA' MDOMTOT 'CENTRE') ;
  242.  
  243. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0 ;
  244.  
  245. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0 ;
  246.  
  247. CHP3 = (C11 '*' XX) '+' (C12 '*' YY) '+' (C13 '*' ZZ) '+' C0 ;
  248.  
  249. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  250. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  251. CHP3 = 'NOMC' 'C3' CHP3 'NATU' 'DISCRET' ;
  252.  
  253. CHP = CHP1 'ET' CHP2 'ET' CHP3 ;
  254.  
  255. MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
  256.  
  257. GRCHP LIMCH GRG = 'PENT' MDOMTOT 'CENTRE'
  258. 'EULESCAL' 'NOLIMITE' MOTC CHP ;
  259.  
  260. LIMCH1 = 'MANU' 'CHPO' ('DOMA' MDOMTOT 'CENTRE')
  261. 3 'P1' 1.0 'P2' 1.0 'P3' 1.0 ;
  262.  
  263. ERRO = 'MAXIMUM' (LIMCH1 '-' LIMCH) 'ABS' ;
  264.  
  265. 'SI' (ERRO > 1.0D-8) ;
  266. 'MESSAGE' ;
  267. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  268. 'MESSAGE' ;
  269. 'ERREUR' 5;
  270. 'FINSI' ;
  271.  
  272. *
  273. * TEST1 : we check that we have the same values if we use
  274. * GRG to compute gradients
  275. *
  276.  
  277. MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
  278. GRCHP1 LIMCH = 'PENT' MDOMTOT 'CENTRE'
  279. 'EULESCAL' 'LIMITEUR' MOTC
  280. CHP 'GRADGEO' GRG ;
  281. 'LISTE' MOTC ;
  282.  
  283. ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
  284.  
  285. 'SI' (ERRO > 1.0D-8) ;
  286. 'MESSAGE' ;
  287. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  288. 'MESSAGE' ;
  289. 'ERREUR' 5;
  290. 'FINSI' ;
  291.  
  292.  
  293. *
  294. * TEST2 : we check that the computation is exact on the internal domain
  295. *
  296.  
  297. GRCHPI = 'REDU' GRCHP ('DOMA' MDOMINT 'CENTRE') ;
  298.  
  299.  
  300. GR1DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DX' A11
  301. 'NATU' 'DISCRET' ;
  302.  
  303. GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DY' A12
  304. 'NATU' 'DISCRET';
  305.  
  306. GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DZ' A13
  307. 'NATU' 'DISCRET';
  308.  
  309. GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DX' B11
  310. 'NATU' 'DISCRET';
  311.  
  312. GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DY' B12
  313. 'NATU' 'DISCRET';
  314.  
  315. GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DZ' B13
  316. 'NATU' 'DISCRET';
  317.  
  318. GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DX' C11
  319. 'NATU' 'DISCRET';
  320.  
  321. GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DY' C12
  322. 'NATU' 'DISCRET';
  323.  
  324. GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DZ' C13
  325. 'NATU' 'DISCRET';
  326.  
  327. GREXA = GR1DX 'ET' GR1DY 'ET' GR1DZ 'ET'
  328. GR2DX 'ET' GR2DY 'ET' GR2DZ 'ET'
  329. GR3DX 'ET' GR3DY 'ET' GR3DZ ;
  330.  
  331. ERRCH = GREXA '-' GRCHPI ;
  332.  
  333. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ'
  334. 'P2DX' 'P2DY' 'P2DZ'
  335. 'P3DX' 'P3DY' 'P3DZ' ;
  336. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  337.  
  338.  
  339. *
  340. *** Error graphics (we change the error CHAMPOINT into a CHAMELEM
  341. *
  342.  
  343. 'SI' GRAPH ;
  344. MOD1 = 'MODELISER' ('DOMA' MDOMINT 'MAILLAGE') 'THERMIQUE' ;
  345. CHM_MER = 'KCHA' MDOMINT 'CHAM' MERRCH ;
  346. 'TRACER' CHM_MER MOD1 'TITR'
  347. ('CHAINE' 'EULESCAL: erreur') ;
  348. 'FINSI' ;
  349.  
  350. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  351.  
  352. 'SI' (ERRO > 1.0D-8) ;
  353. 'MESSAGE' ;
  354. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  355. 'MESSAGE' ;
  356. 'ERREUR' 5;
  357. 'FINSI' ;
  358.  
  359.  
  360. *
  361. * TEST3 : we impose the linear field values on the border.
  362. * In that case error must be "zero" everywhere.
  363. *
  364.  
  365. XLIM YLIM ZLIM = 'COORDONNEE' GEOLIM ;
  366.  
  367. CHPLI1 = (A11 '*' XLIM) '+' (A12 '*' YLIM) '+' (A13 '*' ZLIM) '+' A0;
  368.  
  369. CHPLI2 = (B11 '*' XLIM) '+' (B12 '*' YLIM) '+' (B13 '*' ZLIM) '+' B0;
  370.  
  371. CHPLI3 = (C11 '*' XLIM) '+' (C12 '*' YLIM) '+' (C13 '*' ZLIM) '+' C0;
  372.  
  373. CHPLI1 = 'NOMC' 'C1' CHPLI1 'NATU' 'DISCRET' ;
  374. CHPLI2 = 'NOMC' 'C2' CHPLI2 'NATU' 'DISCRET' ;
  375. CHPLI3 = 'NOMC' 'C3' CHPLI3 'NATU' 'DISCRET' ;
  376.  
  377. CHPLI = CHPLI1 'ET' CHPLI2 'ET' CHPLI3 ;
  378.  
  379. MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
  380.  
  381. GRCHPL LIMCH GRGL = 'PENT' MDOMTOT 'CENTRE'
  382. 'EULESCAL' 'NOLIMITE' MOTC CHP 'CLIM' CHPLI ;
  383.  
  384. MOTC = ('MOTS' 'C1' 'C2' 'C3') ;
  385. GRCHP1 LIMCH = 'PENT' MDOMTOT 'CENTRE'
  386. 'EULESCAL' 'NOLIMITE' MOTC
  387. CHP 'CLIM' CHPLI 'GRADGEO' GRGL ;
  388.  
  389. ERRO = 'MAXIMUM' (GRCHPL '-' GRCHP1) 'ABS' ;
  390.  
  391. 'SI' (ERRO > 1.0D-8) ;
  392. 'MESSAGE' ;
  393. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  394. 'MESSAGE' ;
  395. 'ERREUR' 5;
  396. 'FINSI' ;
  397.  
  398. GR1DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DX' A11
  399. 'NATU' 'DISCRET' ;
  400.  
  401. GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DY' A12
  402. 'NATU' 'DISCRET';
  403.  
  404. GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DZ' A13
  405. 'NATU' 'DISCRET';
  406.  
  407. GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DX' B11
  408. 'NATU' 'DISCRET';
  409.  
  410. GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DY' B12
  411. 'NATU' 'DISCRET';
  412.  
  413. GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DZ' B13
  414. 'NATU' 'DISCRET';
  415.  
  416. GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DX' C11
  417. 'NATU' 'DISCRET';
  418.  
  419. GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DY' C12
  420. 'NATU' 'DISCRET';
  421.  
  422. GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DZ' C13
  423. 'NATU' 'DISCRET';
  424.  
  425. GREXA = GR1DX 'ET' GR1DY 'ET' GR1DZ 'ET'
  426. GR2DX 'ET' GR2DY 'ET' GR2DZ 'ET'
  427. GR3DX 'ET' GR3DY 'ET' GR3DZ ;
  428.  
  429. ERRCH = GREXA '-' GRCHPL ;
  430.  
  431. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ'
  432. 'P2DX' 'P2DY' 'P2DZ'
  433. 'P3DX' 'P3DY' 'P3DZ' ;
  434.  
  435. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  436.  
  437. 'SI' GRAPH ;
  438. MOD1 = 'MODELISER' ('DOMA' MDOMTOT 'MAILLAGE') 'THERMIQUE' ;
  439. CHM_MER = 'KCHA' MDOMTOT 'CHAM' MERRCH ;
  440. 'TRACER' CHM_MER MOD1 'TITR'
  441. ('CHAINE' 'EULESCAL avec C.L. : Erreur') ;
  442. 'FINSI' ;
  443.  
  444. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  445.  
  446. 'SI' (ERRO > 1.0D-8) ;
  447. 'MESSAGE' ;
  448. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  449. 'MESSAGE' ;
  450. 'ERREUR' 5;
  451. 'FINSI' ;
  452.  
  453.  
  454. *
  455. **** TEST4: boudary condition for a scalar field (EULESCAL)
  456. *
  457.  
  458. *** Symétrie de référence et objet modèle
  459. *
  460. VOLI = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT' SURFI ;
  461. $VOLI = 'MODELISER' VOLI 'EULER' ;
  462. TVOLI = 'DOMA' $VOLI 'VF' ;
  463. QVOLI = TVOLI . 'QUAF' ;
  464. *
  465. *** Champoints quelconques
  466. *
  467. XX YY ZZ = 'COORDONNEE' ('DOMA' $VOLI 'CENTRE') ;
  468.  
  469. CHP1 = ('NOMC' 'C1' (yy * ('EXP'(XX) '+' ZZ)) 'NATU' 'DISCRET') ;
  470. CHP2 = ('NOMC' 'C2' (yy '+' (3 '*' ZZ)) 'NATU' 'DISCRET') ;
  471. CHP3 = ('NOMC' 'C3' (XX * ('EXP'(ZZ) '+' ZZ)) 'NATU' 'DISCRET') ;
  472. *
  473. *** Plan de symétrie
  474. *
  475. PP0 = P0 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
  476. PP5 = P5 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
  477. PP6 = P6 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
  478. *
  479. *** Champoints symétriques
  480. *
  481. CNEW1 CHP11 = ('EXTRAIRE' CHP1 'MAILLAGE') CHP1 'SYMETRIE'
  482. 'PLAN' PP0 PP5 PP6 ;
  483. CNEW2 CHP21 = ('EXTRAIRE' CHP2 'MAILLAGE') CHP2 'SYMETRIE'
  484. 'PLAN' PP0 PP5 PP6 ;
  485. CNEW3 CHP31 = ('EXTRAIRE' CHP3 'MAILLAGE') CHP3 'SYMETRIE'
  486. 'PLAN' PP0 PP5 PP6 ;
  487. 'ELIMINATION' (CNEW1 'ET' CNEW2 'ET' CNEW3) 1.0D-9 ;
  488. *
  489. *** Visualisation des maillages
  490. *
  491. VSYM = (VOLI 'SYMETRIE' 'PLAN' PP0 PP5 PP6) 'COULEUR' 'ROUG' ;
  492. VTOT = (VOLI 'ET' VSYM) ;
  493. 'ELIMINATION' VTOT 1.d-5 ;
  494. *
  495. 'SI' GRAPH ;
  496. 'TRACER' (VSYM 'ET' VTOT) 'TITRE' 'Traitement de C.L.' ;
  497. 'FINSI' ;
  498. *
  499. *** Objet modèle
  500. *
  501. $VTOT = 'MODELISER' VTOT 'EULER' ;
  502. TVTOT = 'DOMA' $VTOT 'VF' ;
  503. QVTOT = TVTOT . 'QUAF' ;
  504. 'ELIMINATION' QVOLI 1.D-5 QVTOT ;
  505. 'ELIMINATION' QVTOT 1.D-5 CNEW1 ;
  506.  
  507. *
  508. *** Calcul du gradient
  509. *
  510.  
  511. CHPPET = CHP1 'ET' CHP2 'ET' CHP3 ;
  512. CHPSYM = CHP11 'ET' CHP21 'ET' CHP31 ;
  513. CHPTOT = CHPSYM 'ET' CHPPET ;
  514.  
  515.  
  516. GRCHP LIMCHP GRG = 'PENT' $VTOT 'CENTRE' 'EULESCAL' 'NOLIMITE'
  517. ('MOTS' 'C1' 'C2' 'C3') CHPTOT ;
  518.  
  519. GRCHP1 LIMCHP GRG1 = 'PENT' $VOLI 'CENTRE' 'EULESCAL' 'NOLIMITE'
  520. ('MOTS' 'C1' 'C2' 'C3')
  521. ('REDU' CHPTOT ('DOMA' $VOLI 'CENTRE')) ;
  522.  
  523.  
  524. ERRCH = GRCHP1 '-' ('REDU' GRCHP ('DOMA' $VOLI 'CENTRE')) ;
  525.  
  526. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ'
  527. 'P2DX' 'P2DY' 'P2DZ'
  528. 'P3DX' 'P3DY' 'P3DZ' ;
  529.  
  530. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  531.  
  532. 'SI' GRAPH ;
  533. MOD1 = 'MODELISER' ('DOMA' $VOLI 'MAILLAGE') 'THERMIQUE' ;
  534. CHM_MER = 'KCHA' $VOLI 'CHAM' MERRCH ;
  535. 'TRACER' CHM_MER MOD1
  536. 'TITR' ('CHAINE' 'EULESCAL sur les bords: erreur') ;
  537. 'FINSI' ;
  538.  
  539. ERRO = 'MAXIMUM' MERRCH 'ABS' ;
  540. 'LISTE' ERRO ;
  541.  
  542.  
  543. 'SI' (ERRO > 1.0D-8) ;
  544. 'MESSAGE' ;
  545. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  546. 'MESSAGE' ;
  547. 'ERREUR' 5 ;
  548. 'FINSI' ;
  549. *
  550. ***************************************************
  551. ********* CHP: vectorial linear field ************
  552. ********* EULEVECT ****************
  553. ***************************************************
  554. *
  555. * (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
  556. *
  557.  
  558. A11 = 11.3 ;
  559. A12 = 0.23 ;
  560. A13 = 2.46 ;
  561. A0 = 1.0 ;
  562.  
  563. B11 = 77.0 ;
  564. B12 = 0.6 ;
  565. B13 = 9.2 ;
  566. B0 = 9.11 ;
  567.  
  568. C11 = 1.89 ;
  569. C12 = 44.7 ;
  570. C13 = 0.87 ;
  571. C0 = 4.0 ;
  572.  
  573. XX YY ZZ = 'COORDONNEE' ('DOMA' MDOMTOT 'CENTRE') ;
  574.  
  575. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0 ;
  576.  
  577. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0 ;
  578.  
  579. CHP3 = (C11 '*' XX) '+' (C12 '*' YY) '+' (C13 '*' ZZ) '+' C0 ;
  580.  
  581. CHP1 = 'NOMC' 'UX' CHP1 'NATU' 'DISCRET' ;
  582. CHP2 = 'NOMC' 'UY' CHP2 'NATU' 'DISCRET' ;
  583. CHP3 = 'NOMC' 'UZ' CHP3 'NATU' 'DISCRET' ;
  584.  
  585. CHP = CHP1 'ET' CHP2 'ET' CHP3 ;
  586.  
  587. MOTC = ('MOTS' 'UX' 'UY' 'UZ') ;
  588. GRCHP LIMCHP GRG = 'PENT' MDOMTOT 'CENTRE'
  589. 'EULEVECT' 'NOLIMITE' MOTC CHP ;
  590. 'LISTE' MOTC ;
  591.  
  592. LIMCH1 = 'MANU' 'CHPO' ('DOMA' MDOMTOT 'CENTRE')
  593. 3 'P1' 1.0 'P2' 1.0 'P3' 1.0 ;
  594.  
  595. ERRO = 'MAXIMUM' (LIMCH1 '-' LIMCHP) 'ABS' ;
  596.  
  597. 'SI' (ERRO > 1.0D-8) ;
  598. 'MESSAGE' ;
  599. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  600. 'MESSAGE' ;
  601. 'ERREUR' 5;
  602. 'FINSI' ;
  603.  
  604. *
  605. * TEST1 : we check that we have the same values if we use
  606. * GRG to compute gradients
  607. *
  608.  
  609. GRCHP1 LIMCHP = 'PENT' MDOMTOT 'CENTRE'
  610. 'EULEVECT' 'NOLIMITE' MOTC
  611. CHP 'GRADGEO' GRG ;
  612.  
  613. ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
  614.  
  615. 'SI' (ERRO > 5.0D-8) ;
  616. 'MESSAGE' ;
  617. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  618. 'MESSAGE' ;
  619. 'ERREUR' 5;
  620. 'FINSI' ;
  621.  
  622. *
  623. * TEST2 : we check that the computation is exact on the internal domain
  624. *
  625.  
  626. GRCHPI = 'REDU' GRCHP ('DOMA' MDOMINT 'CENTRE') ;
  627.  
  628.  
  629. GR1DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DX' A11
  630. 'NATU' 'DISCRET' ;
  631.  
  632. GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DY' A12
  633. 'NATU' 'DISCRET';
  634.  
  635. GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P1DZ' A13
  636. 'NATU' 'DISCRET';
  637.  
  638. GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DX' B11
  639. 'NATU' 'DISCRET';
  640.  
  641. GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DY' B12
  642. 'NATU' 'DISCRET';
  643.  
  644. GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P2DZ' B13
  645. 'NATU' 'DISCRET';
  646.  
  647. GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DX' C11
  648. 'NATU' 'DISCRET';
  649.  
  650. GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DY' C12
  651. 'NATU' 'DISCRET';
  652.  
  653. GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMINT 'CENTRE') 1 'P3DZ' C13
  654. 'NATU' 'DISCRET';
  655.  
  656. GREXA = GR1DX 'ET' GR1DY 'ET' GR1DZ 'ET'
  657. GR2DX 'ET' GR2DY 'ET' GR2DZ 'ET'
  658. GR3DX 'ET' GR3DY 'ET' GR3DZ ;
  659.  
  660. ERRCH = GREXA '-' GRCHPI ;
  661.  
  662. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ'
  663. 'P2DX' 'P2DY' 'P2DZ'
  664. 'P3DX' 'P3DY' 'P3DZ' ;
  665.  
  666. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  667.  
  668. *
  669. *** CREATION DE 'MODEL' POUR GRAPHIQUER LE CHAMELEM ***
  670. *
  671.  
  672. 'SI' GRAPH ;
  673. MOD1 = 'MODELISER' ('DOMA' MDOMINT 'MAILLAGE') 'THERMIQUE' ;
  674. CHM_MER = 'KCHA' MDOMINT 'CHAM' MERRCH ;
  675. 'TRACER' CHM_MER MOD1 'TITR'
  676. ('CHAINE' 'EULEVECT: Erreur') ;
  677. 'FINSI' ;
  678.  
  679. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  680.  
  681. 'SI' (ERRO > 5.0D-8) ;
  682. 'MESSAGE' ;
  683. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  684. 'MESSAGE' ;
  685. 'ERREUR' 5;
  686. 'FINSI' ;
  687.  
  688.  
  689. *
  690. * TEST3 : we impose the linear field values on the border.
  691. * In that case error must be "zero" everywhere.
  692. *
  693.  
  694. XLIM YLIM ZLIM = 'COORDONNEE' GEOLIM ;
  695.  
  696. CHPLI1 = (A11 '*' XLIM) '+' (A12 '*' YLIM) '+' (A13 '*' ZLIM) '+' A0 ;
  697.  
  698. CHPLI2 = (B11 '*' XLIM) '+' (B12 '*' YLIM) '+' (B13 '*' ZLIM) '+' B0 ;
  699.  
  700. CHPLI3 = (C11 '*' XLIM) '+' (C12 '*' YLIM) '+' (C13 '*' ZLIM) '+' C0 ;
  701.  
  702. CHPLI1 = 'NOMC' 'UX' CHPLI1 'NATU' 'DISCRET' ;
  703. CHPLI2 = 'NOMC' 'UY' CHPLI2 'NATU' 'DISCRET' ;
  704. CHPLI3 = 'NOMC' 'UZ' CHPLI3 'NATU' 'DISCRET' ;
  705.  
  706. CHPLI = CHPLI1 'ET' CHPLI2 'ET' CHPLI3 ;
  707.  
  708.  
  709. GRCHPL LIMCHP GRGL = 'PENT' MDOMTOT 'CENTRE'
  710. 'EULEVECT' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ')
  711. CHP 'CLIM' CHPLI ;
  712.  
  713. GRCHP1 LIMCHP = 'PENT' MDOMTOT 'CENTRE'
  714. 'EULEVECT' 'NOLIMITE' ('MOTS' 'UX' 'UY' 'UZ')
  715. CHP 'CLIM' CHPLI 'GRADGEO' GRGL ;
  716.  
  717. ERRO = 'MAXIMUM' (GRCHPL '-' GRCHP1) 'ABS' ;
  718.  
  719. 'SI' (ERRO > 1.0D-8) ;
  720. 'MESSAGE' ;
  721. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  722. 'MESSAGE' ;
  723. 'ERREUR' 5;
  724. 'FINSI' ;
  725.  
  726. GR1DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DX' A11
  727. 'NATU' 'DISCRET' ;
  728.  
  729. GR1DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DY' A12
  730. 'NATU' 'DISCRET';
  731.  
  732. GR1DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P1DZ' A13
  733. 'NATU' 'DISCRET';
  734.  
  735. GR2DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DX' B11
  736. 'NATU' 'DISCRET';
  737.  
  738. GR2DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DY' B12
  739. 'NATU' 'DISCRET';
  740.  
  741. GR2DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P2DZ' B13
  742. 'NATU' 'DISCRET';
  743.  
  744. GR3DX = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DX' C11
  745. 'NATU' 'DISCRET';
  746.  
  747. GR3DY = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DY' C12
  748. 'NATU' 'DISCRET';
  749.  
  750. GR3DZ = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'CENTRE') 1 'P3DZ' C13
  751. 'NATU' 'DISCRET';
  752.  
  753.  
  754. GREXA = GR1DX 'ET' GR1DY 'ET' GR1DZ 'ET'
  755. GR2DX 'ET' GR2DY 'ET' GR2DZ 'ET'
  756. GR3DX 'ET' GR3DY 'ET' GR3DZ ;
  757.  
  758. ERRCH = GREXA '-' GRCHPL ;
  759.  
  760. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ'
  761. 'P2DX' 'P2DY' 'P2DZ'
  762. 'P3DX' 'P3DY' 'P3DZ' ;
  763. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  764.  
  765. 'SI' GRAPH ;
  766. MOD1 = 'MODELISER' ('DOMA' MDOMTOT 'MAILLAGE') 'THERMIQUE' ;
  767. CHM_MER = 'KCHA' MDOMTOT 'CHAM' MERRCH ;
  768. 'TRACER' CHM_MER MOD1 'TITR'
  769. ('CHAINE' 'EULEVECT avec C.L.: erreur') ;
  770. 'FINSI' ;
  771.  
  772. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  773.  
  774. 'SI' (ERRO > 1.0D-8) ;
  775. 'MESSAGE' ;
  776. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  777. 'MESSAGE' ;
  778. 'ERREUR' 5;
  779. 'FINSI' ;
  780.  
  781. *
  782. **** TEST4: boudary condition for a vectorial field (EULEVECT)
  783. *
  784.  
  785. *** Géométrie de base et objet modèle
  786. *
  787. VOLI = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT' SURFI ;
  788. $VOLI = 'MODELISER' VOLI 'EULER' ;
  789. TVOLI = 'DOMA' $VOLI 'VF' ;
  790. QVOLI = TVOLI . 'QUAF' ;
  791. *
  792. *** Construction d'un champoint
  793. *
  794. XX YY ZZ = 'COORDONNEE' ('DOMA' $VOLI 'CENTRE') ;
  795.  
  796. CHP1 = ('NOMC' 'UX' (yy * ('EXP'(XX) '+' ZZ)) 'NATU' 'DISCRET') ;
  797. CHP2 = ('NOMC' 'UY' (yy '+' (3 '*' ZZ)) 'NATU' 'DISCRET') ;
  798. CHP3 = ('NOMC' 'UZ' (XX * ('EXP'(ZZ) '+' ZZ)) 'NATU' 'DISCRET') ;
  799. *
  800. *** Plan de symétrie
  801. *
  802. PP0 = P0 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
  803. PP5 = P5 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
  804. PP6 = P6 'PLUS' ((-1.d-11) 0.0 0.0 ) ;
  805. *
  806. *** Construction du champoint symétrique par rapport au plan
  807. *
  808. CNEW1 CHP11 = ('EXTRAIRE' CHP1 'MAILLAGE') CHP1 'SYMETRIE'
  809. 'PLAN' PP0 PP5 PP6 ;
  810. CHP11 = CHP11 '*' (-1.D0) ;
  811.  
  812. CNEW2 CHP21 = ('EXTRAIRE' CHP2 'MAILLAGE') CHP2 'SYMETRIE'
  813. 'PLAN' PP0 PP5 PP6 ;
  814.  
  815. CNEW3 CHP31 = ('EXTRAIRE' CHP3 'MAILLAGE') CHP3 'SYMETRIE'
  816. 'PLAN' PP0 PP5 PP6 ;
  817. 'ELIMINATION' (CNEW1 'ET' CNEW2 'ET' CNEW3) 1.0D-9 ;
  818. *
  819. *** Visualisation des maillages
  820. *
  821. VSYM = (VOLI 'SYMETRIE' 'PLAN' PP0 PP5 PP6) 'COULEUR' 'ROUG' ;
  822. VTOT = (VOLI 'ET' VSYM) ;
  823. 'ELIMINATION' VTOT 1.d-5 ;
  824. *
  825. 'SI' GRAPH ;
  826. 'TRACER' (VSYM 'ET' VTOT) 'TITRE' 'Traitement de C.L.' ;
  827. 'FINSI' ;
  828. *
  829. *** Objet modèle
  830. *
  831. $VTOT = 'MODELISER' VTOT 'EULER' ;
  832. TVTOT = 'DOMA' $VTOT 'VF' ;
  833. QVTOT = TVTOT . 'QUAF' ;
  834. 'ELIMINATION' QVOLI 1.D-5 QVTOT ;
  835. 'ELIMINATION' QVTOT 1.D-5 CNEW1 ;
  836. *
  837. *** Calcul des gradients
  838. *
  839.  
  840. CHPPET = CHP1 'ET' CHP2 'ET' CHP3 ;
  841. CHPSYM = CHP11 'ET' CHP21 'ET' CHP31 ;
  842. CHPTOT = CHPSYM 'ET' CHPPET ;
  843.  
  844.  
  845. GRCHP LIMCHP GRG = 'PENT' $VTOT 'CENTRE' 'EULEVECT' 'NOLIMITE'
  846. ('MOTS' 'UX' 'UY' 'UZ') CHPTOT ;
  847.  
  848. GRCHP1 LIMCHP GRG1 = 'PENT' $VOLI 'CENTRE' 'EULEVECT' 'NOLIMITE'
  849. ('MOTS' 'UX' 'UY' 'UZ')
  850. ('REDU' CHPTOT ('DOMA' $VOLI 'CENTRE')) ;
  851.  
  852.  
  853. ERRCH = GRCHP1 '-' ('REDU' GRCHP ('DOMA' $VOLI 'CENTRE'));
  854.  
  855. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P1DZ'
  856. 'P2DX' 'P2DY' 'P2DZ'
  857. 'P3DX' 'P3DY' 'P3DZ' ;
  858.  
  859. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  860.  
  861. 'SI' GRAPH ;
  862. MOD1 = 'MODELISER' ('DOMA' $VOLI 'MAILLAGE') 'THERMIQUE' ;
  863. CHM_MER = 'KCHA' $VOLI 'CHAM' MERRCH ;
  864. 'TRACER' CHM_MER MOD1
  865. 'TITR' ('CHAINE' 'EULEVECT sur les bords: erreur') ;
  866. 'FINSI' ;
  867.  
  868. ERRO = 'MAXIMUM' MERRCH 'ABS' ;
  869. 'LISTE' ERRO ;
  870.  
  871.  
  872. 'SI' (ERRO > 1.0D-8) ;
  873. 'MESSAGE' ;
  874. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  875. 'MESSAGE' ;
  876. 'ERREUR' 5 ;
  877. 'FINSI' ;
  878.  
  879. *
  880. *** Fin des tests
  881. *
  882. 'MESSAGE' ;
  883. 'MESSAGE' ('CHAINE' 'OK DOKY') ;
  884. 'MESSAGE' ;
  885.  
  886. 'FIN' ;
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  

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