Download xbif.procedur

Back to the list

   1 : * XBIF      PROCEDUR  MAGN      98/12/30    21:15:27     3420           
   2 : *X XBIF (Procedure)
   3 : *X modele bifluide
   4 : *X resolution d'equations de Navier-Stokes couplees
   5 : 
   6 : DEBPROC XBIF ;
   7 : ARGU RV*TABLE RVP*TABLE RVC*TABLE
   8 :               KF*FLOTTANT KP*FLOTTANT ;
   9 : 
  10 :  idime=vale 'DIME' ;
  11 :  si (ega idime 2) ;
  12 :  vnul=0. 0. ;
  13 :  sinon;
  14 :  vnul=0. 0. 0. ;
  15 :  finsi ;
  16 :  bidon = table ;
  17 : 
  18 :  GR=rv.'GR' ;
  19 :  ALFA=rv.'ALFA' ;
  20 :  ITMA=rv.'ITMA' ;
  21 :  FIDT=rv.'FIDT' ;
  22 :  KIZT=rv.'INCO' ;
  23 : 
  24 :  testpr=exist rv 'PRESSION' ;
  25 :  testdefo=exist rv 'DEFOR' ;
  26 : 
  27 :  si testdefo ;
  28 :  verdefo rv ;
  29 :  finsi ;
  30 : 
  31 :  si (non(exist rv 'HIST')) ;
  32 :  rv.'HIST'=bidon ;
  33 :  finsi ;
  34 :  HIST=rv.'HIST';
  35 : 
  36 :  si (non(exist rv kizd)) ;
  37 :  kdia rv ;
  38 :  finsi ;
  39 : 
  40 :  si (non(exist rvc kizd)) ;
  41 :  kdia rvc ;
  42 :  finsi ;
  43 : 
  44 :  si (non(exist rvc kizc)) ;
  45 :  rvc.kizc=table 'KIZC' ;
  46 :  finsi ;
  47 : 
  48 :  si (non(exist rvc kizg)) ;
  49 :  rvc.kizg=table 'KIZG' ;
  50 :  finsi ;
  51 : 
  52 :  si (non(exist rv kizg)) ;
  53 :  rv.kizg=table 'KIZG' ;
  54 :  finsi ;
  55 :  KIZG=rv.'KIZG' ;
  56 :  si (non(exist rv kizg1)) ;
  57 :  rv.kizg1=table 'KIZG1' ;
  58 :  finsi ;
  59 :  KIZG1=rv.'KIZG1' ;
  60 : 
  61 :  KD=rv.'KIZD' ;
  62 : 
  63 :  si (exist rv kizc) ;
  64 :  KIZC=rv.'KIZC' ;
  65 :  sinon ;
  66 :  KIZC=table 'KIZC' ;
  67 :  rv.'KIZC'=KIZC ;
  68 :  finsi ;
  69 : 
  70 :   SI testpr ;
  71 :   dmn=rvp.'DOMAINE' ;
  72 :   rvp=rv.'PRESSION' ;
  73 :   U=KIZT.'UN'    ;
  74 :   V=KIZT.'VN'    ;
  75 :   Du=KD.'UN' ;
  76 :   Dv=KD.'VN' ;
  77 : 
  78 :   FV=RVC.'INCO'.'CN' ;
  79 : 
  80 :   si (non(exist rvp diagv)) ;
  81 :   rvp.diagv=Du ;
  82 :   finsi ;
  83 : 
  84 :   rvp.'KIZC' = kizc ;
  85 : 
  86 :   si (non(exist rvp 'MATC')) ;
  87 :   C=kmac rvp ;
  88 :   rvp.'MATC'=C ;
  89 :   finsi ;
  90 :   C=rvp.'MATC' ;
  91 : 
  92 :   P=kcht (rvp.domaine) SCAL CENTRE 0.;
  93 :   rvp.'PRESSION'=P ;
  94 :   GP=kcht (rvp.domaine) SCAL SOMMET 0.;
  95 :   FINSI ;
  96 : 
  97 :   si (exist rv 'DECDOM') ;
  98 :   decdom rv ;
  99 :   quitter xbif ;
 100 :   finsi ;
 101 : 
 102 :   diaga = DGSI $DOMTOT ;
 103 :   diagb = COPIE diaga ;
 104 :   diaga = NOMC diaga 'UX' ;
 105 :   diagb = NOMC diagb 'UY' ;
 106 :   diaga = CHAN 'ATTRIBUT' diaga 'NATURE' 'DIFFUS' ;
 107 :   diagb = CHAN 'ATTRIBUT' diagb 'NATURE' 'DIFFUS' ;
 108 :   diag0 = diaga ET diagb ;
 109 :   diag = kcht $DOMTOT vect sommet diag0 ;
 110 : 
 111 :   nbop=dime (rv.listoper) ;
 112 : 
 113 :  REPETER BLOC1 ITMA  ;
 114 : 
 115 :     repeter bloc2 nbop ;
 116 :     klop &bloc2 rv ;
 117 :     fin bloc2 ;
 118 : 
 119 :   SI testpr ;
 120 :    dt=(rv.pasdetps.deltat)*ALFA ;
 121 :    rvp.deltat=dt ;
 122 :    P=rvp.'PRESSION' ;
 123 :    detr P ;
 124 :    f=KIZG.'UN' ;
 125 :    g=KIZG.'VN' ;
 126 :    g2=kops g '-' (kops diag '*' GR) ;
 127 :    f1=kops f '+' (kops diag '*' (kops KF '*' (kops U '-' V))) ;
 128 :    g1=kops g2 '+' (kops diag '*' (kops KP '*' (kops V '-' U))) ;
 129 :    dm1f=kops (kops f1 '/' Du) '-' (kops U '/' dt) ;
 130 :    P=kmf C dm1f ;
 131 :    detr dm1f ;
 132 :    kres rvp P ;
 133 :    rvp.'PRESSION'=P ;
 134 :    detr GP ;
 135 :    gp= kmtp C P  ;
 136 :    GPF=gp ;
 137 :    RO=ROF/ROP ;
 138 :    GPP=kops RO '*' gp ;
 139 :    KIZG.'UN'=kops f1 '-' GPF ;
 140 :    KIZG.'VN'=kops g1 '-' GPP ;
 141 :    rset f vnul ;
 142 :    rset g vnul ;
 143 :    detr g2 ; detr f1 ; detr g1 ;
 144 :    dltt= rv.pasdetps.deltat ;
 145 :   FINSI ;
 146 : 
 147 :   avct KIZT KIZC (rv.pasdetps) KIZG KD HIST ALFA 'IMPR' FIDT ;
 148 : 
 149 :   si testdefo ;
 150 :   si (&bloc1 > itd) ;
 151 :   rvp.'PN'=elno (kcht dmn SCAL CENTRE P) dmn ;
 152 :   DEFO.'PN'=rvp.'PN' ;
 153 :   reponse = TDFO DEFO ;
 154 :   si (ega reponse vrai) ;
 155 :   DEFO.'MAIL' = KDEF DEFO.'VDEF' dmrv.MAILLAGE ;
 156 :   quitter XBIF ;
 157 :   finsi ;
 158 :   finsi ;
 159 :   finsi ;
 160 : 
 161 :   si (testpr) ;
 162 :   detr (KIZG.'UN') ;
 163 :   detr (KIZG.'VN') ;
 164 :   KIZG.'UN'=f ;
 165 :   KIZG.'VN'=g ;
 166 :   finsi ;
 167 : 
 168 :    VP = RV.'INCO'.'VN' ;
 169 :    RVC.1KONV.ARG1 = KSOF $DOMTOT VP ;
 170 :    RVC.1KONV.ARG2 = NOEL $DOMTOT VP ;
 171 : 
 172 :    klop 1 RVC 'MUSCL' ;
 173 :    rvc.pasdetps.deltat =dltt ;
 174 : 
 175 :   avct (RVC.'INCO') (RVC.'KIZC') (rvc.pasdetps) (RVC.'KIZG')
 176 :        (RVC.'KIZD') (RVP.DOMAINE) (RVC.'ALFA') 'IMPR' (RVC.'FIDT') ;
 177 : 
 178 :  menage ;
 179 : 
 180 :  FIN BLOC1 ;
 181 : 
 182 :  si (testpr) ;
 183 :  rvp.'PRESSION'=kcht dmn scal centre P ;
 184 :  rvp.'PN'= elno dmn rvp.'PRESSION' ;
 185 :  rvp.gradp=GP ;
 186 :  finsi;
 187 : 
 188 : FINPROC ;
 189 :  

© Cast3M 2003 - All rights reserved.
Disclaimer