Télécharger consmasse.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : consmasse.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. COMPLET = FAUX ;
  5. SI ( COMPLET ) ;
  6. NX = 40 ; NY = 20 ;
  7. NITER = 800 ;
  8. CFL = 0.9 ;
  9. TOLCONV = -5.0 ;
  10. TOLDEBI = 8.0E-4 ;
  11. TOLSOLU = 0.8 ;
  12. SINON ;
  13. NX = 8 ; NY = 4 ;
  14. NITER = 200 ;
  15. CFL = 0.9 ;
  16. TOLCONV = -4.0 ;
  17. TOLDEBI = 3.0E-3 ;
  18. TOLSOLU = 1.7 ;
  19. FINSI ;
  20. GRAPH = 'N' ;
  21.  
  22. ******************************************************************
  23. * TESTE LA CONSERVATION DE LA MASSE POUR L'EQUATION SOUS FORME *
  24. * CONSERVATIVE : dC/dt + div ( U C ) = 0 AVEC U CHAMP DE VITESSE *
  25. * A DIVERGENCE NON NULLE *
  26. * COMPARAISON AVEC SOLUTION ANALYTIQUE EXACTE *
  27. * ON TESTE SUCCESSIVEMENT MAILLAGE QUA4 ET MAILLAGE TRI3 *
  28. ******************************************************************
  29.  
  30. DEBPROC CALCUL ;
  31. ARGU RVX*'TABLE' ;
  32.  
  33. RV = RVX.'EQEX' ;
  34. CN = RV.INCO.'CN' ;
  35.  
  36. DD = RV.PASDETPS.'NUPASDT' ;
  37. NN = DD/5 ;
  38. LO = (DD-(5*NN)) EGA 0 ;
  39. SI ( LO ) ;
  40.  
  41. ERR = KOPS (RV.INCO.'CN') - (RV.INCO.'CNM1') ;
  42. ELI = MAXI ERR 'ABS' ;
  43. ELI = (LOG (ELI + 1.0E-20))/(LOG 10.) ;
  44. MESSAGE 'ITER ' RV.PASDETPS.'NUPASDT' ' ERREUR LINF ' ELI ;
  45. IT = PROG RV.PASDETPS.'NUPASDT' ;
  46. ER = PROG ELI ;
  47. RV.INCO.'IT' = (RV.INCO.'IT') ET IT ;
  48. RV.INCO.'ER' = (RV.INCO.'ER') ET ER ;
  49. FINSI ;
  50.  
  51. RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' (RV.INCO.'CN') ;
  52.  
  53. as2 ama1 = 'KOPS' 'MATRIK' ;
  54. FINPROC as2 ama1 ;
  55.  
  56. opti elem qua4 ;
  57. opti isov suli ;
  58. titre 'Conservation de la masse' ;
  59.  
  60. *************
  61. * DIFFUSION *
  62. *************
  63. DIF = 1.0E-20 ;
  64.  
  65. ************
  66. * MAILLAGE *
  67. ************
  68.  
  69. A1 = 0.0 0.0 ;
  70. A2 = 2.0 0.0 ;
  71. A3 = 2.0 1.0 ;
  72. A4 = 0.0 1.0 ;
  73.  
  74. FBAS = A1 'DROI' NX A2 ;
  75. FDRO = A2 'DROI' NY A3 ;
  76. FHAU = A3 'DROI' NX A4 ;
  77. FGAU = A4 'DROI' NY A1 ;
  78.  
  79. PA1 = FBAS POIN 'PROC' A1 ;
  80. PA2 = FBAS POIN 'PROC' A2 ;
  81. P12 = CHAN POI1 FBAS ;
  82. MA1 = P12 ELEM 'CONTENANT' PA1 ;
  83. MA2 = P12 ELEM 'CONTENANT' PA2 ;
  84.  
  85. DOMTOT = 'DALL' FBAS FDRO FHAU FGAU 'PLAN' ;
  86.  
  87. ************************************
  88. * CREATION DU MODELE NAVIER_STOKES *
  89. ************************************
  90.  
  91. MDOMTOT = CHAN DOMTOT QUAF ;
  92. $DOMTOT = MODE MDOMTOT 'NAVIER_STOKES' LINE ; DOMA $DOMTOT 'IMPR' ;
  93. DOMTOT = DOMA $DOMTOT MAILLAGE ;
  94. CNT = 'CONT' DOMTOT ;
  95.  
  96. FDRO = CHAN FDRO QUAF ;
  97. FGAU = CHAN FGAU QUAF ;
  98. ELIM (MDOMTOT ET FDRO ET FGAU ) 1.E-3 ;
  99.  
  100. $FDRO = MODE FDRO 'NAVIER_STOKES' LINE ;
  101. $FGAU = MODE FGAU 'NAVIER_STOKES' LINE ;
  102. FDRO = DOMA $FDRO 'MAILLAGE' ;
  103. FGAU = DOMA $FGAU 'MAILLAGE' ;
  104.  
  105. **************************************
  106. * INITIALISATION DU CHAMP DE VITESSE *
  107. **************************************
  108.  
  109. alpha = 1. ;
  110. beta = 2. ;
  111. gamma = 1. ;
  112.  
  113. XX = COOR 1 (DOMA $DOMTOT MAILLAGE) ;
  114. YY = COOR 2 (DOMA $DOMTOT MAILLAGE) ;
  115. XX = KCHT $DOMTOT 'SCAL' 'SOMMET' XX ;
  116. YY = KCHT $DOMTOT 'SCAL' 'SOMMET' YY ;
  117. U1 = KOPS XX '*' alpha ;
  118. U2 = KOPS YY '*' beta ;
  119. U3 = gamma ;
  120. U = KOPS ( KOPS U1 '+' U2) '+' U3 ;
  121. CEXACT = KOPS ( KOPS U2 '+' U3 ) '/' U ;
  122. U = NOMC 'UX' U 'NATU' 'DISCRET' ;
  123. VX = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UX' U ;
  124. VY = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UY' 0.0 ;
  125. CHVIT=KCHT $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY') (VX ET VY);
  126.  
  127. **********************************************
  128. * TABLE EQEX CONTENANT L'EQUATION A RESOUDRE *
  129. **********************************************
  130.  
  131. RV = EQEX $DOMTOT 'ITMA' NITER 'ALFA' CFL
  132. 'ZONE' $DOMTOT
  133. 'OPER' CALCUL
  134. 'OPTI' 'CONS' 'SUPG'
  135. 'OPER' TSCAL DIF 'VITESSE' 0.0 'CN' 'INCO' 'CN'
  136. 'OPTI' 'CENTREE'
  137. 'OPER' DFDT 1. 'CN' 'DELTAT' 'INCO' 'CN'
  138. 'CLIM' 'CN' 'TIMP' FGAU 1.0 ;
  139.  
  140. RV.INCO = TABLE 'INCO' ;
  141. RV.INCO.'CN' = KCHT $DOMTOT 'SCAL' 'SOMMET' 0. ;
  142. RV.INCO.'VITESSE'= CHVIT ;
  143. RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' 1. ;
  144. RV.INCO.'IT' = PROG 1 ;
  145. RV.INCO.'ER' = PROG 0. ;
  146. RV.INCO.'NBIT' = 0 ;
  147.  
  148. EXEC RV ;
  149.  
  150. *************************************************************
  151. * ANALYSE DES RESULTATS : *
  152. * ON TESTE SUR LA CONVERGENCE VERS LA SOLUTION STATIONNAIRE *
  153. * SUR LA PRECISION ENTRE DEBITS ENTRANT/SORTANT *
  154. * SUR LA PRECISION SOLUTIONS NUMERIQUE/EXACTE *
  155. *************************************************************
  156.  
  157. GX = KOPS VX '*' RV.INCO.'CN' ;
  158. GY = KOPS VY '*' RV.INCO.'CN' ;
  159. GX = NOMC 'UX' GX 'NATU' 'DISCRET' ;
  160. GY = NOMC 'UY' GY 'NATU' 'DISCRET' ;
  161. G = KCHT $DOMTOT VECT SOMMET (GX ET GY) ;
  162. QENTREE = DBIT G $FGAU ;
  163. QSORTIE = DBIT G $FDRO ;
  164. ERQ = (QENTREE+QSORTIE)/QENTREE ;
  165. ERQ = ABS(ERQ)*100. ;
  166. MESSAGE 'ERREUR RELATIVE ENTRE DEBIT ENTRANT ET SORTANT '
  167. ERQ ;
  168.  
  169. ERR = KOPS CEXACT '-' RV.INCO.'CN' ;
  170. ERR = KOPS ERR '/' CEXACT ;
  171. ERR = KOPS ERR '*' 100. ;
  172. ERR = ABS ERR ;
  173. MESSAGE 'ERREUR RELATIVE ENTRE SOL. NUMERIQUE ET EXACTE'
  174. (MAXI ERR) ;
  175.  
  176. SI ( (MINI RV.INCO.'ER') > TOLCONV ) ;
  177. ERREUR 5 ;
  178. FINSI ;
  179. SI ( ERQ > TOLDEBI ) ;
  180. ERREUR 5 ;
  181. FINSI ;
  182. SI ( (MAXI ERR) > TOLSOLU ) ;
  183. ERREUR 5 ;
  184. FINSI ;
  185.  
  186. ***********************
  187. * TRACE DES RESULTATS *
  188. ***********************
  189.  
  190. SI ( 'EGA' graph 'O') ;
  191.  
  192. VV = VECT RV.INCO.'VITESSE' 0.1 UX UY JAUNE ;
  193. TRACE DOMTOT 'TITR' 'MAILLAGE' ;
  194. TRACE VV DOMTOT CNT 'TITR' 'CHAMP DE VITESSE' ;
  195. TRAC DOMTOT CEXACT CNT 'TITR' 'SOLUTION EXACTE' ;
  196. TRAC DOMTOT (RV.INCO.'CN') CNT 'TITR' 'SOLUTION NUMERIQUE' ;
  197.  
  198. LISO = PROG 0. 2. 4. 6. 8. 10. 12. 14. 16. 20. ;
  199. TRACE ERR DOMTOT (CONT DOMTOT) LISO 'TITR' 'ERREUR RELATIVE' ;
  200.  
  201. EVOL4 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
  202. (RV.INCO.'ER') ;
  203. DESS EVOL4 'XBOR' 0. 2000. 'YBOR' -12.0 0.0
  204. 'TITR' 'HISTOIRE DE CONVERGENCE' ;
  205. FINSI ;
  206.  
  207. ************************************
  208. * ON TESTE MAINTENANT SUR DES TRI3 *
  209. ************************************
  210.  
  211. opti elem tri3 ;
  212. DOMTOT = 'DALL' FBAS FDRO FHAU FGAU 'PLAN' ;
  213.  
  214. ************************************
  215. * CREATION DU MODELE NAVIER_STOKES *
  216. ************************************
  217.  
  218. MDOMTOT = CHAN DOMTOT QUAF ;
  219. $DOMTOT = MODE MDOMTOT 'NAVIER_STOKES' LINE ; DOMA $DOMTOT 'IMPR' ;
  220. DOMTOT = DOMA $DOMTOT MAILLAGE ;
  221. CNT = 'CONT' DOMTOT ;
  222.  
  223. FDRO = CHAN FDRO QUAF ;
  224. FGAU = CHAN FGAU QUAF ;
  225. ELIM (MDOMTOT ET FDRO ET FGAU ) 1.E-3 ;
  226.  
  227. $FDRO = MODE FDRO 'NAVIER_STOKES' LINE ;
  228. $FGAU = MODE FGAU 'NAVIER_STOKES' LINE ;
  229.  
  230. FDRO = DOMA $FDRO 'MAILLAGE' ;
  231. FGAU = DOMA $FGAU 'MAILLAGE' ;
  232.  
  233. **************************************
  234. * INITIALISATION DU CHAMP DE VITESSE *
  235. **************************************
  236.  
  237. alpha = 1. ;
  238. beta = 2. ;
  239. gamma = 1. ;
  240.  
  241. XX = COOR 1 (DOMA $DOMTOT MAILLAGE) ;
  242. YY = COOR 2 (DOMA $DOMTOT MAILLAGE) ;
  243. XX = KCHT $DOMTOT 'SCAL' 'SOMMET' XX ;
  244. YY = KCHT $DOMTOT 'SCAL' 'SOMMET' YY ;
  245. U1 = KOPS XX '*' alpha ;
  246. U2 = KOPS YY '*' beta ;
  247. U3 = gamma ;
  248. U = KOPS ( KOPS U1 '+' U2) '+' U3 ;
  249. CEXACT = KOPS ( KOPS U2 '+' U3 ) '/' U ;
  250. U = NOMC 'UX' U 'NATU' 'DISCRET' ;
  251. VX = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UX' U ;
  252. VY = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UY' 0.0 ;
  253. CHVIT=KCHT $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY') (VX ET VY);
  254.  
  255. **********************************************
  256. * TABLE EQEX CONTENANT L'EQUATION A RESOUDRE *
  257. **********************************************
  258.  
  259. RV = EQEX $DOMTOT 'ITMA' NITER 'ALFA' CFL
  260. 'ZONE' $DOMTOT
  261. 'OPER' CALCUL
  262. 'OPTI' 'CONS' 'SUPG'
  263. 'OPER' TSCAL DIF 'VITESSE' 0.0 'CN' 'INCO' 'CN'
  264. 'OPTI' 'CENTREE'
  265. 'OPER' DFDT 1. 'CN' 'DELTAT' 'INCO' 'CN'
  266. 'CLIM' 'CN' 'TIMP' FGAU 1.0 ;
  267.  
  268. RV.INCO = TABLE 'INCO' ;
  269. RV.INCO.'CN' = KCHT $DOMTOT 'SCAL' 'SOMMET' 0. ;
  270. RV.INCO.'VITESSE'= CHVIT ;
  271. RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' 1. ;
  272. RV.INCO.'IT' = PROG 1 ;
  273. RV.INCO.'ER' = PROG 0. ;
  274. RV.INCO.'NBIT' = 0 ;
  275.  
  276. EXEC RV ;
  277.  
  278. *************************************************************
  279. * ANALYSE DES RESULTATS : *
  280. * ON TESTE SUR LA CONVERGENCE VERS LA SOLUTION STATIONNAIRE *
  281. * SUR LA PRECISION ENTRE DEBITS ENTRANT/SORTANT *
  282. * SUR LA PRECISION SOLUTIONS NUMERIQUE/EXACTE *
  283. *************************************************************
  284.  
  285. GX = KOPS VX '*' RV.INCO.'CN' ;
  286. GY = KOPS VY '*' RV.INCO.'CN' ;
  287. GX = NOMC 'UX' GX 'NATU' 'DISCRET' ;
  288. GY = NOMC 'UY' GY 'NATU' 'DISCRET' ;
  289. G = KCHT $DOMTOT VECT SOMMET (GX ET GY) ;
  290. QENTREE = DBIT G $FGAU ;
  291. QSORTIE = DBIT G $FDRO ;
  292. ERQ = (QENTREE+QSORTIE)/QENTREE ;
  293. ERQ = ABS(ERQ)*100. ;
  294. MESSAGE 'ERREUR RELATIVE ENTRE DEBIT ENTRANT ET SORTANT '
  295. ERQ ;
  296.  
  297. ERR = KOPS CEXACT '-' RV.INCO.'CN' ;
  298. ERR = KOPS ERR '/' CEXACT ;
  299. ERR = KOPS ERR '*' 100. ;
  300. ERR = ABS ERR ;
  301. MESSAGE 'ERREUR RELATIVE ENTRE SOL. NUMERIQUE ET EXACTE'
  302. (MAXI ERR) ;
  303.  
  304. SI ( (MINI RV.INCO.'ER') > TOLCONV ) ;
  305. ERREUR 5 ;
  306. FINSI ;
  307. SI ( ERQ > TOLDEBI ) ;
  308. ERREUR 5 ;
  309. FINSI ;
  310. SI ( (MAXI ERR) > TOLSOLU ) ;
  311. ERREUR 5 ;
  312. FINSI ;
  313.  
  314. ***********************
  315. * TRACE DES RESULTATS *
  316. ***********************
  317.  
  318. SI ( 'EGA' graph 'O') ;
  319.  
  320. VV = VECT RV.INCO.'VITESSE' 0.1 UX UY JAUNE ;
  321. TRACE DOMTOT 'TITR' 'MAILLAGE' ;
  322. TRACE VV DOMTOT CNT 'TITR' 'CHAMP DE VITESSE' ;
  323. TRAC DOMTOT CEXACT CNT 'TITR' 'SOLUTION EXACTE' ;
  324. TRAC DOMTOT (RV.INCO.'CN') CNT 'TITR' 'SOLUTION NUMERIQUE' ;
  325.  
  326. LISO = PROG 0. 2. 4. 6. 8. 10. 12. 14. 16. 20. ;
  327. TRACE ERR DOMTOT (CONT DOMTOT) LISO 'TITR' 'ERREUR RELATIVE' ;
  328.  
  329. EVOL4 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
  330. (RV.INCO.'ER') ;
  331. DESS EVOL4 'XBOR' 0. 2000. 'YBOR' -12.0 0.0
  332. 'TITR' 'HISTOIRE DE CONVERGENCE' ;
  333. FINSI ;
  334.  
  335. FIN ;
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  

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