Télécharger exac.procedur

Retour à la liste

Numérotation des lignes :

  1. * EXAC PROCEDUR CHAT 05/07/27 21:15:07 5137
  2. * Procedure EXAC Ancienne procedure EXEC
  3. *
  4. * Objet :
  5. *
  6. * Algorithme semi implicite pour les equations N.S. incompressible
  7. * Syntaxe : EXAC RV ;
  8. * RV : Table EQEX contenant une entree PRESSION (table EQPR)
  9. *
  10. ***********************************************************************
  11. * VERSION : ????
  12. * HISTORIQUE : 20/12/99: gounand
  13. * Le second membre et les conditions aux limites sont désormais tt le
  14. * temps des chpoints (et pas des MOT lorsqu'ils sont vides).
  15. * HISTORIQUE : 07/01/99: gounand
  16. * Rajout de la gestion de la matrice servant à l'assemblage
  17. * (rv . 'METHINV' . 'MATASS')
  18. *
  19. * HISTORIQUE :
  20. * HISTORIQUE :
  21. ************************************************************************
  22. *
  23. *
  24. 'DEBPROC' EXAC ;
  25. 'ARGUMENT' rv*'TABLE ' ;
  26.  
  27. tps=0.D0 ;
  28. 'SI' ('EGA' ('VALEUR' 'DIME') 2) ;
  29. vnul=0.D0 0.D0 ;
  30. 'SINON' ;
  31. vnul=0.D0 0.D0 0.D0 ;
  32. 'FINSI' ;
  33. 'SI' ('NON' ('EXISTE' rv 'OMEGA')) ;
  34. omeg=1.D0 ;
  35. 'SINON' ;
  36. omeg=rv . 'OMEGA' ;
  37. 'FINSI' ;
  38.  
  39. testpr ='EXISTE' rv 'PRESSION' ;
  40. testran=testpr 'ET' ('EXISTE' rv 'CO') ;
  41.  
  42. 'SI' ('NON' ('EXISTE' rv 'HIST')) ;
  43. rv . 'HIST' = 'TABLE' ;
  44. 'FINSI' ;
  45. 'SI' ('NON' ('EXISTE' rv 'KIZG')) ;
  46. rv . 'KIZG' = 'TABLE' 'KIZG' ;
  47. 'FINSI' ;
  48. 'SI' ('NON' ('EXISTE' rv 'KIZG1')) ;
  49. rv . 'KIZG1' = 'TABLE' 'KIZG1' ;
  50. 'FINSI' ;
  51. 'SI' ('NON' ('EXISTE' rv 'KIZD')) ;
  52. 'KDIA' rv ;
  53. 'FINSI' ;
  54.  
  55. 'SI' testpr ;
  56. rvp =rv . 'PRESSION' ;
  57. nomvi=rv . 'NOMVI' ;
  58. 'SI' ('EXISTE' rv 'CLIM') ;
  59. rvp . 'CLIM' = rv . 'CLIM' ;
  60. rv . 'KIZD' . nomvi = 'KOPS' (rv . 'KIZD'. nomvi)
  61. 'CLIM' (rv . 'CLIM') 1;
  62. 'FINSI' ;
  63. 'SI' ('NON' ('EXISTE' rvp 'DIAGV')) ;
  64. rvp . 'DIAGV' = rv . 'KIZD' . nomvi ;
  65. 'FINSI' ;
  66. rvp . 'MATC' = 'KMAB' rvp ;
  67. rvp . 'PRESSION' = 'KCHT' (rvp . 'DOMAINE') 'SCAL'
  68. 'CENTRE' 0.D0 ;
  69. rvp . 'GRADP' = 'KCHT' (rvp . 'DOMAINE') 'VECT'
  70. 'SOMMET' vnul ;
  71. 'FINSI' ;
  72.  
  73. *mess 'EXAC ITMA=' (rv . 'ITMA') 'NITER=' (rv . 'NITER') ;
  74. ITMA = (rv . 'ITMA') ;
  75. 'SI' ('EGA' ITMA 0) ;
  76. ITMA = 1 ;
  77. 'FINSI' ;
  78. * Gestion de la matrice de préconditionnement
  79. *
  80. * calass : doit-on recalculer l'assemblage
  81. calass = VRAI ;
  82. 'SI'(exist rv 'calass') ;
  83. calass=rv.'calass' ;
  84. matass=rv.'matass';
  85. 'FINSI' ;
  86.  
  87. 'REPETER' bloc1 ITMA ;
  88. 'REPETER' bloci (rv . 'NITER') ;
  89. ma1 = 'KOPS' 'MATRAK' ;
  90. kma1 = 0 ;
  91. 'REPETER' bloc2 ('DIME' (rv . 'LISTOPER')) ;
  92. nomper = 'EXTRAIRE' &bloc2 (rv . 'LISTOPER') ;
  93. notable= 'MOT' ('TEXTE' ('CHAINE' &bloc2 nomper)) ;
  94. * mess ' EXAC OPERATEUR ' nomper ;
  95. ('TEXTE' nomper) (rv . notable) ;
  96. 'SI' ('EXISTE' (rv . notable) 'MATELM' ) ;
  97. 'SI' ('EGA' ('TYPE' (rv . notable . 'MATELM'))
  98. 'MATRIK ') ;
  99. kma1= 1 ;
  100. ma1 = ma1 'ET' (rv . notable . 'MATELM') ;
  101. 'FINSI' ;
  102. 'FINSI' ;
  103. 'FIN' bloc2 ;
  104. dt = (rv . 'PASDETPS' . 'DELTAT') '*' (rv . 'ALFA') ;
  105. tps= tps '+' dt ;
  106.  
  107. 'SI' testpr ;
  108. rvp . 'DELTAT' = dt ;
  109. f=rv . 'KIZG' . nomvi ;
  110. u=rv . 'INCO' . nomvi ;
  111. 'SI' ('EXISTE' (RV . 'KIZG1') nomvi) ;
  112. f1 = 'KOPS' f
  113. '+' ('KOPS' (rv . 'KIZG1' . nomvi) '*' u) ;
  114. 'SINON' ;
  115. f1=f ;
  116. 'FINSI' ;
  117. dm1f='KOPS' ('KOPS' f1 '/' (rv . 'KIZD' . nomvi))
  118. '-' ('KOPS' U '/' dt) ;
  119.  
  120. rvp . 'PRESSION' = 'KMF' (rvp . 'MATC') dm1f ;
  121. rvp . 'FORCE' = 'KCHT' (rvp . 'DOMAINE') 'SCAL' 'CENTRE'
  122. 0.D0 ;
  123. 'KRES' rvp (rvp . 'PRESSION')
  124. 'BETA' (rvp . 'KBETA') (rvp . 'BETA')
  125. 'PIMP' (rvp . 'KPIMP') (rvp . 'PIMP') ;
  126. rvp . 'GRADP' = 'KMTP' 0 (rvp . 'MATC')
  127. (rvp . 'PRESSION') ;
  128. rv . 'KIZG' . nomvi = 'KOPS' f
  129. '-' (rvp . 'GRADP') ;
  130. 'FINSI' ;
  131.  
  132. 'SI' ('EGA' kma1 1) ;
  133. 'SI' ('EXISTE' rv 'CLIM') ;
  134. s1 = rv . 'CLIM' ;
  135. 'SINON' ;
  136. s1 matnul = 'KOPS' 'MATRIK' ;
  137. 'OUBLIER' matnul ;
  138. 'FINSI' ;
  139. 'SI' calass ;
  140. matass=ma1 ;
  141. rv.'matass'=matass ;
  142. 'FINSI' ;
  143. rv . 'METHINV' . 'MATASS' = matass ;
  144. dt1 = 1. ;
  145. s2 = 'KOPS' 'MTABX' rv 1.D0 ;
  146. rv . 'S2' = s2 ;
  147. 'SI' ('NEG' ('TYPE' s2) 'CHPOINT ') ;
  148. s2 matnul = 'KOPS' 'MATRIK' ;
  149. 'OUBLIER' matnul ;
  150. 'FINSI' ;
  151. res = kres ma1 'TYPI' (rv . 'METHINV')
  152. 'CLIM' s1
  153. 'SMBR' s2
  154. 'IMPR' 0 ;
  155. eps = 'TCRR' res omeg (rv . 'INCO') 'IMPR' 1 ;
  156. 'OUBLIER' res ;
  157. 'FINSI' ;
  158. 'SI' ('NON' calass) ;
  159. 'OUBLIER' ma1 ;
  160. 'FINSI' ;
  161. 'SI' ('EGA' kma1 1) ;
  162. calass = FAUX ;
  163. rv.'calass'=calass ;
  164. 'FINSI' ;
  165. 'MENAGE' ;
  166. 'FIN' bloci ;
  167.  
  168. irt=0 ;
  169. 'SI' ('EGA' kma1 1) ;
  170. 'SI' (dt '>' 0.D0) ;
  171. 'TCNM' rv ;
  172. 'FINSI' ;
  173. 'SINON' ;
  174. irt = 'AVCT' rv (rv . 'ALFA') 'IMPR' (rv . 'FIDT') ;
  175. 'FINSI' ;
  176.  
  177. 'SI' testran ;
  178. rv . 'CO' . 'VITESSE' ='KOPS' (rv . 'INCO' . nomvi)
  179. '-' (rv . 'SEDIM') ;
  180. k = 'ABS' (rv . 'INCO' . 'KN') ;
  181. e = 'ABS' (rv . 'INCO' . 'EN') ;
  182. k = 'KOPS' ('KOPS' k '*' k) '/' e ;
  183. DIF = 'KOPS' ('KOPS' k '*' 0.09) '+' (rv . 'COEF') ;
  184. rv . 'CO' . 'DIFFU' = 'NOEL' (rv . 'DOMAINE') dif ;
  185. rv . 'CO' . 'TEMPERA' = rv . 'INCO' . 'CN' ;
  186. 'FINSI' ;
  187. 'MENAGE' ;
  188.  
  189. 'SI' ('EGA' irt 1) ;
  190. 'MESSAGE' ' Temps final atteint : '
  191. (rv . 'PASDETPS' . 'TPS') ;
  192. 'QUITTER' bloc1 ;
  193. 'FINSI' ;
  194. 'FIN' bloc1 ;
  195.  
  196. 'SI' testpr ;
  197. rvp . 'PRESSION' = 'KCHT' (rvp . 'DOMAINE') 'SCAL' 'CENTRE'
  198. (rvp . 'PRESSION') ;
  199. rvp . 'PN' = 'ELNO' (rvp . 'DOMAINE')
  200. (rvp . 'PRESSION') ;
  201. 'FINSI' ;
  202. ************************ E X A C ************************************
  203. 'FINPROC' ;
  204.  
  205.  
  206.  
  207.  
  208.  

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