Télécharger pente.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : pente.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. **** Modif, 25/02/04, ajoute 'MODE' 'AXIS' ****
  9. ***********************************************************
  10.  
  11. 'OPTION' 'ECHO' 0 'DIME' 2
  12. 'ELEM' 'TRI3'
  13. 'TRAC' 'X' ;
  14.  
  15. GRAPH = FAUX ;
  16. * GRAPH = VRAI ;
  17.  
  18.  
  19. COMPLET = VRAI ;
  20.  
  21. *
  22. *** MESH
  23. *
  24.  
  25. P0 = 0.0D0 0.0D0 ;
  26. P1 = 3.0D0 0.0D0 ;
  27. P2 = 3.0D0 3.0D0 ;
  28. P3 = 0.0D0 3.0D0 ;
  29. P4 = 6.0D0 0.0D0 ;
  30. P5 = 6.0D0 3.0D0 ;
  31.  
  32. 'SI' COMPLET ;
  33. N1 = 80 ;
  34. N2 = 60 ;
  35. N3 = 40 ;
  36. N4 = 90 ;
  37. N5 = 90 ;
  38. N6 = 10 ;
  39. N7 = 50 ;
  40. 'SINON' ;
  41. N1 = 8 ;
  42. N2 = 7 ;
  43. N3 = 6 ;
  44. N4 = 9 ;
  45. N5 = 9 ;
  46. N6 = 7 ;
  47. N7 = 8 ;
  48. 'FINSI' ;
  49.  
  50. LINEXT1 = ((P0 'DROIT' N1 P1) 'ET' (P1 'DROIT' N2 P2) 'ET'
  51. (P2 'DROIT' N3 P3) 'ET' (P3 'DROIT' N4 P0)) ;
  52.  
  53. LINEXT2 = ((P1 'DROIT' N2 P2) 'ET' (P2 'DROIT' N5 P5) 'ET'
  54. (P5 'DROIT' N6 P4) 'ET' (P4 'DROIT' N7 P1)) ;
  55.  
  56. 'OPTION' 'ELEM' QUA4 ;
  57. DOM1 = 'SURFACE' LINEXT1 'PLAN' ;
  58.  
  59. 'OPTION' 'ELEM' TRI3 ;
  60. DOM2 = 'SURFACE' LINEXT2 'PLAN' ;
  61.  
  62. DOMTOT = DOM1 'ET' DOM2;
  63. 'ELIMINATION' 1D-6 DOMTOT;
  64.  
  65.  
  66. LTYPE = 'MOTS' 'TRI3' 'QUA4' ;
  67. LELEM = 'NBEL' DOMTOT LTYPE ;
  68.  
  69.  
  70. 'MESSAGE' ;
  71. 'MESSAGE' 'Le maillage :';
  72. 'MESSAGE' ('CHAINE' 'Nombre TRI3: ' ('EXTRAIRE' LELEM 1));
  73. 'MESSAGE' ('CHAINE' 'Nombre QUA4: ' ('EXTRAIRE' LELEM 2));
  74.  
  75. *
  76. **** Internal and external cells
  77. *
  78.  
  79. DOMLIM = 'CONTOUR' DOMTOT 'COULEUR' 'VERTE' ;
  80. MAICON = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT' DOMLIM ;
  81. DOMINT = DOMTOT 'DIFF' MAICON 'COULEUR' 'ROUGE' ;
  82.  
  83.  
  84. $DOMTOT = 'MODE' DOMTOT 'EULER' ;
  85. $DOMINT = 'MODE' DOMINT 'EULER' ;
  86. $DOM1 = 'MODE' DOM1 'EULER' ;
  87.  
  88. TDOMTOT = 'DOMA' $DOMTOT 'VF' ;
  89. TDOMINT = 'DOMA' $DOMINT 'VF' ;
  90. TDOM1 = 'DOMA' $DOM1 'VF' ;
  91.  
  92. MDOMTOT = TDOMTOT . 'QUAF' ;
  93. MDOMINT = TDOMINT . 'QUAF' ;
  94. MDOM1 = TDOM1 . 'QUAF' ;
  95.  
  96. 'ELIM' (MDOMTOT 'ET' MDOMINT 'ET' MDOM1) 1D-6;
  97.  
  98. 'SI' GRAPH ;
  99. 'TRACER' MAICON 'TITRE' 'Elements sur le contour';
  100. 'TRACER' DOMINT 'TITRE' 'Elements internes' ;
  101. 'FINSI' ;
  102.  
  103. *
  104. **** The interface points (for limit condition)
  105. *
  106.  
  107. POIN0 = DOMLIM 'POIN' 1;
  108. X1 Y1 = 'COORDONNEE' POIN0;
  109. 'REPETER' BLLIM (('NBNO' DOMLIM)) ;
  110. X0 = X1 ;
  111. Y0 = Y1 ;
  112. POIN0 = DOMLIM 'POIN' (&BLLIM '+' 1) ;
  113. X1 Y1 = 'COORDONNEE' POIN0 ;
  114. XFAC = (X0 '+' X1) '/' 2 ;
  115. YFAC = (Y0 '+' Y1) '/' 2 ;
  116. PFAC = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' (XFAC YFAC);
  117. 'SI' (&BLLIM 'EGA' 1) ;
  118. GEOLIM = 'MANUEL' 'POI1' PFAC 'BLEU' ;
  119. 'SINON' ;
  120. GEOLIM = GEOLIM 'ET' ('MANUEL' 'POI1' PFAC 'BLEU') ;
  121. 'FINSI' ;
  122. 'FIN' BLLIM ;
  123.  
  124. *
  125. * 'ELIMINATION' GEOLIM 1.0D-4 ($DOMTOT . 'FACE') ;
  126. *
  127.  
  128. 'SI' GRAPH ;
  129. 'TRACER' (DOMTOT 'ET' GEOLIM)
  130. 'TITRE' 'DOMTOT et points faces aux bords';
  131. 'FINSI' ;
  132.  
  133.  
  134. ***********************************************
  135. ********* CHP: scalar linear field *********
  136. ********* EULESCAL *********
  137. ***********************************************
  138. *
  139. * (A11 '*' XX) '+' (A12 '*' YY) '+' A0;
  140. *
  141.  
  142. A11 = 12.01517 ;
  143. A12 = 13.1421 ;
  144. A0 = -3.21 ;
  145.  
  146. B11 = 22.01517 ;
  147. B12 = 43.1421 ;
  148. B0 = -5.21 ;
  149.  
  150. XX YY = 'COORDONNEE' ('DOMA' $DOMTOT 'CENTRE') ;
  151.  
  152. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' A0;
  153.  
  154. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' B0;
  155.  
  156. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  157. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  158.  
  159. CHP = CHP1 'ET' CHP2 ;
  160.  
  161. MOTC = ('MOTS' 'C1' 'C2') ;
  162. GRCHP LIMCH GRG = 'PENT' $DOMTOT 'CENTRE'
  163. 'EULESCAL' 'NOLIMITE' MOTC CHP ;
  164. 'LISTE' MOTC ;
  165.  
  166. LIMCH1 = 'MANU' 'CHPO' ('DOMA' $DOMTOT 'CENTRE')
  167. 2 'P1' 1.0 'P2' 1.0 ;
  168.  
  169. ERRO = 'MAXIMUM' (LIMCH1 '-' LIMCH) 'ABS' ;
  170.  
  171. 'SI' (ERRO > 1.0D-8) ;
  172. 'MESSAGE' ;
  173. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  174. 'MESSAGE' ;
  175. 'ERREUR' 5;
  176. 'FINSI' ;
  177.  
  178. *
  179. * TEST1 : we check that we have the same values if we use
  180. * GRG to compute gradients
  181. *
  182.  
  183. MOTC = ('MOTS' 'C1' 'C2') ;
  184. GRCHP1 LIMCH = 'PENT' $DOMTOT 'CENTRE'
  185. 'EULESCAL' 'LIMITEUR' MOTC
  186. CHP 'GRADGEO' GRG ;
  187. 'LISTE' MOTC ;
  188.  
  189. ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
  190.  
  191. 'SI' (ERRO > 1.0D-8) ;
  192. 'MESSAGE' ;
  193. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  194. 'MESSAGE' ;
  195. 'ERREUR' 5;
  196. 'FINSI' ;
  197.  
  198.  
  199. *
  200. * TEST2 : we check that the computation is exact on the internal domain
  201. *
  202.  
  203. GRCHPI = 'REDU' GRCHP ('DOMA' $DOMINT 'CENTRE') ;
  204.  
  205.  
  206. GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DX' A11
  207. 'NATU' 'DISCRET' ;
  208.  
  209. GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DY' A12
  210. 'NATU' 'DISCRET';
  211.  
  212. GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DX' B11
  213. 'NATU' 'DISCRET';
  214.  
  215. GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DY' B12
  216. 'NATU' 'DISCRET';
  217.  
  218. GREXA = GR1DX 'ET' GR1DY 'ET' GR2DX 'ET' GR2DY ;
  219.  
  220. ERRCH = GREXA '-' GRCHPI ;
  221.  
  222. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY' ;
  223. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  224.  
  225.  
  226. *
  227. *** Error graphics (we change the error CHAMPOINT into a CHAMELEM
  228. *
  229.  
  230. 'SI' GRAPH ;
  231. MOD1 = 'MODELISER' ('DOMA' $DOMINT 'MAILLAGE') 'THERMIQUE' ;
  232. CHM_MER = 'KCHA' $DOMINT 'CHAM' MERRCH ;
  233. 'TRACER' CHM_MER MOD1 'TITR' ('CHAINE' 'EULESCAL: erreur');
  234. 'FINSI' ;
  235.  
  236. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  237.  
  238. 'SI' (ERRO > 1.0D-8) ;
  239. 'MESSAGE' ;
  240. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  241. 'MESSAGE' ;
  242. 'ERREUR' 5;
  243. 'FINSI' ;
  244.  
  245.  
  246. *
  247. * TEST3 : we impose the linear field values on the border.
  248. * In that case error must be "zero" everywhere.
  249. *
  250.  
  251. XLIM YLIM = 'COORDONNEE' GEOLIM ;
  252.  
  253. CHPLI1 = (A11 '*' XLIM) '+' (A12 '*' YLIM) '+' A0;
  254.  
  255. CHPLI2 = (B11 '*' XLIM) '+' (B12 '*' YLIM) '+' B0;
  256.  
  257. CHPLI1 = 'NOMC' 'C1' CHPLI1 'NATU' 'DISCRET' ;
  258. CHPLI2 = 'NOMC' 'C2' CHPLI2 'NATU' 'DISCRET' ;
  259.  
  260. CHPLI = CHPLI1 'ET' CHPLI2 ;
  261.  
  262. MOTC = ('MOTS' 'C1' 'C2') ;
  263. GRCHPL LIMCH GRGL = 'PENT' $DOMTOT 'CENTRE'
  264. 'EULESCAL' 'NOLIMITE' MOTC CHP 'CLIM' CHPLI ;
  265.  
  266. MOTC = ('MOTS' 'C1' 'C2') ;
  267. GRCHP1 LIMCH = 'PENT' $DOMTOT 'CENTRE'
  268. 'EULESCAL' 'NOLIMITE' MOTC
  269. CHP 'CLIM' CHPLI 'GRADGEO' GRGL ;
  270.  
  271. ERRO = 'MAXIMUM' (GRCHPL '-' GRCHP1) 'ABS' ;
  272.  
  273. 'SI' (ERRO > 1.0D-8) ;
  274. 'MESSAGE' ;
  275. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  276. 'MESSAGE' ;
  277. 'ERREUR' 5;
  278. 'FINSI' ;
  279.  
  280. GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DX' A11
  281. 'NATU' 'DISCRET' ;
  282.  
  283. GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DY' A12
  284. 'NATU' 'DISCRET';
  285.  
  286. GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DX' B11
  287. 'NATU' 'DISCRET';
  288.  
  289. GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DY' B12
  290. 'NATU' 'DISCRET';
  291.  
  292. GREXA = GR1DX 'ET' GR1DY 'ET' GR2DX 'ET' GR2DY ;
  293.  
  294. ERRCH = GREXA '-' GRCHPL ;
  295.  
  296. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY' ;
  297. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  298.  
  299. 'SI' GRAPH ;
  300. MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
  301. CHM_MER = 'KCHA' $DOMTOT 'CHAM' MERRCH ;
  302. 'TRACER' CHM_MER MOD1 'TITR'
  303. ('CHAINE' 'EULESCAL avec C.L. : Erreur');
  304. * CHM_GRA = 'KCHA' $DOMTOT 'CHAM' GRCHPL ;
  305. * 'TRACER' CHM_GRA MOD1 'TITR' ('CHAINE' 'Gradient');
  306. 'FINSI' ;
  307.  
  308. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  309.  
  310. 'SI' (ERRO > 1.0D-8) ;
  311. 'MESSAGE' ;
  312. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  313. 'MESSAGE' ;
  314. 'ERREUR' 5;
  315. 'FINSI' ;
  316.  
  317.  
  318. *
  319. **** TEST4: boudary condition for a scalar field (EULESCAL)
  320. *
  321.  
  322.  
  323. 'OPTION' 'ELEM' 'QUA4' ;
  324.  
  325. L0 = (P0 'DROIT' P3 'DINI' 0.3 'DFIN' 1 ) ;
  326. DOMC0 = L0 'TRANSLATION' 1 (-1.0 0) ;
  327. DOMC1 = L0 'TRANSLATION' 5 (5.0 0) 'COULEUR' 'ROUGE' ;
  328. DOMC2 = DOMC0 'ET' DOMC1 ;
  329. 'ELIMINATION' DOMC2 0.0002 ;
  330.  
  331. 'SI' GRAPH ;
  332. 'TRACER' (DOMC1 'ET' DOMC2) 'TITRE' 'Traitement de C.L.' ;
  333. 'FINSI' ;
  334.  
  335. $DOMC1 = 'MODE' DOMC1 'EULER' ;
  336. $DOMC2 = 'MODE' DOMC2 'EULER' ;
  337. TDOMC1 = 'DOMA' $domc1 'VF' ;
  338. TDOMC2 = 'DOMA' $domc2 'VF' ;
  339. MDOMC1 = TDOMC1 . 'QUAF';
  340. MDOMC2 = TDOMC2 . 'QUAF';
  341. 'ELIM' (MDOMC1 'ET' MDOMC2) 1D-6;
  342.  
  343.  
  344. *
  345. * CHP is symmetric with respect to the line L0
  346. *
  347.  
  348. XX = 'COORDONNEE' 1 ('DOMA' $DOMC2 'CENTRE') ;
  349.  
  350. CHP = ('NOMC' 'C1' (XX '*' XX) 'NATU' 'DISCRET') 'ET'
  351. ('NOMC' 'C2' (4 '*' XX '*' XX) 'NATU' 'DISCRET') ;
  352.  
  353. GRCHP LIMCHP GRG = 'PENT' $DOMC2 'CENTRE'
  354. 'EULESCAL' 'NOLIMITE' ('MOTS' 'C1' 'C2') CHP ;
  355.  
  356. GRCHP1 LIMCHP GRG1 = 'PENT' $DOMC1 'CENTRE'
  357. 'EULESCAL' 'NOLIMITE' ('MOTS' 'C1' 'C2')
  358. ('REDU' CHP ('DOMA' $DOMC1 'CENTRE')) ;
  359.  
  360. ERRCH = GRCHP '-' ('REDU' GRCHP1 ('DOMA' $DOMC1 'CENTRE'));
  361.  
  362. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY' ;
  363. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  364.  
  365. 'SI' GRAPH ;
  366. MOD1 = 'MODELISER' ('DOMA' $DOMC1 'MAILLAGE') 'THERMIQUE';
  367. CHM_MER = 'KCHA' $DOMC1 'CHAM' MERRCH ;
  368. 'TRACER' CHM_MER MOD1
  369. 'TITR' ('CHAINE' 'EULESCAL sur les bords: erreur');
  370. 'FINSI' ;
  371.  
  372. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  373.  
  374.  
  375. 'SI' (ERRO > 1.0D-8) ;
  376. 'MESSAGE' ;
  377. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  378. 'MESSAGE' ;
  379. 'ERREUR' 5;
  380. 'FINSI' ;
  381.  
  382.  
  383.  
  384. ***************************************************
  385. ********* CHP: vectorial linear field ************
  386. ********* EULEVECT ****************
  387. ***************************************************
  388. *
  389. * (A11 '*' XX) '+' (A12 '*' YY) '+' A0;
  390. *
  391.  
  392. A11 = 11.3 ;
  393. A12 = 0.23 ;
  394. A0 = 1.0 ;
  395.  
  396. B11 = 77.0 ;
  397. B12 = 0.6 ;
  398. B0 = 9.11 ;
  399.  
  400. XX YY = 'COORDONNEE' ('DOMA' $DOMTOT 'CENTRE') ;
  401.  
  402. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' A0;
  403.  
  404. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' B0;
  405.  
  406. CHP1 = 'NOMC' 'UX ' CHP1 'NATU' 'DISCRET' ;
  407. CHP2 = 'NOMC' 'UY ' CHP2 'NATU' 'DISCRET' ;
  408.  
  409. CHP = CHP1 'ET' CHP2 ;
  410.  
  411. MOTC = ('MOTS' 'UX' 'UY') ;
  412. GRCHP LIMCHP GRG = 'PENT' $DOMTOT 'CENTRE'
  413. 'EULEVECT' 'NOLIMITE' MOTC
  414. CHP ;
  415. 'LISTE' MOTC ;
  416.  
  417. *
  418. * TEST1 : we check that we have the same values if we use
  419. * GRG to compute gradients
  420. *
  421.  
  422. GRCHP1 LIMCHP = 'PENT' $DOMTOT 'CENTRE'
  423. 'EULEVECT' 'NOLIMITE' ('MOTS' 'UX' 'UY')
  424. CHP 'GRADGEO' GRG ;
  425.  
  426. ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
  427.  
  428. 'SI' (ERRO > 5.0D-8) ;
  429. 'MESSAGE' ;
  430. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  431. 'MESSAGE' ;
  432. 'ERREUR' 5;
  433. 'FINSI' ;
  434.  
  435.  
  436. *
  437. * TEST2 : we check that the computation is exact on the internal domain
  438. *
  439.  
  440. GRCHPI = 'REDU' GRCHP ('DOMA' $DOMINT 'CENTRE') ;
  441.  
  442.  
  443. GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DX' A11
  444. 'NATU' 'DISCRET' ;
  445.  
  446. GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P1DY' A12
  447. 'NATU' 'DISCRET';
  448.  
  449. GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DX' B11
  450. 'NATU' 'DISCRET';
  451.  
  452. GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMINT 'CENTRE') 1 'P2DY' B12
  453. 'NATU' 'DISCRET';
  454.  
  455. GREXA = GR1DX 'ET' GR1DY 'ET' GR2DX 'ET' GR2DY ;
  456.  
  457. ERRCH = GREXA '-' GRCHPI ;
  458.  
  459. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY' ;
  460. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  461.  
  462.  
  463. *
  464. *** CREATION DE 'MODEL' POUR GRAPHIQUER LE CHAMELEM ***
  465. *
  466.  
  467. 'SI' GRAPH ;
  468. MOD1 = 'MODELISER' ('DOMA' $DOMINT 'MAILLAGE') 'THERMIQUE';
  469. CHM_MER = 'KCHA' $DOMINT 'CHAM' MERRCH ;
  470. 'TRACER' CHM_MER MOD1 'TITR' ('CHAINE' 'EULEVECT: Erreur');
  471. 'FINSI' ;
  472.  
  473. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  474.  
  475. 'SI' (ERRO > 5.0D-8) ;
  476. 'MESSAGE' ;
  477. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  478. 'MESSAGE' ;
  479. 'ERREUR' 5;
  480. 'FINSI' ;
  481.  
  482.  
  483. *
  484. * TEST3 : we impose the linear field values on the border.
  485. * In that case error must be "zero" everywhere.
  486. *
  487.  
  488. XLIM YLIM = 'COORDONNEE' GEOLIM ;
  489.  
  490. CHPLI1 = (A11 '*' XLIM) '+' (A12 '*' YLIM) '+' A0;
  491.  
  492. CHPLI2 = (B11 '*' XLIM) '+' (B12 '*' YLIM) '+' B0;
  493.  
  494. CHPLI1 = 'NOMC' 'UX' CHPLI1 'NATU' 'DISCRET' ;
  495. CHPLI2 = 'NOMC' 'UY' CHPLI2 'NATU' 'DISCRET' ;
  496.  
  497. CHPLI = CHPLI1 'ET' CHPLI2 ;
  498.  
  499.  
  500. GRCHPL LIMCHP GRGL = 'PENT' $DOMTOT 'CENTRE'
  501. 'EULEVECT' 'NOLIMITE' ('MOTS' 'UX' 'UY')
  502. CHP 'CLIM' CHPLI ;
  503.  
  504. GRCHP1 LIMCHP = 'PENT' $DOMTOT 'CENTRE'
  505. 'EULEVECT' 'NOLIMITE' ('MOTS' 'UX' 'UY')
  506. CHP 'CLIM' CHPLI 'GRADGEO' GRGL ;
  507.  
  508. ERRO = 'MAXIMUM' (GRCHPL '-' GRCHP1) 'ABS' ;
  509.  
  510. 'SI' (ERRO > 1.0D-8) ;
  511. 'MESSAGE' ;
  512. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  513. 'MESSAGE' ;
  514. 'ERREUR' 5;
  515. 'FINSI' ;
  516.  
  517. GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DX' A11
  518. 'NATU' 'DISCRET' ;
  519.  
  520. GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DY' A12
  521. 'NATU' 'DISCRET';
  522.  
  523. GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DX' B11
  524. 'NATU' 'DISCRET';
  525.  
  526. GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DY' B12
  527. 'NATU' 'DISCRET';
  528.  
  529. GREXA = GR1DX 'ET' GR1DY 'ET' GR2DX 'ET' GR2DY ;
  530.  
  531. ERRCH = GREXA '-' GRCHPL ;
  532.  
  533. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY' ;
  534. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  535.  
  536. 'SI' GRAPH ;
  537. MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE';
  538. CHM_MER = 'KCHA' $DOMTOT 'CHAM' MERRCH ;
  539. 'TRACER' CHM_MER MOD1 'TITR'
  540. ('CHAINE' 'EULEVECT avec C.L.: erreur');
  541. * CHM_GRA = 'KCHA' $DOMTOT 'CHAM' GRCHPL ;
  542. * 'TRACER' CHM_GRA MOD1 'TITR' ('CHAINE' 'Gradient');
  543. 'FINSI' ;
  544.  
  545. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  546.  
  547. 'SI' (ERRO > 1.0D-8) ;
  548. 'MESSAGE' ;
  549. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  550. 'MESSAGE' ;
  551. 'ERREUR' 5;
  552. 'FINSI' ;
  553.  
  554. *
  555. **** TEST4: boudary condition for a vectorial field (EULESCAL)
  556. *
  557.  
  558. 'OPTION' 'ELEM' 'QUA4' ;
  559.  
  560. L0 = (P0 'DROIT' P3 'DINI' 0.3 'DFIN' 1 ) ;
  561. DOMC0 = L0 'TRANSLATION' 1 (-1.0 0) ;
  562. DOMC1 = L0 'TRANSLATION' 5 (5.0 0) 'COULEUR' 'ROUGE' ;
  563. DOMC2 = DOMC0 'ET' DOMC1 ;
  564. 'ELIMINATION' DOMC2 0.0002 ;
  565.  
  566. 'SI' GRAPH ;
  567. 'TRACER' DOMC2 'TITRE' 'Traitement de C.L.' ;
  568. 'FINSI' ;
  569.  
  570.  
  571. $DOMC1 = 'MODE' DOMC1 'EULER' ;
  572. $DOMC2 = 'MODE' DOMC2 'EULER' ;
  573. TDOMC1 = 'DOMA' $domc1 'VF' ;
  574. TDOMC2 = 'DOMA' $domc2 'VF' ;
  575. MDOMC1 = TDOMC1 . 'QUAF';
  576. MDOMC2 = TDOMC2 . 'QUAF';
  577. 'ELIM' (MDOMC1 'ET' MDOMC2) 1D-6;
  578.  
  579. *
  580. * L0: symmetry line
  581. *
  582.  
  583. XX = 'COORDONNEE' 1 ('DOMA' $DOMC2 'CENTRE') ;
  584. CHP = ('NOMC' 'UX' (1.15 '*' XX '*' XX '*' XX) 'NATU' 'DISCRET') 'ET'
  585. ('NOMC' 'UY' (0 '*' XX '*' XX) 'NATU' 'DISCRET') ;
  586.  
  587. GRCHP LIMCHP GRG = 'PENT' $DOMC2 'CENTRE'
  588. 'EULEVECT' 'NOLIMITE' ('MOTS' 'UX' 'UY') CHP ;
  589.  
  590. GRCHP1 LIMCHP GRG1 = 'PENT' $DOMC1 'CENTRE'
  591. 'EULEVECT' 'NOLIMITE' ('MOTS' 'UX' 'UY')
  592. ('REDU' CHP ('DOMA' $DOMC1 'CENTRE')) ;
  593.  
  594. ERRCH = GRCHP1 '-' ('REDU' GRCHP ('DOMA' $DOMC1 'CENTRE'));
  595.  
  596. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY' ;
  597. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  598.  
  599. 'SI' GRAPH ;
  600. MOD1 = 'MODELISER' ('DOMA' $DOMC1 'MAILLAGE') 'THERMIQUE';
  601. CHM_MER = 'KCHA' $DOMC1 'CHAM' MERRCH ;
  602. 'TRACER' CHM_MER MOD1
  603. 'TITR' ('CHAINE' 'EULEVECT sur les bords: erreur');
  604. * CHM_GRA = 'KCHA' $DOMC1 'CHAM' GRCHP1 ;
  605. * 'TRACER' CHM_GRA MOD1 'TITR' ('CHAINE' 'Gradient');
  606. 'FINSI' ;
  607.  
  608. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  609.  
  610.  
  611. 'SI' (ERRO > 1.0D-8) ;
  612. 'MESSAGE' ;
  613. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  614. 'MESSAGE' ;
  615. 'ERREUR' 5;
  616. 'FINSI' ;
  617.  
  618.  
  619. ****************************
  620. **** Diamond method ********
  621. ****************************
  622. *
  623. * 2D
  624. *
  625. *** MESH
  626. *
  627.  
  628. P0 = 0.0D0 0.0D0 ;
  629. P1 = 3.0D0 0.0D0 ;
  630. P2 = 3.0D0 3.0D0 ;
  631. P3 = 0.0D0 3.0D0 ;
  632. P4 = 6.0D0 0.0D0 ;
  633. P5 = 6.0D0 3.0D0 ;
  634.  
  635. 'SI' COMPLET ;
  636. N1 = 80 ;
  637. N2 = 60 ;
  638. N3 = 40 ;
  639. N4 = 90 ;
  640. N5 = 90 ;
  641. N6 = 10 ;
  642. N7 = 50 ;
  643. 'SINON' ;
  644. N1 = 8 ;
  645. N2 = 6 ;
  646. N3 = 4 ;
  647. N4 = 9 ;
  648. N5 = 9 ;
  649. N6 = 3 ;
  650. N7 = 5 ;
  651. 'FINSI' ;
  652.  
  653. LINEXT1 = ((P0 'DROIT' N1 P1) 'ET' (P1 'DROIT' N2 P2) 'ET'
  654. (P2 'DROIT' N3 P3) 'ET' (P3 'DROIT' N4 P0)) ;
  655.  
  656. LINEXT2 = ((P1 'DROIT' N2 P2) 'ET' (P2 'DROIT' N5 P5) 'ET'
  657. (P5 'DROIT' N6 P4) 'ET' (P4 'DROIT' N7 P1)) ;
  658.  
  659. 'OPTION' 'ELEM' QUA4 ;
  660. DOM1 = 'SURFACE' LINEXT1 'PLAN' ;
  661.  
  662. 'OPTION' 'ELEM' TRI3 ;
  663. DOM2 = 'SURFACE' LINEXT2 'PLAN' ;
  664.  
  665. DOMTOT = DOM1 'ET' DOM2;
  666. 'ELIMINATION' 1D-6 DOMTOT;
  667.  
  668.  
  669. LTYPE = 'MOTS' 'TRI3' 'QUA4' ;
  670. LELEM = 'NBEL' DOMTOT LTYPE ;
  671.  
  672.  
  673. 'MESSAGE' ;
  674. 'MESSAGE' 'Le maillage :';
  675. 'MESSAGE' ('CHAINE' 'Nombre TRI3: ' ('EXTRAIRE' LELEM 1));
  676. 'MESSAGE' ('CHAINE' 'Nombre QUA4: ' ('EXTRAIRE' LELEM 2));
  677.  
  678. *
  679. **** Internal and external cells
  680. *
  681.  
  682. DOMLIM = 'CONTOUR' DOMTOT 'COULEUR' 'VERTE' ;
  683.  
  684. $DOMTOT = 'MODE' DOMTOT 'EULER' ;
  685. TDOMTOT = 'DOMA' $DOMTOT 'VF' ;
  686. MDOMTOT = TDOMTOT . 'QUAF';
  687. 'ELIM' MDOMTOT 1D-6;
  688.  
  689. 'SI' GRAPH ;
  690. 'TRACER' DOMTOT 'TITRE' 'Domaine' ;
  691. 'FINSI' ;
  692.  
  693. A11 = 12.01517 ;
  694. A12 = 13.1421 ;
  695. A0 = -3.21 ;
  696.  
  697. B11 = 22.01517 ;
  698. B12 = 43.1421 ;
  699. B0 = -5.21 ;
  700.  
  701. XX YY = 'COORDONNEE' ('DOMA' $DOMTOT 'CENTRE') ;
  702.  
  703. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' A0;
  704.  
  705. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' B0;
  706.  
  707. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  708. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  709.  
  710. CHP = CHP1 'ET' CHP2 ;
  711.  
  712. GRCHP GRG = 'PENT' $DOMTOT 'FACE'
  713. 'DIAMANT' CHP ;
  714.  
  715.  
  716. *
  717. * TEST1 : we check that we have the same values if we use
  718. * GRG to compute gradients
  719. *
  720.  
  721. GRCHP1 = 'PENT' $DOMTOT 'FACE'
  722. 'DIAMANT' CHP 'GRADGEO' GRG ;
  723.  
  724. ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
  725.  
  726. 'SI' (ERRO > 1.0D-8) ;
  727. 'MESSAGE' ;
  728. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  729. 'MESSAGE' ;
  730. 'ERREUR' 5;
  731. 'FINSI' ;
  732.  
  733.  
  734. *
  735. * TEST2 : we check that the computation is exact on the internal domain
  736. *
  737.  
  738.  
  739. GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'FACE') 1 'P1DX' A11
  740. 'NATU' 'DISCRET' ;
  741.  
  742. GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'FACE') 1 'P1DY' A12
  743. 'NATU' 'DISCRET';
  744.  
  745. GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'FACE') 1 'P2DX' B11
  746. 'NATU' 'DISCRET';
  747.  
  748. GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'FACE') 1 'P2DY' B12
  749. 'NATU' 'DISCRET';
  750.  
  751. GREXA = GR1DX 'ET' GR1DY 'ET' GR2DX 'ET' GR2DY ;
  752.  
  753. ERRCH = GREXA '-' GRCHP1 ;
  754.  
  755. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY' ;
  756. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  757.  
  758.  
  759.  
  760. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  761.  
  762. 'SI' (ERRO > 1.0D-8) ;
  763. 'MESSAGE' ;
  764. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  765. 'MESSAGE' ;
  766. 'ERREUR' 5;
  767. 'FINSI' ;
  768.  
  769.  
  770. *
  771. * TEST3 : we impose the linear field values on the border.
  772. * In that case error must be "zero" everywhere.
  773. *
  774.  
  775. XLIM YLIM = 'COORDONNEE' DOMLIM ;
  776.  
  777. CHPLI1 = (A11 '*' XLIM) '+' (A12 '*' YLIM) '+' A0;
  778.  
  779. CHPLI2 = (B11 '*' XLIM) '+' (B12 '*' YLIM) '+' B0;
  780.  
  781. CHPLI1 = 'NOMC' 'C1' CHPLI1 'NATU' 'DISCRET' ;
  782. CHPLI2 = 'NOMC' 'C2' CHPLI2 'NATU' 'DISCRET' ;
  783.  
  784. CHPLI = CHPLI1 'ET' CHPLI2 ;
  785.  
  786. GRCHPL GRGL = 'PENT' $DOMTOT 'FACE'
  787. 'DIAMANT' CHP 'CLIM' CHPLI ;
  788.  
  789. GRCHP1 = 'PENT' $DOMTOT 'FACE'
  790. 'DIAMANT' CHP 'CLIM' CHPLI 'GRADGEO' GRGL ;
  791.  
  792. ERRO = 'MAXIMUM' (GRCHPL '-' GRCHP1) 'ABS' ;
  793.  
  794. 'SI' (ERRO > 1.0D-8) ;
  795. 'MESSAGE' ;
  796. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  797. 'MESSAGE' ;
  798. 'ERREUR' 5;
  799. 'FINSI' ;
  800.  
  801. GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'FACE') 1 'P1DX' A11
  802. 'NATU' 'DISCRET' ;
  803.  
  804. GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'FACE') 1 'P1DY' A12
  805. 'NATU' 'DISCRET';
  806.  
  807. GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'FACE') 1 'P2DX' B11
  808. 'NATU' 'DISCRET';
  809.  
  810. GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'FACE') 1 'P2DY' B12
  811. 'NATU' 'DISCRET';
  812.  
  813. GREXA = GR1DX 'ET' GR1DY 'ET' GR2DX 'ET' GR2DY ;
  814.  
  815. ERRCH = GREXA '-' GRCHPL ;
  816.  
  817. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY' ;
  818. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  819.  
  820.  
  821. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  822.  
  823. 'SI' (ERRO > 1.0D-8) ;
  824. 'MESSAGE' ;
  825. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  826. 'MESSAGE' ;
  827. 'ERREUR' 5;
  828. 'FINSI' ;
  829.  
  830. ****************************
  831. **** Diamond method ********
  832. ****************************
  833. * The BC on flux are taken into account
  834. *
  835. * 2D
  836. *
  837. *** MESH
  838. *
  839. 'OPTION' 'ELEM' QUA4 ;
  840.  
  841. P0 = 0.0D0 0.0D0 ;
  842. P1 = 3.0D0 0.0D0 ;
  843. P2 = 3.0D0 3.0D0 ;
  844. P3 = 0.0D0 3.0D0 ;
  845. P4 = 6.0D0 0.0D0 ;
  846. P5 = 6.0D0 3.0D0 ;
  847.  
  848. 'SI' COMPLET ;
  849. N1 = 80 ;
  850. N2 = 60 ;
  851. N3 = 40 ;
  852. N4 = 90 ;
  853. N5 = 90 ;
  854. N6 = 10 ;
  855. N7 = 50 ;
  856. 'SINON' ;
  857. N1 = 8 ;
  858. N2 = 6 ;
  859. N3 = 4 ;
  860. N4 = 9 ;
  861. N5 = 9 ;
  862. N6 = 3 ;
  863. N7 = 5 ;
  864. 'FINSI' ;
  865.  
  866. LINEXT1 = ((P0 'DROIT' N1 P1) 'ET' (P1 'DROIT' N2 P2) 'ET'
  867. (P2 'DROIT' N3 P3) 'ET' (P3 'DROIT' N4 P0)) ;
  868.  
  869. LINEXT2 = ((P1 'DROIT' N2 P2) 'ET' (P2 'DROIT' N5 P5) 'ET'
  870. (P5 'DROIT' N6 P4) 'ET' (P4 'DROIT' N7 P1)) ;
  871.  
  872. 'OPTION' 'ELEM' QUA4 ;
  873. DOM1 = 'SURFACE' LINEXT1 'PLAN' ;
  874.  
  875. 'OPTION' 'ELEM' TRI3 ;
  876. DOM2 = 'SURFACE' LINEXT2 'PLAN' ;
  877.  
  878. DOMTOT = DOM1 'ET' DOM2;
  879. 'ELIMINATION' 1D-6 DOMTOT;
  880.  
  881. * BC
  882.  
  883. DOMLIM = 'CONTOUR' DOMTOT 'COULEUR' 'VERTE' ;
  884. DOMLIM1 = (DOMLIM 'INTERSECTION' LINEXT1) ;
  885. DOMLIM2 = (DOMLIM 'INTERSECTION' LINEXT2) ;
  886.  
  887. * MODELS and MESHES
  888.  
  889. *
  890. MDOMTOT = 'MODE' DOMTOT 'EULER' ;
  891. MDOMLIM = 'MODE' DOMLIM 'EULER' ;
  892. MDOMLIM1 = 'MODE' DOMLIM1 'EULER' ;
  893. MDOMLIM2 = 'MODE' DOMLIM2 'EULER' ;
  894. *
  895. TDOMTOT = 'DOMA' MDOMTOT 'VF' ;
  896. TDOMLIM = 'DOMA' MDOMLIM 'VF' ;
  897. TDOMLIM1 = 'DOMA' MDOMLIM1 'VF' ;
  898. TDOMLIM2 = 'DOMA' MDOMLIM2 'VF' ;
  899.  
  900. QDOMTOT = TDOMTOT . 'QUAF' ;
  901. QDOMLIM = TDOMLIM . 'QUAF' ;
  902. QDOMLIM1 = TDOMLIM1 . 'QUAF' ;
  903. QDOMLIM2 = TDOMLIM2 . 'QUAF' ;
  904. 'ELIMINATION' (QDOMTOT 'ET' QDOMLIM 'ET' QDOMLIM1 'ET' QDOMLIM2)
  905. 1.0D-6 ;
  906.  
  907. 'SI' GRAPH ;
  908. 'TRACER' (DOMTOT 'ET' ('DOMA' MDOMTOT 'CENTRE')
  909. 'ET' ('DOMA' MDOMTOT 'FACE')) 'TITRE' 'Centres et faces' ;
  910. 'FINSI' ;
  911.  
  912. * CHAMPOINT
  913.  
  914. A11 = 12.01517 ;
  915. A12 = 13.1421 ;
  916. A0 = -3.21 ;
  917.  
  918. B11 = 22.01517 ;
  919. B12 = 43.1421 ;
  920. B0 = -5.21 ;
  921.  
  922.  
  923. XX YY = 'COORDONNEE' ('DOMA' MDOMTOT 'CENTRE') ;
  924. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' A0;
  925. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' B0;
  926. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  927. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  928. CHP = CHP1 'ET' CHP2 ;
  929.  
  930. *
  931. * TEST1 : Dirichlet BC everywhere
  932. *
  933.  
  934. XXF YYF = 'COORDONNEE' ('DOMA' MDOMLIM 'CENTRE') ;
  935. CHP1 = (A11 '*' XXF) '+' (A12 '*' YYF) '+' A0;
  936. CHP2 = (B11 '*' XXF) '+' (B12 '*' YYF) '+' B0;
  937. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  938. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  939. CHPL1 = CHP1 'ET' CHP2 ;
  940.  
  941. CACCA PIPI = 'KOPS' 'MATRIK' ;
  942. CHPL2 = 'COPIER' CACCA ;
  943.  
  944. *
  945. MOTC = ('MOTS' 'C1' 'C2') ;
  946. MOTC1 = ('MOTS' 'C1DX' 'C1DY' 'C2DX' 'C2DY') ;
  947. GRCHP GRG = 'PENT' MDOMTOT 'FACE'
  948. 'DIAMAN2' MOTC MOTC1
  949. CHP CHPL1 CHPL2 ;
  950. 'LISTE' MOTC ;
  951. 'LISTE' MOTC1 ;
  952.  
  953. GRCHP1 = 'PENT' MDOMTOT 'FACE'
  954. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C2DX' 'C2DY')
  955. CHP CHPL1 CHPL2 'GRADGEO' GRG ;
  956.  
  957. ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
  958.  
  959. 'SI' (ERRO > 1.0D-8) ;
  960. 'MESSAGE' ;
  961. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  962. 'MESSAGE' ;
  963. 'ERREUR' 5;
  964. 'FINSI' ;
  965.  
  966. GREXA = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'FACE') 4 'C1DX' A11
  967. 'C1DY' A12 'C2DX' B11 'C2DY' B12 'NATU' 'DISCRET' ;
  968.  
  969. ERRCH = GREXA '-' GRCHP ;
  970.  
  971. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  972.  
  973. 'SI' (ERRO > 1.0D-8) ;
  974. 'MESSAGE' ;
  975. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  976. 'MESSAGE' ;
  977. 'ERREUR' 5;
  978. 'FINSI' ;
  979.  
  980. *
  981. * TEST2 : von Neumann BC everywhere
  982. *
  983.  
  984. CHPL2 = 'MANUEL' 'CHPO' ('DOMA' MDOMLIM 'CENTRE') 4
  985. 'C1DX' A11 'C1DY' A12 'C2DX' B11 'C2DY' B12 ;
  986.  
  987. CACCA PIPI = 'KOPS' 'MATRIK' ;
  988. CHPL1 = CACCA ;
  989.  
  990. GRCHP GRG = 'PENT' MDOMTOT 'FACE'
  991. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C2DX' 'C2DY')
  992. CHP CHPL1 CHPL2 ;
  993.  
  994. ERRO = 'MAXIMUM' (GRCHP '-' GREXA) 'ABS' ;
  995.  
  996. 'SI' (ERRO > 1.0D-8) ;
  997. 'MESSAGE' ;
  998. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  999. 'MESSAGE' ;
  1000. 'ERREUR' 5;
  1001. 'FINSI' ;
  1002.  
  1003.  
  1004. *
  1005. * TEST3 : Dirichlet BC and von Neumann BC
  1006. *
  1007.  
  1008. XXF YYF = 'COORDONNEE' ('DOMA' MDOMLIM1 'CENTRE') ;
  1009. CHP1 = (A11 '*' XXF) '+' (A12 '*' YYF) '+' A0;
  1010. CHP2 = (B11 '*' XXF) '+' (B12 '*' YYF) '+' B0;
  1011. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  1012. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  1013. CHPL1 = CHP1 'ET' CHP2 ;
  1014.  
  1015. CHPL2 = 'MANUEL' 'CHPO' ('DOMA' MDOMLIM2 'CENTRE') 4
  1016. 'C1DX' A11 'C1DY' A12 'C2DX' B11 'C2DY' B12 ;
  1017.  
  1018. GRCHP GRG = 'PENT' MDOMTOT 'FACE'
  1019. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C2DX' 'C2DY')
  1020. CHP CHPL1 CHPL2 ;
  1021.  
  1022. ERRCH = GREXA '-' GRCHP ;
  1023.  
  1024. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  1025.  
  1026. 'SI' (ERRO > 1.0D-8) ;
  1027. 'MESSAGE' ;
  1028. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1029. 'MESSAGE' ;
  1030. 'ERREUR' 5;
  1031. 'FINSI' ;
  1032.  
  1033. *
  1034. ***** Elementary mesh
  1035. *
  1036.  
  1037. P0 = 0.0D0 0.0D0 ;
  1038. P1 = 1.0D0 0.0D0 ;
  1039. P2 = 1.0D0 1.0D0 ;
  1040. P3 = 0.0D0 1.0D0 ;
  1041.  
  1042.  
  1043. LINEXT1 = ((P0 'DROIT' 1 P1) 'ET' (P1 'DROIT' 1 P2) 'ET'
  1044. (P2 'DROIT' 1 P3) 'ET' (P3 'DROIT' 1 P0)) ;
  1045.  
  1046. 'OPTION' 'ELEM' 'QUA4' ;
  1047. DOMTOT = 'SURFACE' LINEXT1 'PLAN' ;
  1048.  
  1049. * BC
  1050.  
  1051. DOMLIM = 'CONTOUR' DOMTOT 'COULEUR' 'VERTE' ;
  1052.  
  1053. * MODELS and MESHES
  1054.  
  1055. MDOMTOT = 'MODE' DOMTOT 'EULER' ;
  1056. MDOMLIM = 'MODE' DOMLIM 'EULER' ;
  1057. TDOMTOT = 'DOMA' MDOMTOT 'VF' ;
  1058. TDOMLIM = 'DOMA' MDOMLIM 'VF' ;
  1059.  
  1060. * QUAF
  1061.  
  1062. QDOMTOT = TDOMTOT . 'QUAF' ;
  1063. QDOMLIM = TDOMLIM . 'QUAF' ;
  1064. 'ELIMINATION' (QDOMTOT 'ET' QDOMLIM)
  1065. 1.0D-6 ;
  1066.  
  1067. *
  1068.  
  1069. 'SI' GRAPH ;
  1070. 'TRACER' (DOMTOT 'ET' ('DOMA' MDOMTOT 'CENTRE')
  1071. 'ET' ('DOMA' MDOMTOT 'FACE')) 'TITRE' 'Centres et faces' ;
  1072. 'FINSI' ;
  1073.  
  1074. * CHAMPOINT
  1075.  
  1076. A11 = 12.01517 ;
  1077. A12 = 13.1421 ;
  1078. A0 = -3.21 ;
  1079.  
  1080. B11 = 22.01517 ;
  1081. B12 = 43.1421 ;
  1082. B0 = -5.21 ;
  1083.  
  1084.  
  1085. XX YY = 'COORDONNEE' ('DOMA' MDOMTOT 'CENTRE') ;
  1086. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' A0;
  1087. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' B0;
  1088. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  1089. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  1090. CHP = CHP1 'ET' CHP2 ;
  1091.  
  1092. *
  1093. * TEST1 : Dirichlet BC everywhere
  1094. *
  1095.  
  1096. XXF YYF = 'COORDONNEE' ('DOMA' MDOMLIM 'CENTRE') ;
  1097. CHP1 = (A11 '*' XXF) '+' (A12 '*' YYF) '+' A0;
  1098. CHP2 = (B11 '*' XXF) '+' (B12 '*' YYF) '+' B0;
  1099. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  1100. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  1101. CHPL1 = CHP1 'ET' CHP2 ;
  1102.  
  1103. CACCA PIPI = 'KOPS' 'MATRIK' ;
  1104. CHPL2 = 'COPIER' CACCA ;
  1105.  
  1106. *
  1107. GRCHP GRG = 'PENT' MDOMTOT 'FACE'
  1108. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C2DX' 'C2DY')
  1109. CHP CHPL1 CHPL2 ;
  1110.  
  1111. GRCHP1 = 'PENT' MDOMTOT 'FACE'
  1112. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C2DX' 'C2DY')
  1113. CHP CHPL1 CHPL2 'GRADGEO' GRG ;
  1114.  
  1115. ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
  1116.  
  1117. 'SI' (ERRO > 1.0D-8) ;
  1118. 'MESSAGE' ;
  1119. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1120. 'MESSAGE' ;
  1121. 'ERREUR' 5;
  1122. 'FINSI' ;
  1123.  
  1124. GREXA = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'FACE') 4 'C1DX' A11
  1125. 'C1DY' A12 'C2DX' B11 'C2DY' B12 'NATU' 'DISCRET' ;
  1126.  
  1127. ERRCH = GREXA '-' GRCHP ;
  1128.  
  1129. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  1130.  
  1131. 'SI' (ERRO > 1.0D-8) ;
  1132. 'MESSAGE' ;
  1133. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1134. 'MESSAGE' ;
  1135. 'ERREUR' 5;
  1136. 'FINSI' ;
  1137.  
  1138. *
  1139. * TEST2 : von Neumann BC everywhere
  1140. *
  1141.  
  1142. CHPL2 = 'MANUEL' 'CHPO' ('DOMA' MDOMLIM 'CENTRE') 4
  1143. 'C1DX' A11 'C1DY' A12 'C2DX' B11 'C2DY' B12 ;
  1144.  
  1145. CACCA PIPI = 'KOPS' 'MATRIK' ;
  1146. CHPL1 = CACCA ;
  1147.  
  1148. GRCHP GRG = 'PENT' MDOMTOT 'FACE'
  1149. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C2DX' 'C2DY')
  1150. CHP CHPL1 CHPL2 ;
  1151.  
  1152. ERRO = 'MAXIMUM' (GRCHP '-' GREXA) 'ABS' ;
  1153.  
  1154. 'SI' (ERRO > 1.0D-8) ;
  1155. 'MESSAGE' ;
  1156. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1157. 'MESSAGE' ;
  1158. 'ERREUR' 5;
  1159. 'FINSI' ;
  1160.  
  1161.  
  1162. *
  1163. * TEST3 : Dirichlet BC and von Neumann BC
  1164. *
  1165.  
  1166. DOMLIM1 = 'MANUEL' 'POI1' ('POIN' 1 ('DOMA' MDOMLIM 'CENTRE')) ;
  1167. XXF YYF = 'COORDONNEE' DOMLIM1 ;
  1168. CHP1 = (A11 '*' XXF) '+' (A12 '*' YYF) '+' A0;
  1169. CHP2 = (B11 '*' XXF) '+' (B12 '*' YYF) '+' B0;
  1170. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  1171. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  1172. CHPL1 = CHP1 'ET' CHP2 ;
  1173.  
  1174. DOMLIM2 = 'DIFF' ('DOMA' MDOMLIM 'CENTRE') DOMLIM1 ;
  1175. CHPL2 = 'MANUEL' 'CHPO' DOMLIM2 4
  1176. 'C1DX' A11 'C1DY' A12 'C2DX' B11 'C2DY' B12 ;
  1177.  
  1178. GRCHP GRG = 'PENT' MDOMTOT 'FACE'
  1179. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C2DX' 'C2DY')
  1180. CHP CHPL1 CHPL2 ;
  1181.  
  1182. ERRCH = GREXA '-' GRCHP ;
  1183.  
  1184. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  1185.  
  1186. 'SI' (ERRO > 1.0D-8) ;
  1187. 'MESSAGE' ;
  1188. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1189. 'MESSAGE' ;
  1190. 'ERREUR' 5;
  1191. 'FINSI' ;
  1192.  
  1193. ************************************
  1194. ************************************
  1195. ************************************
  1196. ******** EULESCAL AXI **************
  1197. ************************************
  1198. ************************************
  1199. ************************************
  1200. ************************************
  1201.  
  1202. 'OPTION' 'ECHO' 0 'DIME' 2
  1203. 'ELEM' 'TRI3'
  1204. 'TRAC' 'X'
  1205. 'MODE' 'AXIS' ;
  1206.  
  1207. GRAPH = FAUX ;
  1208. * GRAPH = VRAI ;
  1209.  
  1210. COMPLET = VRAI ;
  1211.  
  1212.  
  1213. *
  1214. *** MESH
  1215. *
  1216.  
  1217. P0 = 1.0D0 0.0D0 ;
  1218. P1 = 3.0D0 0.0D0 ;
  1219. P2 = 3.0D0 3.0D0 ;
  1220. P3 = 1.0D0 3.0D0 ;
  1221. P4 = 6.0D0 0.0D0 ;
  1222. P5 = 6.0D0 3.0D0 ;
  1223.  
  1224. 'SI' COMPLET ;
  1225. N1 = 80 ;
  1226. N2 = 60 ;
  1227. N3 = 40 ;
  1228. N4 = 90 ;
  1229. N5 = 90 ;
  1230. N6 = 10 ;
  1231. N7 = 50 ;
  1232. 'SINON' ;
  1233. N1 = 8 ;
  1234. N2 = 7 ;
  1235. N3 = 6 ;
  1236. N4 = 9 ;
  1237. N5 = 9 ;
  1238. N6 = 7 ;
  1239. N7 = 8 ;
  1240. 'FINSI' ;
  1241.  
  1242. LINEXT1 = ((P0 'DROIT' N1 P1) 'ET' (P1 'DROIT' N2 P2) 'ET'
  1243. (P2 'DROIT' N3 P3) 'ET' (P3 'DROIT' N4 P0)) ;
  1244.  
  1245. LINEXT2 = ((P1 'DROIT' N2 P2) 'ET' (P2 'DROIT' N5 P5) 'ET'
  1246. (P5 'DROIT' N6 P4) 'ET' (P4 'DROIT' N7 P1)) ;
  1247.  
  1248. 'OPTION' 'ELEM' QUA4 ;
  1249. DOM1 = 'SURFACE' LINEXT1 'PLAN' ;
  1250.  
  1251. 'OPTION' 'ELEM' TRI3 ;
  1252. DOM2 = 'SURFACE' LINEXT2 'PLAN' ;
  1253.  
  1254. DOMTOT = DOM1 'ET' DOM2;
  1255. 'ELIMINATION' 1D-6 DOMTOT;
  1256.  
  1257.  
  1258. LTYPE = 'MOTS' 'TRI3' 'QUA4' ;
  1259. LELEM = 'NBEL' DOMTOT LTYPE ;
  1260.  
  1261.  
  1262. 'MESSAGE' ;
  1263. 'MESSAGE' 'Le maillage :';
  1264. 'MESSAGE' ('CHAINE' 'Nombre TRI3: ' ('EXTRAIRE' LELEM 1));
  1265. 'MESSAGE' ('CHAINE' 'Nombre QUA4: ' ('EXTRAIRE' LELEM 2));
  1266.  
  1267. *
  1268. **** Internal and external cells
  1269. *
  1270.  
  1271. DOMLIM = 'CONTOUR' DOMTOT 'COULEUR' 'VERTE' ;
  1272. MAICON = DOMTOT 'ELEM' 'APPUYE' 'LARGEMENT' DOMLIM ;
  1273. DOMINT = DOMTOT 'DIFF' MAICON 'COULEUR' 'ROUGE' ;
  1274.  
  1275.  
  1276. $DOMTOT = 'MODE' DOMTOT 'EULER' ;
  1277. $DOMINT = 'MODE' DOMINT 'EULER' ;
  1278. $DOM1 = 'MODE' DOM1 'EULER' ;
  1279.  
  1280. TDOMTOT = 'DOMA' $DOMTOT 'VF' ;
  1281. TDOMINT = 'DOMA' $DOMINT 'VF' ;
  1282. TDOM1 = 'DOMA' $DOM1 'VF' ;
  1283.  
  1284. MDOMTOT = TDOMTOT . 'QUAF' ;
  1285. MDOMINT = TDOMINT . 'QUAF' ;
  1286. MDOM1 = TDOM1 . 'QUAF' ;
  1287.  
  1288. 'ELIM' (MDOMTOT 'ET' MDOMINT 'ET' MDOM1) 1D-6;
  1289.  
  1290. 'SI' GRAPH ;
  1291. 'TRACER' MAICON 'TITRE' 'Elements sur le contour';
  1292. 'TRACER' DOMINT 'TITRE' 'Elements internes' ;
  1293. 'FINSI' ;
  1294.  
  1295. *
  1296. **** The interface points (for limit condition)
  1297. *
  1298.  
  1299. POIN0 = DOMLIM 'POIN' 1;
  1300. X1 Y1 = 'COORDONNEE' POIN0;
  1301. 'REPETER' BLLIM (('NBNO' DOMLIM)) ;
  1302. X0 = X1 ;
  1303. Y0 = Y1 ;
  1304. POIN0 = DOMLIM 'POIN' (&BLLIM '+' 1) ;
  1305. X1 Y1 = 'COORDONNEE' POIN0 ;
  1306. XFAC = (X0 '+' X1) '/' 2 ;
  1307. YFAC = (Y0 '+' Y1) '/' 2 ;
  1308. PFAC = ('DOMA' $DOMTOT 'FACE') 'POIN' 'PROC' (XFAC YFAC);
  1309. 'SI' (&BLLIM 'EGA' 1) ;
  1310. GEOLIM = 'MANUEL' 'POI1' PFAC 'BLEU' ;
  1311. 'SINON' ;
  1312. GEOLIM = GEOLIM 'ET' ('MANUEL' 'POI1' PFAC 'BLEU') ;
  1313. 'FINSI' ;
  1314. 'FIN' BLLIM ;
  1315.  
  1316. *
  1317. * 'ELIMINATION' GEOLIM 1.0D-4 ($DOMTOT . 'FACE') ;
  1318. *
  1319.  
  1320. 'SI' GRAPH ;
  1321. 'TRACER' (DOMTOT 'ET' GEOLIM)
  1322. 'TITRE' 'DOMTOT et points faces aux bords';
  1323. 'FINSI' ;
  1324.  
  1325. ***********************************************
  1326. ********* CHP: scalar linear field *********
  1327. ********* EULESCAL *********
  1328. ***********************************************
  1329. *
  1330. * (A11 '*' XX) '+' (A12 '*' YY) '+' A0;
  1331. *
  1332.  
  1333. A11 = 12.01517 ;
  1334. A12 = 13.1421 ;
  1335. A0 = -3.21 ;
  1336.  
  1337. B11 = 22.01517 ;
  1338. B12 = 43.1421 ;
  1339. B0 = -5.21 ;
  1340.  
  1341. XX YY = 'COORDONNEE' ('DOMA' $DOMTOT 'CENTRE') ;
  1342.  
  1343. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' A0;
  1344.  
  1345. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' B0;
  1346.  
  1347. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  1348. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  1349.  
  1350. CHP = CHP1 'ET' CHP2 ;
  1351.  
  1352. *
  1353. * TEST3 : we impose the linear field values on the border.
  1354. * In that case error must be "zero" everywhere.
  1355. *
  1356.  
  1357. XLIM YLIM = 'COORDONNEE' GEOLIM ;
  1358.  
  1359. CHPLI1 = (A11 '*' XLIM) '+' (A12 '*' YLIM) '+' A0;
  1360.  
  1361. CHPLI2 = (B11 '*' XLIM) '+' (B12 '*' YLIM) '+' B0;
  1362.  
  1363. CHPLI1 = 'NOMC' 'C1' CHPLI1 'NATU' 'DISCRET' ;
  1364. CHPLI2 = 'NOMC' 'C2' CHPLI2 'NATU' 'DISCRET' ;
  1365.  
  1366. CHPLI = CHPLI1 'ET' CHPLI2 ;
  1367.  
  1368. GRCHPL LIMCH GRGL = 'PENT' $DOMTOT 'CENTRE'
  1369. 'EULESCAL' 'NOLIMITE' ('MOTS' 'C1' 'C2') CHP 'CLIM' CHPLI ;
  1370.  
  1371. GRCHP1 LIMCH = 'PENT' $DOMTOT 'CENTRE'
  1372. 'EULESCAL' 'NOLIMITE' ('MOTS' 'C1' 'C2')
  1373. CHP 'CLIM' CHPLI 'GRADGEO' GRGL ;
  1374.  
  1375. ERRO = 'MAXIMUM' (GRCHPL '-' GRCHP1) 'ABS' ;
  1376.  
  1377. 'SI' (ERRO > 1.0D-8) ;
  1378. 'MESSAGE' ;
  1379. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1380. 'MESSAGE' ;
  1381. 'ERREUR' 5;
  1382. 'FINSI' ;
  1383.  
  1384. GR1DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DX' A11
  1385. 'NATU' 'DISCRET' ;
  1386.  
  1387. GR1DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P1DY' A12
  1388. 'NATU' 'DISCRET';
  1389.  
  1390. GR2DX = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DX' B11
  1391. 'NATU' 'DISCRET';
  1392.  
  1393. GR2DY = 'MANUEL' 'CHPO' ('DOMA' $DOMTOT 'CENTRE') 1 'P2DY' B12
  1394. 'NATU' 'DISCRET';
  1395.  
  1396. GREXA = GR1DX 'ET' GR1DY 'ET' GR2DX 'ET' GR2DY ;
  1397.  
  1398. ERRCH = GREXA '-' GRCHPL ;
  1399.  
  1400. LMOT = 'MOTS' 'P1DX' 'P1DY' 'P2DX' 'P2DY' ;
  1401. MERRCH = ('PSCAL' ERRCH ERRCH LMOT LMOT) '**' 0.5 ;
  1402.  
  1403. 'SI' GRAPH ;
  1404. MOD1 = 'MODELISER' ('DOMA' $DOMTOT 'MAILLAGE') 'THERMIQUE' ;
  1405. CHM_MER = 'KCHA' $DOMTOT 'CHAM' MERRCH ;
  1406. 'TRACER' CHM_MER MOD1 'TITR'
  1407. ('CHAINE' 'EULESCAL avec C.L. : Erreur');
  1408. * CHM_GRA = 'KCHA' $DOMTOT 'CHAM' GRCHPL ;
  1409. * 'TRACER' CHM_GRA MOD1 'TITR' ('CHAINE' 'Gradient');
  1410. 'FINSI' ;
  1411.  
  1412. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  1413.  
  1414. 'SI' (ERRO > 1.0D-8) ;
  1415. 'MESSAGE' ;
  1416. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1417. 'MESSAGE' ;
  1418. 'ERREUR' 5;
  1419. 'FINSI' ;
  1420.  
  1421. ************************************
  1422. ************************************
  1423. **** Diamond method with BC ********
  1424. ************************************
  1425. ************************************
  1426. *
  1427. * 3D
  1428. *
  1429. *** MESH
  1430. *
  1431. *
  1432. 'OPTION' 'DIME' 3 'ELEM' 'CUB8' 'ECHO' 0 ;
  1433.  
  1434. 'MESSAGE' ;
  1435. 'MESSAGE' '3D' ;
  1436. 'MESSAGE' 'PENTE DIAMAN2' ;
  1437. 'MESSAGE' ;
  1438.  
  1439. P1 = 0.0 0.0 0.0 ;
  1440. P2 = 3.0 0.0 0.0 ;
  1441. P3 = 3.0 3.0 0.0 ;
  1442. P4 = 0.0 3.0 0.0 ;
  1443.  
  1444. BAS = 'SURFACE' (P1 'DROIT' 4 P2 'DROIT' 3 P3 'DROIT' 5 P4 'DROIT' 6
  1445. P1) 'PLAN' ;
  1446. DOMTOT = BAS 'VOLUME' 'TRANSLATION' 2 (0.0 0.0 2.0) ;
  1447. CONDOM = 'ENVELOPPE' DOMTOT ;
  1448. RESTEN = CONDOM 'DIFF' BAS ;
  1449.  
  1450. MDOMTOT = 'MODELISER' DOMTOT 'EULER' ;
  1451. MCONDOM = 'MODELISER' CONDOM 'EULER' ;
  1452. MBAS = 'MODELISER' BAS 'EULER' ;
  1453. MRESTEN = 'MODELISER' RESTEN 'EULER' ;
  1454.  
  1455. TDOMTOT = 'DOMA' MDOMTOT 'VF' ;
  1456. TCONDOM = 'DOMA' MCONDOM 'VF' ;
  1457. TBAS = 'DOMA' MBAS 'VF' ;
  1458. TRESTEN = 'DOMA' MRESTEN 'VF' ;
  1459.  
  1460. QDOMTOT = TDOMTOT . 'QUAF' ;
  1461. QCONDOM = TCONDOM . 'QUAF' ;
  1462. QBAS = TBAS . 'QUAF' ;
  1463. QRESTEN = TRESTEN . 'QUAF' ;
  1464.  
  1465. 'ELIMINATION' (QDOMTOT 'ET' QCONDOM 'ET' QBAS 'ET' QRESTEN) 1.0D-6 ;
  1466.  
  1467.  
  1468. 'SI' GRAPH ;
  1469. 'TRACER' (DOMTOT 'ET' ('DOMA' MDOMTOT 'CENTRE')
  1470. 'ET' ('DOMA' MDOMTOT 'FACE')) 'TITRE' 'Centres et faces' ;
  1471. 'FINSI' ;
  1472.  
  1473.  
  1474. * CHAMPOINT
  1475.  
  1476. A11 = 12.01517 ;
  1477. A12 = 13.1421 ;
  1478. A13 = 11.7 ;
  1479. A0 = -3.21 ;
  1480.  
  1481. B11 = 22.01517 ;
  1482. B12 = 43.1421 ;
  1483. B13 = 7.01 ;
  1484.  
  1485. B0 = -5.21 ;
  1486.  
  1487. XX YY ZZ = 'COORDONNEE' ('DOMA' MDOMTOT 'CENTRE') ;
  1488. CHP1 = (A11 '*' XX) '+' (A12 '*' YY) '+' (A13 '*' ZZ) '+' A0;
  1489. CHP2 = (B11 '*' XX) '+' (B12 '*' YY) '+' (B13 '*' ZZ) '+' B0;
  1490. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  1491. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  1492. CHP = CHP1 'ET' CHP2 ;
  1493.  
  1494. *
  1495. * TEST1 : Dirichlet BC everywhere
  1496. *
  1497.  
  1498. XXF YYF ZZF = 'COORDONNEE' ('DOMA' MCONDOM 'CENTRE') ;
  1499. CHP1 = (A11 '*' XXF) '+' (A12 '*' YYF) '+' (A13 '*' ZZF) '+' A0;
  1500. CHP2 = (B11 '*' XXF) '+' (B12 '*' YYF) '+' (B13 '*' ZZF) '+' B0;
  1501. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  1502. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  1503. CHPL1 = CHP1 'ET' CHP2 ;
  1504.  
  1505. CACCA PIPI = 'KOPS' 'MATRIK' ;
  1506. CHPL2 = 'COPIER' CACCA ;
  1507.  
  1508. *
  1509. GRCHP GRG = 'PENT' MDOMTOT 'FACE'
  1510. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C1DZ'
  1511. 'C2DX' 'C2DY' 'C2DZ') CHP CHPL1 CHPL2 ;
  1512.  
  1513. GRCHP1 = 'PENT' MDOMTOT 'FACE'
  1514. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C1DZ'
  1515. 'C2DX' 'C2DY' 'C2DZ') CHP CHPL1 CHPL2 'GRADGEO' GRG ;
  1516.  
  1517. ERRO = 'MAXIMUM' (GRCHP '-' GRCHP1) 'ABS' ;
  1518.  
  1519. 'SI' (ERRO > 1.0D-8) ;
  1520. 'MESSAGE' ;
  1521. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1522. 'MESSAGE' ;
  1523. 'ERREUR' 5;
  1524. 'FINSI' ;
  1525.  
  1526. GREXA = 'MANUEL' 'CHPO' ('DOMA' MDOMTOT 'FACE') 6 'C1DX' A11
  1527. 'C1DY' A12 'C1DZ' A13 'C2DX' B11 'C2DY' B12 'C2DZ' B13
  1528. 'NATU' 'DISCRET' ;
  1529.  
  1530. ERRCH = GREXA '-' GRCHP ;
  1531.  
  1532. ERRO = 'MAXIMUM' ERRCH 'ABS' ;
  1533.  
  1534. 'SI' (ERRO > 1.0D-8) ;
  1535. 'MESSAGE' ;
  1536. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1537. 'MESSAGE' ;
  1538. 'ERREUR' 5;
  1539. 'FINSI' ;
  1540.  
  1541. *
  1542. * TEST2 : von Neumann BC everywhere
  1543. *
  1544.  
  1545. CHPL2 = 'MANUEL' 'CHPO' ('DOMA' MCONDOM 'CENTRE') 6
  1546. 'C1DX' A11 'C1DY' A12 'C1DZ' A13 'C2DX' B11 'C2DY'
  1547. B12 'C2DZ' B13 'NATU' 'DISCRET' ;
  1548.  
  1549. CACCA PIPI = 'KOPS' 'MATRIK' ;
  1550. CHPL1 = CACCA ;
  1551.  
  1552. GRCHP GRG = 'PENT' MDOMTOT 'FACE'
  1553. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C1DZ'
  1554. 'C2DX' 'C2DY' 'C2DZ') CHP CHPL1 CHPL2 ;
  1555.  
  1556. ERRO = 'MAXIMUM' (GRCHP '-' GREXA) 'ABS' ;
  1557.  
  1558. 'SI' (ERRO > 1.0D-8) ;
  1559. 'MESSAGE' ;
  1560. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1561. 'MESSAGE' ;
  1562. 'ERREUR' 5;
  1563. 'FINSI' ;
  1564.  
  1565. *
  1566. * TEST2 : von Neumann and Dirichlet BC
  1567. *
  1568.  
  1569. XXF YYF ZZF = 'COORDONNEE' ('DOMA' MBAS 'CENTRE') ;
  1570. CHP1 = (A11 '*' XXF) '+' (A12 '*' YYF) '+' (A13 '*' ZZF) '+' A0;
  1571. CHP2 = (B11 '*' XXF) '+' (B12 '*' YYF) '+' (B13 '*' ZZF) '+' B0;
  1572. CHP1 = 'NOMC' 'C1' CHP1 'NATU' 'DISCRET' ;
  1573. CHP2 = 'NOMC' 'C2' CHP2 'NATU' 'DISCRET' ;
  1574. CHPL1 = CHP1 'ET' CHP2 ;
  1575.  
  1576. CHPL2 = 'MANUEL' 'CHPO' ('DOMA' MRESTEN 'CENTRE') 6
  1577. 'C1DX' A11 'C1DY' A12 'C1DZ' A13 'C2DX' B11 'C2DY'
  1578. B12 'C2DZ' B13 'NATU' 'DISCRET' ;
  1579.  
  1580.  
  1581. GRCHP GRG = 'PENT' MDOMTOT 'FACE'
  1582. 'DIAMAN2' ('MOTS' 'C1' 'C2') ('MOTS' 'C1DX' 'C1DY' 'C1DZ'
  1583. 'C2DX' 'C2DY' 'C2DZ') CHP CHPL1 CHPL2 ;
  1584.  
  1585. ERRO = 'MAXIMUM' (GRCHP '-' GREXA) 'ABS' ;
  1586.  
  1587. 'SI' (ERRO > 1.0D-8) ;
  1588. 'MESSAGE' ;
  1589. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1590. 'MESSAGE' ;
  1591. 'ERREUR' 5;
  1592. 'FINSI' ;
  1593. *
  1594.  
  1595. *
  1596. *****************************
  1597. *****************************
  1598. ***** Maillage regulier *****
  1599. *****************************
  1600. *****************************
  1601. *
  1602. * Géométrie
  1603. *
  1604. pA = 0. 0. 0. ;
  1605. pB = 1. 0. 0. ;
  1606. pC = 1. 1. 0. ;
  1607. pD = 0. 1. 0. ;
  1608. pE = 0. 0. 1. ;
  1609. pF = 1. 0. 1. ;
  1610. pG = 1. 1. 1. ;
  1611. pH = 0. 1. 1. ;
  1612. *
  1613. * Paramètres de la discrétisation de base
  1614. *
  1615. nAB = 1 ;
  1616. nBC = 1 ;
  1617. nCD = 1 ;
  1618. nDA = 1 ;
  1619. nH = 1 ;
  1620. *
  1621. * Géométrie discrétisée
  1622. *
  1623. bas = 'DROIT' nAB pA pB ;
  1624. droite = 'DROIT' nBC pB pC ;
  1625. haut = 'DROIT' nCD pC pD ;
  1626. gauche = 'DROIT' nDA pD pA ;
  1627. spourt = bas 'ET' droite 'ET' haut 'ET' gauche ;
  1628. sbas = 'SURFACE' spourt 'PLAN' ;
  1629. mt = 'VOLUME' sbas 'TRAN' nH pE ;
  1630. *
  1631. cnt = 'ENVE' mt 'COULEUR' 'VERT' ;
  1632. 'SI' (graph ET FAUX) ;
  1633. 'TRACER' (mt 'ET' cnt) 'TITRE' 'Enveloppe' ;
  1634. 'FINSI' ;
  1635. *
  1636. * Creation des modèles
  1637. *
  1638. * MODELS
  1639. $mt = 'MODE' mt 'EULER' ;
  1640. $cnt = 'MODE' cnt 'EULER' ;
  1641. tmt = 'DOMA' $mt 'VF' ;
  1642. tcnt = 'DOMA' $cnt 'VF' ;
  1643. * QUAF
  1644. Mmt = tmt . 'QUAF' ;
  1645. Mcnt = tcnt . 'QUAF' ;
  1646. 'ELIM' (Mmt 'ET' Mcnt) 1.E-8 ;
  1647. * MAILLAGES
  1648. 'SI' graph ;
  1649. 'TRACER' (mt 'ET' (('DOMA' $mt 'FACE') 'COULEUR' 'ROUG') 'ET'
  1650. (('DOMA' $MT 'CENTRE') 'COUL' 'VERT'))
  1651. 'TITRE' 'Centres et faces' ;
  1652. 'FINSI' ;
  1653. *
  1654. * solex = (alpha '*' x) '+' (beta '*' y) '+' (gamma '*' z) '+'
  1655. * (eta '*' x '*' y '*' z) '+' delta
  1656. *
  1657. alpha = (** 2. 0.5) ;
  1658. beta = (** 3. 0.5) ;
  1659. gamma = (** 5. 0.5) ;
  1660. * eta = (** 7. 0.5) ;
  1661. eta = 0. ;
  1662. delta = (** 9. 0.5) ;
  1663. *
  1664. * Solution exacte bilinéaire (sur le centre du contour)
  1665. *
  1666. xx yy zz = 'COORDONNEE' ('DOMA' $cnt 'CENTRE') ;
  1667. solex = (xx '*' alpha) '+' (yy '*' beta) '+'
  1668. (zz '*' gamma) '+'
  1669. (xx '*' yy '*' zz '*' eta) '+' delta ;
  1670. *
  1671. * Solution exacte aux centres
  1672. *
  1673. xxc yyc zzc = 'COORDONNEE' ('DOMA' $mt 'CENTRE') ;
  1674. solexc = (xxc '*' alpha) '+' (yyc '*' beta) '+'
  1675. (zzc '*' gamma) '+'
  1676. (xxc '*' yyc '*' zzc '*' eta) '+' delta ;
  1677. *
  1678. * Gradient exact (aux faces)
  1679. *
  1680. xxf yyf zzf = 'COORDONNEE' ('DOMA' $mt 'FACE') ;
  1681. gradtx = 'NOMC' 'UX' (alpha '+' (yyf '*' zzf '*' eta)) 'NATU'
  1682. 'DISCRET' ;
  1683. gradty = 'NOMC' 'UY' (beta '+' (xxf '*' zzf '*' eta)) 'NATU'
  1684. 'DISCRET' ;
  1685. gradtz = 'NOMC' 'UZ' (gamma '+' (xxf '*' yyf '*' eta)) 'NATU'
  1686. 'DISCRET' ;
  1687. gradex = gradtx 'ET' gradty 'ET' gradtz ;
  1688.  
  1689. *
  1690. * BC
  1691. *
  1692.  
  1693. *
  1694. * TEST1 : Dirichlet BC everywhere
  1695. *
  1696.  
  1697. cdir = ('DOMA' $cnt 'CENTRE') ;
  1698. * cvn = set of FACE centers where we impose von Neumann boundary
  1699. * conditions
  1700. cvn = ('DIFF' ('DOMA' $cnt 'CENTRE') cdir) 'COUL' 'TURQ' ;
  1701. 'SI' graph ;
  1702. 'TRACER' (cnt et cvn) 'TITRE' 'Von Neumann B.C.' ;
  1703. 'TRACER' (cnt et cdir) 'TITRE' 'Dirichlet B.C.' ;
  1704. 'FINSI' ;
  1705.  
  1706. tlim1 = 'REDU' solex cdir ;
  1707. gradtl = 'REDU' (gradtx 'ET' gradty 'ET' gradtz) cvn ;
  1708. tlim2 = 'NOMC' ('MOTS' 'UX' 'UY' 'UZ') ('MOTS' 'UX' 'UY' 'UZ')
  1709. gradtl ;
  1710.  
  1711. gradt mchamt = 'PENT' $mt 'FACE' 'DIAMAN2' ('MOTS' 'SCAL')
  1712. ('MOTS' 'UX' 'UY' 'UZ') solexc tlim1 tlim2 ;
  1713.  
  1714. ERRO = 'MAXIMUM' (gradt '-' gradex) 'ABS' ;
  1715.  
  1716. 'SI' (ERRO > 1.0D-8) ;
  1717. 'MESSAGE' ;
  1718. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1719. 'MESSAGE' ;
  1720. 'ERREUR' 5;
  1721. 'FINSI' ;
  1722.  
  1723. *
  1724. * TEST2 : von Neumann BC everywhere
  1725. *
  1726.  
  1727. cdir = 'DIFF' ('DOMA' $cnt 'CENTRE') ('DOMA' $cnt 'CENTRE') ;
  1728. * cvn = set of FACE centers where we impose von Neumann boundary
  1729. * conditions
  1730. cvn = ('DIFF' ('DOMA' $cnt 'CENTRE') cdir) 'COUL' 'TURQ' ;
  1731. 'SI' graph ;
  1732. 'TRACER' (cnt et cvn) 'TITRE' 'Von Neumann B.C.' ;
  1733. 'TRACER' (cnt et cdir) 'TITRE' 'Dirichlet B.C.' ;
  1734. 'FINSI' ;
  1735.  
  1736. tlim1 = 'REDU' solex cdir ;
  1737. gradtl = 'REDU' (gradtx 'ET' gradty 'ET' gradtz) cvn ;
  1738. tlim2 = 'NOMC' ('MOTS' 'UX' 'UY' 'UZ') ('MOTS' 'UX' 'UY' 'UZ')
  1739. gradtl ;
  1740.  
  1741. gradt mchamt = 'PENT' $mt 'FACE' 'DIAMAN2' ('MOTS' 'SCAL')
  1742. ('MOTS' 'UX' 'UY' 'UZ') solexc tlim1 tlim2 ;
  1743.  
  1744. ERRO = 'MAXIMUM' (gradt '-' gradex) 'ABS' ;
  1745.  
  1746. 'SI' (ERRO > 1.0D-8) ;
  1747. 'MESSAGE' ;
  1748. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1749. 'MESSAGE' ;
  1750. 'ERREUR' 5;
  1751. 'FINSI' ;
  1752.  
  1753. *
  1754. * TEST3 : von Neumann and Dirichlet bc
  1755. *
  1756.  
  1757. cdir = 'MANUEL' 'POI1' ('POIN' 1 ('DOMA' $cnt 'CENTRE')) ;
  1758. * cvn = set of FACE centers where we impose von Neumann boundary
  1759. * conditions
  1760. cvn = ('DIFF' ('DOMA' $cnt 'CENTRE') cdir) 'COUL' 'TURQ' ;
  1761. 'SI' graph ;
  1762. 'TRACER' (cnt et cvn) 'TITRE' 'Von Neumann B.C.' ;
  1763. 'TRACER' (cnt et cdir) 'TITRE' 'Dirichlet B.C.' ;
  1764. 'FINSI' ;
  1765.  
  1766. tlim1 = 'REDU' solex cdir ;
  1767. gradtl = 'REDU' (gradtx 'ET' gradty 'ET' gradtz) cvn ;
  1768. tlim2 = 'NOMC' ('MOTS' 'UX' 'UY' 'UZ') ('MOTS' 'UX' 'UY' 'UZ')
  1769. gradtl ;
  1770.  
  1771. gradt mchamt = 'PENT' $mt 'FACE' 'DIAMAN2' ('MOTS' 'SCAL')
  1772. ('MOTS' 'UX' 'UY' 'UZ') solexc tlim1 tlim2 ;
  1773.  
  1774. ERRO = 'MAXIMUM' (gradt '-' gradex) 'ABS' ;
  1775.  
  1776. 'SI' (ERRO > 1.0D-8) ;
  1777. 'MESSAGE' ;
  1778. 'MESSAGE' ('CHAINE' 'Probleme dans PENT');
  1779. 'MESSAGE' ;
  1780. 'ERREUR' 5;
  1781. 'FINSI' ;
  1782.  
  1783. 'FIN' ;
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  

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