Télécharger pente2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : pente2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ***********************************************************
  5. **** APPROCHE VF "Cell-Centred Formulation". ****
  6. **** OPÉRATEUR PENT, pour le calcul des gradients et ****
  7. **** de limiteurs ****
  8. **** Cas test: calcul du limiteur ****
  9. **** ****
  10. **** A. BECCANTINI, TTMF MAI 1998 ****
  11. ***********************************************************
  12.  
  13.  
  14. 'OPTION' 'DIME' 2 ;
  15. 'OPTION' 'ELEM' 'QUA4' ;
  16. 'OPTION' 'ISOV' 'SULI' ;
  17. 'OPTION' 'ECHO' 0;
  18. 'OPTION' 'TRAC' 'X';
  19.  
  20. GRAPH = FAUX ;
  21. * GRAPH = VRAI ;
  22.  
  23. *
  24. **** Domaine
  25. *
  26.  
  27. A1 = 0.0 0.0 ;
  28. A2 = 4.0 0.0 ;
  29. A3 = 4.0 2.0 ;
  30. A4 = 2.0 2.0 ;
  31. A5 = 0.0 2.0 ;
  32. A6 = 4.0 -2.0 ;
  33. A7 = 6.0 4.0 ;
  34. A8 = 2.0 4.0 ;
  35. A9 = -1.0 -1.0;
  36.  
  37. DOM1 = 'MANUEL' 'QUA4' A1 A2 A3 A4 ;
  38. DOM2 = 'MANUEL' 'TRI3' A2 A7 A3 ;
  39. DOM3 = 'MANUEL' 'TRI3' A1 A6 A2 ;
  40. DOM4 = 'MANUEL' 'TRI3' A2 A6 A7 ;
  41. DOM5 = 'MANUEL' 'TRI3' A3 A7 A8 ;
  42. DOM6 = 'MANUEL' 'TRI3' A4 A3 A8 ;
  43. DOM7 = 'MANUEL' 'TRI3' A1 A4 A5 ;
  44. DOM8 = 'MANUEL' 'TRI3' A1 A9 A6 ;
  45.  
  46. DOMTOT = DOM2 'ET' DOM3 'ET' DOM4
  47. 'ET' DOM1 'ET' DOM6 'ET' DOM7
  48. 'ET' DOM5 'ET' DOM8;
  49.  
  50. 'SI' GRAPH ;
  51. 'TRACER' DOMTOT 'TITRE' 'DOMTOT' ;
  52. 'FINSI' ;
  53.  
  54. DOMT1 = DOM1 'ET' DOM3 'ET' DOM2
  55. 'ET' DOM6 'ET' DOM7 'COULEUR' 'VERT';
  56.  
  57. DOMT2 = DOM2 'ET' DOM1 'ET' DOM4
  58. 'ET' DOM5 'COULEUR' 'VERT';
  59.  
  60.  
  61. $DOMTOT = 'MODE' DOMTOT 'EULER' ;
  62. $DOM1 = 'MODE' DOM1 'EULER' ;
  63. $DOM2 = 'MODE' DOM2 'EULER' ;
  64. $DOM3 = 'MODE' DOM3 'EULER' ;
  65. $DOM4 = 'MODE' DOM4 'EULER' ;
  66. $DOM5 = 'MODE' DOM5 'EULER' ;
  67. $DOM6 = 'MODE' DOM6 'EULER' ;
  68. $DOM7 = 'MODE' DOM7 'EULER' ;
  69. $DOM8 = 'MODE' DOM8 'EULER' ;
  70. $DOMT1 = 'MODE' DOMT1 'EULER' ;
  71.  
  72. TDOMTOT = 'DOMA' $DOMTOT 'VF' ;
  73. TDOM1 = 'DOMA' $DOM1 'VF' ;
  74. TDOM2 = 'DOMA' $DOM2 'VF' ;
  75. TDOM3 = 'DOMA' $DOM3 'VF' ;
  76. TDOM4 = 'DOMA' $DOM4 'VF' ;
  77. TDOM5 = 'DOMA' $DOM5 'VF' ;
  78. TDOM6 = 'DOMA' $DOM6 'VF' ;
  79. TDOM7 = 'DOMA' $DOM7 'VF' ;
  80. TDOM8 = 'DOMA' $DOM8 'VF' ;
  81. TDOMT1 = 'DOMA' $DOMT1 'VF' ;
  82.  
  83. MDOMTOT = TDOMTOT . 'QUAF';
  84. MDOM1 = TDOM1 . 'QUAF';
  85. MDOM2 = TDOM2 . 'QUAF';
  86. MDOM3 = TDOM3 . 'QUAF';
  87. MDOM4 = TDOM4 . 'QUAF';
  88. MDOM5 = TDOM5 . 'QUAF';
  89. MDOM6 = TDOM6 . 'QUAF';
  90. MDOM7 = TDOM7 . 'QUAF';
  91. MDOM8 = TDOM8 . 'QUAF';
  92. MDOMT1 = TDOMT1 . 'QUAF';
  93. 'ELIM' (MDOMTOT 'ET' MDOM1 'ET' MDOM2 'ET' MDOM3 'ET' MDOM4 'ET' MDOM5
  94. 'ET' MDOM6 'ET' MDOM7 'ET' MDOM8 'ET' MDOMT1) 1D-6;
  95.  
  96. XX YY = 'COORDONNEE' ('DOMA' $DOMTOT 'CENTRE');
  97.  
  98. PHI1 = 'NOMC' 'UX' ((2 '*' XX) '+' (7 '*' YY)) ;
  99. PHI2 = 'NOMC' 'UY' ((3 '*' XX) '+' (4 '*' YY)) ;
  100.  
  101. PHI = PHI1 'ET' PHI2 ;
  102.  
  103. * PHI est une fonction lineaire des XX et YY.
  104.  
  105.  
  106. ****************************************************
  107. **** Le limiteur: les paramètres géométriques ****
  108. ****************************************************
  109.  
  110. PCDOM1 = ('DOMA' $DOM1 'CENTRE') 'POIN' 1;
  111.  
  112. xC1 yC1 = 'COORDONNEE' PCDOM1 ;
  113.  
  114. *
  115. **** 1-3
  116. *
  117.  
  118. PCDOM3 = ('DOMA' $DOM3 'CENTRE') 'POIN' 1 ;
  119.  
  120. xA1 yA1 = 'COORDONNEE' A1 ;
  121. xA2 yA2 = 'COORDONNEE' A2 ;
  122. xF3 = (xA1 '+' xA2) '/' 2.0 ;
  123. yF3 = (yA1 '+' yA1) '/' 2.0 ;
  124.  
  125. F3 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF3 yF3) ;
  126.  
  127. xC3 yC3 = 'COORDONNEE' PCDOM3 ;
  128. xF3 yF3 = 'COORDONNEE' F3 ;
  129.  
  130.  
  131. DXC1F3 = xF3 '-' xC1 ;
  132. DYC1F3 = yF3 '-' yC1 ;
  133. DC1F3 = ((DXC1F3 '**' 2) '+' (DYC1F3 '**' 2)) '**' 0.5 ;
  134.  
  135. DXC3F3 = xF3 '-' xC3 ;
  136. DYC3F3 = yF3 '-' yC3 ;
  137. DC3F3 = ((DXC3F3 '**' 2) '+' (DYC3F3 '**' 2)) '**' 0.5 ;
  138.  
  139. DTOT3 = DC1F3 '+' DC3F3 ;
  140.  
  141.  
  142. *
  143. **** 1-2
  144. *
  145.  
  146.  
  147. PCDOM2 = ('DOMA' $DOM2 'CENTRE') 'POIN' 1 ;
  148. xA2 yA2 = 'COORDONNEE' A2 ;
  149. xA3 yA3 = 'COORDONNEE' A3 ;
  150. xF2 = (xA3 '+' xA2) '/' 2.0 ;
  151. yF2 = (yA3 '+' yA1) '/' 2.0 ;
  152.  
  153.  
  154. F2 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF2 yF2) ;
  155.  
  156.  
  157. xC2 yC2 = 'COORDONNEE' PCDOM2 ;
  158. xF2 yF2 = 'COORDONNEE' F2 ;
  159.  
  160.  
  161. DXC1F2 = xF2 '-' xC1 ;
  162. DYC1F2 = yF2 '-' yC1 ;
  163. DC1F2 = ((DXC1F2 '**' 2) '+' (DYC1F2 '**' 2)) '**' 0.5 ;
  164.  
  165. DXC2F2 = xF2 '-' xC2 ;
  166. DYC2F2 = yF2 '-' yC2 ;
  167. DC2F2 = ((DXC2F2 '**' 2) '+' (DYC2F2 '**' 2)) '**' 0.5 ;
  168.  
  169. DTOT2 = DC1F2 '+' DC2F2 ;
  170.  
  171.  
  172. *
  173. **** 1-6
  174. *
  175.  
  176.  
  177. PCDOM6 = ('DOMA' $DOM6 'CENTRE') 'POIN' 1 ;
  178. xA4 yA4 = 'COORDONNEE' A4 ;
  179. xA3 yA3 = 'COORDONNEE' A3 ;
  180. xF6 = (xA3 '+' xA4) '/' 2.0 ;
  181. yF6 = (yA3 '+' yA4) '/' 2.0 ;
  182.  
  183.  
  184. F6 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF6 yF6) ;
  185.  
  186. xC6 yC6 = 'COORDONNEE' PCDOM6 ;
  187. xF6 yF6 = 'COORDONNEE' F6 ;
  188.  
  189. DXC1F6 = xF6 '-' xC1 ;
  190. DYC1F6 = yF6 '-' yC1 ;
  191. DC1F6 = ((DXC1F6 '**' 2) '+' (DYC1F6 '**' 2)) '**' 0.5 ;
  192.  
  193. DXC6F6 = xF6 '-' xC6 ;
  194. DYC6F6 = yF6 '-' yC6 ;
  195. DC6F6 = ((DXC6F6 '**' 2) '+' (DYC6F6 '**' 2)) '**' 0.5 ;
  196.  
  197. DTOT6 = DC1F6 '+' DC6F6 ;
  198.  
  199.  
  200. *
  201. *** Limiteur 1-7
  202. *
  203.  
  204.  
  205. PCDOM7 = ('DOMA' $DOM7 'CENTRE') 'POIN' 1 ;
  206. xA4 yA4 = 'COORDONNEE' A4 ;
  207. xA1 yA1 = 'COORDONNEE' A1 ;
  208. xF7 = (xA1 '+' xA4) '/' 2.0 ;
  209. yF7 = (yA1 '+' yA4) '/' 2.0 ;
  210.  
  211.  
  212. F7 = ('DOMA' $DOMTOT 'FACEL') 'POIN' 'PROC' (xF7 yF7) ;
  213.  
  214. xC7 yC7 = 'COORDONNEE' PCDOM7 ;
  215. xF7 yF7 = 'COORDONNEE' F7 ;
  216.  
  217.  
  218. DXC1F7 = xF7 '-' xC1 ;
  219. DYC1F7 = yF7 '-' yC1 ;
  220. DC1F7 = ((DXC1F7 '**' 2) '+' (DYC1F7 '**' 2)) '**' 0.5 ;
  221.  
  222. DXC7F7 = xF7 '-' xC7 ;
  223. DYC7F7 = yF7 '-' yC7 ;
  224. DC7F7 = ((DXC7F7 '**' 2) '+' (DYC7F7 '**' 2)) '**' 0.5 ;
  225.  
  226. DTOT7 = DC1F7 '+' DC7F7 ;
  227.  
  228. *
  229. **** Composantes à controller
  230. *
  231.  
  232. LISTCOM = 'MOTS' 'UX' 'UY' ;
  233. LISTNG1 = 'MOTS' 'P1DX' 'P2DX' ;
  234. LISTNG2 = 'MOTS' 'P1DY' 'P2DY' ;
  235. LISTNAL = 'MOTS' 'P1' 'P2' ;
  236.  
  237. *
  238. **** Bloc sur les differents options
  239. *
  240.  
  241. 'REPETER' BLOPT 2;
  242.  
  243. 'SI' (&BLOPT 'EGA' 1) ;
  244. GRAPHI ALPHI COEF = 'PENT' $DOMTOT 'CENTRE' 'EULESCAL' 'LIMITEUR'
  245. ('MOTS' 'UX' 'UY') PHI ;
  246. 'FINSI' ;
  247.  
  248. 'SI' (&BLOPT 'EGA' 2) ;
  249. GRAPHI ALPHI COEF = 'PENT' $DOMTOT 'CENTRE' 'EULEVECT' 'LIMITEUR'
  250. ('MOTS' 'UX' 'UY') PHI ;
  251. 'FINSI' ;
  252.  
  253. 'SI' (GRAPH 'ET' (&BLOPT 'EGA' 1)) ;
  254.  
  255. ****************************************************
  256. **** Le centre de l'element DOM3 est en dehors ****
  257. **** de son element dual : le programme GRADGEO ****
  258. **** prevoit ce cas d'un maillage mal fait et le****
  259. **** resultat est juste. ****
  260. ****************************************************
  261.  
  262. DUAL=(('DOMA' $DOMTOT 'TABLE').'ELKONF')
  263. 'ET' ('DOMA' $DOM1 'MAILLAGE') 'ET' ('DOMA' $DOM3 'MAILLAGE')
  264. 'ET' ('DOMA' $DOM4 'MAILLAGE') 'ET' ('DOMA' $DOM8 'MAILLAGE')
  265. 'COUL' VERT;
  266. 'TRACER' (('DOMA' $DOM3 'CENTRE') 'ET' DOM1 'ET'
  267. DOM3 'ET' DOM4 'ET' DOM8 'ET' DUAL)
  268. 'TITRE' 'CENTRE DEHORS DU DUAL';
  269. 'FINSI' ;
  270.  
  271. 'REPETER' BLOC1 ('DIME' LISTCOM);
  272.  
  273. NOMCOM = 'EXTRAIRE' &BLOC1 LISTCOM ;
  274. NOMG1 = 'EXTRAIRE' &BLOC1 LISTNG1 ;
  275. NOMG2 = 'EXTRAIRE' &BLOC1 LISTNG2 ;
  276. NOMAL = 'EXTRAIRE' &BLOC1 LISTNAL ;
  277.  
  278. PHICOM = 'KCHT' $DOMT1 'SCAL' 'CENTRE' ('EXCO' NOMCOM PHI);
  279. PHI1 = 'EXTRAIRE' PHICOM 'SCAL' PCDOM1 ;
  280. PHIMAX = 'MAXIMUM' PHICOM;
  281. PHIMIN = 'MINIMUM' PHICOM;
  282. DPHISTE = PHIMAX '-' PHIMIN;
  283.  
  284. GPHI1X = 'EXTRAIRE' GRAPHI NOMG1 PCDOM1 ;
  285. GPHI1Y = 'EXTRAIRE' GRAPHI NOMG2 PCDOM1 ;
  286.  
  287. *
  288. **** 1-3
  289. *
  290.  
  291. DPHI0 = (GPHI1X '*' DXC1F3) '+' (GPHI1Y '*' DYC1F3) ;
  292.  
  293. 'SI' (('ABS' DPHI0) '<EG' (1.D-6*DPHISTE));
  294. AL13 = 1.0D0;
  295. 'SINON' ;
  296. 'SI' (DPHI0 > 0.0);
  297. DPHI = PHIMAX '-' PHI1;
  298. AL13 = (DPHI '/' DTOT3) * (DC1F3 '/' DPHI0) ;
  299. 'SINON' ;
  300. DPHI = PHIMIN '-' PHI1;
  301. AL13 = (DPHI '/' DTOT3) * (DC1F3 '/' DPHI0) ;
  302. 'FINSI' ;
  303. 'FINSI' ;
  304. AL13 = 'MINIMUM' ('PROG' 1.0 AL13) ;
  305.  
  306.  
  307. *
  308. **** 1-2
  309. *
  310.  
  311.  
  312. DPHI0 = (GPHI1X '*' DXC1F2) '+' (GPHI1Y '*' DYC1F2) ;
  313. 'SI' (('ABS' DPHI0) '<EG' (1.D-6*DPHISTE));
  314. AL12 = 1.0D0;
  315. 'SINON' ;
  316. 'SI' (DPHI0 > 0.0);
  317. DPHI = PHIMAX '-' PHI1;
  318. AL12 = (DPHI '/' DTOT2) * (DC1F2 '/' DPHI0) ;
  319. 'SINON' ;
  320. DPHI = PHIMIN '-' PHI1;
  321. AL12 = (DPHI '/' DTOT2) * (DC1F2 '/' DPHI0) ;
  322. 'FINSI' ;
  323. 'FINSI' ;
  324. AL12 = 'MINIMUM' ('PROG' AL12 1.0);
  325.  
  326.  
  327. *
  328. **** 1-6
  329. *
  330.  
  331. DPHI0 = (GPHI1X '*' DXC1F6) '+' (GPHI1Y '*' DYC1F6) ;
  332. 'SI' (('ABS' DPHI0) '<EG' (1.D-6*DPHISTE));
  333. AL16 = 1.0D0;
  334. 'SINON' ;
  335. 'SI' (DPHI0 > 0.0);
  336. DPHI = PHIMAX '-' PHI1;
  337. AL16 = (DPHI '/' DTOT6) * (DC1F6 '/' DPHI0) ;
  338. 'SINON' ;
  339. DPHI = PHIMIN '-' PHI1;
  340. AL16 = (DPHI '/' DTOT6) * (DC1F6 '/' DPHI0) ;
  341. 'FINSI' ;
  342. 'FINSI' ;
  343. AL16 = 'MINIMUM' ('PROG' AL16 1.0);
  344.  
  345.  
  346. *
  347. **** 1 - 7
  348. *
  349.  
  350. DPHI0 = (GPHI1X '*' DXC1F7) '+' (GPHI1Y '*' DYC1F7) ;
  351. 'SI' (('ABS' DPHI0) '<EG' (1.D-6*DPHISTE));
  352. AL17 = 1.0D0;
  353. 'SINON' ;
  354. 'SI' (DPHI0 > 0.0);
  355. DPHI = PHIMAX '-' PHI1;
  356. AL17 = (DPHI '/' DTOT7) * (DC1F7 '/' DPHI0) ;
  357. 'SINON' ;
  358. DPHI = PHIMIN '-' PHI1;
  359. AL17 = (DPHI '/' DTOT7) * (DC1F7 '/' DPHI0) ;
  360. 'FINSI' ;
  361. 'FINSI' ;
  362. AL17 = 'MINIMUM' ('PROG' AL17 1.0);
  363.  
  364. *
  365. *** ALPHA ELT
  366. *
  367.  
  368. ALELT = 'MINIMUM' ('PROG' AL13 AL12 AL16 AL17);
  369.  
  370. ALELT0 = 'EXTRAIRE' ALPHI NOMAL PCDOM1 ;
  371.  
  372.  
  373. 'SI' (('ABS' (ALELT '-' ALELT0)) > 1.0D-14);
  374. 'MESSAGE' (ALELT '-' ALELT0) ;
  375. 'OPTION' DONN 5 ;
  376. 'ERREUR' 5;
  377. 'FINSI' ;
  378.  
  379. 'FIN' BLOC1 ;
  380.  
  381. 'FIN' BLOPT ;
  382.  
  383.  
  384. 'FIN' ;
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  

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