Télécharger convnonlin1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : convnonlin1.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. COMPLET = FAUX ;
  6. GRAPH = FAUX ;
  7. NX = 10 ;
  8. NY = 10 ;
  9. CFL = 0.7 ;
  10. 'SI' ( COMPLET ) ;
  11. TFIN = 10. ;
  12. 'SINON' ;
  13. TFIN = 1. ;
  14. 'FINSI' ;
  15.  
  16. ***********************************************************
  17. * EQUATION DE CONVECTION NON-LINEAIRE Ut + div (F(U)) = 0 *
  18. * AVEC F(U) = U*U/2 1_x + ln U 1_y U > 0 *
  19. * RESOLUE SOUS FORME NON-CONSERVATIVE *
  20. * dU/dt + U dU/dx + 1/U dU/dy = 0 *
  21. * AVEC OPTION SUPGDC (par défaut) *
  22. * SOLUTION ANALYTIQUE Uex(x,y,t) = (x-t)/(y-t) *
  23. * Probleme hyperbolique avec conditions aux limites *
  24. * variant dans le temps *
  25. * H. PAILLERE AVRIL 1997 *
  26. ***********************************************************
  27.  
  28. *******************************************************************
  29. * PROCEDURE POUR CALCULER CHAMP DE VITESSE, METTRE A JOUR LES C.L *
  30. * TESTER LA CONVERGENCE VERS L'ETAT STATIONNAIRE ET L'ERREUR *
  31. * ENTRE SOLUTION NUMERIQUE ET SOLUTION ANALYTIQUE *
  32. *******************************************************************
  33.  
  34. 'DEBPROC' CALCUL ;
  35. 'ARGU' RVX*'TABLE' ;
  36.  
  37. RV = RVX.'EQEX' ;
  38. CN = RV.INCO.'CN' ;
  39.  
  40. * calcul du champ de vitesse
  41.  
  42. VX1 = CN ;
  43. VX1 = 'NOMC' 'UX' VX1 ;
  44. VY1 = 'KOPS' 1. '/' CN ;
  45. VY1 = 'NOMC' 'UY' VY1 ;
  46. VV='KCHT' $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY')
  47. (VX1 'ET' VY1) ;
  48. RV.INCO.'VITESSE' = VV ;
  49.  
  50. * mise a jour des conditions aux limites
  51.  
  52. CL_CN = 'EXCO' 'CN' RV.'CLIM' 'CN' ;
  53. UEXAC = 'KOPS' ('KOPS' XX '-' RV.PASDETPS.'TPS') '/'
  54. ('KOPS' YY '-' RV.PASDETPS.'TPS') ;
  55. CL_NOUV = 'KCHT' $CL 'SCAL' 'SOMMET' UEXAC ;
  56. CL_NOUV = 'NOMC' 'CN' CL_NOUV 'NATU' 'DISCRET' ;
  57.  
  58. RV.'CLIM' = 0.D0 * CL_CN + CL_NOUV ;
  59.  
  60. * calcul de l'erreur de convergence vers l'etat stationnaire
  61. * et de l'erreur entre solution numerique et solution analytique
  62.  
  63. DD = RV.PASDETPS.'NUPASDT' ;
  64. NN = DD/5 ;
  65. LO = (DD-(5*NN)) 'EGA' 0 ;
  66. 'SI' ( LO ) ;
  67.  
  68. ERR = 'KOPS' (RV.INCO.'CN') '-' (RV.INCO.'CNM1') ;
  69. ELI = 'MAXI' ERR 'ABS' ;
  70. ELI = ('LOG' (ELI + 1.0E-20))/(LOG 10.) ;
  71. 'MESSAGE' 'TEMPS = ' RV.PASDETPS.'TPS'
  72. 'ITER ' RV.PASDETPS.'NUPASDT' ' ERREUR LINF (dUdt) ' ELI ;
  73. IT = 'PROG' RV.PASDETPS.'NUPASDT' ;
  74. ER = 'PROG' ELI ;
  75. RV.INCO.'IT' = (RV.INCO.'IT') 'ET' IT ;
  76. RV.INCO.'ERCONV' = (RV.INCO.'ERCONV') 'ET' ER ;
  77.  
  78. UEXAC = 'KCHT' $DOMTOT 'SCAL' 'SOMMET' UEXAC ;
  79. UEXAC = 'NOMC' 'CN' UEXAC 'NATU' 'DISCRET' ;
  80. ERRP = 'KOPS' UEXAC '-' RV.INCO.'CN' ;
  81. ERRP = 'KOPS' ERRP '*' ERRP ;
  82. ERR2 = 0. ;
  83. 'REPETER' BLOC1 (NBNO DOMTOT) ;
  84. P1 = (DOMA $DOMTOT SOMMET) 'POIN' &BLOC1 ;
  85. ERR1 = 'EXTR' ERRP 'SCAL' P1 ;
  86. ERR2 = ERR2 + ERR1 ;
  87. 'FIN' BLOC1 ;
  88. ERR2 = ERR2/(NBNO DOMTOT) ;
  89. ERR2 = ERR2 ** 0.5 ;
  90. ER = 'PROG' ERR2 ;
  91. RV.INCO.'ERSOLU' = (RV.INCO.'ERSOLU') 'ET' ER ;
  92. 'MESSAGE' 'ERREUR |Uex(x,y,t) - Unum(x,y,t)| EN NORME L2 = ' ERR2 ;
  93.  
  94. 'FINSI' ;
  95.  
  96. RV.INCO.'CNM1' = 'KCHT' $DOMTOT 'SCAL' 'SOMMET' (RV.INCO.'CN') ;
  97.  
  98. as2 ama1 = 'KOPS' 'MATRIK' ;
  99. FINPROC as2 ama1 ;
  100.  
  101.  
  102. 'OPTI' 'DIME' 2 ;
  103. 'OPTI' 'ELEM' 'QUA4' ;
  104.  
  105. *************
  106. * DIFFUSION *
  107. *************
  108. DIF = 1.0E-10 ;
  109.  
  110. ************
  111. * MAILLAGE *
  112. ************
  113.  
  114. A1 = -2.0 -2.0 ;
  115. A2 = -1.0 -2.0 ;
  116. A3 = -1.0 -1.0 ;
  117. A4 = -2.0 -1.0 ;
  118.  
  119. FBAS = A1 'DROI' NX A2 ;
  120. FDRO = A2 'DROI' NY A3 ;
  121. FHAU = A3 'DROI' NX A4 ;
  122. FGAU = A4 'DROI' NY A1 ;
  123.  
  124. DOMTOT = 'DALL' FBAS FDRO FHAU FGAU 'PLAN' ;
  125.  
  126. ************************************
  127. * CREATION DU MODELE NAVIER_STOKES *
  128. ************************************
  129.  
  130. GEOCL = FBAS 'ET' FGAU ;
  131. 'ELIM' GEOCL 1.E-3 ;
  132.  
  133. MDOMTOT = CHAN DOMTOT QUAF ;
  134. $DOMTOT = MODE MDOMTOT 'NAVIER_STOKES' LINE ; DOMA $DOMTOT 'IMPR' ;
  135.  
  136. MGEOCL = CHAN GEOCL QUAF ;
  137. ELIM MDOMTOT MGEOCL 1.E-3 ;
  138. $CL = MODE MGEOCL 'NAVIER_STOKES' LINE ;
  139.  
  140. *********************
  141. * SOLUTION INITIALE *
  142. *********************
  143.  
  144. XX YY = 'COOR' (DOMA $DOMTOT MAILLAGE) ;
  145. SOLINI = 'KOPS' XX '/' YY ;
  146. SOLCL = 'KCHT' $CL 'SCAL' 'SOMMET' SOLINI ;
  147.  
  148. ***********************
  149. * TABLE DE RESOLUTION *
  150. ***********************
  151.  
  152. RV = 'EQEX' $DOMTOT 'ITMA' 1000 'ALFA' CFL 'TFINAL' (TFIN/2.)
  153. 'ZONE' $DOMTOT
  154. 'OPER' CALCUL
  155. 'OPTI' 'SUPGDC'
  156. 'OPER' TSCAL DIF 'VITESSE' 0.0 'INCO' 'CN'
  157. 'OPTI' 'CENTREE'
  158. 'OPER' DFDT 1. 'CN' 'DELTAT' 'INCO' 'CN'
  159. 'CLIM' 'CN' 'TIMP' GEOCL SOLCL ;
  160.  
  161. RV.INCO = 'TABLE' 'INCO' ;
  162. RV.INCO.'CN' = 'KCHT' $DOMTOT 'SCAL' 'SOMMET' SOLINI ;
  163. RV.INCO.'VITESSE'= CHVIT ;
  164.  
  165. RV.INCO.'CNM1' = 'KCHT' $DOMTOT 'SCAL' 'SOMMET' SOLINI ;
  166. RV.INCO.'IT' = 'PROG' 1 ;
  167. RV.INCO.'ERCONV' = 'PROG' 0. ;
  168. RV.INCO.'ERSOLU' = 'PROG' 0. ;
  169.  
  170. * ON EXECTUTE JUSQU'A TFIN/2. *
  171.  
  172. EXEC RV ;
  173.  
  174. * ON TESTE L'OPTION SUPG (IDCEN=3) DE TFIN/2. A TFIN *
  175.  
  176. RV.'2TSCAL'.'KOPT'.'IDCEN' = 3 ;
  177. RV.'TFINAL' = TFIN ;
  178. EXEC RV ;
  179.  
  180. 'SI' ( GRAPH ) ;
  181. 'OPTI' 'ISOV' 'SULI' ;
  182. 'TRACE' RV.INCO.'CN' DOMTOT ('CONT' DOMTOT) 20 ;
  183. EVOL4 = 'EVOL' 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
  184. (RV.INCO.'ERCONV') ;
  185. 'DESS' EVOL4 'XBOR' 0. 2000. 'YBOR' -20.0 0.0 ;
  186. 'FINSI' ;
  187.  
  188. 'SI' ( 'MINI' ( RV.INCO.'ERCONV' ) > -2.0 ) ;
  189. 'ERREUR' 5 ;
  190. 'FINSI' ;
  191.  
  192. 'SI' ( 'MAXI' ( RV.INCO.'ERSOLU' ) > 0.09 ) ;
  193. 'ERREUR' 5 ;
  194. 'FINSI' ;
  195.  
  196. 'FIN' ;
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  

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