Télécharger mdiavf.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : mdiavf.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *
  5. ********************** cas test mdiavf.dgibi ************************
  6. *
  7. *
  8. *--------------------------------------------------------------------
  9. * Test élémentaire des opérateurs DFDT et MDIA en Volumes Finis
  10. * et en formulation EFM1.
  11. *--------------------------------------------------------------------
  12. * On résoud dc/dt + ac = 0 avec a coefficient de décroissance ([c]/s)
  13. * L'opérateur DFDT discrétise la dérivée en temps;
  14. * L'opérateur MDIA discrétise la décroissance.
  15. * La condition initiale c(x,y,t=0) vaut x+y et a est constant au cours
  16. * du temps, égale à x.
  17. * La solution est c(x,y,t) = c0 exp(-at) = (x+y) exp (-xt)
  18. * La solution calculée est entachée d'une erreur de discrétisation
  19. * temporelle. Cette erreur est de l'ordre de a*a*tfinal*deltat.
  20. *
  21. * +-----------+------------+--------------------------+
  22. * | Temps | Espace | Décentrement |
  23. * | IMPL EXPL | EFM1 EF VF | CENTREE SUPGDC SUPG TVIS |
  24. * +------+-----------+------------+--------------------------+
  25. * | DFDT | x - | x - x | x sans interet ici |
  26. * | MDIA | x 0 | x 0 x | x 0 0 0 |
  27. * +------+-----------+------------+--------------------------+
  28. *
  29. * 0 = non disponible; - = non testé ici; x = testé ici
  30. *
  31. *--------------------------------------------------------------------
  32. * Auteur : F.DABBENE (TTMF) 12/97
  33. *--------------------------------------------------------------------
  34. *
  35. GRAPH = 'N' ;
  36. 'OPTI' 'DIME' 2 'ELEM' 'QUA4' 'ECHO' 0 'TRAC' 'PS' ;
  37. *
  38. *======================
  39. * CREATION DU MAILLAGE
  40. *======================
  41. *
  42. * Points
  43. *
  44. A = 0.1D0 0.1D0 ;
  45. B = 0.1D0 1.0D0 ;
  46. C = 1.0D0 1.0D0 ;
  47. D = 1.0D0 0.1D0 ;
  48. *
  49. * Droites
  50. *
  51. NP1 = 5 ;
  52. AB = 'DROI' NP1 A B ;
  53. BC = 'DROI' NP1 B C ;
  54. CD = 'DROI' NP1 C D ;
  55. DA = 'DROI' NP1 D A ;
  56. *
  57. * Maillage et table DOMAINE
  58. *
  59. DOMAI1 = 'DALL' AB BC CD DA ;
  60. MDOMAI1 = CHAN DOMAI1 QUAF ;
  61. $DOMAI1 = 'MODE' MDOMAI1 'NAVIER_STOKES' LINE ;
  62. *
  63. *========================
  64. * DEFINITION DU PROBLEME
  65. *========================
  66. *
  67. * Initialisation des données temporelles
  68. *
  69. * NITER1 : Nombre de pas de temps
  70. * DELTA_T : Valeur du pas de temps
  71. *
  72. NITER1 = 10 ;
  73. DELTA_T = 1.D-1 ;
  74. TFINAL1 = NITER1 * DELTA_T ;
  75. *
  76. * Récupération des coordonnées pour initialisation
  77. *
  78. XC1 YC1 = 'COOR' (DOMA $DOMAI1 'CENTRE') ;
  79. XS1 YS1 = 'COOR' (DOMA $DOMAI1 'SOMMET') ;
  80. *
  81. * Création des modèles numériques
  82. *
  83. *--- EFM1
  84. *
  85. RV1 = 'EQEX' $DOMAI1 'ITMA' NITER1
  86. 'OPTI' 'EFM1' 'IMPL' 'CENTREE'
  87. 'ZONE' $DOMAI1 'OPER' 'DFDT' 1.D0 'TS' 'DT' 'INCO' 'TS'
  88. 'OPTI' 'EFM1' 'IMPL'
  89. 'ZONE' $DOMAI1 'OPER' 'MDIA' XS1 'INCO' 'TS'
  90. ;
  91. RV1. 'DT' = DELTA_T ;
  92. RV1. 'INCO' . 'TS' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' (XS1 + YS1) ;
  93. RV1. 'INCO' . 'DT' = RV1 . 'DT' ;
  94. *
  95. *--- VF
  96. *
  97. $DOMAVF= DOMA $DOMAI1 'TABLE' ;
  98. RV2 = 'EQEX' $DOMAVF 'ITMA' NITER1
  99. 'OPTI' 'VF' 'IMPL' 'CENTREE'
  100. 'ZONE' $DOMAVF 'OPER' 'DFDT' 1.D0 'TC' 'DT' 'INCO' 'TC'
  101. 'OPTI' 'VF' 'IMPL' 'CENTREE'
  102. 'ZONE' $DOMAVF 'OPER' 'MDIA' XC1 'INCO' 'TC'
  103. ;
  104. RV2. 'DT' = DELTA_T ;
  105. RV2. 'INCO' . 'TC' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' (XC1+YC1) ;
  106. RV2. 'INCO' . 'DT' = RV2 . 'DT' ;
  107. *
  108. *
  109. *===========================
  110. * RESOLUTION DU TRANSITOIRE
  111. *===========================
  112. *
  113. EXEC rv1 ;
  114. EXEC rv2 ;
  115. *
  116. *=================
  117. * Post-traitement
  118. *=================
  119. *
  120. SOL1 = 'EXP' (-1.D0 * XS1 * TFINAL1) * (XS1 + YS1) ;
  121. SOL2 = 'EXP' (-1.D0 * XC1 * TFINAL1) * (XC1 + YC1) ;
  122. ERR1 = 'ABS' (RV1.'INCO'.'TS' - SOL1) ;
  123. ERR2 = 'ABS' (RV2.'INCO'.'TC' - SOL2) ;
  124. 'SI' ('NEG' GRAPH 'N') ;
  125. MO1 = 'MODE' DOMAI1 'THERMIQUE' ;
  126. DS1 = 'KCHA' $DOMAVF 'CHAM' SOL2 ;
  127. DS2 = 'KCHA' $DOMAVF 'CHAM' (RV2.'INCO'.'TC') ;
  128. DS3 = 'KCHA' $DOMAVF 'CHAM' ERR2 ;
  129. *
  130. 'TRAC' DOMAI1 SOL1 'TITR' 'Solution Exacte EFM1' ;
  131. 'TRAC' DOMAI1 RV1.'INCO'.'TS' 'TITR' 'Castem EFM1' ;
  132. 'TRAC' DOMAI1 ERR1 'TITR' 'Erreur Absolue EFM1' ;
  133. *
  134. 'TRAC' MO1 DS1 'TITR' 'Solution Exacte VF' ;
  135. 'TRAC' MO1 DS2 'TITR' 'Castem VF' ;
  136. 'TRAC' MO1 DS3 'TITR' 'Erreur Absolue VF' ;
  137. 'FINS' ;
  138. *
  139. *========================
  140. * TEST DE NON REGRESSION
  141. *========================
  142. *
  143. OK1 = 'MAXI' (ERR1+ERR2) ;
  144. TOL1 = TFINAL1 * DELTA_T / 2. ;
  145. 'SAUT' 5 'LIGNE' ;
  146. 'MESS' 'Cumul Erreur :' OK1 'Tolerance :' TOL1 ;
  147. 'SI' ( OK1 > TOL1) ;
  148. 'ERRE' 5 ;
  149. 'SINO' ;
  150. 'ERRE' 0 ;
  151. 'FINS' ;
  152. *
  153. 'FIN' ;
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  

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