Télécharger test_fimp_dual2DQ.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : test_fimp_dual2DQ.dgibi
  2. *Ce test vérifie l'égalité discrète Div U - q = 0
  3. *ou q est la discrétisation via l'opérateur FIMP de
  4. *la divergence continue.
  5. * U = (u,v,w) avec u=x**2. , v=y**2.
  6. * q=2(x+y)
  7. *Ce cas test vérifie l'option INCOD KPRES de FIMP
  8. *avec KPRES = CENTREP1,CENTRE,MSOMMET
  9. *et DISCR = QUAF,MACRO,CENTRE
  10. *
  11. * Cas 2D quadrangle
  12. *
  13. opti dime 2 elem QUA4;
  14.  
  15. opti trace 'PSC';
  16.  
  17. GRAPH = VRAI ;
  18. GRAPH = FAUX ;
  19.  
  20. L=1. ; H = 1.; nb = 20;
  21. *L=1. ; H = 1.; nb = 5;
  22. *L=1. ; H = 1.; nb = 2;
  23.  
  24. p0=0. 0.;
  25. p1=L 0.;
  26. p2=0. H ;
  27.  
  28. l1= p0 d nb p1;
  29. mt = l1 trans nb p2;
  30. cnt = cont mt ;
  31. *opti elem TRI3;
  32. *mt= surf cnt 'PLAN';
  33. Mmt= chan mt 'QUAF';
  34.  
  35. lmaxerr=prog;
  36. REPETER BLOCKAS 7 ;
  37.  
  38. Si (EGA &BLOCKAS 5);
  39. DISCR='LINE';KPRES='MSOMMET';
  40. Finsi;
  41.  
  42. Si (EGA &BLOCKAS 6);
  43. DISCR='MACRO';KPRES='MSOMMET';
  44. Finsi;
  45.  
  46. Si (EGA &BLOCKAS 7);
  47. DISCR='QUAF';KPRES='MSOMMET';
  48. Finsi;
  49.  
  50. Si (EGA &BLOCKAS 1);
  51. DISCR='QUAF';KPRES='CENTREP1';
  52. Finsi;
  53.  
  54. Si (EGA &BLOCKAS 2);
  55. DISCR='MACRO';KPRES='CENTREP1';
  56. Finsi;
  57.  
  58. Si (EGA &BLOCKAS 3);
  59. DISCR='MACRO';KPRES='CENTRE';
  60. Finsi;
  61.  
  62. Si (EGA &BLOCKAS 4);
  63. DISCR='LINE';KPRES='CENTRE';
  64. Finsi;
  65.  
  66. mess ' ====================================';
  67. mess ' ====================================';
  68. mess ' DISCR=' DISCR ' KPRES=' KPRES;
  69.  
  70. $mt = model Mmt 'NAVIER_STOKES' DISCR;
  71. doma $mt 'IMPR';
  72. at= doma $mt table ;
  73. mt = doma $mt maillage ;
  74. dg = doma $mt 'XXDIAGSI';
  75.  
  76.  
  77. Si(EGA KPRES 'CENTREP1');
  78. mp1=doma $mt 'CENTREP1';
  79. mp1 = mp1 coul rouge;
  80. mtp=doma $mt 'ELTP1NC';
  81. Si GRAPH;
  82. trace (at.'QUAF' et mp1);
  83. Finsi;
  84. dgp=doma $mt 'XXCTREP1';
  85. mess (somt dgp);
  86. Finsi;
  87.  
  88. Si(EGA KPRES 'CENTRE');
  89. dgp=doma $mt 'XXVOLUM';
  90. mtp=doma $mt maillage ;
  91. mp1=doma $mt 'CENTRE';
  92. mp1 = mp1 coul rouge;
  93. Si(EGA DISCR 'MACRO');
  94. mtp=at.'MELSTB ';
  95. le=lect 1 pas 4 ((nbel mtp) - 3);
  96. mtp=elem mtp le;
  97. Finsi;
  98. Finsi;
  99.  
  100. Si(EGA KPRES 'MSOMMET');
  101. dgp= doma $mt 'XXMSOMME';
  102. mess ' Différence entre XXINTG et XXDIAGSI' ;
  103. mess ' maxi (dgp - dg)=' (maxi (dgp - dg));
  104. mtp=doma $mt 'MMAIL' ;
  105. mp1=doma $mt 'MSOMMET';
  106. Finsi;
  107.  
  108. lt = chai ' ' DISCR ' ' KPRES ;
  109.  
  110. rv= eqex $mt
  111. opti 'EF' 'CENTREE' 'INCOD' KPRES
  112. 'ZONE' $mt 'OPER' 'FIMP' 'DSRC' INCO 'PRES'
  113. opti 'EF' 'IMPL' KPRES
  114. 'ZONE' $mt 'OPER' 'KMAB' 1. 1.e-2 INCO 'UN' 'PRES'
  115. opti 'EF' 'CENTREE'
  116. 'ZONE' $mt 'OPER' 'LAPN' 'DSRC' INCO 'TN'
  117. opti 'EF' 'CENTREE' 'INCOD' 'SOMMET'
  118. 'ZONE' $mt 'OPER' 'FIMP' 'DSRC' INCO 'TN';
  119. ;
  120.  
  121. rv.'INCO'=table 'INCO';
  122. rv.'INCO'.'PRES'=kcht $mt scal KPRES 1.;
  123. rv.'INCO'.'UN'=kcht $mt vect sommet (1. 1.);
  124. rv.'INCO'.'TN'=kcht $mt scal sommet 1.;
  125.  
  126. cx=1. ; cy=1.;
  127. cx=1. ; cy=0.;
  128. x= coor 1 mt;
  129. y= coor 2 mt;
  130. xp= coor 1 mp1;
  131. yp= coor 2 mp1;
  132. x2= (x*x*cx) CHAN 'ATTRIBUT' 'NATURE' 'DIFFUS';
  133. y2= (y*y*cy) CHAN 'ATTRIBUT' 'NATURE' 'DIFFUS';
  134.  
  135. dvu=2*((x*cx)+(y*cy));
  136. dvup=2*((xp*cx)+(yp*cy));
  137.  
  138. rv.'INCO'.'DSRC'=kcht $mt scal sommet dvu;
  139. *rv.'INCO'.'DSRC'=kcht $mt scal sommet 1. ;
  140.  
  141. UN= (nomc x2 '1UN') et (nomc y2 '2UN');
  142.  
  143. *-------------------- CUN -----------------------------------
  144. cs C = kmab (rv.'2KMAB');
  145.  
  146.  
  147. cun = kops C '*' un ;
  148.  
  149. cund=(nomc cun 'SCAL') *(inve dgp);
  150. cuns = kcht $mt scal KPRES (nomc cun 'SCAL') ;
  151. cuns=elno $mt cuns KPRES ;
  152. cund = nomc cund 'SCAL';
  153. dcunp = somt (dgp*(cund - dvup)*(cund - dvup));
  154. mess 'Erreur L2 cund - dvup =' dcunp;
  155.  
  156. Si Graph;
  157. trace cuns mt TITR (chai ' CUNS (ELNO) ' lt);
  158.  
  159. Si((EGA KPRES 'MSOMMET') ou (EGA KPRES 'CENTREP1')
  160. ou ((EGA KPRES 'CENTRE') et (EGA DISCR 'MACRO'))
  161. );
  162. trace dvup mtp TITR (chai ' DVUP' lt);
  163. trace cun mtp TITR (chai ' CUN' lt);
  164. trace cund mtp TITR (chai ' D-1 * CUN' lt);
  165. trace (dvup - cund) mtp
  166. TITR (chai ' (dvup - (D-1 * cun)) ' lt);
  167. Finsi ;
  168. Finsi ;
  169. *-------------------- CUN -----------------------------------
  170.  
  171. *-------------------- MSF -----------------------------------
  172. msf ma = fimp (rv.'1FIMP');
  173. msfd=(nomc msf 'SCAL') *(inve dgp);
  174. dmsf = somt (dgp*(msfd - dvup)*(msfd - dvup));
  175. mess 'Erreur L2 msfd - dvup =' dmsf;
  176.  
  177. msfs = elno $mt msf kpres;
  178. dcusf = nomc (cun - msf) 'SCAL';
  179. dcusf = somt (dgp*dcusf*dcusf);
  180. mess 'Erreur L2 (cun - msf) =' dcusf;
  181.  
  182. Si Graph;
  183. trace msfs mt TITR (chai ' MSFs (elno MSF) ' lt);
  184.  
  185. Si((EGA KPRES 'MSOMMET') ou (EGA KPRES 'CENTREP1')
  186. ou ((EGA KPRES 'CENTRE') et (EGA DISCR 'MACRO'))
  187. );
  188. trace (cun - msf) mtp TITR (chai ' Différence entre CUN et MSF ' lt);
  189. trace msf mtp TITR (chai ' MSF' lt);
  190. Finsi ;
  191. Finsi ;
  192. *-------------------- MSF -----------------------------------
  193.  
  194. *-------------------- MSG -----------------------------------
  195. msg ma = fimp (rv.'4FIMP');
  196. msg = nomc msg 'SCAL';
  197. msgd=msg *(inve dg);
  198. Si Graph;
  199. trace msg mt TITR (chai ' MSG (FIMP normal) ' lt);
  200. trace msgd mt TITR (chai ' D-1 * MSG (FIMP normal) ' lt);
  201. trace (dvu - msgd) mt
  202. TITR (chai ' (dvu - (D-1 * MSG)) (FIMP normal) ' lt);
  203. Finsi;
  204. dmsgd = somt (dg*(msgd - dvu)*(msgd - dvu));
  205. mess 'Erreur L2 msgd - dvu =' dmsgd;
  206. *-------------------- MSG -----------------------------------
  207.  
  208. ms ma = lapn (rv.'3LAPN');
  209.  
  210. mess (chai lt ' Erreurs L2 : ')
  211. ' dcunp=' dcunp ' dmsf=' dmsf ' dcusf=' dcusf ' dmsgd=' dmsgd ;
  212. err = (MAXI (prog dcunp dcusf dmsgd));
  213. lmaxerr = lmaxerr et (prog err);
  214. Mess (chai lt ' MAXI des erreurs = ') err;
  215.  
  216.  
  217. FIN BLOCKAS;
  218.  
  219.  
  220. list lmaxerr ;
  221. er=maxi lmaxerr;
  222. si ( er > 2.E-3); erreur 5 ; finsi ;
  223.  
  224. FIN ;
  225.  
  226.  
  227.  
  228.  
  229.  

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