Télécharger dfdtsour.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : dfdtsour.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *
  5. ******************** cas test dfdtsour.dgibi ************************
  6. *
  7. *
  8. *--------------------------------------------------------------------
  9. * Test élémentaire de l'opérateur DFDT (discrétisation temporelle).
  10. *--------------------------------------------------------------------
  11. * On résoud dc/dt = s avec s densité de source ([c]/s/m3) :
  12. * L'opérateur DFDT discrétise la dérivée en temps;
  13. * L'opérateur FIMP discrétise la densité de source en EFM1;
  14. * L'opérateur ECHI discrétise la densité de source en EF.
  15. * La condition initiale c(x,t=0) vaut 0.1 et s est constant au cours
  16. * du temps, égale à 1 (resp. 0.) sur le demi-domaine gauche (resp.
  17. * droit).
  18. * La solution au cours du temps est c(x,t) = c(x,t=0) + t*s0
  19. * où s0 est égale à 0.1 pour les points situés à la frontière gauche,
  20. * 0.05 pour les points situé sur la séparation entre les deux demi
  21. * domaine et 0. pour les points situés à la frontière droite.
  22. *
  23. * +-----------+------------+--------------------------+
  24. * | Temps | Espace | Décentrement |
  25. * | IMPL EXPL | EFM1 EF VF | CENTREE SUPGDC SUPG TVIS |
  26. * +------+-----------+------------+--------------------------+
  27. * | DFDT | x - | x x x | x sans interet ici |
  28. * +------+-----------+------------+--------------------------+
  29. *
  30. * FIMP : Compatible avec DFDT en EFM1
  31. * ECHI : Compatible avec DFDT en EF et VF pour un champ scalaire
  32. *
  33. * Pour utiliser ECHI on introduit une inconnue auxiliaire nulle t :
  34. * dc/dt + h(t-s) = 0
  35. * h(t-t0) = 0
  36. * avec h=1 et t0=0
  37. * On s'amuse à considérer t au CENTRE ou t au SOMMET.
  38. *
  39. *--------------------------------------------------------------------
  40. * Auteurs : L.ARNAUD et F.DABBENE (TTMF & LESY) 08/97
  41. *--------------------------------------------------------------------
  42. *
  43. GRAPH = 'N' ;
  44. 'OPTI' 'DIME' 2 'ELEM' 'QUA4' 'ECHO' 0 ;
  45. *
  46. *======================
  47. * CREATION DU MAILLAGE
  48. *======================
  49. *
  50. * Points
  51. *
  52. A = 0.D0 0.D0 ;
  53. B = 0.D0 0.1D0 ;
  54. C = 0.1D0 0.1D0 ;
  55. D = 0.1D0 0.D0 ;
  56. *
  57. * Droites
  58. *
  59. NP1 = 5 ;
  60. AB = 'DROI' NP1 A B ;
  61. BC = 'DROI' NP1 B C ;
  62. CD = 'DROI' NP1 C D ;
  63. DA = 'DROI' NP1 D A ;
  64. *
  65. * Maillage et table DOMAINE
  66. *
  67. DOMAI1 = 'DALL' AB BC CD DA ;
  68. MT = CHAN DOMAI1 QUAF ;
  69. $DOMAI1 = 'MODE' MT 'NAVIER_STOKES' LINE ;
  70. *
  71. *========================
  72. * DEFINITION DU PROBLEME
  73. *========================
  74. *
  75. * Initialisation des données temporelles
  76. *
  77. * NITER1 : Nombre de pas de temps
  78. * DELTA_T : Valeur du pas de temps
  79. *
  80. NITER1 = 5 ;
  81. DELTA_T = 1.D-1 ;
  82. TFINAL1 = NITER1 * DELTA_T ;
  83. *
  84. * Initialisation de la source
  85. * (attention au signe et au support suivant l'opérateur)
  86. *
  87. SGAU0 = 1.D0 ;
  88. COR1 = 'COOR' 1 (DOMA $DOMAI1 'CENTRE') ;
  89. MASKM1 = (COR1 'MASQ' 'INFERIEUR' 0.05D0) * (1.D0) * SGAU0 ;
  90. COR2 = 'COOR' 1 (DOMA $DOMAI1 'SOMMET') ;
  91. MASKM2 = (COR2 'MASQ' 'INFERIEUR' 0.05D0) * SGAU0 ;
  92. MASKM3 = (COR1 'MASQ' 'INFERIEUR' 0.05D0) * SGAU0 ;
  93. *
  94. * Création des modèles numériques
  95. *
  96. *--- EFM1
  97. *
  98. RV1 = 'EQEX' $DOMAI1 'ITMA' NITER1
  99. 'OPTI' 'EF' 'IMPL'
  100. 'ZONE' $DOMAI1 'OPER' 'FIMP' 'CO11' 'INCO' 'XI'
  101. 'OPTI' 'EFM1' 'IMPL' 'CENTREE'
  102. 'ZONE' $DOMAI1 'OPER' 'DFDT' 'COEF' 'XI' 'DT' 'UN' 1.e-20 'INCO' 'XI'
  103. ;
  104. RV1.'DT' = DELTA_T ;
  105. RV1.'INCO'.'CO11' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' MASKM1 ;
  106. RV1.'INCO'.'XI' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' 0.1D0 ;
  107. RV1.'INCO'.'UN' = 'KCHT' $DOMAI1 'VECT' 'SOMMET' (0.D0 0.D0) ;
  108. RV1.'INCO'.'COEF' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 1.D0 ;
  109. RV1.'INCO'.'DT' = RV1.'DT' ;
  110. *
  111. *--- EF avec inconnue auxiliaire au SOMMET
  112. *
  113. RV2 = 'EQEX' $DOMAI1 'ITMA' NITER1
  114. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  115. 'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 0.D0 'INCO' 'TS'
  116. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  117. 'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 'SOU1' 'INCO' 'TS' 'XI'
  118. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  119. 'ZONE' $DOMAI1 'OPER' 'DFDT' 'COEF' 'XI' 'DT' 'UN' 1.e-20 'INCO' 'XI'
  120. ;
  121. RV2.'DT' = DELTA_T ;
  122. RV2.'INCO'.'SOU1' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' MASKM2 ;
  123. RV2.'INCO'.'TS' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' 0.D0 ;
  124. RV2.'INCO'.'XI' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' 0.1D0 ;
  125. RV2.'INCO'.'UN' = 'KCHT' $DOMAI1 'VECT' 'SOMMET' (0.D0 0.D0) ;
  126. RV2.'INCO'.'COEF' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 1.D0 ;
  127. RV2.'INCO'.'DT' = RV2.'DT' ;
  128. *
  129. *--- EF avec inconnue auxiliaire au CENTRE
  130. *
  131. RV3 = 'EQEX' $DOMAI1 'ITMA' NITER1
  132. 'OPTI' 'VF' 'IMPL' 'CENTREE'
  133. 'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 0.D0 'INCO' 'TC'
  134. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  135. 'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 'SOU1' 'INCO' 'TC' 'XI'
  136. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  137. 'ZONE' $DOMAI1 'OPER' 'DFDT' 'COEF' 'XI' 'DT' 'UN' 1.e-20 'INCO' 'XI'
  138. ;
  139. RV3.'DT' = DELTA_T ;
  140. RV3.'INCO'.'SOU1' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' MASKM2 ;
  141. RV3.'INCO'.'TC' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 0.D0 ;
  142. RV3.'INCO'.'XI' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' 0.1D0 ;
  143. RV3.'INCO'.'UN' = 'KCHT' $DOMAI1 'VECT' 'SOMMET' (0.D0 0.D0) ;
  144. RV3.'INCO'.'COEF' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 1.D0 ;
  145. RV3.'INCO'.'DT' = RV3.'DT' ;
  146. *
  147. *--- VF avec inconnue auxiliaire au CENTRE
  148. *
  149. RV4 = 'EQEX' $DOMAI1 'ITMA' NITER1
  150. 'OPTI' 'VF' 'IMPL' 'CENTREE'
  151. 'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 0.D0 'INCO' 'TC'
  152. 'OPTI' 'VF' 'IMPL' 'CENTREE'
  153. 'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 'SOU1' 'INCO' 'TC' 'XI'
  154. 'OPTI' 'VF' 'IMPL' 'CENTREE'
  155. 'ZONE' $DOMAI1 'OPER' 'DFDT' 'COEF' 'XI' 'DT' 'UN' 1.e-20 'INCO' 'XI'
  156. ;
  157. RV4.'DT' = DELTA_T ;
  158. RV4.'INCO'.'SOU1' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' MASKM3 ;
  159. RV4.'INCO'.'TC' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 0.D0 ;
  160. RV4.'INCO'.'XI' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 0.1D0 ;
  161. RV4.'INCO'.'UN' = 'KCHT' $DOMAI1 'VECT' 'SOMMET' (0.D0 0.D0) ;
  162. RV4.'INCO'.'COEF' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 1.D0 ;
  163. RV4.'INCO'.'DT' = RV4.'DT' ;
  164. *
  165. *--- VF avec inconnue auxiliaire au SOMMET
  166. *
  167. RV5 = 'EQEX' $DOMAI1 'ITMA' NITER1
  168. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  169. 'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 0.D0 'INCO' 'TS'
  170. 'OPTI' 'VF' 'IMPL' 'CENTREE'
  171. 'ZONE' $DOMAI1 'OPER' 'ECHI' 1.D0 'SOU1' 'INCO' 'TS' 'XI'
  172. 'OPTI' 'VF' 'IMPL' 'CENTREE'
  173. 'ZONE' $DOMAI1 'OPER' 'DFDT' 'COEF' 'XI' 'DT' 'UN' 1.e-20 'INCO' 'XI'
  174. ;
  175. RV5.'DT' = DELTA_T ;
  176. RV5.'INCO'.'SOU1' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' MASKM3 ;
  177. RV5.'INCO'.'TS' = 'KCHT' $DOMAI1 'SCAL' 'SOMMET' 0.D0 ;
  178. RV5.'INCO'.'XI' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 0.1D0 ;
  179. RV5.'INCO'.'UN' = 'KCHT' $DOMAI1 'VECT' 'SOMMET' (0.D0 0.D0) ;
  180. RV5.'INCO'.'COEF' = 'KCHT' $DOMAI1 'SCAL' 'CENTRE' 1.D0 ;
  181. RV5.'INCO'.'DT' = RV5.'DT' ;
  182. *
  183. *
  184. *===========================
  185. * RESOLUTION DU TRANSITOIRE
  186. *===========================
  187. *
  188. EXEC rv1 ;
  189. EXEC rv2 ;
  190. EXEC rv3 ;
  191. EXEC rv4 ;
  192. EXEC rv5 ;
  193. *
  194. *========================
  195. * TEST DE NON REGRESSION
  196. *========================
  197. *
  198. DSOL1 = 'ELNO' $DOMAI1 ('KCHT' $DOMAI1 'SCAL' 'CENTRE' (1.d0*MASKM1));
  199. DSOL2 = MASKM2 ;
  200. DSOL3 = MASKM3 ;
  201. SOL0 = 'MANU' 'CHPO' (DOMA $DOMAI1 'MAILLAGE') 1 'SCAL' 0.1D0 ;
  202. SOL00 = 'MANU' 'CHPO' (DOMA $DOMAI1 'CENTRE') 1 'SCAL' 0.1D0 ;
  203. SOL1 = TFINAL1 * DSOL1 + SOL0 ;
  204. SOL2 = TFINAL1 * DSOL2 + SOL0 ;
  205. SOL3 = TFINAL1 * DSOL3 + SOL00;
  206. ERR1 = 'ABS' (RV1.'INCO'.'XI' - SOL1 / SOL1) ;
  207. ERR2 = 'ABS' (RV2.'INCO'.'XI' - SOL2 / SOL2) ;
  208. ERR3 = 'ABS' (RV3.'INCO'.'XI' - SOL2 / SOL2) ;
  209. ERR4 = 'ABS' (RV4.'INCO'.'XI' - SOL3 / SOL3) ;
  210. ERR5 = 'ABS' (RV5.'INCO'.'XI' - SOL3 / SOL3) ;
  211. OK1 = 'MAXI' (ERR1+ERR2+ERR3+ERR4+ERR5) ;
  212. TOL1 = 1.D-13 ;
  213. 'SAUT' 5 'LIGNE' ;
  214. 'MESS' 'Cumul Erreur :' OK1 'Tolerance :' TOL1 ;
  215. 'SI' ( OK1 > TOL1) ;
  216. 'ERRE' 5 ;
  217. 'SINO' ;
  218. 'ERRE' 0 ;
  219. 'FINS' ;
  220. *
  221. *=================
  222. * Post-traitement
  223. *=================
  224. *
  225. 'SI' ('NEG' GRAPH 'N') ;
  226. MO1 = 'MODE' (DOMA $DOMAI1 'MAILLAGE') 'THERMIQUE' ;
  227. $$DOMAI1 = DOMA $DOMAI1 'TABLE' ;
  228. DS1 = 'KCHA' $$DOMAI1 'CHAM' SOL3 ;
  229. DS2 = 'KCHA' $$DOMAI1 'CHAM' (RV4.'INCO'.'XI') ;
  230. DS3 = 'KCHA' $$DOMAI1 'CHAM' (RV5.'INCO'.'XI') ;
  231. DS4 = 'KCHA' $$DOMAI1 'CHAM' ERR4 ;
  232. DS5 = 'KCHA' $$DOMAI1 'CHAM' ERR5 ;
  233. *
  234. 'TITR' 'Solution exacte EFM1' ;
  235. 'TRAC' (DOMA $DOMAI1 'MAILLAGE') SOL1 ;
  236. 'TITR' 'Solution K2000 EFM1' ;
  237. 'TRAC' (DOMA $DOMAI1 'MAILLAGE') RV1.'INCO'.'XI' ;
  238. 'TITR' 'Erreur Relative EFM1' ;
  239. 'TRAC' (DOMA $DOMAI1 'MAILLAGE') ERR1 ;
  240. *
  241. 'TITR' 'Solution exacte EF' ;
  242. 'TRAC' (DOMA $DOMAI1 'MAILLAGE') SOL2 ;
  243. 'TITR' 'Solution K2000 EF, ECHI au SOMMET' ;
  244. 'TRAC' (DOMA $DOMAI1 'MAILLAGE') RV2.'INCO'.'XI' ;
  245. 'TITR' 'Erreur Relative EF, ECHI au SOMMET' ;
  246. 'TRAC' (DOMA $DOMAI1 'MAILLAGE') ERR2 ;
  247. 'TITR' 'Solution K2000 EF, ECHI au CENTRE' ;
  248. 'TRAC' (DOMA $DOMAI1 'MAILLAGE') RV3.'INCO'.'XI' ;
  249. 'TITR' 'Erreur Relative EF, ECHI au CENTRE' ;
  250. 'TRAC' (DOMA $DOMAI1 'MAILLAGE') ERR3 ;
  251. *
  252. 'TITR' 'Solution exacte VF' ;
  253. 'TRAC' MO1 DS1 ;
  254. 'TITR' 'Solution K2000 VF, ECHI AU SOMMET' ;
  255. 'TRAC' MO1 DS3 ;
  256. 'TITR' 'Erreur Relative VF, ECHI AU SOMMET' ;
  257. 'TRAC' MO1 DS5 ;
  258. 'TITR' 'Solution K2000 VF, ECHI AU CENTRE' ;
  259. 'TRAC' MO1 DS2 ;
  260. 'TITR' 'Erreur Relative VF, ECHI AU CENTRE' ;
  261. 'TRAC' MO1 DS4 ;
  262. 'FINS' ;
  263. 'FIN' ;
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  

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