Télécharger test_fimp_dual3DQ.dgibi

Retour à la liste

Numérotation des lignes :

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

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