Télécharger lignecourant.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : lignecourant.dgibi
  2.  
  3. GRAPH = faux ;
  4.  
  5. ***********************************************************************
  6. * CALCUL DES LIGNES DE COURANT : ON TESTE LES OPERATEURS LAPN ET FIMP *
  7. * ON VERIFIE QUE L'ERREUR ENTRE PSI_NUM ET PSI_EXACT EVOLUE DE FACON *
  8. * QUADRATIQUE *
  9. * H. PAILLERE/TTMF/JUILLET 1997 *
  10. * ON CONSIDERE LE DOMAINE [0,1]x[0,1] ET LA FONCTION DE COURANT *
  11. * PSI_EXACT = x(x-1)y^2(y-1) *
  12. * ASSOCIEE AU CHAMP DE VITESSE (u,v) DONNE PAR : *
  13. * u_ex = dPSI/dy et v_ex = -dPSI/dx *
  14. * ON RESOUD L'EQUATION DE POISSON : *
  15. * d2PSI/dx2 + d2PSI/dy2 = du_ex/dy - dv_ex/dx *
  16. * AVEC COMME C.L PSI=0 SUR LES BORDS DU DOMAINE *
  17. ***********************************************************************
  18.  
  19. OPTI ELEM QUA4 ;
  20. OPTI ISOV SULI ;
  21.  
  22. REPETER BLOC2 6 ;
  23.  
  24. n = (&BLOC2) ;
  25. NX = 5*n ;
  26. NY = 5*n ;
  27.  
  28. A1 = 0.0 0.0 ;
  29. A2 = 1.0 0.0 ;
  30. A3 = 1.0 1.0 ;
  31. A4 = 0.0 1.0 ;
  32.  
  33. DOMTOT = 'DALLER' (A1 'DROI' NX A2) (A2 'DROI' NY A3)
  34. (A3 'DROI' NX A4) (A4 'DROI' NX A1) 'PLAN' ;
  35.  
  36. MDOMTOT = CHAN DOMTOT QUAF ;
  37. $DOMTOT = 'MODE' MDOMTOT 'NAVIER_STOKES' LINE;
  38. DOMA $DOMTOT 'IMPR' ;
  39. CNT = CONT DOMTOT ;
  40.  
  41. XX YY = 'COOR' DOMTOT ;
  42.  
  43. ******************************************************************
  44. * EVALUATION DE LA FONCTION DE COURANT EXACTE + CHAMP DE VITESSE *
  45. ******************************************************************
  46.  
  47. PSIEX = KOPS XX '*' ((XX-1.0)) ;
  48. PSIEX = KOPS PSIEX '*' (KOPS YY '*' YY) ;
  49. PSIEX = KOPS PSIEX '*' ((YY-1.0)) ;
  50. PSIEX = KCHT $DOMTOT SCAL SOMMET PSIEX ;
  51.  
  52. SI ( GRAPH ) ;
  53. TRACE PSIEX DOMTOT 14 'TITR'
  54. 'FONCTION DE COURANT EXACTE' ;
  55. FINSI ;
  56.  
  57. U = KOPS XX '*' ((XX-1.0)) ;
  58. U = KOPS U '*' YY ;
  59. G = KOPS (YY*3.0) '-' 2.0 ;
  60. U = KOPS U '*' G ;
  61. G = KOPS (XX*2.0) '-' 1.0 ;
  62. V = KOPS G '*' ((YY-1.0)) ;
  63. V = KOPS V '*' YY ;
  64. V = KOPS V '*' YY ;
  65. V = KOPS V '*' (-1.0) ;
  66.  
  67. U = NOMC 'UX' U 'NATU' 'DISCRET' ;
  68. V = NOMC 'UY' V 'NATU' 'DISCRET' ;
  69. UU = KCHT $DOMTOT VECT SOMMET (U ET V) ;
  70. UNCH = VECT UU 1.0 UX UY VERT ;
  71.  
  72. SI ( GRAPH ) ;
  73. TRACE UNCH DOMTOT 'TITR' 'CHAMP DE VITESSE' ;
  74. FINSI ;
  75.  
  76. ******************************************************************
  77. * ON CALCULE LA FONCTION DE COURANT NUMERIQUEMENT A PARTIR DE LA *
  78. * DONNEE DU CHAMP DE VITESSE *
  79. ******************************************************************
  80.  
  81. SW = KOPS UU 'ROT' $DOMTOT ;
  82.  
  83. RK = EQEX $DOMTOT 'OPTI' 'EF' 'IMPL'
  84. ZONE $DOMTOT OPER LAPN 1.0 INCO 'PSI'
  85. ZONE $DOMTOT OPER FIMP sw INCO 'PSI'
  86. 'CLIM' 'PSI' 'TIMP' CNT 0. ;
  87.  
  88. RK.'INCO' = TABLE INCO ;
  89. RK.'INCO'.'PSI' = KCHT $DOMTOT SCAL SOMMET 0. ;
  90. EXEC RK ;
  91.  
  92. PSI = RK.'INCO'.'PSI' ;
  93.  
  94. SI ( GRAPH ) ;
  95. TRACE PSI DOMTOT CNT 14 'TITR'
  96. 'FONCTION DE COURANT CALCULEE' ;
  97. FINSI ;
  98.  
  99. ************************************************************
  100. * CALCUL DE L'ERREUR ENTRE FONCTION DE COURANT CALCULEE ET *
  101. * FONCTION DE COURANT ANALYTIQUE *
  102. ************************************************************
  103.  
  104. ER0 = KOPS PSI '-' PSIEX ;
  105. ER2 = KOPS ER0 '*' ER0 ;
  106. ERR = 0. ;
  107. NPTD=NBNO DOMTOT ;
  108. REPETER BLOC1 NPTD ;
  109. P1 = (DOMA $DOMTOT SOMMET) POIN &BLOC1 ;
  110. ERR = ERR + ('EXTR' ER2 'SCAL' P1) ;
  111. FIN BLOC1 ;
  112. ERR = ERR/NPTD ;
  113. ERR = ERR ** 0.5 ;
  114.  
  115. MESSAGE '======================================================' ;
  116. MESSAGE 'ERREUR EN NORME L2 = ' ERR ;
  117. MESSAGE '======================================================' ;
  118.  
  119. SI ( (n 'NEG' 1) ) ;
  120. LISTE n ;
  121. PERR = PROG (LOG ERR) ;
  122. ERRPSI = ERRPSI ET PERR ;
  123. PXXX = PROG (LOG (1./NX)) ;
  124. ERRXXX = ERRXXX ET PXXX ;
  125. SINON ;
  126. ERRPSI = PROG (LOG ERR) ;
  127. ERRXXX = PROG (LOG (1./NX)) ;
  128. FINSI ;
  129.  
  130. FIN BLOC2 ;
  131.  
  132. SI ( GRAPH ) ;
  133. EVOL1 = EVOL 'MANU' 'LOG(DX)' ERRXXX 'LOG(ERR(PSI))' ERRPSI ;
  134. TAB1 = TABLE ;
  135. TAB1.1 = 'MARQ CROI ' ;
  136. TAB1.'TITRE' = TABLE ;
  137. TAB1.'TITRE'. 1 = MOT 'MAILLAGE QUA4' ;
  138. DESS EVOL1 LEGE TAB1 'XBOR' -4. 0. 'YBOR' -11.0 -7.0 'GRIL' ;
  139. FINSI ;
  140.  
  141. SI ( (MINI ERRPSI) > -10.9 ) ;
  142. ERREUR 5 ;
  143. FINSI ;
  144.  
  145. FIN ;
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  

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