Download exac.procedur

Back to the list

   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 :  

© Cast3M 2003 - All rights reserved.
Disclaimer