Download conem.dgibi

Back to the list

* fichier :  conem.dgibi
*=---------------------------------------------------------------------
*= Transport d'un cone par un champ de vitesse à rotationnel constant.
*= Comparaison de schéma en temps EF implicites
*=---------------------------------------------------------------------
*
*------------------
* Options générales
*------------------
*
GRAPH = 'N' ;
ERR1=5.e-5     ;
COMPLET = FAUX ;
SI ( COMPLET ) ;
  DIAM=2. ;
SINON        ;
  DIAM=0.5 ;
FINSI ;

DISCR='MACRO' ;

'OPTI' 'DIME' 2 'ELEM' 'QUA4' ;
'OPTI' 'ISOV' 'SULI'          ;
'OPTI' 'ECHO' 1 'TRACER' 'PSC' ;
*
*=========
* MAILLAGE  
*=========  
*
*
*- Création des points supports des DROITES
*
L     = 2.D0 ; LS2   = L / 2.D0        ;
H     = L    ; HS2   = H / 2.D0        ;
X0    = -1.D0 * LS2     ; X1    = X0 + L          ;
Y0    = -1.D0 * HS2     ; Y1    = Y0 + H          ;
INUMX = 20              ;
INUMY = INUMX           ;
XNUMY = 'FLOT' INUMX    ;
INUX1 = INUMX - 1       ;
INUY1 = INUMY - 1       ;
X01   = X0 + X1 * 0.5D0 ;
Y01   = Y0 + Y1 * 0.5D0 ;
DX    = X1 - X0 / INUMX ;
DY    = Y1 - Y0 / INUMY ;
DX1   = DX / 2.D0       ;
DY1   = DY / 2.D0       ;
*
B1 = X0 Y0  ;
B3 = X1 Y0  ;
H1 = X0 Y1  ;
H3 = X1 Y1  ;
*
*
*- Création des DROITES frontieres
*
DRBAS = B1 'DROI' INUMX B3 ;
DRDRO = B3 'DROI' INUMY H3 ;
DRHAU = H3 'DROI' INUMX H1 ;
DRGAU = H1 'DROI' INUMY B1 ;
DRCOT = DRBAS 'ET' DRDRO 'ET' DRGAU 'ET' DRHAU ;
PELIM = DX1 / (5.D0 * INUMX) ;
*
*- Creation maillage GEOMETRIQUE
*
PTOT1 = 'DALL' DRBAS DRDRO DRHAU DRGAU ;
*
*- Creation maillage HYBRIDE y compris sous-objets (cond. limites)
*
PTOTC = CHAN PTOT1 QUAF ;
MDRCOT = CHAN DRCOT QUAF ;
ELIM (PTOTC et MDRCOT) 1.E-5 ;

HYTOT = 'MODE' PTOTC 'NAVIER_STOKES' DISCR;
$DRCOT= 'MODE' MDRCOT 'NAVIER_STOKES' DISCR ;

DRCOT=doma $drcot 'MAILLAGE' ;

XVOL= DOMA HYTOT 'VOLUME'  ;
DOMA HYTOT 'IMPR' ;
ptot1=DOMA HYTOT  'MAILLAGE';

*
*
*- Coordonnées des points par classe de points
*
XS YS = 'COOR' ( DOMA HYTOT  'MAILLAGE') ;
*
*  XCEN : Abscisse du sommet du cone
*  YCEN : Ordonnée du sommet du cone
*  RCEN : Rayon du cone
*
XCEN = 0.D0       ;
YCEN =-0.5D0      ;
RCEN = 3.0D0 * DX ;

*================
* INITIALISATIONS
*================
*
*                                            ------------------------
*                                            = Conditions initiales =
*                                            ------------------------
* h(x,y) = f(r)
* avec f(r) = max( h(1.-r/rcen) , 0.)
* On se sert des égalités suivantes :
*      m = min(f,g) = (f+g - abs(f-g)) / 2
*      M = max(f,g) = (f+g + abs(f-g)) / 2
*
HAUT = 1.D0 ;
*
*- Charge aux sommets
*
CRS1  = (XS-XCEN)*(XS-XCEN) + ((YS-YCEN)*(YS-YCEN)) ** 0.5D0 ;
CRS2  = 1.D0 - (CRS1 / RCEN) * HAUT                          ;
CRS3  = 'ABS' CRS2                                           ;
CRS4  = CRS2 + CRS3 / 2.D0                                   ;
SI ( COMPLET ) ;
daxh=drbas plus (0. 0.5)  ;
daxv=drgau plus (1. 0.)  ;
elim (daxh et daxv et ptot1) 1.e-5 ;
SINON ;
daxh=drbas plus (0. 1.)  ;
daxv=drgau plus (0.5 0.)  ;
elim (daxh et daxv et ptot1) 1.e-5 ;
FINSI ;
*
*- Vitesses aux sommets
*
SPEEX = 'NOMC' 'UX' YS 'NATU' 'DISCRET' ;
SPEEY = 'NOMC' 'UY' XS 'NATU' 'DISCRET' ;
SPEEY = (-1.D0) * SPEEY                 ;

TN    = KCHT HYTOT  SCAL SOMMET  CRS4        ;
evolth=evol 'CHPO' TN  daxh ;
evoltv=evol 'CHPO' TN  daxv ;
s2c= SOMT ((NOEL HYTOT TN)*XVOL) ;
mess ' Solution exacte projetée ' s2c ;


DEBPROC TEST ;
ARGU OPDFDT*MOT  OPKONV*MOT BETA*FLOTTANT CFL*FLOTTANT
     DIAM*FLOTTANT GRAPH*MOT TIT*MOT;
DT=CFL*0.1 ;
NBIT=enti (3.146 * DIAM / DT) + 1 ;

 coef = 1.e-20 ;

 RV =  'EQEX' HYTOT ITMA NBIT 'FIDT' 1 'DTI' 0.
 'OPTI' 'EF' 'SEMI' BETA  OPKONV
 'MATCONS' 'MTCV'
 'ZONE' HYTOT 'OPER' 'KONV' 1.  'UN' COEF DT 'INCO' 'TN'
 'CLIM' 'TN' 'TIMP' DRCOT  0.  ;

 Si ( EGA OPDFDT 'BDF2');
 RV =  'EQEX' RV
 'OPTI' 'EF' 'CENTREE' BDF2
 'ZONE' HYTOT 'OPER' 'DFDT' 1. 'TNM' 'TNMM' DT 'UN' coef 'INCO' 'TN'
 ;
 Sinon ;
 RV =  'EQEX' RV
 'OPTI' 'EF'     OPDFDT
 'ZONE' HYTOT 'OPER' 'DFDT' 1. 'TNM' DT 'UN' coef 'INCO' 'TN'
 ;
 FINSI ;

 RV.'INCO'         = TABLE 'INCO'                        ;
 RV.'INCO'.'TN'    = KCHT HYTOT  SCAL SOMMET  0.          ;
 RV.'INCO'.'TNM'    = KCHT HYTOT  SCAL SOMMET  CRS4       ;
 RV.'INCO'.'TNMM'    = KCHT HYTOT  SCAL SOMMET  CRS4      ;
 RV.'INCO'.'T0'    = KCHT HYTOT  SCAL SOMMET  0.          ;
 RV.'INCO'.'UN'    = KCHT HYTOT  VECT SOMMET  SPEEX  SPEEY ;

SI  ('EGA' graph 'O' );
u = vect RV.'INCO'.'UN' 1. ux uy ; 
 trac u ptot1 'NCLK';
 trac RV.'INCO'.'TNM'  ptot1 'NCLK';
Finsi ;

rv.'OMEGA'= 1. ;
 rv.'NITER'=1 ;

exec rv ;

maxc=maxi (RV.'INCO'.'TN') ; minc=mini (RV.'INCO'.'TN');
mess 'MAXC=' maxc 'MINC=' minc ;
TN=(RV.'INCO'.'TN') ;
s2c= SOMT ((NOEL HYTOT TN)*XVOL) ;
mess ' S2C= ' s2c ;

SI  ('EGA' graph 'O' );
   P1 = 'PROG' -5. -5. 2. ;
   MONTAGNE (RV.'INCO'.'TN') ptot1 2. P1 'TITRE' tit 'CACHE' ;
   'TRACER' RV.'INCO'.'TN'  ptot1 ('PROG' -0.1 pas 0.1 0.9) drcot
           'TITRE' TIT  'NCLK';
FINSI ;
FINPROC RV ;

* SCHEMA CRANK-NICHOLSON GENERALISE GALERKIN (CNG)

CFL=0.3 ;
BETA=1.  ;
OPDFDT='CENTREE' ;
OPKONV='CNG' ;
TIT= CHAI 'CNG (1/4 de TOUR)' ;
rv = TEST OPDFDT OPKONV BETA  CFL DIAM GRAPH TIT;
evolh=evol 'CHPO' (RV.'INCO'.'TN')  daxh ;
evolv=evol 'CHPO' (RV.'INCO'.'TN')  daxv ;
evolth=evolth et evolh ;
evoltv=evoltv et evolv ;

SI(NON COMPLET ) ;
lrr=prog
   0.0000      2.18498E-04 -1.30556E-03 -1.17804E-04  5.72424E-04
  1.98609E-04 -3.67838E-03  2.49501E-02  0.35472      0.66388    
  0.95009      0.66041      0.32277      1.85347E-02  1.33351E-02
 -1.43291E-02  5.74531E-03 -4.85268E-03 -5.00940E-03  3.95789E-03
   0.0000;
  lr=extr evolv 'ORDO';
  list lr ;
  ER=resu( abs (lr - lrr) ) ;
  mess ' Erreur sur CNG ' er ;
  si ( er > 1.e-4 ) ; erreur 5 ; finsi ;
FINSI ;

* SCHEMA Tenseur Visqueux (TVISQ)

CFL=0.2 ;
BETA=0.  ;
OPDFDT='CENTREE' ;
OPKONV='TVISQUEU' ;
TIT= CHAI 'TVISQUEU (1/4 de TOUR)' ;
rv = TEST OPDFDT OPKONV BETA  CFL DIAM GRAPH TIT;
evolh=evol 'CHPO' (RV.'INCO'.'TN')  daxh ;
evolv=evol 'CHPO' (RV.'INCO'.'TN')  daxv ;
evolth=evolth et evolh ;
evoltv=evoltv et evolv ;

SI(NON COMPLET ) ;
lrr=prog
   0.0000      8.25958E-08 -2.63735E-06  2.29954E-05 -1.63805E-04
  1.10280E-03 -6.85438E-03  2.29617E-02  0.31028      0.66016    
  0.90422      0.70314      0.34157      4.19636E-02 -3.59161E-03
 -5.01307E-06  7.59100E-04 -4.31731E-04 -9.34623E-05  2.18262E-05
   0.0000;
  lr=extr evolv 'ORDO';
  list lr ;
  ER=resu( abs (lr - lrr) ) ;
  mess ' Erreur sur Tenseur Visqueux ' er ;
  si ( er > 1.e-4 ) ; erreur 5 ; finsi ;
FINSI ;

* SCHEMA CRANK-NICHOLSON GALERKIN (CN)

CFL=1. ;
BETA=0.5 ;
OPDFDT='CENTREE' ;
OPKONV='CENTREE' ;
TIT= CHAI 'CN  (1/4 de TOUR)' ;
rv = TEST OPDFDT OPKONV BETA  CFL DIAM GRAPH TIT;
evolh=evol 'CHPO' (RV.'INCO'.'TN')  daxh ;
evolv=evol 'CHPO' (RV.'INCO'.'TN')  daxv ;
evolth=evolth et evolh ;
evoltv=evoltv et evolv ;

SI ( NON COMPLET ) ;
lrr=prog
   0.0000      2.84874E-04  3.76178E-04 -4.74619E-04 -1.23049E-03
  8.65360E-05  8.77272E-03  5.63920E-02  0.24097      0.60724    
  0.84842      0.79075      0.42250      7.93819E-02 -4.90737E-02
  2.36598E-04  3.05821E-03 -2.56679E-03 -1.60211E-03  2.56096E-03
   0.0000;
  lr=extr evolv 'ORDO';
  list lr ;
  ER=resu( abs (lr - lrr) ) ;
  mess ' Erreur sur CN ' er ;
  si ( er > 1.e-4 ) ; erreur 5 ; finsi ;
FINSI ;

* SCHEMA CRANK-NICHOLSON PETROV-GALERKIN (CN-PG)

CFL=1. ;
BETA=0.5 ;
OPDFDT='SUPG' ;
OPKONV='SUPG' ;
TIT= CHAI 'CN-PG  (1/4 de TOUR)' ;
rv = TEST OPDFDT OPKONV BETA  CFL DIAM GRAPH TIT;
evolh=evol 'CHPO' (RV.'INCO'.'TN')  daxh ;
evolv=evol 'CHPO' (RV.'INCO'.'TN')  daxv ;
evolth=evolth et evolh ;
evoltv=evoltv et evolv ;

SI (NON COMPLET ) ;
lrr=prog
   0.0000     -4.15500E-08  3.71752E-07 -1.51473E-06 -2.69314E-05
  5.77943E-04  7.95387E-03  5.65109E-02  0.24563      0.60380    
  0.84205      0.77323      0.40991      8.19064E-02 -4.45954E-02
 -4.11115E-03  3.71337E-03 -2.85247E-04 -5.58008E-04  1.36503E-04
   0.0000;
  lr=extr evolv 'ORDO';
  list lr ;
  ER=resu( abs (lr - lrr) ) ;
  mess ' Erreur sur CN-PG ' er ;
  si ( er > 1.e-4 ) ; erreur 5 ; finsi ;
FINSI ;

* SCHEMA EULER IMPLICITE PETROV-GALERKIN (IMPL-PG)

CFL=1. ;
BETA=1. ;
OPDFDT='SUPG' ;
OPKONV='SUPG' ;
TIT= CHAI 'IMPL-PG  (1/4 de TOUR)' ;
rv = TEST OPDFDT OPKONV BETA  CFL DIAM GRAPH TIT;
evolh=evol 'CHPO' (RV.'INCO'.'TN')  daxh ;
evolv=evol 'CHPO' (RV.'INCO'.'TN')  daxv ;
evolth=evolth et evolh ;
evoltv=evoltv et evolv ;

SI ( NON COMPLET ) ;
lrr=prog
   0.0000      2.72088E-06  5.67138E-05 -5.55864E-04  2.90601E-03
  2.81410E-02  8.90610E-02  0.19109      0.32444      0.44825    
  0.51077      0.47795      0.35589      0.20087      8.24119E-02
  1.96227E-02  5.88033E-04 -4.15394E-05 -1.40971E-05  1.93301E-05
   0.0000;
  lr=extr evolv 'ORDO';
  list lr ;
  ER=resu( abs (lr - lrr) ) ;
  mess ' Erreur sur IMPL-PG ' er ;
  si ( er > 1.e-4 ) ; erreur 5 ; finsi ;
FINSI ;

* SCHEMA BDF2

CFL=1.  ;
BETA=0.5 ;
OPDFDT='BDF2' ;
OPKONV='SUPG' ;
TIT= CHAI 'BDF2  (1/4 de TOUR)' ;
rv = TEST OPDFDT OPKONV BETA  CFL DIAM GRAPH TIT;
evolh=evol 'CHPO' (RV.'INCO'.'TN')  daxh ;
evolv=evol 'CHPO' (RV.'INCO'.'TN')  daxv ;
evolth=evolth et evolh ;
evoltv=evoltv et evolv ;

SI(NON COMPLET ) ;
lrr=prog
   0.0000      1.54805E-10 -3.66235E-09  5.89492E-08 -8.20960E-07
  3.73495E-06  3.06438E-04  6.61244E-03  6.84728E-02  0.34155    
  0.84425       1.1003      0.84443      0.27789     -0.14289    
 -0.24111     -1.27424E-02 -6.61840E-03  5.55885E-03  1.59619E-03
   0.0000;
  lr=extr evolv 'ORDO';
  list lr ;
  ER=resu( abs (lr - lrr) ) ;
  mess ' Erreur sur BDF2 ' er ;
  si ( er > 1.e-4 ) ; erreur 5 ; finsi ;
FINSI ;

si ('EGA' graph 'O' );
titre 'Coupe ox à y=1/2 ' ;
TAB1=TABLE;
TAB1.'TITRE'=TABLE ;
TAB1.1='TIRR MARQ CROI REGU';
TAB1.'TITRE' . 1 = mot 'T initial ' ;
TAB1.2='MARQ ETOI REGU';
TAB1.'TITRE' . 2 = mot 'CNG  CFL 0.9';
TAB1.3='MARQ ETOI REGU';
TAB1.'TITRE' . 3 = mot 'TVISQ CFL 0.5';
TAB1.4='MARQ CROI REGU ';
TAB1.'TITRE' . 4 = mot 'CN  CFL 1. ';
TAB1.5='MARQ LOSA REGU ';
TAB1.'TITRE' . 5 = mot 'CNPG CFL 1.' ;
TAB1.6='MARQ CARR REGU ';
TAB1.'TITRE' . 6 = mot 'IMPLPG CFL 1.' ;
TAB1.7='MARQ PLUS REGU ';
TAB1.'TITRE' . 7 = mot 'BDF2 CFL 1.' ;
DESS EVOLTH 'TITX' 'Ox'    LEGE  TAB1 ;
titre 'Coupe oy à x=0   ' ;
DESS EVOLTV 'TITX' 'Oy'    LEGE  TAB1 ;
FINSI ;

 FIN ;
 

 

 

 

 

 

 

© Cast3M 2003 - All rights reserved.
Disclaimer